Просмотр исходного кода

Merge remote-tracking branch 'origin/dev' into dev

xuxiaofei лет назад: 2
Родитель
Сommit
28e33ff3d2
22 измененных файлов с 279 добавлено и 133 удалено
  1. 43 0
      .gitignore
  2. 9 0
      release/sql/db_sql_v2.1.sql
  3. 7 0
      zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/rfid/domain/entity/HardwareRfid.java
  4. 4 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java
  5. 5 0
      zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java
  6. 30 1
      zd-modules/zd-algorithm/src/main/java/com/zd/alg/rfid/service/impl/HardwareRfidServiceImpl.java
  7. 52 43
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/ExecutorConfig.java
  8. 0 29
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/MyBatisPlusConfig.java
  9. 0 48
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/SyncConfiguration.java
  10. 11 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorLayoutController.java
  11. 7 0
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorLayoutMapper.java
  12. 6 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorLayoutService.java
  13. 18 5
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorLayoutServiceImpl.java
  14. 1 1
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabMessageContentServiceImpl.java
  15. 3 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanServiceImpl.java
  16. 2 2
      zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java
  17. 13 0
      zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorLayoutMapper.xml
  18. 12 0
      zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysUserController.java
  19. 8 0
      zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysUserMapper.java
  20. 8 0
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysUserService.java
  21. 20 0
      zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java
  22. 20 0
      zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

+ 43 - 0
.gitignore

@@ -0,0 +1,43 @@
+######################################################################
+# Build Tools
+
+.gradle
+/build/
+!gradle/wrapper/gradle-wrapper.jar
+
+target/
+!.mvn/wrapper/maven-wrapper.jar
+
+######################################################################
+# IDE
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+nbproject/private/
+build/*
+nbbuild/
+dist/
+nbdist/
+.nb-gradle/
+
+######################################################################
+# Others
+*.log
+*.xml.versionsBackup
+
+!*/build/*.java
+!*/build/*.html
+!*/build/*.xml

+ 9 - 0
release/sql/db_sql_v2.1.sql

@@ -6,3 +6,12 @@
 /*     添加时间:2023-2-14                 ****/
 /************************************************/
 ALTER TABLE sys_user ADD card_num_simple VARCHAR(100) DEFAULT NULL COMMENT '卡号des加密';
+
+
+/************************************************/
+/*     更新表: lab_check_record    ****/
+/*     字段: laboratory_name  ****/
+/*     添加人:cyl                    ****/
+/*     添加时间:2023-2-15                 ****/
+/************************************************/
+ALTER TABLE lab_check_record MODIFY COLUMN laboratory_name VARCHAR(100);

+ 7 - 0
zd-api/zd-algorithm-api/src/main/java/com/zd/algorithm/api/rfid/domain/entity/HardwareRfid.java

@@ -1,5 +1,6 @@
 package com.zd.algorithm.api.rfid.domain.entity;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -151,6 +152,10 @@ public class HardwareRfid implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "位置")
+    @TableField(exist = false)
+    private String position;
+
     private static final long serialVersionUID = 1L;
 
     public static final String COL_ID = "id";
@@ -194,4 +199,6 @@ public class HardwareRfid implements Serializable {
     public static final String COL_UPDATE_TIME = "update_time";
 
     public static final String COL_REMARK = "remark";
+
+    public static final String COL_POSITION= "position";
 }

+ 4 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/RemoteLaboratoryService.java

@@ -480,4 +480,8 @@ public interface RemoteLaboratoryService {
     @ApiOperation(value = "一件灭火接受火焰预警")
     @PostMapping("/plan/oneClickFire")
     ResultData oneClickFire(@RequestBody OneClickFireDTO oneClickFireDTO);
+
+    @ApiOperation(value = "根据实验室id查询实验室位置信息")
+    @PostMapping("/buildFloorLayout/getPositionBySubId")
+    ResultData getPositionBySubId(@RequestParam("subIds") String subIds);
 }

