Prechádzať zdrojové kódy

Merge branch 'V0.0.6-iot' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.0.6-iot

jiawuxian 1 rok pred
rodič
commit
0db6bc92e9
14 zmenil súbory, kde vykonal 126 pridanie a 277 odobranie
  1. 8 92
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java
  2. 1 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java
  3. 19 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java
  4. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java
  5. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  6. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDefenceAreaService.java
  7. 6 2
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java
  8. 54 126
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java
  9. 1 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceServiceImpl.java
  10. 5 6
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java
  11. 1 5
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java
  12. 18 35
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDaysCheckServiceImpl.java
  13. 2 6
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java
  14. 4 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

+ 8 - 92
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java

@@ -16,120 +16,36 @@ import java.util.Map;
 @NoArgsConstructor
 @AllArgsConstructor
 public enum ElectricityMeterAttributes {
-    METER_ATTRIBUTES_0(16104001L, "A相电压Ua","METER_ATTRIBUTES_0","V",null),
-    METER_ATTRIBUTES_1(16107001L, "A相电流Ia","METER_ATTRIBUTES_1","A",null),
-    METER_ATTRIBUTES_2(16126001L ,"第1路A相温度","METER_ATTRIBUTES_2","℃",null),
-    METER_ATTRIBUTES_3(16160001L ,"第1路A相温度2","METER_ATTRIBUTES_3","℃",null),
-    METER_ATTRIBUTES_4(16117001L ,"第1路A功率因数PF","METER_ATTRIBUTES_4","%",null),
-    METER_ATTRIBUTES_5(16163001L ,"第1路A谐波电压","METER_ATTRIBUTES_5","V",null),
-    METER_ATTRIBUTES_6(16166001L ,"第1路A谐波电流","METER_ATTRIBUTES_6","A",null),
-    METER_ATTRIBUTES_7(16111001L ,"第1路A相有功功率Pa","METER_ATTRIBUTES_7","KW",null),
-
-    METER_ATTRIBUTES_8(16105001L ,"B相电压Ub","METER_ATTRIBUTES_8","V",null),
-    METER_ATTRIBUTES_9(16108001L ,"B相电流Ib","METER_ATTRIBUTES_9","A",null),
-    METER_ATTRIBUTES_10(16127001L ,"第1路B相温度","METER_ATTRIBUTES_10","℃",null),
-    METER_ATTRIBUTES_11(16161001L ,"第1路B相温度2","METER_ATTRIBUTES_11","℃",null),
-    METER_ATTRIBUTES_12(16169001L ,"第1路B功率因数PF","METER_ATTRIBUTES_12","%",null),
-    METER_ATTRIBUTES_13(16164001L ,"第1路B谐波电压","METER_ATTRIBUTES_13","V",null),
-    METER_ATTRIBUTES_14(16167001L ,"第1路B谐波电流","METER_ATTRIBUTES_14","A",null),
-    METER_ATTRIBUTES_15(16112001L ,"第1路B相有功功率Pb","METER_ATTRIBUTES_15","KW",null),
-
-    METER_ATTRIBUTES_16(16106001L ,"C相电压Uc","METER_ATTRIBUTES_16","V",null),
-    METER_ATTRIBUTES_17(16109001L ,"C相电流Ic","METER_ATTRIBUTES_17","A",null),
-    METER_ATTRIBUTES_18(16128001L ,"第1路C相温度","METER_ATTRIBUTES_18","℃",null),
-    METER_ATTRIBUTES_19(16162001L ,"第1路C相温度2","METER_ATTRIBUTES_19","℃",null),
-    METER_ATTRIBUTES_20(16170001L ,"第1路C功率因数PF","METER_ATTRIBUTES_20","%",null),
-    METER_ATTRIBUTES_21(16165001L ,"第1路C谐波电压","METER_ATTRIBUTES_21","V",null),
-    METER_ATTRIBUTES_22(16168001L ,"第1路C谐波电流","METER_ATTRIBUTES_22","A",null),
-    METER_ATTRIBUTES_23(16113001L ,"第1路C相有功功率Pc","METER_ATTRIBUTES_23","KW",null),
-
-    METER_ATTRIBUTES_24(16173001L ,"合相电压","METER_ATTRIBUTES_24","V",null),
-    METER_ATTRIBUTES_25(16174001L ,"合相电流","METER_ATTRIBUTES_25","A",null),
-    METER_ATTRIBUTES_26(16175001L ,"合相功率","METER_ATTRIBUTES_26","KW",null),
-    METER_ATTRIBUTES_27(16176001L ,"合相温度","METER_ATTRIBUTES_27","℃",null),
-    METER_ATTRIBUTES_28(16129001L ,"N 相下端温度","METER_ATTRIBUTES_28","℃",null),
-    METER_ATTRIBUTES_29(16177001L ,"漏电流值","METER_ATTRIBUTES_29","mA",null),
-    METER_ATTRIBUTES_30(16178001L ,"合相总功率因数","METER_ATTRIBUTES_30","%",null),
-    METER_ATTRIBUTES_31(16179001L ,"累计电量","METER_ATTRIBUTES_31","W/h",null),
-
-    METER_ATTRIBUTES_32(16013001L ,"电压缺相","METER_ATTRIBUTES_32",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_33(16002001L ,"交流电压过高告警","METER_ATTRIBUTES_33",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_34(16014001L ,"过压预警","METER_ATTRIBUTES_34",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_35(16003001L ,"交流电压过低告警","METER_ATTRIBUTES_35",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_36(16015001L ,"欠压预警","METER_ATTRIBUTES_36",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_37(16028001L ,"短路报警","METER_ATTRIBUTES_37",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_38(16026001L ,"浪涌报警","METER_ATTRIBUTES_38",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_39(16027001L ,"过载报警","METER_ATTRIBUTES_39",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_40(16025001L ,"漏电报警","METER_ATTRIBUTES_40",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_41(16024001L ,"过流报警","METER_ATTRIBUTES_41",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_42(16016001L ,"漏电保护正常","METER_ATTRIBUTES_42",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_43(16017001L ,"漏电自检未完成","METER_ATTRIBUTES_43",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_44(16022001L ,"打火报警","METER_ATTRIBUTES_44",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_45(16018001L ,"漏电预警","METER_ATTRIBUTES_45",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_46(16019001L ,"电流预警","METER_ATTRIBUTES_46",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_47(16021001L ,"温度报警","METER_ATTRIBUTES_47",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_48(16023001L ,"不平衡报警","METER_ATTRIBUTES_48",null,"{0:\"正常\",1:\"告警\"}"),
-    METER_ATTRIBUTES_49(16020001L ,"温度预警","METER_ATTRIBUTES_49",null,"{0:\"正常\",1:\"告警\"}"),
 
     //以下几个name字段不可变,依靠此name与北向上报数据中的比对
-    METER_ATTRIBUTES_50(8074214277450756099L,"环境温度","temperature","℃",null),
-    METER_ATTRIBUTES_51(8074214277450756097L,"环境湿度","humidity","%RH",null),
-    METER_ATTRIBUTES_52(8070947354577793026L,"烟雾告警","SmokeSensorState",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_53(8123843190642397184L,"水浸告警","status",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_54(8123843190642397184L,"红外告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"告警\"}"),
-    METER_ATTRIBUTES_55(8123843190642397184L,"可燃气体告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"告警\"}"),
-    METER_ATTRIBUTES_56(8123843190642397184L,"门磁开关状态","infrared_state",null,"{\"0\":\"开门\",\"1\":\"关门\"}"),
+    METER_ATTRIBUTES_0("环境温度", "℃", null),
+    METER_ATTRIBUTES_1("环境湿度", "%RH", null),
+    METER_ATTRIBUTES_2("烟雾告警", null, "{0:\"正常\",1:\"异常\"}"),
+    METER_ATTRIBUTES_3("水浸告警", null, "{0:\"正常\",1:\"异常\"}"),
+    METER_ATTRIBUTES_4("红外告警", null, "{\"0\":\"正常\",\"1\":\"告警\"}"),
+    METER_ATTRIBUTES_5("可燃气体告警", null, "{\"0\":\"正常\",\"1\":\"告警\"}"),
+    METER_ATTRIBUTES_6("门磁开关状态", null, "{\"0\":\"开门\",\"1\":\"关门\"}"),
     ;
 
-    private Long num;
-
     private String text;
 
-    private String attributesCode;
-
     private String unit;
 
     private String enumText;
 
-    /**
-     * 根据code获取name
-     */
-    public static String getName(Long num) {
-        ElectricityMeterAttributes e = enumMap.get(num);
-        return e != null ? e.getText() : "";
-    }
     public static ElectricityMeterAttributes getEnumByName(String text) {
         return enumMapText.get(text);
     }
-    public static ElectricityMeterAttributes getEnumByAttributesCode(String attributesCode) {
-        return enumMapCode.get(attributesCode);
-    }
 
     /**
      * 所有枚举
      */
-    private static final Map<Long, ElectricityMeterAttributes> enumMap = new LinkedHashMap<>();
     private static final Map<String, ElectricityMeterAttributes> enumMapText = new LinkedHashMap<>();
-    private static final Map<String, ElectricityMeterAttributes> enumMapCode = new LinkedHashMap<>();
+
     static {
         for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
-            enumMap.put(typeEnum.num, typeEnum);
-        }
-        for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
             enumMapText.put(typeEnum.text, typeEnum);
         }
-        for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
-            enumMapCode.put(typeEnum.attributesCode, typeEnum);
-        }
     }
 
-    public static void main(String[] args) {
-        ElectricityMeterAttributes value = getEnumByName("过压预警");
-        JSONObject enumText = (JSONObject) JSONObject.parse(value.getEnumText());
-        System.out.println(enumText);
-        System.out.println(enumText.get("1"));
-        System.out.println(value.attributesCode);
-        System.out.println(value.num);
-        System.out.println(value.text);
-    }
 }

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java

@@ -42,7 +42,7 @@ public class IotAlarmSubsystem implements Serializable {
     @TableField("name")
     private String name;
 
-    @ApiModelProperty(value = "布防状态,0:撤防,1:布防")
+    @ApiModelProperty(value = "布防状态,0:撤防,1:布防,2:未知")
     @TableField("status")
     private Integer status;
 

+ 19 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/thread/ThreadPoolConfig.java

@@ -17,6 +17,7 @@ public class ThreadPoolConfig implements AsyncConfigurer {
      * 项目共用线程池
      */
     public static final String SOC_EXECUTOR = "socExecutor";
+    public static final String MEDIATOR_EXECUTOR = "mediatorExecutor";
 
 
     @Override
@@ -41,4 +42,22 @@ public class ThreadPoolConfig implements AsyncConfigurer {
         executor.initialize();
         return executor;
     }
+
+    @Bean(MEDIATOR_EXECUTOR)
+    @Primary
+    public ThreadPoolTaskExecutor mediatorExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        //优雅停机
+        executor.setWaitForTasksToCompleteOnShutdown(true);
+        executor.setCorePoolSize(10);
+        executor.setMaxPoolSize(10);
+        executor.setQueueCapacity(200);
+        executor.setThreadNamePrefix("soc-executor-");
+        //拒绝策略,由投递者执行
+        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
+        //装饰器,用于异步线程内捕获异常
+        executor.setThreadFactory(new SocThreadFactory(executor));
+        executor.initialize();
+        return executor;
+    }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/evaluate/service/impl/CoreEvaluateTaskServiceImpl.java

@@ -159,6 +159,8 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
         }
         List<EvaluateTaskExportVO> list = new ArrayList<>();
         Double all = 0d;
+        // baseMapper.statisticsAll 方法不应该加机构类型参数
+        evaluateTaskStatisticsDTO.setType(null);
         for (int i = 0; i < sysOrgs.size(); i++) {
             EvaluateTaskExportVO evaluateTaskExportVO = new EvaluateTaskExportVO();
             evaluateTaskExportVO.setOrderNum(i + 1);
@@ -229,6 +231,8 @@ public class CoreEvaluateTaskServiceImpl extends ServiceImpl<CoreEvaluateTaskMap
         List<LinkedHashMap> rows = new ArrayList<>();
         Double average = null;
         Integer all = 0;
+        // 下方baseMapper.statisticsAll 方法不应该加机构类型参数
+        evaluateTaskStatisticsDTO.setType(null);
         for (int i = 0; i < sysOrgs.size(); i++) {
             evaluateTaskStatisticsDTO.setOrgId(sysOrgs.get(i).getId());
             LinkedHashMap linkedHashMap = new LinkedHashMap();

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -1204,7 +1204,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     public void buildPdf(Date date) {
 
         List<Resumption> resumptions = resumptionMapper.selectList(new LambdaQueryWrapper<Resumption>()
-                .like(Resumption::getYmdDate, DateUtils.toLocalDate(date))
+                .le(Resumption::getPlanStartTime, DateUtils.toLocalDate(date))
+                .ge(Resumption::getPlanEndTime, DateUtils.toLocalDate(date))
 //                .eq(Resumption::getStatus, 3)
                 .select(Resumption::getOrgId));
         List<Long> orgIds = resumptions.stream().map(Resumption::getOrgId).distinct().collect(Collectors.toList());

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDefenceAreaService.java

@@ -18,7 +18,7 @@ import java.util.List;
  */
 public interface IotAlarmDefenceAreaService extends IService<IotAlarmDefenceArea> {
 
-    List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode);
+    List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode,Long orgId);
 
     IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx, String orgGuid);
 

+ 6 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java

@@ -65,8 +65,12 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
     IIotDefenceAreaDataService defenceAreaDataService;
 
     @Override
-    public List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode) {
-        return lambdaQuery().eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode).eq(IotAlarmDefenceArea::getDeleted, 0).list();
+    public List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode,Long orgId) {
+        return lambdaQuery()
+                .eq(IotAlarmDefenceArea::getOrgId, orgId)
+                .eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode)
+                .eq(IotAlarmDefenceArea::getDeleted, 0)
+                .list();
     }
 
     @Override

+ 54 - 126
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java

@@ -15,6 +15,7 @@ import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystemLog;
 import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.mediator.domain.MediatorCategory;
 import com.xunmei.common.core.enums.CategoryDataEnum;
+import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.redis.utils.RedisUtils;
@@ -22,6 +23,7 @@ import com.xunmei.mediator.api.mapper.IotAlarmDefenceAreaMapper;
 import com.xunmei.mediator.api.mapper.IotAlarmSubsystemMapper;
 import com.xunmei.mediator.api.mapper.ProtectionLogMapper;
 import com.xunmei.mediator.api.service.*;
+import com.xunmei.mediator.util.CheckDataUtil;
 import com.xunmei.mediator.util.RedisCheckRepeatDataUtil;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -38,13 +40,18 @@ import com.xunmei.system.api.vo.SysOrgVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 
@@ -73,16 +80,18 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
     private IotAlarmDefenceAreaService defenceAreService;
     @Resource
     private NorthErrorService northErrorService;
-    @Resource
-    IotAlarmDefenceAreaMapper defenceAreaMapper;
-    @Resource
-    private IotAlarmSubsystemMapper subsystemMapper;
+    @Autowired
+    @Qualifier(ThreadPoolConfig.MEDIATOR_EXECUTOR)
+    private ThreadPoolTaskExecutor threadPoolTaskExecutor;
 
     @Override
     public IotAlarmSubsystem findByCodeAndOrgId(String defenceAreaCode, Long orgId) {
         return lambdaQuery()
+                .eq(IotAlarmSubsystem::getDeleted, 0)
                 .eq(IotAlarmSubsystem::getCode, defenceAreaCode)
-                .eq(IotAlarmSubsystem::getOrgId, orgId).last(Constants.LIMIT1).one()
+                .eq(IotAlarmSubsystem::getOrgId, orgId)
+                .last(Constants.LIMIT1)
+                .one()
                 ;
     }
 
@@ -129,8 +138,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
 
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId, "/status/defencearea"
-                    , protectionEditDto, "orgGUID:" + organizationGuid + "不正确");
+            NorthError error = new NorthError(msgId, "/status/defencearea", protectionEditDto, "orgGUID:" + organizationGuid + "不正确");
             northErrorService.saveError(error);
             return result;
         }
@@ -143,24 +151,23 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             result.setErrorMsg("参数非法:updateTime不正确");
             return result;
         }
-
-
-        IotAlarmSubsystem protection = new IotAlarmSubsystem();
-        protection.setCode(protectionEditDto.getDefenceareaCode());
-
-        IotAlarmSubsystem old = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
-        if (old != null) {
-            if (old.getUpdateTime().isAfter(updateTime)) {
-                result.setSuccess(true);
-                result.setErrorMsg("历史更新时间大于当前消息,无需更新!");
-                return result;
-            }
-            protection = old;
-        } else {
-            protection.setId(IdWorker.getId());
-            protection.setCreateTime(LocalDateTime.now());
+        IotDevice device = iotDeviceService.findByHostCode(protectionEditDto.getAlarmHostCode(), org.getId());
+        if (device == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:没有找到报警主机");
+            return result;
+        }
+        IotAlarmSubsystem protection = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
+        if (protection == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:没有找到子系统");
+            return result;
+        }
+        if (protection.getUpdateTime().isAfter(updateTime)) {
+            result.setSuccess(true);
+            result.setErrorMsg("历史更新时间大于当前消息,无需更新!");
+            return result;
         }
-
         protection.setName(protectionEditDto.getDefenceareaName());
         protection.setUpdateTime(updateTime);
         protection.setStatusUpdateTime(LocalDateTime.now());
@@ -179,55 +186,15 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
                 result.setErrorMsg("参数非法:defenceStatus不正确");
                 return result;
         }
-        IotDevice device = iotDeviceService.findByHostCode(protectionEditDto.getAlarmHostCode(), org.getId());
-        if (device == null) {
-            result.setSuccess(false);
-            result.setErrorMsg("参数非法:没有找到报警主机");
-            return result;
-        }
-        IotAlarmSubsystem po = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
-        if (po == null) {
-            result.setSuccess(false);
-            result.setErrorMsg("参数非法:没有找到子系统");
-            return result;
-        } else {
-            if (!po.getAlarmHostCode().equals(protectionEditDto.getAlarmHostCode())) {
-                result.setSuccess(false);
-                result.setErrorMsg("参数非法:该报警主机没有此子系统");
-                return result;
-            }
-        }
         protection.setOrgId(org.getId());
         protection.setOrgName(org.getShortName());
         protection.setOrgPath(org.getPath());
         protection.setAlarmHostCode(protectionEditDto.getAlarmHostCode());
         protection.setStatusUpdatorId(null);
         protection.setStatusUpdatorName(null);
-        this.saveOrUpdate(protection);
+        this.updateById(protection);
         this.northStatisticsSyncService.saveOrUpdateBusinessCountByDateAndDataType(DateUtil.today(), DataType.protectionStatusCount.getIndex(), 1L);
         this.saveProtectionLog(protection);
-        //this.writeValue(device, protection);
-
-/*
-        //动环告警处理
-        List<MediatorAlarmRuleSource> alarmRuleSourceList = alarmRuleSourceService.selectByCode(protection.getCode(), protection.getOrgId());
-        if (ObjectUtil.isNotEmpty(alarmRuleSourceList)) {
-            for (MediatorAlarmRuleSource alarmRuleSource : alarmRuleSourceList) {
-                final List<MediatorAlarmRuleExpress> appAlarmRuleExpressList = alarmRuleExpressService.selectRuleExpressByRuleIdAndType(alarmRuleSource.getRuleId(), alarmRuleSource.getSourceType());
-                if (ObjectUtil.isEmpty(appAlarmRuleExpressList)) {
-                    continue;
-                }
-                for (MediatorAlarmRuleExpress alarmRuleExpress : appAlarmRuleExpressList) {
-                    Integer timeTemplateId = alarmRuleExpress.getTimeTemplateId();
-                    //全时段
-                    if (timeTemplateId != null && 0 == alarmRuleExpress.getIsUseWorkTemplate()) {
-                        dealAlarmDataByAllTimeTemplate(alarmRuleExpress, protection);
-                    } else {
-                        dealAlarmDataByWorkTimeTemplate(alarmRuleExpress, protection, alarmRuleSource);
-                    }
-                }
-            }
-        }*/
         return result;
     }
 
@@ -242,38 +209,12 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         protectionLogMapper.insert(protectionLog);
     }
 
-   /* public void writeValue(final IotDevice device, final IotAlarmSubsystem protection) {
-        Map data = null;
-
-        try {
-            data = JSON.parseObject(String.valueOf(protection), Map.class);
-        } catch (Exception var5) {
-            log.error("转换对象异常:{}", var5);
-        }
-
-        String key = this.toKey(device.getOrgId(), Integer.parseInt(device.getDeviceType()));
-        this.redisTemplate.boundHashOps(key).put(device.getId(), data);
-        log.info("[ {} ][ {} ][ {} ] 数据 ==> [ {} ]", new Object[]{device.getOrgId(), device.getDeviceType(), device.getId(), data});
-    }*/
-
-    private String toKey(final Long orgId, Integer deviceType) {
-        return "device_" + orgId + "_" + deviceType + "_data_map";
-    }
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public ReceiveErrorDto defenceAreaList(DataPageDto<DefenceAreaDto> request, String msgId) {
-        String packageGuid = request.getPackageGuid();
-        if (StringUtils.isEmpty(packageGuid)) {
-            return ReceiveErrorDto.error("packageGuid参数非法");
-        }
-        Long totalPage = request.getTotalPage();
-        if (totalPage == null) {
-            return ReceiveErrorDto.error("totalPage参数非法");
-        }
-
-        if (CollectionUtils.isEmpty(request.getData())) {
-            return ReceiveErrorDto.error("报警主机子系统及防区信息为空");
+        final ReceiveErrorDto errorDto = CheckDataUtil.checkObjFieldIsNull(request);
+        if (!errorDto.getSuccess()) {
+            return errorDto;
         }
         final List<DefenceAreaDto> defenceareaList = RedisCheckRepeatDataUtil.isCompleted(request, DefenceAreaDto.class);
         LogUtils.BASE_INFO_DEFENCEAREA.info("判断是否获取全部报警主机子系统及防区信息分页数据:{}", defenceareaList.size() > 0);
@@ -282,25 +223,20 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         }
         LogUtils.BASE_INFO_DEFENCEAREA.info("获取全部的报警主机子系统及防区信息,开始数据处理界面!");
         this.northStatisticsSyncService.saveOrUpdateBaseCountByDataType(DataType.protectionCount.getIndex(), defenceareaList.size(), false);
-        new Thread(() -> {
+        CompletableFuture.runAsync(() -> {
             this.saveAndUpdate(defenceareaList, msgId);
-        }).start();
+        }, threadPoolTaskExecutor);
         return ReceiveErrorDto.success();
     }
 
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
     public void saveAndUpdate(List<DefenceAreaDto> defenceareaList, String msgId) {
-        if (CollectionUtils.isEmpty(defenceareaList)) {
-            ReceiveErrorDto.error("报警主机子系统及防区信息为空");
-            return;
-        }
         //查询报警主机主机设备列表
         List<IotDevice> devices = iotDeviceService.findByCategory(CategoryDataEnum.ALARM_HOST_DEVICE.getId());
         checkParam(defenceareaList, msgId, devices);
     }
 
     private void checkParam(List<DefenceAreaDto> defenceareaList, String msgId, List<IotDevice> devices) {
-        //获取category列表
-        List<MediatorCategory> categorys = categoryService.list();
         final List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
         List<NorthError> errors = new ArrayList<>();
         List<IotAlarmDefenceArea> sensorList = new ArrayList<>();
@@ -371,17 +307,14 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
                 if (StringUtils.isEmpty(sensorDto.getSensorTypeName())) {
                     error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:未传SensorTypeName");
                     errors.add(error);
-                    continue;
-                }
-                List<MediatorCategory> categorysa = categorys.stream().filter(r -> r.getName().equals(sensorDto.getSensorTypeName())).collect(Collectors.toList());//categoryDao.getOne(qw);
-                if (categorysa.size() == 0) {
-                    error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:没有找到设备类型,默认归到其他类型中");
-                    errors.add(error);
                 }
             }
-            // }
-            List<IotDevice> devicesa = devices.stream().filter(r -> r.getEquipmentCode().equals(dto.getAlarmHostCode()) && r.getOrgId().equals(org.getId())).collect(Collectors.toList());
-            if (devicesa.size() == 0) {
+            final Optional<IotDevice> iotDeviceOptional = devices.stream()
+                    .filter(r -> r.getEquipmentCode().equals(dto.getAlarmHostCode()))
+                    .filter(r -> r.getOrgId().equals(org.getId()))
+                    .filter(r -> r.getDeleted() == 0)
+                    .findAny();
+            if (!iotDeviceOptional.isPresent()) {
                 error = new NorthError(msgId, "/api/data/defenceareaList", dto, "参数非法:没有找到报警主机");
                 errors.add(error);
                 continue;
@@ -410,25 +343,22 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         this.northStatisticsSyncService.saveOrUpdateBaseCountByDataType(DataType.protectionCount.getIndex(), defenceareaList.size(), true);
     }
 
-    private void updateAllDelete(List<Long> orgIdLIst){
-        LambdaUpdateWrapper<IotAlarmSubsystem> updateWrapper=new LambdaUpdateWrapper<IotAlarmSubsystem>();
-        updateWrapper.in(IotAlarmSubsystem::getOrgId,orgIdLIst);
-        updateWrapper.set(IotAlarmSubsystem::getDeleted,1);
+    private void updateAllDelete(List<Long> orgIdLIst) {
+        LambdaUpdateWrapper<IotAlarmSubsystem> updateWrapper = new LambdaUpdateWrapper<IotAlarmSubsystem>();
+        updateWrapper.in(IotAlarmSubsystem::getOrgId, orgIdLIst);
+        updateWrapper.set(IotAlarmSubsystem::getDeleted, 1);
         this.update(updateWrapper);
 
-        LambdaUpdateWrapper<IotAlarmDefenceArea> defenceAreaLambdaUpdateWrapper=new LambdaUpdateWrapper<IotAlarmDefenceArea>();
-        defenceAreaLambdaUpdateWrapper.in(IotAlarmDefenceArea::getOrgId,orgIdLIst);
-        defenceAreaLambdaUpdateWrapper.set(IotAlarmDefenceArea::getDeleted,1);
+        LambdaUpdateWrapper<IotAlarmDefenceArea> defenceAreaLambdaUpdateWrapper = new LambdaUpdateWrapper<IotAlarmDefenceArea>();
+        defenceAreaLambdaUpdateWrapper.in(IotAlarmDefenceArea::getOrgId, orgIdLIst);
+        defenceAreaLambdaUpdateWrapper.set(IotAlarmDefenceArea::getDeleted, 1);
         defenceAreService.update(defenceAreaLambdaUpdateWrapper);
     }
 
     public Map<String, Object> protectionBuild(DefenceAreaDto dto, SysOrgVO org) {
         Map<String, Object> map = new HashMap<>();
-        IotAlarmSubsystem protection = null;
-        IotAlarmSubsystem old = this.findByCodeAndOrgId(dto.getDefenceareaCode(), org.getId());
-        if (old != null) {
-            protection = old;
-        } else {
+        IotAlarmSubsystem protection = this.findByCodeAndOrgId(dto.getDefenceareaCode(), org.getId());
+        if (protection == null) {
             protection = new IotAlarmSubsystem();
             protection.setId(IDHelper.id());
             protection.setCreateTime(LocalDateTime.now());
@@ -445,12 +375,11 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         protection.setOrgPath(org.getPath());
         map.put("protection", protection);
         saveProtectionLog(protection);
-
         if (ObjectUtil.isEmpty(dto.getSensorArray())) {
             return map;
         }
         List<IotAlarmDefenceArea> list = new ArrayList<>();
-        List<IotAlarmDefenceArea> sensorList = defenceAreService.findBySubSystemCode(dto.getDefenceareaCode());
+        List<IotAlarmDefenceArea> sensorList = defenceAreService.findBySubSystemCode(dto.getDefenceareaCode(), org.getId());
         for (SensorDto sensorDto : dto.getSensorArray()) {
             IotAlarmDefenceArea sensor = new IotAlarmDefenceArea();
             sensor.setAlarmHostCode(dto.getAlarmHostCode());
@@ -462,7 +391,6 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             sensor.setOrganizationGuid(dto.getOrganizationGuid());
             sensor.setDefenceAreaIndex(sensorDto.getInputIndex());
             sensor.setDefenceAreaName(sensorDto.getInputName());
-            //sensor.setModuleAddress(sensorDto.getModuleAddress());
             sensor.setSensorType(sensorDto.getSensorType());
             sensor.setSensorTypeName(sensorDto.getSensorTypeName());
             sensor.setDeleted(0);

+ 1 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceServiceImpl.java

@@ -56,6 +56,7 @@ public class IotDeviceServiceImpl extends ServiceImpl<IotDeviceMapper, IotDevice
         return lambdaQuery()
                 .eq(IotDevice::getOrgId, orgId)
                 .eq(IotDevice::getEquipmentCode, equipmentCode)
+                .eq(IotDevice::getDeleted, 0)
                 .last(Constants.LIMIT1)
                 .one();
     }

+ 5 - 6
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java

@@ -61,9 +61,10 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     @Override
     public IotDvrChannel findChannel(String channelCode, String equipmentCode, Long orgId) {
         return lambdaQuery()
-                .eq(IotDvrChannel::getHostCode, equipmentCode)
                 .eq(IotDvrChannel::getOrgId, orgId)
+                .eq(IotDvrChannel::getHostCode, equipmentCode)
                 .eq(IotDvrChannel::getChannelCode, channelCode)
+                .eq(IotDvrChannel::getDeleted, 0)
                 .last(Constants.LIMIT1)
                 .one();
     }
@@ -165,12 +166,10 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
     }
 
     private IotDvrChannel getChannelDevice(DeviceDto deviceDto) {
-        IotDvrChannel device = new IotDvrChannel();
         final LocalDateTime now = LocalDateTime.now();
-        IotDvrChannel old = this.findChannel(deviceDto.getChannelCode(), deviceDto.getEquipmentCode(), deviceDto.getOrg().getId());
-        if (old != null) {
-            device = old;
-        }else {
+        IotDvrChannel device = this.findChannel(deviceDto.getChannelCode(), deviceDto.getEquipmentCode(), deviceDto.getOrg().getId());
+        if (device == null) {
+            device = new IotDvrChannel();
             device.setCreateTime(now);
         }
         device.setChannelName(deviceDto.getChannelName());

+ 1 - 5
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java

@@ -138,13 +138,12 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
                 errors.add(new NorthError(msgId, path, status, "对应设备不存在:" + status.getDeviceCode()));
                 continue;
             }
-            final String infoStr = JSON.toJSONString(status.getInfos());
             final IotSensor iotSensor = optional.get();
             iotSensor.setUpdateTime(LocalDateTime.now());
             iotSensor.setDeviceName(status.getDeviceName());
             iotSensor.setDeviceType(status.getDeviceType());
             iotSensor.setStateUpdateTime(DateUtils.toLocalDateTime(status.getUpdateTime()));
-            iotSensor.setInfos(dealInfoData(infoStr));
+            iotSensor.setInfos(dealInfoData(JSON.toJSONString(status.getInfos())));
             final IotSensorLog iotSensorLog = new IotSensorLog();
             BeanUtils.copyProperties(iotSensor, iotSensorLog, "id");
             iotSensorLog.setCreateTime(LocalDateTime.now());
@@ -157,7 +156,6 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
         northErrorService.saveErrorData(errors);
         updateBatchById(sensorList);
         iotSensorLogService.saveBatch(sensorLogList);
-
         TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
             @Override
             public void afterCommit() {
@@ -168,8 +166,6 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
                 }
             }
         });
-
-
     }
 
     private String dealInfoData(String infoStr) {

+ 18 - 35
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDaysCheckServiceImpl.java

@@ -87,34 +87,34 @@ public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper,
         String organizationGuid = videoDaysCheckDto.getOrganizationGuid();
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId,"/video/daysInfo"
-                    , videoDaysCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确");
-            northErrorService.saveError(error);
-            return ReceiveErrorDto.success();
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确"));
+            return ReceiveErrorDto.error("参数非法:organizationGuid:" + organizationGuid + "不正确");
         }
-        MediatorVideoDaysCheck videoDaysCheck = new MediatorVideoDaysCheck();
-
-        //获取监控主机
         IotDevice hostDevice = iIotDeviceService.findByHostCode(videoDaysCheckDto.getEquipmentCode(), org.getId());
-        if (hostDevice != null) {
-            videoDaysCheck.setEquipmentName(hostDevice.getEquipmentName());
+        if (ObjectUtil.isNull(hostDevice)) {
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "主机不存在!"));
+            return ReceiveErrorDto.error("主机不存在!");
         }
-
-        MediatorVideoDaysCheck old = this.findByOrgIdAndEquipmentCodeAndChannelCode(org.getId(), videoDaysCheckDto.getEquipmentCode(), videoDaysCheckDto.getChannelCode());
-        if (old != null) {
-            videoDaysCheck = old;
+        final IotDvrChannel channel = dvrChannelService.findChannel(videoDaysCheckDto.getChannelCode(), videoDaysCheckDto.getEquipmentCode(), org.getId());
+        if (ObjectUtil.isNull(channel)) {
+            northErrorService.saveError(new NorthError(msgId, "/video/daysInfo", videoDaysCheckDto, "通道/设备不存在!"));
+            return ReceiveErrorDto.error("通道/设备不存在!");
         }
-        if (old == null) {
+        MediatorVideoDaysCheck videoDaysCheck = this.findByOrgIdAndEquipmentCodeAndChannelCode(org.getId(), videoDaysCheckDto.getEquipmentCode(), videoDaysCheckDto.getChannelCode());
+        if (videoDaysCheck == null) {
+            videoDaysCheck = new MediatorVideoDaysCheck();
             videoDaysCheck.setCreateTime(new Date());
         }
+        //获取监控主机
+        videoDaysCheck.setEquipmentName(hostDevice.getEquipmentName());
+        videoDaysCheck.setEquipmentCode(videoDaysCheckDto.getEquipmentCode());
         videoDaysCheck.setUpdateTime(new Date());
         videoDaysCheck.setChannelCode(videoDaysCheckDto.getChannelCode());
         videoDaysCheck.setChannelName(videoDaysCheckDto.getChannelName());
-        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getCheckDate())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getCheckDate())) {
             videoDaysCheck.setCheckDate(JSON.toJSONString(videoDaysCheckDto.getCheckDate()));
         }
-        videoDaysCheck.setEquipmentCode(videoDaysCheckDto.getEquipmentCode());
-        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getLoseDate())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getLoseDate())) {
             videoDaysCheck.setLoseDate(JSON.toJSONString(videoDaysCheckDto.getLoseDate()));
         }
         videoDaysCheck.setPlanDays(videoDaysCheckDto.getPlanDays());
@@ -122,32 +122,15 @@ public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper,
         videoDaysCheck.setOrgId(org.getId());
         videoDaysCheck.setOrgName(org.getShortName());
         videoDaysCheck.setOrgPath(org.getPath());
-        if(ObjectUtil.isNotEmpty(videoDaysCheckDto.getEarliestVideoTime())){
+        if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getEarliestVideoTime())) {
             videoDaysCheck.setEarliestVideoTime(LocalDateTime.parse(videoDaysCheckDto.getEarliestVideoTime(), DateTimeFormatter.ISO_DATE_TIME));
         }
         videoDaysCheck.setStatus(0);
         if (ObjectUtil.isAllNotEmpty(videoDaysCheck.getCheckDate(), videoDaysCheck.getLoseDate()) && !"null".equals(videoDaysCheck.getLoseDate()) && !"null".equals(videoDaysCheck.getCheckDate()) && !"[]".equals(videoDaysCheck.getLoseDate()) && !"[]".equals(videoDaysCheck.getCheckDate())) {
             final Map map = JSON.parseObject(videoDaysCheck.getCheckDate(), Map.class);
             final List list = JSON.parseObject(videoDaysCheck.getLoseDate(), List.class);
-            /*final String dateStr = (String) map.get("sd");
-            final DateTime offsetDay1 = DateUtil.offsetDay(DateUtil.parse(dateStr), 1);
-            final DateTime offsetDay2 = DateUtil.offsetDay(DateUtil.parse(dateStr), 2);
-            final String dateStr1 = DateUtil.format(offsetDay1, "yyyy-MM-dd");
-            final String dateStr2 = DateUtil.format(offsetDay2, "yyyy-MM-dd");*/
-
-            //2023/1/17 v1.9.4版本需求,判断从三天改成一天
-            //videoDaysCheck.setStatus(list.contains(dateStr1) && list.contains(dateStr2) && list.contains(map.get("sd")) ? 1 : 0);
             videoDaysCheck.setStatus(list.contains(map.get("sd")) ? 1 : 0);
         }
-
-
-        final IotDvrChannel channel = dvrChannelService.findChannel(videoDaysCheckDto.getChannelCode(), videoDaysCheckDto.getEquipmentCode(), org.getId());
-        if (ObjectUtil.isNull(channel)) {
-            NorthError error = new NorthError(msgId,"/video/daysInfo"
-                    , videoDaysCheckDto, "通道/设备不存在!");
-            northErrorService.saveError(error);
-            return ReceiveErrorDto.success();
-        }
         this.saveOrUpdate(videoDaysCheck);
         saveLog(videoDaysCheck);
         return ReceiveErrorDto.success();

+ 2 - 6
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -84,16 +84,12 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         String organizationGuid = videoIntegrityCheckDto.getOrganizationGuid();
         SysOrg org = orgService.findByCode(organizationGuid, SecurityConstants.INNER);
         if (org == null) {
-            NorthError error = new NorthError(msgId, "/video/complete"
-                    , videoIntegrityCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确");
-            northErrorService.saveError(error);
+            northErrorService.saveError(new NorthError(msgId, "/video/complete", videoIntegrityCheckDto, "参数非法:organizationGuid:" + organizationGuid + "不正确"));
             return ReceiveErrorDto.success();
         }
         final IotDvrChannel channel = dvrChannelService.findChannel(videoIntegrityCheckDto.getChannelCode(), videoIntegrityCheckDto.getEquipmentCode(), org.getId());
         if (ObjectUtil.isNull(channel)) {
-            NorthError error = new NorthError(msgId, "/video/complete"
-                    , videoIntegrityCheckDto, "通道/设备不存在");
-            northErrorService.saveError(error);
+            northErrorService.saveError(new NorthError(msgId, "/video/complete", videoIntegrityCheckDto, "通道/设备不存在"));
             return ReceiveErrorDto.success();
         }
 

+ 4 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -492,12 +492,13 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
             for (SysWorkTimeSet workTime : sets) {
                 List<SysWorkTime> workTimeEditDtoList = new ArrayList<>();
                 for (DateTime time : dateTimeList) {
-                    Optional<SysWorkTimeSetDayofweek> dayOfWeekSetNew = workTime.getDayOfWeeks().stream().filter(w -> w.getDayOfWeek() == time.dayOfWeek() && ObjectUtil.isNotNull(w.getIsWorkday()) && w.getIsWorkday() > 0).findFirst();
+                    Optional<SysWorkTimeSetDayofweek> dayOfWeekSetNew = workTime.getDayOfWeeks().stream().filter(w -> w.getDayOfWeek() == time.dayOfWeek() ).findFirst();
                     SysWorkTimeSetDayofweek dayOfWeekSet = dayOfWeekSetNew.orElse(null);
-                    boolean isEnable = ObjectUtil.isNotNull(dayOfWeekSet) && dayOfWeekSet.getIsWorkday() > 0;
+                    boolean isEnable = ObjectUtil.isNotNull(dayOfWeekSet) && ObjectUtil.isNotNull(dayOfWeekSet.getIsWorkday()) && dayOfWeekSet.getIsWorkday() > 0;
                     SysWorkTime dto = new SysWorkTime();
                     dto.setDate(time);
                     dto.setIsEnable(isEnable ? 1L : 0);
+                    dto.setIsDuty(ObjectUtil.isNotNull(dayOfWeekSet)?dayOfWeekSet.getIsDuty():null);
 
                     if (ObjectUtil.isNull(dayOfWeekSet) || !(dayOfWeekSet.getIsWorkday() > 0)) {
                         Optional<SysWorkTimeSetDayofweek> firstWorkDay = workTime.getDayOfWeeks().stream().filter(f -> f.getIsWorkday() > 0).findFirst();
@@ -856,6 +857,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
                 dto.setDate(time);
                 dto.setOrgId(setMap.getKey());
                 dto.setIsEnable(isEnable ? 1L : 0L);
+                dto.setIsDuty(ObjectUtil.isNotNull(dayOfWeekSet)?dayOfWeekSet.getIsDuty():null);
                 if (ObjectUtil.isNull(dayOfWeekSet) || !(dayOfWeekSet.getIsWorkday() > 0)) {
                     Optional<SysWorkTimeSetDayofweek> firstWorkDay = set.getDayOfWeeks().stream().filter(f -> f.getIsWorkday() > 0).findFirst();
                     if (firstWorkDay.isPresent()) {