Bladeren bron

Merge branch 'dev' of http://192.168.1.43:3000/v2/zd-parents into dev

chaiyunlong 2 jaren geleden
bovenliggende
commit
071226d77c

+ 20 - 0
zd-common/common-core/src/main/java/com/zd/common/core/redis/RedisService.java

@@ -150,4 +150,24 @@ public interface RedisService {
      * @return 对象列表
      * @return 对象列表
      */
      */
     public Collection<String> keys(final String pattern);
     public Collection<String> keys(final String pattern);
+
+    /**
+     * 加锁
+     * @param key
+     * @param second
+     */
+    boolean lock(String key, long second);
+
+    /**
+     * 解除
+     * @param key
+     * @return
+     */
+    boolean unLock(String key);
+
+    /**
+     * 是否存在锁
+     * @param key
+     */
+    boolean isExistLock(String key);
 }
 }

+ 20 - 0
zd-common/common-core/src/main/java/com/zd/common/core/redis/RedisServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zd.common.core.redis;
 package com.zd.common.core.redis;
 
 
+import com.zd.model.constant.BaseConstants;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.BoundSetOperations;
 import org.springframework.data.redis.core.BoundSetOperations;
 import org.springframework.data.redis.core.HashOperations;
 import org.springframework.data.redis.core.HashOperations;
@@ -128,4 +129,23 @@ public class RedisServiceImpl implements RedisService {
     public Collection<String> keys(final String pattern) {
     public Collection<String> keys(final String pattern) {
         return redisTemplate.keys(pattern);
         return redisTemplate.keys(pattern);
     }
     }
+
+    @Override
+    public boolean lock(String key, long second) {
+        return redisTemplate.opsForValue().setIfAbsent(BaseConstants.REDIS_LOCK + key, key, second, TimeUnit.SECONDS);
+    }
+
+    @Override
+    public boolean unLock(String key) {
+        return redisTemplate.delete(BaseConstants.REDIS_LOCK + key);
+    }
+
+    @Override
+    public boolean isExistLock(String key) {
+        Object obj = redisTemplate.opsForValue().get(BaseConstants.REDIS_LOCK + key);
+        if (obj != null) {
+            return Boolean.TRUE;
+        }
+        return Boolean.FALSE;
+    }
 }
 }

+ 5 - 0
zd-model/src/main/java/com/zd/model/constant/BaseConstants.java

@@ -186,4 +186,9 @@ public interface BaseConstants {
 
 
 
 
     String DELAY_QUEUE = "delayQueue";
     String DELAY_QUEUE = "delayQueue";
+
+    /**
+     * Redis前缀,需统一
+     */
+    String REDIS_LOCK = "redis_lock:";
 }
 }

+ 6 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/onvif/impl/ONVIFServerIMpl.java

@@ -12,11 +12,11 @@ import be.teletask.onvif.models.OnvifMediaProfile;
 import be.teletask.onvif.models.OnvifServices;
 import be.teletask.onvif.models.OnvifServices;
 import be.teletask.onvif.responses.OnvifResponse;
 import be.teletask.onvif.responses.OnvifResponse;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
-import com.zd.alg.iot.vmp.service.IStreamProxyService;
 import com.zd.alg.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.zd.alg.iot.vmp.media.zlm.dto.MediaServerItem;
 import com.zd.alg.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.zd.alg.iot.vmp.media.zlm.dto.StreamProxyItem;
 import com.zd.alg.iot.vmp.onvif.IONVIFServer;
 import com.zd.alg.iot.vmp.onvif.IONVIFServer;
 import com.zd.alg.iot.vmp.onvif.dto.ONVIFCallBack;
 import com.zd.alg.iot.vmp.onvif.dto.ONVIFCallBack;
+import com.zd.alg.iot.vmp.service.IStreamProxyService;
 import okhttp3.FormBody;
 import okhttp3.FormBody;
 import okhttp3.OkHttpClient;
 import okhttp3.OkHttpClient;
 import okhttp3.Request;
 import okhttp3.Request;