+ 5 - 0
zd-api/zd-laboratory-api/src/main/java/com/zd/laboratory/api/feign/fallback/RemoteLaboratoryFallbackFactory.java

@@ -437,6 +437,11 @@ public class RemoteLaboratoryFallbackFactory implements FallbackFactory<RemoteLa
             public ResultData oneClickFire(OneClickFireDTO oneClickFireDTO) {
                 return ResultData.fail("一键灭火触发预案失败!"+ cause.getMessage());
             }
+
+            @Override
+            public ResultData getPositionBySubId(String subIds) {
+                return ResultData.fail("查询实验室位置信息失败!"+ cause.getMessage());
+            }
         };
     }
 }

+ 30 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/rfid/service/impl/HardwareRfidServiceImpl.java

@@ -13,6 +13,8 @@ import com.zd.common.core.security.TokenService;
 import com.zd.common.core.utils.BeanUtils;
 import com.zd.common.core.utils.SecurityUtils;
 import com.zd.common.core.utils.SpringUtils;
+import com.zd.laboratory.api.feign.RemoteLaboratoryService;
+import com.zd.model.constant.HttpStatus;
 import com.zd.model.domain.ResultData;
 import com.zd.model.enums.DeviceOnOffEnum;
 import com.zd.model.enums.DeviceStatusEnum;
@@ -22,6 +24,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -36,6 +39,9 @@ public class HardwareRfidServiceImpl extends ServiceImpl<HardwareRfidMapper, Har
     @Autowired
     private TokenService tokenService;
 
+    @Autowired
+    private RemoteLaboratoryService remoteLaboratoryService;
+
     @Override
     public int batchInsert(List<HardwareRfid> list) {
         return baseMapper.batchInsert(list);
@@ -71,7 +77,30 @@ public class HardwareRfidServiceImpl extends ServiceImpl<HardwareRfidMapper, Har
         }
         HardwareRfid hardwareRfid = new HardwareRfid();
         BeanUtils.copyProperties(hardwareRfidVo, hardwareRfid);
-        return baseMapper.selectPage(page, new LambdaQueryWrapper<HardwareRfid>().setEntity(hardwareRfid).orderByDesc(HardwareRfid::getCreateTime));
+        Page<HardwareRfid> hardwareRfidPage = baseMapper.selectPage(page, new LambdaQueryWrapper<HardwareRfid>().setEntity(hardwareRfid).orderByDesc(HardwareRfid::getCreateTime));
+        List<HardwareRfid> records = hardwareRfidPage.getRecords();
+        try {
+            StringBuffer sb = new StringBuffer();
+            for (HardwareRfid record : records) {
+                if (sb.indexOf(String.valueOf(record.getSubjectId())) < 0) {
+                    sb.append(record.getSubjectId()).append(",");
+                }
+            }
+            String substring = sb.substring(0, sb.length() - 1);
+            ResultData positionBySubId = remoteLaboratoryService.getPositionBySubId(substring);
+            if (positionBySubId != null && positionBySubId.getCode().equals(HttpStatus.SUCCESS)) {
+                for (HardwareRfid rfid : records) {
+                    Map<Long, Map<String, Object>> data = (Map<Long, Map<String, Object>>) positionBySubId.getData();
+                    Map<String, Object> stringObjectMap = data.get(String.valueOf(rfid.getSubjectId()));
+                    rfid.setDeptName((String) stringObjectMap.get("deptName"));
+                    rfid.setPosition((String) stringObjectMap.get("position"));
+                }
+            }
+        } catch (Exception e) {
+            log.error("远程调用查询实验室位置异常!{}", e);
+        } finally {
+            return hardwareRfidPage;
+        }
     }
 
     @Override

+ 52 - 43
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/ExecutorConfig.java

