Forráskód Böngészése

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

jiawuxian 1 éve
szülő
commit
21dab3c92c
19 módosított fájl, 179 hozzáadás és 59 törlés
  1. 10 5
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoDaysCheck.java
  2. 8 16
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheck.java
  3. 6 9
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheckLog.java
  4. 1 1
      soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java
  5. 16 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/MediatorVideoIntegrityCheckLogMapper.java
  6. 2 2
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/EquipmentSyncService.java
  7. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IVideoIntegrityCheckService.java
  8. 19 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/MediatorVideoIntegrityCheckLogService.java
  9. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java
  10. 3 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java
  11. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceDetectionServiceImpl.java
  12. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrChannelServiceImpl.java
  13. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrHardDiskDetectionServiceImpl.java
  14. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java
  15. 37 0
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/MediatorVideoIntegrityCheckLogServiceImpl.java
  16. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDaysCheckServiceImpl.java
  17. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoDiagnosisRecordServiceImpl.java
  18. 64 15
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/VideoIntegrityCheckServiceImpl.java
  19. 5 0
      soc-modules/soc-modules-mediator/src/main/resources/mapper/MediatorVideoIntegrityCheckLogMapper.xml

+ 10 - 5
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoDaysCheck.java

@@ -47,6 +47,14 @@ public class MediatorVideoDaysCheck extends BaseEntity implements Serializable {
     @TableField("org_path")
     private String orgPath;
 
+    @ApiModelProperty(value = "录像机唯一名称")
+    @TableField("equipment_name")
+    private String equipmentName;
+
+    @ApiModelProperty(value = "录像机唯一标识")
+    @TableField("equipment_code")
+    private String equipmentCode;
+
     @ApiModelProperty(value = "通道序号")
     @TableField("channel_code")
     private String channelCode;
@@ -59,9 +67,7 @@ public class MediatorVideoDaysCheck extends BaseEntity implements Serializable {
     @TableField("check_date")
     private String checkDate;
 
-    @ApiModelProperty(value = "录像机唯一标识")
-    @TableField("equipment_code")
-    private String equipmentCode;
+
 
     @ApiModelProperty(value = "计划存储天数起止日期")
     @TableField("lose_date")
@@ -75,8 +81,7 @@ public class MediatorVideoDaysCheck extends BaseEntity implements Serializable {
     @TableField("real_days")
     private Integer realDays;
 
-    @TableField("equipment_name")
-    private String equipmentName;
+
 
     @ApiModelProperty(value = "是否报警 0:未报警,1:报警")
     @TableField("status")

+ 8 - 16
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheck.java

@@ -49,6 +49,14 @@ public class MediatorVideoIntegrityCheck extends BaseEntity implements Serializa
     @TableField("org_path")
     private String orgPath;
 
+    @ApiModelProperty(value = "录像机唯一名称")
+    @TableField("equipment_name")
+    private String equipmentName;
+
+    @ApiModelProperty(value = "录像机唯一标识")
+    @TableField("equipment_code")
+    private String equipmentCode;
+
     @ApiModelProperty(value = "通道序号")
     @TableField("channel_code")
     private String channelCode;
@@ -61,10 +69,6 @@ public class MediatorVideoIntegrityCheck extends BaseEntity implements Serializa
     @TableField("check_span")
     private String checkSpan;
 
-    @ApiModelProperty(value = "录像机唯一标识")
-    @TableField("equipment_code")
-    private String equipmentCode;
-
     @ApiModelProperty(value = "检查日期录像丢失情况集合")
     @TableField("lose_span")
     private String loseSpan;
@@ -77,24 +81,12 @@ public class MediatorVideoIntegrityCheck extends BaseEntity implements Serializa
     @TableField("record_date")
     private LocalDate recordDate;
 
-    @ApiModelProperty(value = "设备名称")
-    @TableField("device_name")
-    private String deviceName;
-
     @ApiModelProperty(value = "0:正常 1:部分丢失 2:全部丢失")
     @TableField("status")
     private Integer status;
 
-    @TableField("equipment_name")
-    private String equipmentName;
-
     @ApiModelProperty(value = "录像计划存储多少天")
     @TableField("plan_days")
     private Integer planDays;
 
-    @ApiModelProperty(value = "录像机唯一标识")
-    @TableField("lose_span_old")
-    private String loseSpanOld;
-
-
 }

+ 6 - 9
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheckNewest.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/video/MediatorVideoIntegrityCheckLog.java

@@ -22,9 +22,9 @@ import java.time.LocalDate;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("mediator_video_integrity_check_newest")
+@TableName("mediator_video_integrity_check_log")
 @ApiModel(value = "VideoIntegrityCheck对象", description = "录像机完整性最后一次检查表")
-public class MediatorVideoIntegrityCheckNewest extends BaseEntity implements Serializable {
+public class MediatorVideoIntegrityCheckLog extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
@@ -43,6 +43,10 @@ public class MediatorVideoIntegrityCheckNewest extends BaseEntity implements Ser
     @TableField("org_path")
     private String orgPath;
 
+    @ApiModelProperty(value = "录像完整性id")
+    @TableField("video_integrity_check_id")
+    private Long videoIntegrityCheckId;
+
     @ApiModelProperty(value = "通道序号")
     @TableField("channel_code")
     private String channelCode;
@@ -71,10 +75,6 @@ public class MediatorVideoIntegrityCheckNewest extends BaseEntity implements Ser
     @TableField("record_date")
     private LocalDate recordDate;
 
-    @ApiModelProperty(value = "设备名称")
-    @TableField("device_name")
-    private String deviceName;
-
     @ApiModelProperty(value = "0:正常 1:部分丢失 2:全部丢失")
     @TableField("status")
     private Integer status;
@@ -86,9 +86,6 @@ public class MediatorVideoIntegrityCheckNewest extends BaseEntity implements Ser
     @TableField("plan_days")
     private Integer planDays;
 
-    @ApiModelProperty(value = "录像机唯一标识")
-    @TableField("lose_span_old")
-    private String loseSpanOld;
 
 
 }

+ 1 - 1
soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java

@@ -30,7 +30,7 @@ public class CodeGenerators {
     }*/
 
     public static final String moduleName="com.xunmei.mediator";
-    public static final String tableNames="iot_alarm_subsystem";
+    public static final String tableNames="mediator_video_integrity_check_newest";
 
     public static void main(String[] args) {
         // 代码生成器

+ 16 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/MediatorVideoIntegrityCheckLogMapper.java

@@ -0,0 +1,16 @@
+package com.xunmei.mediator.api.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
+
+/**
+ * <p>
+ * 录像机完整性最后一次检测状态表 Mapper 接口
+ * </p>
+ *
+ * @author oygj
+ * @since 2024-02-23
+ */
+public interface MediatorVideoIntegrityCheckLogMapper extends BaseMapper<MediatorVideoIntegrityCheckLog> {
+
+}

+ 2 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/EquipmentSyncService.java

@@ -262,7 +262,7 @@ public class EquipmentSyncService {
         device.setEquipmentName(datum.getEquipmentName());
         device.setNetAddress(datum.getNetAddress());
         device.setOrgId(datum.getOrg().getId());
-        device.setOrgName(datum.getOrg().getName());
+        device.setOrgName(datum.getOrg().getShortName());
         device.setOrgPath(datum.getOrg().getPath());
         device.setProducer(datum.getProducer());
         device.setCameraUserName(datum.getCameraUserName());
@@ -401,7 +401,7 @@ public class EquipmentSyncService {
         List<SysOrg> parentOrgs = new ArrayList<>();
         if (ObjectUtil.isNotNull(s)) {
             todayAlarm.setOrgPath(s.getPath());
-            todayAlarm.setOrgName(s.getName());
+            todayAlarm.setOrgName(s.getShortName());
             parentOrgs.add(s);
             if (StringUtils.isNotEmpty(s.getPath())) {
                 List<Long> parentIds = Arrays.stream(s.getPath().split("-"))

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

@@ -19,7 +19,7 @@ public interface IVideoIntegrityCheckService extends IService<MediatorVideoInteg
 
     ReceiveErrorDto saveData(VideoIntegrityCheckDto videoIntegrityCheckDto, String msgId, String branchId);
 
-    MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(Long orgId, String equipmentCode, String channelCode, Date recordDate);
+    MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(Long orgId, String equipmentCode, String channelCode);
 
     MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCode(Long orgId, String equipmentCode, String channelCode);
 }

+ 19 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/MediatorVideoIntegrityCheckLogService.java

@@ -0,0 +1,19 @@
+package com.xunmei.mediator.api.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
+
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 录像机完整性最后一次检测状态表 服务类
+ * </p>
+ *
+ * @author oygj
+ * @since 2024-02-23
+ */
+public interface MediatorVideoIntegrityCheckLogService extends IService<MediatorVideoIntegrityCheckLog> {
+
+    MediatorVideoIntegrityCheckLog findByOrgIdAndEquipmentCodeAndChannelCode(Long orgId, String equipmentCode, String channelCode, LocalDate recordDate);
+}

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

@@ -319,7 +319,7 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
         data.setState(sensorData.getInputState());
         data.setUpdateTime(DateUtils.toLocalDateTime(updateTime));
         data.setOrgId(org.getId());
-        data.setOrgName(org.getName());
+        data.setOrgName(org.getShortName());
         data.setOrgPath(org.getPath());
 
         IotAlarmDefenceArea dataOld = null;

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

@@ -196,7 +196,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             }
         }
         protection.setOrgId(org.getId());
-        protection.setOrgName(org.getName());
+        protection.setOrgName(org.getShortName());
         protection.setOrgPath(org.getPath());
         protection.setAlarmHostCode(protectionEditDto.getAlarmHostCode());
         this.saveOrUpdate(protection);
@@ -433,7 +433,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         protection.setCode(dto.getDefenceareaCode());
         protection.setName(dto.getDefenceareaName());
         protection.setOrgId(org.getId());
-        protection.setOrgName(org.getName());
+        protection.setOrgName(org.getShortName());
         protection.setOrgPath(org.getPath());
         map.put("protection", protection);
 
@@ -449,7 +449,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
                 sensor.setSubSystemCode(dto.getDefenceareaCode());
                 sensor.setDefenceAreaName(dto.getDefenceareaName());
                 sensor.setOrgId(org.getId());
-                sensor.setOrgName(org.getName());
+                sensor.setOrgName(org.getShortName());
                 sensor.setOrgPath(org.getPath());
                 sensor.setOrganizationGuid(dto.getOrganizationGuid());
                 sensor.setDefenceAreaIndex(sensorDto.getInputIndex());

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

@@ -140,7 +140,7 @@ public class IotDeviceDetectionServiceImpl extends ServiceImpl<IotDeviceDetectio
 
         networkDeviceDetection.setOrgId(org.getId());
         networkDeviceDetection.setOrgPath(org.getPath());
-        networkDeviceDetection.setOrgName(org.getName());
+        networkDeviceDetection.setOrgName(org.getShortName());
         networkDeviceDetection.setEquipmentCode(networkDeviceDetectionEditDto.getEquipmentCode());
         IotDeviceDetection old = this.findByEquipmentCodeAndOrgId(networkDeviceDetectionEditDto.getEquipmentCode(), org.getId());
         if (old != null) {

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

@@ -183,7 +183,7 @@ public class IotDvrChannelServiceImpl extends ServiceImpl<IotDvrChannelMapper, I
         device.setHostCode(deviceDto.getEquipmentCode());
         device.setOrgId(deviceDto.getOrg().getId());
         device.setOrgPath(deviceDto.getOrg().getPath());
-        device.setOrgName(deviceDto.getOrg().getName());
+        device.setOrgName(deviceDto.getOrg().getShortName());
         device.setChannelCode(Integer.parseInt(deviceDto.getChannelCode()));
         device.setChannelAddr(deviceDto.getNetAddress());
         final LocalDateTime now = LocalDateTime.now();

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

@@ -129,7 +129,7 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
         map.put("code", code);
         IotDvrHardDiskDetection videoRecorderHardDiskDetection = new IotDvrHardDiskDetection();
         videoRecorderHardDiskDetection.setOrgId(org.getId());
-        videoRecorderHardDiskDetection.setOrgName(org.getName());
+        videoRecorderHardDiskDetection.setOrgName(org.getShortName());
         videoRecorderHardDiskDetection.setOrgPath(org.getPath());
         videoRecorderHardDiskDetection.setEquipmentCode(videoRecorderHardDiskDetectionEditDto.getEquipmentCode());
         IotDvrHardDiskDetection old = this.findTopByEquipmentCodeAndOrgId(videoRecorderHardDiskDetectionEditDto.getEquipmentCode(), org.getId());

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

@@ -228,7 +228,7 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
             domain.setHostCode(sensorDto.getHostCode());
             domain.setDeviceCode(sensorDto.getDeviceCode());
             domain.setOrgId(org.getId());
-            domain.setOrgName(org.getName());
+            domain.setOrgName(org.getShortName());
             domain.setOrgPath(org.getPath());
             domain.setSource(1);
             domains.add(domain);

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

@@ -0,0 +1,37 @@
+package com.xunmei.mediator.api.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.Constants;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
+import com.xunmei.mediator.api.mapper.MediatorVideoIntegrityCheckLogMapper;
+import com.xunmei.mediator.api.service.MediatorVideoIntegrityCheckLogService;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDate;
+
+/**
+ * <p>
+ * 录像机完整性最后一次检测状态表 服务实现类
+ * </p>
+ *
+ * @author oygj
+ * @since 2024-02-23
+ */
+@Service
+public class MediatorVideoIntegrityCheckLogServiceImpl extends ServiceImpl<MediatorVideoIntegrityCheckLogMapper, MediatorVideoIntegrityCheckLog> implements MediatorVideoIntegrityCheckLogService {
+
+
+    @Override
+    public MediatorVideoIntegrityCheckLog findByOrgIdAndEquipmentCodeAndChannelCode(Long orgId, String equipmentCode, String channelCode, LocalDate recordDate) {
+        LambdaQueryWrapper<MediatorVideoIntegrityCheckLog> qw = new LambdaQueryWrapper<>();
+        qw.eq(MediatorVideoIntegrityCheckLog::getOrgId, orgId);
+        qw.eq(MediatorVideoIntegrityCheckLog::getEquipmentCode, equipmentCode);
+        qw.eq(MediatorVideoIntegrityCheckLog::getChannelCode, channelCode);
+        qw.eq(MediatorVideoIntegrityCheckLog::getRecordDate, recordDate);
+        qw.orderByDesc(MediatorVideoIntegrityCheckLog::getCreateTime);
+        qw.last(Constants.LIMIT1);
+        return baseMapper.selectOne(qw);
+    }
+}

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

@@ -114,7 +114,7 @@ public class VideoDaysCheckServiceImpl extends ServiceImpl<VideoDaysCheckMapper,
         videoDaysCheck.setPlanDays(videoDaysCheckDto.getPlanDays());
         videoDaysCheck.setRealDays(videoDaysCheckDto.getRealDays());
         videoDaysCheck.setOrgId(org.getId());
-        videoDaysCheck.setOrgName(org.getName());
+        videoDaysCheck.setOrgName(org.getShortName());
         videoDaysCheck.setOrgPath(org.getPath());
         if (ObjectUtil.isNotEmpty(videoDaysCheckDto.getEarliestVideoTime())) {
             String dateStr = videoDaysCheckDto.getEarliestVideoTime().replace("T", " ");

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

@@ -205,7 +205,7 @@ public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisR
                 break;
         }
         videoDiagnosis.setOrgId(org.getId());
-        videoDiagnosis.setOrgName(org.getName());
+        videoDiagnosis.setOrgName(org.getShortName());
         videoDiagnosis.setOrgPath(org.getPath());
         IotDevice hostDevice = iIotDeviceService.findByHostCode(videoDiagnosis.getEquipmentCode(),org.getId());
         if (hostDevice != null) {

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

@@ -4,6 +4,7 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -11,6 +12,8 @@ import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
 import com.xunmei.common.core.domain.video.MediatorVideoDaysCheck;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
+import com.xunmei.common.core.enums.iot.VideoIntegrityStatus;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.mediator.api.mapper.VideoIntegrityCheckMapper;
 import com.xunmei.mediator.api.service.*;
@@ -23,10 +26,19 @@ import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.tomcat.util.json.JSONParserConstants.ZERO;
 
 /**
  * <p>
@@ -49,9 +61,12 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     @Resource
     IVideoDaysCheckService videoDaysCheckService;
     @Resource
+    MediatorVideoIntegrityCheckLogService integrityCheckLogService;
+    @Resource
     IIotDeviceService iIotDeviceService;
     @Resource
     IIotDvrChannelService dvrChannelService;
+
     @Override
     public ReceiveErrorDto saveData(VideoIntegrityCheckDto videoIntegrityCheckDto, String msgId, String branchId) {
         String msg = this.checkParam(videoIntegrityCheckDto);
@@ -60,7 +75,7 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         }
         //与上次接收到的数据进行比较,如果相同则不进行处理
         if (redisUtil.compareWithCache(videoIntegrityCheckDto)) {
-            return ReceiveErrorDto.error(RedisKey.REPORT_DATA_REFUSE_MSG);
+            // return ReceiveErrorDto.error(RedisKey.REPORT_DATA_REFUSE_MSG);
         }
 
         String organizationGuid = videoIntegrityCheckDto.getOrganizationGuid();
@@ -71,7 +86,7 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
             northErrorService.saveError(error);
             return ReceiveErrorDto.success();
         }
-         final IotDvrChannel channel = dvrChannelService.findChannel(videoIntegrityCheckDto.getChannelCode(), videoIntegrityCheckDto.getEquipmentCode(), org.getId());
+        final IotDvrChannel channel = dvrChannelService.findChannel(videoIntegrityCheckDto.getChannelCode(), videoIntegrityCheckDto.getEquipmentCode(), org.getId());
         if (ObjectUtil.isNull(channel)) {
             NorthError error = new NorthError(msgId, branchId, "/video/complete"
                     , videoIntegrityCheckDto, "通道/设备不存在");
@@ -79,16 +94,18 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
             return ReceiveErrorDto.success();
         }
 
-
-        final Date recordDate = DateUtil.parse(videoIntegrityCheckDto.getRecordDate());
-        MediatorVideoIntegrityCheck old = this.findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(org.getId(), videoIntegrityCheckDto.getEquipmentCode(), videoIntegrityCheckDto.getChannelCode(), recordDate);
+        MediatorVideoIntegrityCheck old = this.findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(org.getId(), videoIntegrityCheckDto.getEquipmentCode(), videoIntegrityCheckDto.getChannelCode());
         MediatorVideoIntegrityCheck videoIntegrityCheck = new MediatorVideoIntegrityCheck();
         if (old != null) {
             videoIntegrityCheck = old;
+            videoIntegrityCheck.setUpdateTime(new Date());
+        } else {
+            videoIntegrityCheck.setCreateTime(new Date());
+            videoIntegrityCheck.setUpdateTime(new Date());
         }
 
         //获取监控主机
-        IotDevice hostDevice = iIotDeviceService.findByHostCode(videoIntegrityCheckDto.getEquipmentCode(),org.getId());
+        IotDevice hostDevice = iIotDeviceService.findByHostCode(videoIntegrityCheckDto.getEquipmentCode(), org.getId());
         if (hostDevice != null) {
             videoIntegrityCheck.setEquipmentName(hostDevice.getEquipmentName());
         }
@@ -106,24 +123,57 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
                 videoIntegrityCheck.setPlanDays(30);
             }
         }
-
-        videoIntegrityCheck.setUpdateTime(new Date());
-        videoIntegrityCheck.setDeviceName(channel.getChannelName());
         videoIntegrityCheck.setChannelCode(videoIntegrityCheckDto.getChannelCode());
         videoIntegrityCheck.setChannelName(videoIntegrityCheckDto.getChannelName());
         videoIntegrityCheck.setCheckSpan(JSON.toJSONString(videoIntegrityCheckDto.getCheckSpan()));
         videoIntegrityCheck.setEquipmentCode(videoIntegrityCheckDto.getEquipmentCode());
         videoIntegrityCheck.setLoseSpan(JSON.toJSONString(videoIntegrityCheckDto.getLoseSpan()));
-        videoIntegrityCheck.setRecordDate(DateUtils.toLocalDate(DateUtil.parse(videoIntegrityCheckDto.getRecordDate(), "yyyy-MM-dd")));
+        videoIntegrityCheck.setRecordDate(LocalDate.parse(videoIntegrityCheckDto.getRecordDate(), DateTimeFormatter.ISO_LOCAL_DATE));
         videoIntegrityCheck.setOrgId(org.getId());
-        videoIntegrityCheck.setOrgName(org.getName());
+        videoIntegrityCheck.setOrgName(org.getShortName());
         videoIntegrityCheck.setOrgPath(org.getPath());
         videoIntegrityCheck.setStatus(getStatus(videoIntegrityCheckDto));
+        videoIntegrityCheck.setLoseDuration(calculateLoseMinute(videoIntegrityCheck.getLoseSpan()));
         this.saveOrUpdate(videoIntegrityCheck);
+        saveLog(videoIntegrityCheck);
 
         return ReceiveErrorDto.success();
     }
 
+    private void saveLog(MediatorVideoIntegrityCheck videoIntegrityCheck) {
+        MediatorVideoIntegrityCheckLog newLog = new MediatorVideoIntegrityCheckLog();
+        MediatorVideoIntegrityCheckLog logData = integrityCheckLogService.findByOrgIdAndEquipmentCodeAndChannelCode(videoIntegrityCheck.getOrgId(), videoIntegrityCheck.getEquipmentCode(), videoIntegrityCheck.getChannelCode(), videoIntegrityCheck.getRecordDate());
+
+        if (logData != null) {
+            BeanUtils.copyProperties(videoIntegrityCheck,logData,"id");
+            integrityCheckLogService.updateById(logData);
+            return;
+        }
+        BeanUtils.copyProperties(videoIntegrityCheck,newLog);
+        newLog.setId(IdWorker.getId());
+        newLog.setVideoIntegrityCheckId(videoIntegrityCheck.getId());
+        integrityCheckLogService.save(newLog);
+
+    }
+
+    private Integer calculateLoseMinute(String loseSpan) {
+        if (ObjectUtil.isEmpty(loseSpan)) {
+            return 0;
+        }
+        final List<Map> mapList = JSON.parseArray(loseSpan, Map.class);
+        int min = 0;
+        for (Map map : mapList) {
+            final String st = (String) map.get("st");
+            final String et = (String) map.get("et");
+            final LocalTime startTime = LocalTime.parse(st);
+            final LocalTime endTime = LocalTime.parse(et);
+            final long l = ChronoUnit.MINUTES.between(startTime, endTime);
+            min += l;
+
+        }
+        return min;
+    }
+
     private String checkParam(VideoIntegrityCheckDto videoIntegrityCheckDto) {
         if (StringUtils.isEmpty(videoIntegrityCheckDto.getOrganizationGuid())) {
             return "organizationGuid 为空";
@@ -148,21 +198,20 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
     }
 
     private Integer getStatus(VideoIntegrityCheckDto videoIntegrityCheckDto) {
-        if (ObjectUtil.isEmpty(videoIntegrityCheckDto.getLoseSpan())) return 0;
+        if (ObjectUtil.isEmpty(videoIntegrityCheckDto.getLoseSpan())) return VideoIntegrityStatus.Full.getId();
         String checkSpanStr = JSON.toJSONString(videoIntegrityCheckDto.getCheckSpan());
         String loseSpanStr = JSON.toJSONString(videoIntegrityCheckDto.getLoseSpan());
-        return checkSpanStr.equals(loseSpanStr) ? 2 : 1;
+        return checkSpanStr.equals(loseSpanStr) ? VideoIntegrityStatus.AllLoss.getId() : VideoIntegrityStatus.PartialLoss.getId();
 
     }
 
 
     @Override
-    public MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(Long orgId, String equipmentCode, String channelCode, Date recordDate) {
+    public MediatorVideoIntegrityCheck findByOrgIdAndEquipmentCodeAndAndChannelCodeAndRecordDate(Long orgId, String equipmentCode, String channelCode) {
         LambdaQueryWrapper<MediatorVideoIntegrityCheck> qw = new LambdaQueryWrapper<>();
         qw.eq(MediatorVideoIntegrityCheck::getOrgId, orgId);
         qw.eq(MediatorVideoIntegrityCheck::getEquipmentCode, equipmentCode);
         qw.eq(MediatorVideoIntegrityCheck::getChannelCode, channelCode);
-        qw.eq(MediatorVideoIntegrityCheck::getRecordDate, recordDate);
         qw.last(Constants.LIMIT1);
         return baseMapper.selectOne(qw);
     }

+ 5 - 0
soc-modules/soc-modules-mediator/src/main/resources/mapper/MediatorVideoIntegrityCheckLogMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.mediator.api.mapper.MediatorVideoIntegrityCheckLogMapper">
+
+</mapper>