@@ -24,6 +24,7 @@ import okhttp3.Response;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import java.io.File;
 import java.io.File;
@@ -42,6 +43,10 @@ public class ONVIFServerIMpl implements IONVIFServer {
 
 
     @Autowired
     @Autowired
     private IStreamProxyService streamProxyService;
     private IStreamProxyService streamProxyService;
+    @Value("${file.path}")
+    private String rootPath;
+    @Value("${file.prefix}")
+    private String prefixPath;
 
 
     @Override
     @Override
     public void search(int timeout, ONVIFCallBack<List<String>> callBack) {
     public void search(int timeout, ONVIFCallBack<List<String>> callBack) {
@@ -188,8 +193,6 @@ public class ONVIFServerIMpl implements IONVIFServer {
         String separator= File.separator;
         String separator= File.separator;
         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
         SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
         String strTime=simpleDateFormat.format(new Date());
         String strTime=simpleDateFormat.format(new Date());
-        String rootPath="/home/upload";
-        String prefixPath="statics";
         String joinPath=separator+"record"+separator+param.get("app")+separator+param.get("stream")+separator+strTime+separator;
         String joinPath=separator+"record"+separator+param.get("app")+separator+param.get("stream")+separator+strTime+separator;
         String urlPath=rootPath+joinPath;
         String urlPath=rootPath+joinPath;
         String returnPath=prefixPath+joinPath;
         String returnPath=prefixPath+joinPath;

+ 5 - 1
zd-modules/zd-algorithm/src/main/java/com/zd/alg/iot/vmp/vmanager/onvif/ONVIFController.java

@@ -171,7 +171,11 @@ public class ONVIFController {
                     resultData.setMsg("视频录制中无法重复录制!");
                     resultData.setMsg("视频录制中无法重复录制!");
                 }else{
                 }else{
                     JSONObject object=onvifServer.startRecord(mediaServerItem,map);
                     JSONObject object=onvifServer.startRecord(mediaServerItem,map);
-                    resultData.setCode(object.getInteger("code"));
+                    if(object.getInteger("code")==0){
+                        resultData.setCode(200);
+                    }else{
+                        resultData.setCode(object.getInteger("code"));
+                    }
                     resultData.setData(object.getString("result"));
                     resultData.setData(object.getString("result"));
                     resultData.setMsg(object.getString("msg"));
                     resultData.setMsg(object.getString("msg"));
                 }
                 }

+ 50 - 45
zd-modules/zd-algorithm/src/main/java/com/zd/alg/monitor/HardwareDeviceMonitor.java

@@ -52,59 +52,64 @@ public class HardwareDeviceMonitor {
 
 
     @Scheduled(cron = "0 */9 * * * ?")
     @Scheduled(cron = "0 */9 * * * ?")
     public void checkPowerUse() {
     public void checkPowerUse() {
-        if (dingTalkNotice != null && dingTalkNotice) {
-            log.info("【设备监听提醒】 开始执行检查..............");
-            ResultData result = remoteLabHardwareService.statistics();
-            if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) {
-                String jsonStr = JSONObject.toJSONString(result.getData());
-                JSONObject json = JSONObject.parseObject(jsonStr);
-                Integer offline = json.getInteger("powerSupplyOffline");
-                log.info("【设备监听提醒】 异常设备掉线数量:" + offline);
-                if (offline != null && offline > 0) {
-                    //获取离线列表
-                    ResultData data = remoteLabHardwareService.list("SWITCH", "OFFLINE");
-                    //log.info("【设备监听提醒】 获取异常列表:"+JSONObject.toJSONString(data));
-                    if (data != null && data.getCode() == HttpStatus.SUCCESS && data.getData() != null) {
-                        //log.info("【设备监听提醒】 异常设备列表信息:" + data.getData());
-                        String listStr = JSONObject.toJSONString(data.getData());
-                        List<Map<String, Object>> list = JSONObject.parseObject(listStr, List.class);
-                        if (list != null && list.size() > 0) {
-                            Map<String, String> map = new HashMap<>();
-                            for (Map m : list) {
-                                String code = (String) m.get("relayCode");
-                                if (!map.containsKey(code)) {
-                                    map.put(code, "---信息[名称:" +
-                                            "" + m.get("name") + ",所在学院:" + m.get("deptName") + ",所在实验室:" + m.get("subjectName") + "]\n");
-                                }
-                            }
-                            //封装消息
-                            if (!map.isEmpty()) {
-                                Set<String> code = map.keySet();
-                                StringBuffer buffer = new StringBuffer();
-                                buffer.append("系统接入继电器设备离线信息:\n");
-                                boolean isSend = Boolean.FALSE;
-                                for (String key : code) {
-                                    Integer num = redisService.getCacheObject(redisPrefix+key);
-                                    if (num != null && num > 2) {
-                                        buffer.append("继电器[" + key + "] " + map.get(key));
-                                        redisService.deleteObject(redisPrefix+key);
-                                        isSend = Boolean.TRUE;
-                                    } else {
-                                        int value = num == null ? 1:num+1;
-                                        redisService.setCacheObject(redisPrefix+key, value, expire, TimeUnit.MINUTES);
+        String lockKey = "electric-relay-monitor";
+        if (!redisService.isExistLock(lockKey)) {
+            //添加锁
+            redisService.lock(lockKey,180);
+            if (dingTalkNotice != null && dingTalkNotice) {
+                ResultData result = remoteLabHardwareService.statistics();
+                if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) {
+                    String jsonStr = JSONObject.toJSONString(result.getData());
+                    JSONObject json = JSONObject.parseObject(jsonStr);
+                    Integer offline = json.getInteger("powerSupplyOffline");
+                    log.info("【设备监听提醒】 继电器异常监控--掉线数量:" + offline);
+                    if (offline != null && offline > 0) {
+                        //获取离线列表
+                        ResultData data = remoteLabHardwareService.list("SWITCH", "OFFLINE");
+                        log.info("【设备监听提醒】 继电器异常监控--获取异常列表:" + JSONObject.toJSONString(data));
+                        if (data != null && data.getCode() == HttpStatus.SUCCESS && data.getData() != null) {
+                            //log.info("【设备监听提醒】 异常设备列表信息:" + data.getData());
+                            String listStr = JSONObject.toJSONString(data.getData());
+                            List<Map<String, Object>> list = JSONObject.parseObject(listStr, List.class);
+                            if (list != null && list.size() > 0) {
+                                Map<String, String> map = new HashMap<>();
+                                for (Map m : list) {
+                                    String code = (String) m.get("relayCode");
+                                    if (!map.containsKey(code)) {
+                                        map.put(code, "---信息[名称:" +
+                                                "" + m.get("name") + ",所在学院:" + m.get("deptName") + ",所在实验室:" + m.get("subjectName") + "]\n");
                                     }
                                     }
                                 }
                                 }
-                                //通知
-                                if (isSend) {
-                                    String msg = "{\"msgtype\": \"text\",\"text\": {\"content\":\"" + buffer.toString() + "\"}}";
-                                    DingTalkAlert.sendAlert(msg);
-                                    //log.info("【设备监听提醒】 钉钉通知响应:" + rs);
+                                //封装消息
+                                if (!map.isEmpty()) {
+                                    Set<String> code = map.keySet();
+                                    StringBuffer buffer = new StringBuffer();
+                                    buffer.append("系统接入继电器设备离线信息:\n");
+                                    boolean isSend = Boolean.FALSE;
+                                    for (String key : code) {
+                                        Integer num = redisService.getCacheObject(redisPrefix + key);
+                                        if (num != null && num > 2) {
+                                            buffer.append("继电器[" + key + "] " + map.get(key));
+                                            redisService.deleteObject(redisPrefix + key);
+                                            isSend = Boolean.TRUE;
+                                        } else {
+                                            int value = num == null ? 1 : num + 1;
+                                            redisService.setCacheObject(redisPrefix + key, value, expire, TimeUnit.MINUTES);
+                                        }
+                                    }
+                                    //通知
+                                    if (isSend) {
+                                        String resp = DingTalkAlert.sendAlert(buffer.toString());
+                                        log.info("【设备监听提醒】 继电器异常监控--钉钉通知响应:" + resp);
+                                    }
                                 }
                                 }
                             }
                             }
                         }
                         }
                     }
                     }
                 }
                 }
             }
             }
+            //释放锁
+            redisService.unLock(lockKey);
         }
         }
     }
     }
 }
 }