@@ -1,43 +1,52 @@
-//package com.zd.laboratory.config;
-//
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-//
-//import java.util.concurrent.Executor;
-//import java.util.concurrent.ThreadPoolExecutor;
-//
-///**
-// * @Author: zhoupan
-// * @Date: 2021/11/17/14:39
-// * @Description:
-// */
-//@Configuration
-//public class ExecutorConfig {
-//
-//
-//    private static final Logger logger = LoggerFactory.getLogger(ExecutorConfig.class);
-//
-//    @Bean(name = "labExecutor")
-//    public Executor asyncServiceExecutor() {
-//        logger.info("start asyncServiceExecutor");
-//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
-//        //配置核心线程数
-//        executor.setCorePoolSize(5);
-//        //配置最大线程数
-//        executor.setMaxPoolSize(8);
-//        //配置队列大小
-//        executor.setQueueCapacity(99999);
-//        //配置线程池中的线程的名称前缀
-//        executor.setThreadNamePrefix("async-service-");
-//
-//        // rejection-policy:当pool已经达到max size的时候,如何处理新任务
-//        // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
-//        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-//        //执行初始化
-//        executor.initialize();
-//        return executor;
-//    }
-//}
+package com.zd.laboratory.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+import java.util.concurrent.Executor;
+import java.util.concurrent.ThreadPoolExecutor;
+
+/**
+ * @Author: zhoupan
+ * @Date: 2021/11/17/14:39
+ * @Description:
+ */
+@EnableAsync
+@Configuration
+public class ExecutorConfig {
+    private static final Logger logger = LoggerFactory.getLogger(ExecutorConfig.class);
+
+    @Bean(name = "labExecutor")
+    public Executor asyncServiceExecutor() {
+        logger.info("start asyncServiceExecutor");
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //配置核心线程数
+        executor.setCorePoolSize(10);
+        //线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程
+        executor.setMaxPoolSize(50);
+        //缓存队列
+        executor.setQueueCapacity(50);
+        //许的空闲时间,当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
+        executor.setKeepAliveSeconds(200);
+        //配置线程池中的线程的名称前缀
+        executor.setThreadNamePrefix("async-service-");
+        /**
+         * 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略
+         * 通常有以下四种策略:
+         * ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
+         * ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
+         * ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
+         * ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功
+         */
+        // rejection-policy:当pool已经达到max size的时候,如何处理新任务
+        // CALLER_RUNS:不在新线程中执行任务,而是有调用者所在的线程来执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //执行初始化
+        executor.initialize();
+        return executor;
+    }
+}

+ 0 - 29
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/MyBatisPlusConfig.java

@@ -1,29 +0,0 @@
-//package com.zd.laboratory.config;
-//
-//import com.baomidou.mybatisplus.annotation.DbType;
-//import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
-//import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-//import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
-//import org.mybatis.spring.annotation.MapperScan;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.transaction.annotation.EnableTransactionManagement;
-//
-//@MapperScan("com.cn.springbootmybatisplus06.mapper")
-//@EnableTransactionManagement//自动管理事务
-//@Configuration // 配置类
-//public class MyBatisPlusConfig {
-//
-//    /**
-//     * 新版
-//     */
-//    @Bean
-//    public MybatisPlusInterceptor mybatisPlusInterceptor() {
-//        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
-//        //配置乐观锁
-//        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
-//        //配置分页插件
-//        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
-//        return mybatisPlusInterceptor;
-//    }
-//}

+ 0 - 48
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/config/SyncConfiguration.java

@@ -1,48 +0,0 @@
-package com.zd.laboratory.config;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
-
-import java.util.concurrent.ThreadPoolExecutor;
-
-
-/**
- * @Description 异步线程池配置
- * @Author hzw
- * @Date 2023/1/31 14:38
- * @Version 2.0
- */
-@Slf4j
-@Configuration
-@EnableAsync
-public class SyncConfiguration {
-    @Bean(name = "asyncPoolTaskExecutor")
-    public ThreadPoolTaskExecutor executor() {
-        log.info("lab服务异步线程池配置!");
-        ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
-        //核心线程数
-        taskExecutor.setCorePoolSize(10);
-        //线程池维护线程的最大数量,只有在缓冲队列满了之后才会申请超过核心线程数的线程
-        taskExecutor.setMaxPoolSize(100);
-        //缓存队列
-        taskExecutor.setQueueCapacity(50);
-        //许的空闲时间,当超过了核心线程出之外的线程在空闲时间到达之后会被销毁
-        taskExecutor.setKeepAliveSeconds(200);
-        //异步方法内部线程名称
-        taskExecutor.setThreadNamePrefix("async-labService-");
-        /**
-         * 当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize,如果还有任务到来就会采取任务拒绝策略
-         * 通常有以下四种策略:
-         * ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
-         * ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
-         * ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
-         * ThreadPoolExecutor.CallerRunsPolicy:重试添加当前的任务,自动重复调用 execute() 方法,直到成功
-         */
-        taskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
-        taskExecutor.initialize();
-        return taskExecutor;
-    }
-}

+ 11 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/controller/LabBuildFloorLayoutController.java

@@ -7,7 +7,6 @@ import com.zd.common.core.log.BusinessType;
 import com.zd.common.core.web.controller.BaseController;
 import com.zd.common.swagger.config.Knife4jConfiguration;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
-import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import com.zd.laboratory.service.ILabBuildFloorLayoutService;
 import com.zd.model.domain.ResultData;
@@ -20,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Controller
@@ -109,4 +109,14 @@ public class LabBuildFloorLayoutController extends BaseController<LabBuildFloorL
         List <LabBuildFloorLayoutVo> list = labBuildFloorLayoutService.selectLabBuildFloorLayoutList(labBuildFloorLayout);
         return getDataTable(list);
     }
+
+    /**
+     * 根据实验室id查询实验室位置信息(楼栋-楼层-实验室名称)
+     */
+    @PostMapping("/getPositionBySubId")
+    @ApiOperation(value = "根据实验室id查询实验室位置信息")
+    public ResultData getPositionBySubId(@RequestParam("subIds") String subIds) {
+        Map<Long, Map<String,Object>> map = labBuildFloorLayoutService.getPositionBySubId(subIds);
+        return ResultData.success(map);
+    }
 }

+ 7 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/mapper/LabBuildFloorLayoutMapper.java

@@ -80,4 +80,11 @@ public interface LabBuildFloorLayoutMapper {
      * @return 布局图集合
      */
     public List <Map <String,Object>> getLotStatis(LabBuildFloorLayout labBuildFloorLayout);
+
+    /**
+     * 根据实验室id查询实验室位置信息(楼栋-楼层-实验室名称)
+     * @Param [subId]
+     * @Return java.lang.String
+     **/
+    List<Map<String,Object>> getPositionBySubId(String subIds);
 }

+ 6 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/ILabBuildFloorLayoutService.java

@@ -1,7 +1,6 @@
 package com.zd.laboratory.service;
 
 import com.zd.laboratory.domain.LabBuildFloorLayout;
-import com.zd.laboratory.domain.LabExitLineVertex;
 import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 
 import java.util.List;
@@ -65,4 +64,10 @@ public interface ILabBuildFloorLayoutService {
      */
     public Map <String,Object> getLotStatis(LabBuildFloorLayout labBuildFloorLayout);
 
+    /**
+     * 根据实验室id查询实验室位置信息(楼栋-楼层-实验室名称)
+     * @Param [subId 实验室id]
+     * @Return java.lang.String
+     **/
+    Map<Long,Map<String,Object>> getPositionBySubId(String subIds);
 }

+ 18 - 5
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabBuildFloorLayoutServiceImpl.java

@@ -1,6 +1,5 @@
 package com.zd.laboratory.service.impl;
 
-import com.zd.common.core.utils.DictUtils;
 import com.zd.common.core.utils.StringUtils;
 import com.zd.laboratory.domain.LabBuildFloorLayout;
 import com.zd.laboratory.domain.LabExitLineVertex;