+ 2 - 3
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/event/LabMessageListener.java

@@ -1,6 +1,5 @@
 package com.zd.laboratory.event;
 package com.zd.laboratory.event;
 
 
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.TypeReference;
 import com.alibaba.fastjson.TypeReference;
 import com.zd.laboratory.api.constant.RiskPlanConstants;
 import com.zd.laboratory.api.constant.RiskPlanConstants;
 import com.zd.laboratory.api.entity.SensorFunctionStatus;
 import com.zd.laboratory.api.entity.SensorFunctionStatus;
@@ -29,8 +28,8 @@ public class LabMessageListener implements ApplicationListener<SensorLabMessageE
     @Override
     @Override
     public void onApplicationEvent(SensorLabMessageEvent sensorLabMessageEvent) {
     public void onApplicationEvent(SensorLabMessageEvent sensorLabMessageEvent) {
         SubFunction<SensorFunctionStatus> message = sensorLabMessageEvent.getMessage();
         SubFunction<SensorFunctionStatus> message = sensorLabMessageEvent.getMessage();
-        log.info("监听传感器入口——实验室Id======{}",message.getSubId());
-        log.info("监听传感器入口——传感器param==={}", JSON.toJSONString(message));
+        //log.info("监听传感器入口——实验室Id======{}",message.getSubId());
+        //log.info("监听传感器入口——传感器param==={}", JSON.toJSONString(message));
         //触发事件
         //触发事件
         //没有实验室Id 不处理
         //没有实验室Id 不处理
         if (message.getSubId() == null) {
         if (message.getSubId() == null) {

+ 6 - 10
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/service/impl/LabRiskPlanServiceImpl.java

@@ -628,7 +628,6 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
      */
      */
     @Override
     @Override
     public synchronized int triggerRiskPlan(SubFunction<SensorFunctionStatus> subFunction, Integer riskAttribute) {
     public synchronized int triggerRiskPlan(SubFunction<SensorFunctionStatus> subFunction, Integer riskAttribute) {
-        log.info("======进入触发预案======");
         int flag = 200;
         int flag = 200;
         //这里判断火焰预案,就不继续往下执行了,锁死火焰预案
         //这里判断火焰预案,就不继续往下执行了,锁死火焰预案
         if (redisService.getCacheObject("subjectByHuoyan" + subFunction.getSubId()) != null) {
         if (redisService.getCacheObject("subjectByHuoyan" + subFunction.getSubId()) != null) {
@@ -637,12 +636,11 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
         }
         }
         //实验室传感器是否触发预案
         //实验室传感器是否触发预案
         LabRiskPlanLevel labRiskPlanLevel = matchingRiskPlan(subFunction);
         LabRiskPlanLevel labRiskPlanLevel = matchingRiskPlan(subFunction);
-        log.info("触发预案具体信息={}", JSON.toJSONString(labRiskPlanLevel));
         //获取当前实验室触发预案的风险异常组列表
         //获取当前实验室触发预案的风险异常组列表
         List<LabRiskPlanAbnormalGroupVO> groupList = getLabRiskPlanAbnormalGroupVOS(subFunction.getSubId());
         List<LabRiskPlanAbnormalGroupVO> groupList = getLabRiskPlanAbnormalGroupVOS(subFunction.getSubId());
         //如果预案里面配置传感器都达标,需要执行预案对应的硬件操作
         //如果预案里面配置传感器都达标,需要执行预案对应的硬件操作
         if (labRiskPlanLevel.getRiskPlanId() != null) {
         if (labRiskPlanLevel.getRiskPlanId() != null) {
-            log.info("触发预案id:{}", labRiskPlanLevel.getRiskPlanId());
+            log.info("触发预案具体信息={}", JSON.toJSONString(labRiskPlanLevel));
             //预案缓存信息处理
             //预案缓存信息处理
             riskPlanRedisCache(subFunction);
             riskPlanRedisCache(subFunction);
             //获取系统配置通知模板
             //获取系统配置通知模板
@@ -957,7 +955,7 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
             try {
             try {
                 messageSendService.sendOnepcSubNews(subFunction.getSubId(), 2, RiskPlanConstants.LAB_SAFETY_MANAGEMENT_SYSTEM + labRiskPlanLevel.getContent() + str);
                 messageSendService.sendOnepcSubNews(subFunction.getSubId(), 2, RiskPlanConstants.LAB_SAFETY_MANAGEMENT_SYSTEM + labRiskPlanLevel.getContent() + str);
             } catch (Exception e) {
             } catch (Exception e) {
-                log.error("向一体机推送语音播报异常:" + e);
+                log.error("向一体机推送语音播报异常:{}",e);
             }
             }
 
 
             //向一体机传感器预警
             //向一体机传感器预警
@@ -1006,7 +1004,6 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
                 //预案调用喇叭
                 //预案调用喇叭
                 log.info("打开喇叭-远程调用查询喇叭列表,楼层id={},实验室id={}", floorId, subjectId);
                 log.info("打开喇叭-远程调用查询喇叭列表,楼层id={},实验室id={}", floorId, subjectId);
                 Integer count = labSparseHardwareService.selectSpeakerCount();
                 Integer count = labSparseHardwareService.selectSpeakerCount();
-                log.info("查询喇叭总数:{}",count);
                 R deviceList = remoteSpeakService.getDeviceList(1, count + 10, -99L, subjectId);
                 R deviceList = remoteSpeakService.getDeviceList(1, count + 10, -99L, subjectId);
                 log.info("打开喇叭-远程调用喇叭列表返回内容: deviceList={}", JSON.toJSONString(deviceList));
                 log.info("打开喇叭-远程调用喇叭列表返回内容: deviceList={}", JSON.toJSONString(deviceList));
                 if (deviceList.getCode() == 200) {
                 if (deviceList.getCode() == 200) {
@@ -1181,7 +1178,7 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
                     //插入风险硬件日志
                     //插入风险硬件日志
                     operateHardWareInfo(labRiskPlanLevel, labRiskPlanAbnormalGroup.getSubjectId(), labRiskPlanAbnormalLog.getGroupId(), riskPlanJson.toString());
                     operateHardWareInfo(labRiskPlanLevel, labRiskPlanAbnormalGroup.getSubjectId(), labRiskPlanAbnormalLog.getGroupId(), riskPlanJson.toString());
                 } catch (Exception e) {
                 } catch (Exception e) {
-                    log.error("操作硬件设备异常::::" + e);
+                    log.error("操作硬件设备异!{}",e);
                 } finally {
                 } finally {
                     return groupId;
                     return groupId;
                 }
                 }
@@ -1224,7 +1221,7 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
                                 redisService.setCacheSetV2(BaseConstants.WRAN_KEY + subFunction.getSubId(), funSet);
                                 redisService.setCacheSetV2(BaseConstants.WRAN_KEY + subFunction.getSubId(), funSet);
                             });
                             });
                         } catch (Exception e) {
                         } catch (Exception e) {
-                            log.error("操作硬件设备异常::::" + e);
+                            log.error("操作硬件设备异常{}",e);
                         } finally {
                         } finally {
                             return groupId;
                             return groupId;
                         }
                         }
@@ -1240,7 +1237,7 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
     }
     }
 
 
     public void insertPlanAbnormalLogByHard(LabRiskPlanLevel labRiskPlanLevel, LabRiskPlanHardwareRelation hardRelation, Long subjectId, Long groupId, String riskPlanJson) {
     public void insertPlanAbnormalLogByHard(LabRiskPlanLevel labRiskPlanLevel, LabRiskPlanHardwareRelation hardRelation, Long subjectId, Long groupId, String riskPlanJson) {
-        log.error("打开硬件记录风险日志");
+        log.error("硬件记录风险日志");
         LabRiskPlanAbnormalLog labRiskPlanAbnormalLog = new LabRiskPlanAbnormalLog();
         LabRiskPlanAbnormalLog labRiskPlanAbnormalLog = new LabRiskPlanAbnormalLog();
         String operate = hardwareFunctionStatusConfig.getCache().get(hardRelation.getHardwareType() + "-" + hardRelation.getOperate()).getDescribe();
         String operate = hardwareFunctionStatusConfig.getCache().get(hardRelation.getHardwareType() + "-" + hardRelation.getOperate()).getDescribe();
         labRiskPlanAbnormalLog.setRiskPlanId(labRiskPlanLevel.getRiskPlanId());
         labRiskPlanAbnormalLog.setRiskPlanId(labRiskPlanLevel.getRiskPlanId());
@@ -1359,7 +1356,7 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
      * @return 结果
      * @return 结果
      */
      */
     public void operateHardWareInfo(LabRiskPlanLevel labRiskPlanLevel, Long subjectId, Long groupId, String riskPlanJson) {
     public void operateHardWareInfo(LabRiskPlanLevel labRiskPlanLevel, Long subjectId, Long groupId, String riskPlanJson) {
-        log.error("这里需要开始调用相关硬件设备=======================================================");
+        log.info("开始调用相关硬件设备");
         //这里获取预案下的硬件关联列表
         //这里获取预案下的硬件关联列表
         List<LabRiskPlanHardwareRelation> riskPlanHardwareList = labRiskPlanLevel.getRiskPlanHardwareList();
         List<LabRiskPlanHardwareRelation> riskPlanHardwareList = labRiskPlanLevel.getRiskPlanHardwareList();
         Map<HardwareTypeEnum, List<FunctionStatus>> hardwareFunList = hardwareFunctionStatusConfig.getHardwareFunctionStatusListMap();
         Map<HardwareTypeEnum, List<FunctionStatus>> hardwareFunList = hardwareFunctionStatusConfig.getHardwareFunctionStatusListMap();
@@ -1376,7 +1373,6 @@ public class LabRiskPlanServiceImpl extends ServiceImpl<LabRiskPlanMapper, LabRi
                     labSubjectManagerService.operationHardware(status, hardwareList);
                     labSubjectManagerService.operationHardware(status, hardwareList);
                 }
                 }
             }
             }