@@ -8,13 +7,13 @@ import com.zd.laboratory.domain.vo.LabBuildFloorLayoutVo;
 import com.zd.laboratory.mapper.LabBuildFloorLayoutMapper;
 import com.zd.laboratory.mapper.LabExitLineVertexMapper;
 import com.zd.laboratory.service.ILabBuildFloorLayoutService;
-import com.zd.system.api.entity.SysDictData;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
-import java.util.function.Consumer;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Controller
@@ -88,4 +87,18 @@ public class LabBuildFloorLayoutServiceImpl implements ILabBuildFloorLayoutServi
         }
         return allMap;
     }
+
+    @Override
+    public Map<Long,Map<String,Object>> getPositionBySubId(String subIds) {
+        List<Map<String, Object>> positionBySubId = labBuildFloorLayoutMapper.getPositionBySubId(subIds);
+        if (positionBySubId.isEmpty()){
+            return new HashMap<>();
+        }
+        Map<Long,Map<String,Object>> map = new HashMap<>();
+        for (Map<String, Object> stringStringMap : positionBySubId) {
+            Long subId = (Long) stringStringMap.get("subId");
+            map.put(subId,stringStringMap);
+        }
+        return map;
+    }
 }

+ 1 - 1
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabMessageContentServiceImpl.java

@@ -176,7 +176,7 @@ public class LabMessageContentServiceImpl implements ILabMessageContentService {
      * @param subId       实验室ID
      */
     @Override
-    @Async("asyncPoolTaskExecutor")
+    @Async("labExecutor")
     public void sendWranMessage(Long subId,LabRiskPlanLevel labRiskPlanLevel, Long groupId) {
         //获取实验室负责人信息
         LabSubject subject = new LabSubject();

+ 3 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanServiceImpl.java

@@ -665,11 +665,12 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
                 startVideo(subFunction.getSubId());
                 //向前端发送mqtt预案触发提示
                 messageSendService.riskPlanTriggerNotice();
+            }else {
+                log.info("已触发过预案跳过操作设备!");
             }
-            log.info("groupId为空!");
-
         } else {
             if (redisService.getCacheObject("subjectByYa" + subFunction.getSubId()) != null) {
+                log.info("预案缓存冗余时间,请等待...");
                 return flag;
             }
             log.info("传感器触发关闭预案!实验室id={}", subFunction.getSubId());

+ 2 - 2
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabSubjectManagerService.java

@@ -122,13 +122,13 @@ public class LabSubjectManagerService {
 
     }
 
-    @Async("asyncPoolTaskExecutor")
+    @Async("labExecutor")
     public void operationHardware(FunctionStatus status, List<LabHardware> hardwareList) {
         try {
             logger.info("异步线程处理硬件信息:id={},name={}",Thread.currentThread().getId(),Thread.currentThread().getName());
             for (LabHardware hard : hardwareList) {
                 ResultData result = excutingComm(hard, status);
-                Thread.sleep(500);
+                Thread.sleep(1000);
             }
         } catch (InterruptedException e) {
             logger.error("异步处理硬件异常!",e);

+ 13 - 0
zd-modules/zd-modules-laboratory/src/main/resources/mapper/laboratory/LabBuildFloorLayoutMapper.xml

@@ -243,5 +243,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{id}
         </foreach>
     </delete>
+    <select id="getPositionBySubId" resultType="java.util.Map">
+        SELECT
+        ls.id subId,
+        CONCAT( lbf.NAME,'-', ( SELECT lbf.NAME FROM lab_build_floor lbf WHERE lbf.id = lbfl.floor_id ),'-', ls.`name` ) position,
+        dept.dept_name deptName
+        FROM
+            lab_build_floor_layout lbfl
+            LEFT JOIN lab_build_floor lbf ON lbfl.build_id = lbf.id
+            LEFT JOIN lab_subject ls ON lbfl.`sub_id` = ls.`id`
+            LEFT JOIN sys_dept dept ON dept.dept_id = ls.dept_id
+        WHERE
+        FIND_IN_SET(lbfl.sub_id,#{subIds})
+    </select>
 
 </mapper>

+ 12 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysUserController.java

@@ -823,4 +823,16 @@ public class SysUserController extends BaseController {
         logger.info("========================>{}:{}<=========================", code, temp);
         return temp.equals(code);
     }
+
+
+
+    /**
+     * 获取用户列表 "system:user:list"
+     */
+    @ApiOperation("查询用户列表旧的卡号加密修改成新卡号加密")
+    @GetMapping("/oldCheckNewCard")
+    public R<?> oldCheckNewCard() {
+        userService.oldCheckNewCard();
+        return R.ok();
+    }
 }

+ 8 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysUserMapper.java

@@ -272,4 +272,12 @@ public interface SysUserMapper {
      * @return 用户信息集合信息
      */
     public List<SysUser> getSafeUserList(SysUser sysUser);
+
+
+    /**
+     * 根据条件分页查询用户列表
+     *
+     * @return 用户信息集合信息
+     */
+    public List<SysUser> oldCheckNewCard();
 }

+ 8 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/ISysUserService.java

@@ -349,4 +349,12 @@ public interface ISysUserService {
      * @return
      */
     public SysUser selectUserIdByPhone(String  phone);
+
+
+    /**
+     * 查询用户列表旧的卡号加密修改成新卡号加密
+     *
+     * @return 用户信息集合信息
+     */
+    public void oldCheckNewCard();
 }

+ 20 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysUserServiceImpl.java

@@ -66,6 +66,9 @@ public class SysUserServiceImpl implements ISysUserService {
     @Autowired
     private ISysPermitMenuService sysPermitMenuService;
 
+    @Autowired
+    private SysTeacherServiceImpl sysTeacherService;
+
     /**
      * 根据条件分页查询用户列表
      *
@@ -1166,4 +1169,21 @@ public class SysUserServiceImpl implements ISysUserService {
     public SysUser selectUserIdByPhone(String phone) {
         return userMapper.checkPhoneUnique(phone);
     }
+
+    @Override
+    public void oldCheckNewCard() {
+        List<SysUser> sysUserList = userMapper.oldCheckNewCard();
+        for(SysUser sysUser : sysUserList){
+            try{
+                long num = Long.parseLong(sysUser.getCardNum(),16);
+                sysUser.setCardNum(num+"");
+                //处理卡号加密
+                sysTeacherService.passCardNum(sysUser,1);
+                userMapper.updateUser(sysUser);
+            }catch (Exception e){
+                log.info("卡号解密失败===="+sysUser.getCardNum());
+            }
+        }
+
+    }
 }

+ 20 - 0
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -817,4 +817,24 @@
             AND FIND_IN_SET(u.user_id, #{safeUserId})
         </if>
     </select>
+
+
+    <select id="oldCheckNewCard" resultMap="SysUserResult">
+        select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.password, u.sex,
+        u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+        u.major_id, u.grade, u.tutor_user_id, u.position, p.post_name as positionName,
+        u.nature,(select sc.class_name from sys_class sc where sc.id = u.grade) gradeName,
+        u.card_num,u.wechat_id,u.nationality,u.addr,u.work_status,
+        u.date_birth,d.dept_name, d.leader,u.department,
+        u.education, u.user_type,sm.`major_name` major,
+        ut.nick_name tutorUserName,u.is_check,date_format(u.create_time, '%Y-%m-%d') createTimeStr
+        from
+        sys_user u
+        left join sys_dept d on u.dept_id = d.dept_id
+        left join sys_user ut on ut.user_id = u.tutor_user_id
+        left join sys_post p on u.position = p.post_id
+        LEFT JOIN sys_major sm ON sm.id = u.major_id
+        where u.del_flag = '0'
+        AND u.card_num IS NOT NULL AND u.`card_num_simple` IS NULL
+    </select>
 </mapper>