-            log.error("打开硬件记录风险日志");
             insertPlanAbnormalLogByHard(labRiskPlanLevel, riskPlanHardwareList.get(i), subjectId, groupId, riskPlanJson);
             insertPlanAbnormalLogByHard(labRiskPlanLevel, riskPlanHardwareList.get(i), subjectId, groupId, riskPlanJson);
         }
         }
     }
     }

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

@@ -127,9 +127,9 @@ public class LabSubjectManagerService {
 //    @Async("labExecutor")
 //    @Async("labExecutor")
     public void operationHardware(FunctionStatus status, List<LabHardware> hardwareList) {
     public void operationHardware(FunctionStatus status, List<LabHardware> hardwareList) {
         try {
         try {
-            logger.info("异步线程处理硬件信息:id={},name={}",Thread.currentThread().getId(),Thread.currentThread().getName());
             for (LabHardware hard : hardwareList) {
             for (LabHardware hard : hardwareList) {
                 ResultData result = excutingComm(hard, status);
                 ResultData result = excutingComm(hard, status);
+                logger.info("操作硬件返回信息result={}",result);
                 Thread.sleep(timeWaitConfigUtils.getWaitTime());
                 Thread.sleep(timeWaitConfigUtils.getWaitTime());
             }
             }
         } catch (InterruptedException e) {
         } catch (InterruptedException e) {

+ 2 - 0
zd-modules/zd-modules-system/src/main/java/com/zd/system/controller/SysDeptController.java

@@ -191,6 +191,8 @@ public class SysDeptController extends BaseController {
     @PostMapping("/addDeptByTeacher")
     @PostMapping("/addDeptByTeacher")
     public AjaxResult addDeptByTeacher(@Validated @RequestBody SysDeptVO deptVO) {
     public AjaxResult addDeptByTeacher(@Validated @RequestBody SysDeptVO deptVO) {
         for (SysDept sysDept : deptVO.getTeaCherDpetList()){
         for (SysDept sysDept : deptVO.getTeaCherDpetList()){
+            //未删除的数据
+            sysDept.setDelFlag("0");
             if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(sysDept))) {
             if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(sysDept))) {
                 return AjaxResult.error("新增部门'" + sysDept.getDeptName() + "'失败,部门名称已存在");
                 return AjaxResult.error("新增部门'" + sysDept.getDeptName() + "'失败,部门名称已存在");
             }
             }

+ 1 - 1
zd-modules/zd-modules-system/src/main/java/com/zd/system/mapper/SysDeptMapper.java

@@ -108,7 +108,7 @@ public interface SysDeptMapper {
      * @param parentId 父部门ID
      * @param parentId 父部门ID
      * @return 结果
      * @return 结果
      */
      */
-    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
+    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId, @Param("delFlag")String delFlag);
 
 
     /**
     /**
      * 获取部门名称是否唯一
      * 获取部门名称是否唯一

+ 1 - 1
zd-modules/zd-modules-system/src/main/java/com/zd/system/service/impl/SysDeptServiceImpl.java

@@ -195,7 +195,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
     @Override
     @Override
     public String checkDeptNameUnique(SysDept dept) {
     public String checkDeptNameUnique(SysDept dept) {
         Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
         Long deptId = StringUtils.isNull(dept.getDeptId()) ? -1L : dept.getDeptId();
-        SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId());
+        SysDept info = deptMapper.checkDeptNameUnique(dept.getDeptName(), dept.getParentId(),dept.getDelFlag());
         if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) {
         if (StringUtils.isNotNull(info) && info.getDeptId().longValue() != deptId.longValue()) {
             return UserConstants.NOT_UNIQUE;
             return UserConstants.NOT_UNIQUE;
         }
         }

+ 6 - 1
zd-modules/zd-modules-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -144,7 +144,12 @@
 
 
     <select id="checkDeptNameUnique" resultMap="SysDeptResult">
     <select id="checkDeptNameUnique" resultMap="SysDeptResult">
         <include refid="selectDeptVo"/>
         <include refid="selectDeptVo"/>
-        where dept_name=#{deptName} and parent_id = #{parentId} limit 1
+        where dept_name=#{deptName}
+        and parent_id = #{parentId}
+        <if test="delFlag != null and delFlag != ''">
+            AND del_flag = #{delFlag}
+        </if>
+         limit 1
     </select>
     </select>
 
 
     <select id="getDeptNameUnique" resultMap="SysDeptResult">
     <select id="getDeptNameUnique" resultMap="SysDeptResult">