Jelajahi Sumber

北向 布撤防代码状态同步代码提交

jingyuanchao 1 tahun lalu
induk
melakukan
1a50fe3144
14 mengubah file dengan 301 tambahan dan 394 penghapusan
  1. 15 11
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/north/MediatorNorthBusinessStatistics.java
  2. 32 34
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmDefenceAreaData.java
  3. 4 6
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystem.java
  4. 66 43
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystemLog.java
  5. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java
  6. 3 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java
  7. 1 1
      soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java
  8. 1 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/ProtectionController.java
  9. 2 1
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotDefenceAreaDataMapper.java
  10. 3 2
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IIotDefenceAreaDataService.java
  11. 4 2
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/IotAlarmDefenceAreaService.java
  12. 144 277
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java
  13. 10 10
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java
  14. 14 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDefenceAreaDataServiceImpl.java

+ 15 - 11
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/north/MediatorNorthBusinessStatistics.java

@@ -1,10 +1,14 @@
 package com.xunmei.system.api.domain.north;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.time.LocalDate;
+
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableField;
+
 import java.io.Serializable;
+
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -21,12 +25,12 @@ import lombok.EqualsAndHashCode;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @TableName("mediator_north_business_statistics")
-@ApiModel(value="MediatorNorthBusinessStatistics对象", description="北向业务数据信息统计")
+@ApiModel(value = "MediatorNorthBusinessStatistics对象", description = "北向业务数据信息统计")
 public class MediatorNorthBusinessStatistics implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-      @TableId("id")
+    @TableId("id")
     private Long id;
 
     @TableField("org_name")
@@ -38,39 +42,39 @@ public class MediatorNorthBusinessStatistics implements Serializable {
 
     @ApiModelProperty(value = "通道数量")
     @TableField("channel_count")
-    private Long channelCount;
+    private Long channelCount = 0L;
 
     @ApiModelProperty(value = "录像完整下数量")
     @TableField("video_integrity_count")
-    private Long videoIntegrityCount;
+    private Long videoIntegrityCount = 0L;
 
     @ApiModelProperty(value = "录像视频天数数量")
     @TableField("video_days_count")
-    private Long videoDaysCount;
+    private Long videoDaysCount = 0L;
 
     @ApiModelProperty(value = "视频质量诊断数量")
     @TableField("video_diagnosis_count")
-    private Long videoDiagnosisCount;
+    private Long videoDiagnosisCount = 0L;
 
     @ApiModelProperty(value = "防区数量")
     @TableField("protection_count")
-    private Long protectionCount;
+    private Long protectionCount = 0L;
 
     @ApiModelProperty(value = "防区状态数量")
     @TableField("protection_status_count")
-    private Long protectionStatusCount;
+    private Long protectionStatusCount = 0L;
 
     @ApiModelProperty(value = "网络状态")
     @TableField("net_status_count")
-    private Long netStatusCount;
+    private Long netStatusCount = 0L;
 
     @ApiModelProperty(value = "硬盘检测数量")
     @TableField("hard_disk_count")
-    private Long hardDiskCount;
+    private Long hardDiskCount = 0L;
 
     @ApiModelProperty(value = "卷帘门状态(主机直连)数量")
     @TableField("door_device_count")
-    private Long doorDeviceCount;
+    private Long doorDeviceCount = 0L;
 
 
 }

+ 32 - 34
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmDefenceAreaData.java

@@ -1,79 +1,77 @@
 package com.xunmei.common.core.domain.iot.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 防区传感器报警信息,日志
  * </p>
  *
- * @author test
- * @since 2024-02-20
+ * @author oygj
+ * @since 2024-02-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
 @TableName("iot_alarm_defence_area_data")
+@ApiModel(value="IotAlarmDefenceAreaData对象", description="防区传感器报警信息,日志")
 public class IotAlarmDefenceAreaData implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
-
+    @TableId("id")
     private Long id;
 
-    /**
-     * 报警主机子系统唯一标识
-     */
-    private String defenceareaCode;
+    @ApiModelProperty(value = "报警主机子系统唯一标识")
+    @TableField("defencearea_code")
+    private String defenceAreaCode;
 
-    /**
-     * 报警主机唯一标识
-     */
+    @ApiModelProperty(value = "报警主机唯一标识")
+    @TableField("alarm_host_code")
     private String alarmHostCode;
 
-    /**
-     * 传感器名称
-     */
+    @ApiModelProperty(value = "传感器名称")
+    @TableField("input_name")
     private String inputName;
 
-    /**
-     * 输入标识
-     */
+    @ApiModelProperty(value = "输入标识")
+    @TableField("input_index")
     private Integer inputIndex;
 
-    /**
-     * alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知
-     */
+    @ApiModelProperty(value = "alarm:报警,bypass:旁路,normal:正常,activity:活动,unKnown:未知")
+    @TableField("input_state")
     private String inputState;
 
-    /**
-     * 修改时间
-     */
+    @ApiModelProperty(value = "修改时间")
+    @TableField("update_time")
     private LocalDateTime updateTime;
 
+    @TableField("org_id")
     private Long orgId;
 
+    @TableField("org_name")
     private String orgName;
 
+    @TableField("org_path")
     private String orgPath;
 
-    /**
-     * 设备id
-     */
+    @ApiModelProperty(value = "设备id")
+    @TableField("device_id")
     private Long deviceId;
 
-    /**
-     * 设备id
-     */
+    @ApiModelProperty(value = "设备id")
+    @TableField("sensor_data")
     private Long sensorData;
 
-    /**
-     * 报警主机过来的设备id
-     */
+    @ApiModelProperty(value = "报警主机过来的设备id")
+    @TableField("str_device_id")
     private String strDeviceId;
 
 

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

@@ -5,8 +5,6 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
-import java.util.Date;
-
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -18,7 +16,7 @@ import lombok.EqualsAndHashCode;
  * </p>
  *
  * @author oygj
- * @since 2024-02-22
+ * @since 2024-02-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -44,7 +42,7 @@ public class IotAlarmSubsystem implements Serializable {
     @TableField("name")
     private String name;
 
-    @ApiModelProperty(value = "布防状态,0:撤防,1:布防,2:未知")
+    @ApiModelProperty(value = "布防状态,0:撤防,1:布防")
     @TableField("status")
     private Integer status;
 
@@ -90,11 +88,11 @@ public class IotAlarmSubsystem implements Serializable {
 
     @ApiModelProperty(value = "更新时间")
     @TableField("update_time")
-    private Date updateTime;
+    private LocalDateTime updateTime;
 
     @ApiModelProperty(value = "创建时间")
     @TableField("create_time")
-    private Date createTime;
+    private LocalDateTime createTime;
 
     @ApiModelProperty(value = "创建人")
     @TableField("create_by")

+ 66 - 43
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotAlarmSubsystemLog.java

@@ -1,75 +1,98 @@
 package com.xunmei.common.core.domain.iot.domain;
 
-import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.xunmei.common.core.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
 import io.swagger.annotations.ApiModel;
-import lombok.*;
-import lombok.experimental.Accessors;
-import java.util.Date;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 /**
- * 布防
+ * <p>
+ * 报警控制器(子系统)布撤防历史
+ * </p>
+ *
+ * @author oygj
+ * @since 2024-02-23
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Accessors(chain = true)
-@TableName("core_protection_log")
-@ApiModel(value = "防区布撤防历史", description = "【请填写功能名称】")
-public class IotAlarmSubsystemLog extends BaseEntity {
-    /**
-     * 编号
-     */
-    @TableId
+@TableName("iot_alarm_subsystem_log")
+@ApiModel(value="IotAlarmSubsystemLog对象", description="报警控制器(子系统)布撤防历史")
+public class IotAlarmSubsystemLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId("id")
     private Long id;
 
-    /**
-     * 更新时间
-     */
+    @ApiModelProperty(value = "防区ID")
+    @TableField("protection_id")
     private Long protectionId;
 
-    /**
-     * 防区的唯一标识
-     */
+    @ApiModelProperty(value = "防区的唯一标识")
+    @TableField("code")
     private String code;
 
-    /**
-     * 报警主机唯一标识
-     */
-    private String alarmHostCode;
+    @ApiModelProperty(value = "报警主机id")
+    @TableField("alarm_host_id")
+    private Long alarmHostId;
 
-    /**
-     * 防区的名称
-     */
+    @ApiModelProperty(value = "防区的名称")
+    @TableField("name")
     private String name;
 
-    /**
-     * 布防状态
-     */
+    @ApiModelProperty(value = "布防状态,0:撤防,1:布防")
+    @TableField("status")
     private String status;
 
-    /**
-     * 布撤防时间
-     */
-    private Date statusUpdateTime;
+    @ApiModelProperty(value = "布撤防时间")
+    @TableField("status_change_time")
+    private LocalDateTime statusChangeTime;
+
+    @ApiModelProperty(value = "布撤防时间")
+    @TableField("status_update_time")
+    private LocalDateTime statusUpdateTime;
 
-    /**
-     * 提交人id
-     */
+    @ApiModelProperty(value = "上报人id")
+    @TableField("status_updator_id")
     private Long statusUpdatorId;
 
-    /**
-     * 提交人姓名
-     */
+    @ApiModelProperty(value = "上报人姓名")
+    @TableField("status_updator_name")
     private String statusUpdatorName;
 
+    @ApiModelProperty(value = "机构")
+    @TableField("org_id")
     private Long orgId;
 
+    @ApiModelProperty(value = "机构名称")
+    @TableField("org_name")
+    private String orgName;
+
+    @ApiModelProperty(value = "机构")
+    @TableField("org_path")
     private String orgPath;
 
-    private String orgName;
+    @ApiModelProperty(value = "更新时间")
+    @TableField("update_time")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField("create_time")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "创建人")
+    @TableField("create_by")
+    private String createBy;
+
+    @ApiModelProperty(value = "修改人")
+    @TableField("update_by")
+    private String updateBy;
 
-    public IotAlarmSubsystemLog() {
-    }
 
 }

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

@@ -11,6 +11,7 @@ import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
 import com.xunmei.system.api.vo.ProtectionVO;
 
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 
@@ -40,7 +41,7 @@ public interface IProtectionService extends IService<IotAlarmSubsystem> {
 
     TableDataInfo history(ProtectionLogPageDto request);
 
-    Date updateStatus(Long protectionId, String status);
+    LocalDateTime updateStatus(Long protectionId, String status);
 
     List<IotAlarmSubsystem> findNotAllHour(Long orgId);
 

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

@@ -35,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -169,8 +170,8 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, IotAlar
 
     @Override
     @Transactional
-    public Date updateStatus(Long protectionId, String status) {
-        Date now = DateUtil.date();
+    public LocalDateTime updateStatus(Long protectionId, String status) {
+        LocalDateTime now = LocalDateTime.now();
         int count = baseMapper.update(null, new LambdaUpdateWrapper<IotAlarmSubsystem>()
                 .eq(IotAlarmSubsystem::getId, protectionId)
                 .set(IotAlarmSubsystem::getStatus, status)

+ 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_device_detection_log";
+    public static final String tableNames="iot_alarm_defence_area_data";
 
     public static void main(String[] args) {
         // 代码生成器

+ 1 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/ProtectionController.java

@@ -81,7 +81,7 @@ public class ProtectionController {
 
     @ApiOperation("接收防区传感器报警信息")
     @PostMapping({"/api/{branchId}/status/sensor"})
-    public ReceiveErrorDto sensor(@PathVariable String branchId, String msgId, @RequestBody  DataPageDto<SensorDataDto> request) {
+    public ReceiveErrorDto sensor(@PathVariable String branchId, String msgId, @RequestBody  SensorDataDto request) {
         rabbitMsgIdService.sendMsgId(msgId, "/status/sensor", "接收防区传感器报警信息");
         LogUtils.STATUS_INFO_STATUS_SENSOR.info("【北向接口-{}】【branchId:{}】【msgId:{}】【接收参数:{}】", "接收防区传感器报警信息:/api/status/sensor", branchId, msgId, JSON.toJSONString(request));
         ReceiveErrorDto errorDto = ReceiveErrorDto.success();

+ 2 - 1
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/mapper/IotDefenceAreaDataMapper.java

@@ -3,6 +3,7 @@ package com.xunmei.mediator.api.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaData;
 
 /**
  * <p>
@@ -12,6 +13,6 @@ import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
  * @author oygj
  * @since 2024-01-30
  */
-public interface IotDefenceAreaDataMapper extends BaseMapper<IotAlarmDefenceArea> {
+public interface IotDefenceAreaDataMapper extends BaseMapper<IotAlarmDefenceAreaData> {
 
 }

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

@@ -3,6 +3,7 @@ package com.xunmei.mediator.api.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaData;
 
 import java.util.List;
 
@@ -14,8 +15,8 @@ import java.util.List;
  * @author oygj
  * @since 2024-01-30
  */
-public interface IIotDefenceAreaDataService extends IService<IotAlarmDefenceArea> {
+public interface IIotDefenceAreaDataService extends IService<IotAlarmDefenceAreaData> {
 
+    IotAlarmDefenceAreaData findByCodeAndIdx(String defenceAreaCode, Integer inputIndex,Long orgId);
 
-    List<IotAlarmDefenceArea> findByOrgGuid(String guid);
 }

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

@@ -19,7 +19,9 @@ import java.util.List;
 public interface IotAlarmDefenceAreaService extends IService<IotAlarmDefenceArea> {
 
     List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode);
-    IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx);
+    IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx,String orgGuid);
 
-    ReceiveErrorDto saveData(String branchId, String msgId, DataPageDto<SensorDataDto> request);
+    ReceiveErrorDto saveData(String branchId, String msgId, SensorDataDto request);
+
+    ReceiveErrorDto sensorData(SensorDataDto sensorData, String branchId, String msgId);
 }

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

@@ -2,13 +2,12 @@ package com.xunmei.mediator.api.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.Constants;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaAlarmData;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaData;
-import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaDataLog;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.*;
 import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.IDHelper;
@@ -16,14 +15,18 @@ import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.mediator.api.mapper.IotAlarmDefenceAreaMapper;
 import com.xunmei.mediator.api.service.*;
 import com.xunmei.mediator.util.CheckDataUtil;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.north.NorthError;
 import com.xunmei.system.api.dto.DataPageDto;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import com.xunmei.system.api.dto.protection.SensorDataDto;
 import com.xunmei.system.api.util.LogUtils;
 import com.xunmei.system.api.vo.SysOrgVO;
+import io.netty.util.internal.StringUtil;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -49,21 +52,25 @@ import java.util.stream.Collectors;
 public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceAreaMapper, IotAlarmDefenceArea> implements IotAlarmDefenceAreaService {
     @Autowired
     private RedisTemplate redisTemplate;
+    @Autowired
+    private RemoteOrgService orgService;
     @Resource
     NorthErrorService northErrorService;
     @Resource
     IIotDefenceAreaDataLogService defenceAreDataLogService;
     @Resource
     IIotDefenceAreaAlarmDataService defenceAreAlarmDataService;
-
+    @Resource
+    IIotDefenceAreaDataService defenceAreaDataService;
     @Override
     public List<IotAlarmDefenceArea> findBySubSystemCode(String defenceAreaCode) {
         return lambdaQuery().eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode).eq(IotAlarmDefenceArea::getDeleted, 0).list();
     }
 
     @Override
-    public IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx) {
+    public IotAlarmDefenceArea findBySubSystemCodeAndIdx(String defenceAreaCode, Integer idx,String orgGuid) {
         return lambdaQuery()
+                .eq(IotAlarmDefenceArea::getOrganizationGuid, orgGuid)
                 .eq(IotAlarmDefenceArea::getSubSystemCode, defenceAreaCode)
                 .eq(IotAlarmDefenceArea::getDefenceAreaIndex, idx)
                 .eq(IotAlarmDefenceArea::getDeleted, 0)
@@ -73,310 +80,170 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
     }
 
     @Override
-    public ReceiveErrorDto saveData(String branchId, String msgId, DataPageDto<SensorDataDto> request) {
-        if (ObjectUtil.isEmpty(request.getTotalPage())) {
-            ReceiveErrorDto.error("totalPage参数 未空");
-        }
-        if (ObjectUtil.isEmpty(request.getCurrPage())) {
-            ReceiveErrorDto.error("currPage 未空");
-        }
-        ReceiveErrorDto dto = new ReceiveErrorDto();
-        List<SensorDataDto> dtoList = request.getData();
-        if (CollectionUtils.isNotEmpty(dtoList)) {
-            String key = DigestUtils.md5Hex("SeneorNx" + request.getPackageGuid() + request.getTotalPage() + request.getCurrPage());
-            String data = JSON.toJSONString(dtoList);
-            //验证数据是否接受重复的数据
-            if (checkData(key, data)) {
-                try {
-                    sensorBatch(key, branchId, msgId);
-                    LogUtils.STATUS_INFO_STATUS_SENSOR.info("【北向接口-{}】【branchId:{}】【msgId:{}】【返回参数:{}】", "防区传感器报警信息:/api/status/sensor", branchId, msgId, JSON.toJSONString(request));
-                } catch (Exception e) {
-                    LogUtils.STATUS_INFO_STATUS_SENSOR.info("【北向接口-{}】【branchId:{}】【msgId:{}】【异常原因:{}】", "防区传感器报警信息:/api/status/sensor", branchId, msgId, e.getMessage());
-                }
-            } else {
-                dto.setErrorMsg("数据已接受,短时间内收到相同的告警数据,处理结果忽略:拒绝处理该数据");
-            }
-            dto.setSuccess(true);
-            return dto;
-        } else {
-            return ReceiveErrorDto.error("参数中Data的值为null");
+    public ReceiveErrorDto sensorData(SensorDataDto sensorData, String branchId, String msgId) {
+        ReceiveErrorDto result = new ReceiveErrorDto();
+        if (StringUtils.isEmpty(sensorData.getOrganizationGuid())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传organizationGuid");
+            return result;
         }
-    }
-
 
-    public void sensorBatch(String key, String branchId, String msgId) throws IllegalAccessException {
-        Object obj = this.redisTemplate.opsForValue().get(key);
-        List<SensorDataDto> DataDtos = JSON.parseArray((String) obj, SensorDataDto.class);
-        if (CollectionUtils.isNotEmpty(DataDtos)) {
-            Map<String, Object> map = checkSensor(DataDtos, branchId, msgId);
-            List<NorthError> errors = (List<NorthError>) map.get("errors");
-            List<IotAlarmDefenceArea> sensorDatas = (List<IotAlarmDefenceArea>) map.get("sensorDatas");
-            List<IotAlarmDefenceAreaDataLog> sensorDataLogs = (List<IotAlarmDefenceAreaDataLog>) map.get("sensorDataLogs");
-            List<IotAlarmDefenceArea> sensors = (List<IotAlarmDefenceArea>) map.get("sensors");
-            //List<ProductDevice> productDevices = (List<ProductDevice>) map.get("productDevices");
-            List<IotAlarmDefenceAreaAlarmData> sensorAlarmDatas = (List<IotAlarmDefenceAreaAlarmData>) map.get("sensorAlarmDatas");
-            try {
-                if (CollectionUtils.isNotEmpty(errors)) {
-                    northErrorService.saveErrorData(errors);
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-            try {
-                if (CollectionUtils.isNotEmpty(sensorDatas)) {
-                    this.saveOrUpdateBatch(sensorDatas);
-                }
-                if (CollectionUtils.isNotEmpty(sensorDataLogs)) {
-                    defenceAreDataLogService.saveBatch(sensorDataLogs);
-                }
-                if (CollectionUtils.isNotEmpty(sensors)) {
-                    this.updateBatchById(sensors);
-                }
-/*                if (CollectionUtils.isNotEmpty(productDevices)) {
-                    productDeviceDao.saveOrUpdateBatch(productDevices);
-                }*/
-                if (CollectionUtils.isNotEmpty(sensorAlarmDatas)) {
-                    defenceAreAlarmDataService.saveBatch(sensorAlarmDatas);
-                }
-            } catch (Exception e) {
-                throw new RuntimeException(e.getMessage());
-            }
+        if (StringUtils.isEmpty(sensorData.getDefenceareaCode())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传defenceareaCode");
+            return result;
         }
-    }
 
-    @Resource
-    IIotDefenceAreaDataService defenceAreaDataService;
-
-    private Map<String, Object> checkSensor(List<SensorDataDto> dataDtos, String branchId, String msgId) throws IllegalAccessException {
-        Map<String, Object> map = new HashMap<>();
-        List<NorthError> errors = new ArrayList<>();
-        List<IotAlarmDefenceAreaData> sensorDatas = new ArrayList<>();
-        List<IotAlarmDefenceAreaDataLog> sensorDataLogs = new ArrayList<>();
-        List<Sensor> sensors = new ArrayList<>();
-        // List<ProductDevice> productDevices = new ArrayList<>();
-        List<IotAlarmDefenceAreaAlarmData> sensorAlarmDatas = new ArrayList<>();
-        NorthError error = null;
-
-        //同一页数据同一个传感器的状态会有多个,取最新的一条去处理
-        List<SensorDataDto> sensorDatasJg = new ArrayList<>();
-        //将数据进行分组并取出每个传感器最新的一条状态数据重新放到集合中
-        Map<String, List<SensorDataDto>> mapa = dataDtos.stream().collect(Collectors.groupingBy(r -> r.getDefenceareaCode() + r.getInputIndex()));
-        List<IotAlarmDefenceArea> sensorList = new ArrayList<>();
-        List<IotAlarmDefenceArea> dataOlds = new ArrayList<>();
-        for (String key : mapa.keySet()) {
-            List<SensorDataDto> list = mapa.get(key);
-            if (CollectionUtils.isNotEmpty(list)) {
-                SensorDataDto sensorData = list.stream().sorted(Comparator.comparing(SensorDataDto::getUpdateTime).reversed()).collect(Collectors.toList()).get(0);
-                sensorDatasJg.add(sensorData);
-                sensorList.add(this.findBySubSystemCodeAndIdx(sensorData.getDefenceareaCode(), sensorData.getInputIndex()));
-                dataOlds.addAll(defenceAreaDataService.findByOrgGuid(sensorData.getOrganizationGuid()));
-            }
+        if (StringUtils.isEmpty(sensorData.getAlarmHostCode())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传alarmHostCode");
+            return result;
         }
-
-/*
-        QueryWrapper<ProductDevice> qwa = new QueryWrapper<>();
-        qwa.lambda().in(ProductDevice::getStrDeviceId, strDeviceIds);
-        List<ProductDevice> productDeviceList = productDeviceDao.list(qwa);
-*/
-
-        List<SysOrgVO> orgList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
-
-        for (SensorDataDto sensorData : sensorDatasJg) {
-            error = CheckDataUtil.checkObjFieldIsNull(sensorData, branchId, msgId, "/api/status/sensor", null);
-            if (error != null) {
-                errors.add(error);
-                continue;
-            } else {
-                Map<String, Object> map1 = this.checkError(sensorData, branchId, msgId, orgList, sensorList, dataOlds);
-                error = (NorthError) map1.get("error");
-                if (error == null) {
-                    IotAlarmDefenceAreaData data = (IotAlarmDefenceAreaData) map1.get("data");
-                    if (data != null) {
-                        sensorDatas.add(data);
-                    }
-                    IotAlarmDefenceAreaDataLog dataLog = (IotAlarmDefenceAreaDataLog) map1.get("dataLog");
-                    if (dataLog != null) {
-                        sensorDataLogs.add(dataLog);
-                    }
-                    Sensor sensor = (Sensor) map1.get("sensor");
-                    if (sensor != null) {
-                        sensors.add(sensor);
-                    }
-                   /* ProductDevice productDevice = (ProductDevice) map1.get("productDevice");
-                    if (productDevice != null) {
-                        productDevices.add(productDevice);
-                    }*/
-                    IotAlarmDefenceAreaAlarmData dataAlarm = (IotAlarmDefenceAreaAlarmData) map1.get("dataAlarm");
-                    if (dataAlarm != null) {
-                        sensorAlarmDatas.add(dataAlarm);
-                    }
-                } else {
-                    errors.add(error);
-                }
-            }
+        if (StringUtils.isEmpty(sensorData.getInputName())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传InputName");
+            return result;
         }
-        map.put("errors", errors);
-        map.put("sensorDatas", sensorDatas);
-        map.put("sensorDataLogs", sensorDataLogs);
-        map.put("sensors", sensors);
-      //  map.put("productDevices", productDevices);
-        map.put("sensorAlarmDatas", sensorAlarmDatas);
-        return map;
-    }
-
-    //验证是否在段时间内收到重复的数据
-    public boolean checkData(String key, String value) {
-        boolean flag = true;
-        if (redisTemplate.hasKey(key)) {
-            String val = (String) this.redisTemplate.opsForValue().get(key);
-            if (val != null) {
-                if (value.equals(val)) {
-                    flag = false;
-                } else {
-                    redisTemplate.opsForValue().set(key, value);
-                    this.redisTemplate.expire(key, 60, TimeUnit.MINUTES);
-                }
-            } else {
-                redisTemplate.opsForValue().set(key, value);
-                this.redisTemplate.expire(key, 60, TimeUnit.MINUTES);
-            }
-        } else {
-            redisTemplate.opsForValue().set(key, value);
-            this.redisTemplate.expire(key, 60, TimeUnit.MINUTES);
+        if (StringUtils.isEmpty(sensorData.getInputState())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传InputState");
+            return result;
+        }
+        if (sensorData.getInputIndex() == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传InputIndex");
+            return result;
+        }
+        if (StringUtils.isEmpty(sensorData.getUpdateTime())) {
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:未传updateTime");
+            return result;
         }
-        return flag;
-    }
 
-    private Map<String, Object> checkError(SensorDataDto sensorData, String branchId, String msgId, List<SysOrgVO> orgList, List<IotAlarmDefenceArea> sensorList, List<IotAlarmDefenceArea> dataOlds) {
-        Map<String, Object> map = new HashMap<>();
-        SysOrgVO org; //orgDao.findByGuid(sensorData.getOrganizationGuid());
-        List<SysOrgVO> orgs = orgList.stream().filter(r -> r.getGuid().equals(sensorData.getOrganizationGuid())).collect(Collectors.toList());
-        if (orgs.size() == 0) {
-            org = null;
+        SysOrg org = orgService.findByCode(sensorData.getOrganizationGuid(), SecurityConstants.INNER);
+        if (org == null) {
             NorthError error = new NorthError(msgId, branchId, "/api/status/sensor"
-                    , sensorData, "organizationGuid:" + sensorData.getOrganizationGuid() + "不正确");
-            map.put("error", error);
-            return map;
-        } else {
-            org = orgs.get(0);
+                    , sensorData, "orgGUID:" + sensorData.getOrganizationGuid() + "不正确");
+            northErrorService.saveError(error);
+            return result;
         }
 
         LocalDateTime dateTime = null;
         try {
             dateTime = LocalDateTime.parse(sensorData.getUpdateTime(), DateTimeFormatter.ISO_DATE_TIME);
         } catch (Exception e) {
-            NorthError error = new NorthError(msgId, branchId, "/api/status/sensor"
-                    , sensorData, "updateTime:" + sensorData.getUpdateTime() + "不正确");
-            map.put("error", error);
-            return map;
+            result.setSuccess(false);
+            result.setErrorMsg("参数非法:updateTime不正确");
+            return result;
         }
-        Date updateTime = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
-        IotAlarmDefenceArea sensor = null;
-        if (CollectionUtils.isNotEmpty(sensorList)) {
-            final Optional<IotAlarmDefenceArea> optional = sensorList.stream()
-                    .filter(r -> r.getSubSystemCode().equals(sensorData.getDefenceareaCode()))
-                    .filter(r -> r.getDefenceAreaIndex().equals(sensorData.getInputIndex()))
-                    .filter(r -> r.getOrgId().equals(org.getId()))
-                    .findFirst();
-            if (!optional.isPresent()) {
-                NorthError error = new NorthError(msgId, branchId, "/api/status/sensor"
-                        , sensorData, "没有找到对应的传感器");
-                map.put("error", error);
-                return map;
-            }
-            sensor = optional.get();
-            sensor.setState(sensorData.getInputState());
-            if (sensorData.getInputState().equalsIgnoreCase("alarm")) {
-                sensor.setStateText("报警");
-            }
-            if (sensorData.getInputState().equalsIgnoreCase("bypass")) {
-                sensor.setStateText("旁路");
 
-            }
-            if (sensorData.getInputState().equalsIgnoreCase("normal")) {
-                sensor.setStateText("正常");
 
-            }
-            if (sensorData.getInputState().equalsIgnoreCase("activity")) {
-                sensor.setStateText("活动");
+        IotAlarmDefenceArea sensor = this.findBySubSystemCodeAndIdx(sensorData.getDefenceareaCode(),sensorData.getInputIndex(),sensorData.getOrganizationGuid());
+        if (sensor == null) {
+            result.setSuccess(false);
+            result.setErrorMsg("没有找到对应的设备");
+            return result;
+        }
+        if (ObjectUtil.notEqual(sensor.getState(),sensorData.getInputState())){
+            sensor.setStateUpdateTime(LocalDateTime.now());
+        }
+        sensor.setState(sensorData.getInputState());
+        if (sensorData.getInputState().equalsIgnoreCase("alarm")) {
+            sensor.setStateText("报警");
+        }
+        if (sensorData.getInputState().equalsIgnoreCase("bypass")) {
+            sensor.setStateText("旁路");
 
-            }
-            if (sensorData.getInputState().equalsIgnoreCase("unKnown")) {
-                sensor.setStateText("未知");
+        }
+        if (sensorData.getInputState().equalsIgnoreCase("normal")) {
+            sensor.setStateText("正常");
 
-            }
         }
+        if (sensorData.getInputState().equalsIgnoreCase("activity")) {
+            sensor.setStateText("活动");
 
+        }
+        if (sensorData.getInputState().equalsIgnoreCase("unKnown")) {
+            sensor.setStateText("未知");
 
-        IotAlarmDefenceArea data = new IotAlarmDefenceArea();
+        }
+
+        IotAlarmDefenceAreaData data = new IotAlarmDefenceAreaData();
         data.setAlarmHostCode(sensorData.getAlarmHostCode());
-        data.setSubSystemCode(sensorData.getDefenceareaCode());
-        //data.setOrganizationGuid(sensorData.getOrganizationGuid());
-        //data.setDeviceId(productDevice.getDeviceId());
-        //data.setStrDeviceId(sensorData.getDefenceareaCode() + sensorData.getInputIndex());
-        data.setDefenceAreaIndex(sensorData.getInputIndex());
-        data.setDefenceAreaName(sensorData.getInputName());
-        data.setState(sensorData.getInputState());
-        data.setUpdateTime(DateUtils.toLocalDateTime(updateTime));
+        data.setDefenceAreaCode(sensorData.getDefenceareaCode());
+        data.setInputIndex(sensorData.getInputIndex());
+        data.setInputName(sensorData.getInputName());
+        data.setInputState(sensorData.getInputState());
+        data.setUpdateTime(LocalDateTime.parse(sensorData.getUpdateTime(),DateTimeFormatter.ISO_DATE_TIME));
         data.setOrgId(org.getId());
-        data.setOrgName(org.getShortName());
+        data.setOrgName(org.getName());
         data.setOrgPath(org.getPath());
 
-        IotAlarmDefenceArea dataOld = null;
-        if (CollectionUtils.isNotEmpty(dataOlds)) {
-            List<IotAlarmDefenceArea> dataList = dataOlds.stream().filter(r -> r.getSubSystemCode().equals(sensorData.getDefenceareaCode())&&r.getDefenceAreaIndex().equals(sensorData.getInputIndex())).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(dataList)) {
-                dataOld = dataList.get(0);
-            }
-        }
+        IotAlarmDefenceAreaData dataOld = defenceAreaDataService.findByCodeAndIdx(sensorData.getDefenceareaCode(), sensorData.getInputIndex(),data.getOrgId());
         if (dataOld != null) {
-            //当传过来的状态数据和数据库中的状态不一样是才进行修改
-            if (!dataOld.getState().equals(data.getState())) {
-                BeanHelper.copyProperties(dataOld, data);
-                data = dataOld;
-            } else {
-                data = null;
-            }
-
+            BeanHelper.copyProperties(dataOld, data);
+            data = dataOld;
         } else {
             data.setId(IDHelper.id());
         }
-        IotAlarmDefenceAreaDataLog dataLog = null;
-        //只有状态发送改变或新插入数据的时候才记录日志
-        if (data != null) {
-            dataLog = new IotAlarmDefenceAreaDataLog();
-            BeanHelper.copyProperties(dataLog, data);
-            dataLog.setId(IDHelper.id());
-            dataLog.setSensorData(data.getId());
+        IotAlarmDefenceAreaDataLog dataLog = new IotAlarmDefenceAreaDataLog();
+        BeanHelper.copyProperties(dataLog, data);
+        dataLog.setId(IDHelper.id());
+        dataLog.setSensorData(data.getId());
+
+        //报警是报警状态
+        if (data.getInputState().equalsIgnoreCase("alarm")) {
+            //把对应设备修改为告警,并且记录告警记录
+            IotAlarmDefenceAreaAlarmData dataAlarm = new IotAlarmDefenceAreaAlarmData();
+            BeanHelper.copyProperties(dataAlarm, data);
+            dataAlarm.setId(IDHelper.id());
+            dataAlarm.setIsDo(0);
+            defenceAreAlarmDataService.updateById(dataAlarm);
+        }
 
-            //旁路、正常,活动,未知是正常状态
-           /* if (data.getState().equalsIgnoreCase("bypass")
-                    || data.getState().equalsIgnoreCase("normal")
-                    || data.getState().equalsIgnoreCase("unKnown")
-                    || data.getState().equalsIgnoreCase("activity")) {
-                把设备修改wie正常
-                 productDevice.setDoStatus(0);
-                 productDevice.setCheckTime(updateTime);
-                 map.put("productDevice", productDevice);
-                 productDeviceDao.saveOrUpdate(productDevice);
-            }*/
-            //报警是报警状态
-            if (data.getState().equalsIgnoreCase("alarm")) {
-                //把对应设备修改为告警,并且记录告警记录
-                //  productDevice.setDoStatus(1);
-                //  productDevice.setCheckTime(updateTime);
-                //  map.put("productDevice", productDevice);
-                IotAlarmDefenceAreaAlarmData dataAlarm = new IotAlarmDefenceAreaAlarmData();
-                BeanHelper.copyProperties(dataAlarm, data);
-                dataAlarm.setId(IDHelper.id());
-                dataAlarm.setIsDo(0);
-                map.put("dataAlarm", dataAlarm);
+        defenceAreaDataService.saveOrUpdate(data);
+        defenceAreDataLogService.save(dataLog);
+        this.updateById(sensor);
+        return result;
+    }
+
+    @Override
+    public ReceiveErrorDto saveData(String branchId, String msgId, SensorDataDto sensorData) {
+        ReceiveErrorDto errorDto = null;
+        try {
+            String value = sensorData.getInputState();
+            String key = sensorData.getDefenceareaCode() + sensorData.getInputIndex() + sensorData.getOrganizationGuid() + "sensor";
+            boolean flag = true;
+            if (redisTemplate.hasKey(key)) {
+                String val = (String) this.redisTemplate.opsForValue().get(key);
+                if (val != null) {
+                    if (value.equals(val)) {
+                        flag = false;
+                    } else {
+                        redisTemplate.opsForValue().set(key, value);
+                        this.redisTemplate.expire(key, 60, TimeUnit.MINUTES);
+                    }
+                }
+            } else {
+                redisTemplate.opsForValue().set(key, value);
+                this.redisTemplate.expire(key, 60, TimeUnit.MINUTES);
+            }
+            if (flag) {
+                errorDto = this.sensorData(sensorData, branchId, msgId);
+                LogUtils.STATUS_INFO_STATUS_SENSOR.info("【北向接口-{}】【branchId:{}】【msgId:{}】【返回参数:{}】", "防区传感器报警信息:/api/status/sensor", branchId, msgId, JSON.toJSONString(errorDto));
+                return errorDto;
+            } else {
+                ReceiveErrorDto dto = new ReceiveErrorDto();
+                dto.setSuccess(true);
+                dto.setErrorMsg("数据已接受,短时间内收到相同的告警数据,处理结果忽略:拒绝处理该数据");
+                return dto;
             }
-        }
 
-        map.put("data", data);
-        map.put("dataLog", dataLog);
-        map.put("sensor", sensor);
-        return map;
+        } catch (Exception e) {
+            e.printStackTrace();
+            LogUtils.STATUS_INFO_STATUS_SENSOR.info("【北向接口-{}】【branchId:{}】【msgId:{}】【异常原因:{}】", "防区传感器报警信息:/api/status/sensor", branchId, msgId, e.getMessage());
+            return ReceiveErrorDto.error("数据处理异常");
+        }
     }
+
 }

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

@@ -131,9 +131,9 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             return result;
         }
 
-        LocalDateTime dateTime = null;
+        LocalDateTime updateTime = null;
         try {
-            dateTime = LocalDateTime.parse(protectionEditDto.getUpdateTime(), DateTimeFormatter.ISO_DATE_TIME);
+            updateTime = LocalDateTime.parse(protectionEditDto.getUpdateTime(), DateTimeFormatter.ISO_DATE_TIME);
         } catch (Exception e) {
             result.setSuccess(false);
             result.setErrorMsg("参数非法:updateTime不正确");
@@ -141,16 +141,12 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         }
 
 
-        Date updateTime = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
         IotAlarmSubsystem protection = new IotAlarmSubsystem();
         protection.setCode(protectionEditDto.getDefenceareaCode());
 
         IotAlarmSubsystem old = this.findByCodeAndOrgId(protectionEditDto.getDefenceareaCode(), org.getId());
         if (old != null) {
-            Date oldUt = old.getUpdateTime();
-            long ot = oldUt.getTime();
-            long nt = updateTime.getTime();
-            if (ot - nt > 0) {
+            if (old.getUpdateTime().isAfter(updateTime)) {
                 result.setSuccess(true);
                 result.setErrorMsg("历史更新时间大于当前消息,无需更新!");
                 return result;
@@ -158,10 +154,14 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
             protection = old;
         } else {
             protection.setId(IdWorker.getId());
+            protection.setCreateTime(LocalDateTime.now());
         }
 
         protection.setName(protectionEditDto.getDefenceareaName());
         protection.setUpdateTime(updateTime);
+        if (ObjectUtil.notEqual(protection.getStatus(),protectionEditDto.getDefenceStatus())){
+            protection.setStatusUpdateTime(LocalDateTime.now());
+        }
         switch (protectionEditDto.getDefenceStatus()) {
             case 0:
                 protection.setStatus(ProtectionStatus.REMOVAL.ordinal());
@@ -232,7 +232,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         IotAlarmSubsystemLog protectionLog = new IotAlarmSubsystemLog();
         BeanHelper.copyProperties(protectionLog, protection);
         protectionLog.setId(null);
-        protectionLog.setCreateTime(new Date());
+        protectionLog.setCreateTime(LocalDateTime.now());
         protectionLog.setUpdateTime(protection.getUpdateTime());
         protectionLog.setProtectionId(protection.getId());
         protectionLogMapper.insert(protectionLog);
@@ -423,11 +423,11 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
         } else {
             protection = new IotAlarmSubsystem();
             protection.setId(IDHelper.id());
-            protection.setCreateTime(new Date());
+            protection.setCreateTime(LocalDateTime.now());
             protection.setStatus(2);
             protection.setSource(1);
         }
-        protection.setUpdateTime(new Date());
+        protection.setUpdateTime(LocalDateTime.now());
         protection.setDeleted(0);
         protection.setAlarmHostCode(dto.getAlarmHostCode());
         protection.setCode(dto.getDefenceareaCode());

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

@@ -1,13 +1,18 @@
 package com.xunmei.mediator.api.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceAreaData;
 import com.xunmei.mediator.api.mapper.IotDefenceAreaDataMapper;
 import com.xunmei.mediator.api.service.IIotDefenceAreaDataService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
+import static com.baomidou.mybatisplus.core.toolkit.Constants.LIMIT;
+
 /**
  * <p>
  * 防区传感器报警信息,最新数据 服务实现类
@@ -17,11 +22,17 @@ import java.util.List;
  * @since 2024-01-30
  */
 @Service
-public class IotDefenceAreaDataServiceImpl extends ServiceImpl<IotDefenceAreaDataMapper, IotAlarmDefenceArea> implements IIotDefenceAreaDataService {
+public class IotDefenceAreaDataServiceImpl extends ServiceImpl<IotDefenceAreaDataMapper, IotAlarmDefenceAreaData> implements IIotDefenceAreaDataService {
 
 
     @Override
-    public List<IotAlarmDefenceArea> findByOrgGuid(String guid) {
-        return lambdaQuery().eq(IotAlarmDefenceArea::getOrganizationGuid,guid).list();
+    public IotAlarmDefenceAreaData findByCodeAndIdx(String defenceAreaCode, Integer inputIndex,Long orgId) {
+        return lambdaQuery()
+                .eq(IotAlarmDefenceAreaData::getOrgId,orgId)
+                .eq(IotAlarmDefenceAreaData::getDefenceAreaCode,defenceAreaCode)
+                .eq(IotAlarmDefenceAreaData::getInputIndex,inputIndex)
+                .eq(IotAlarmDefenceAreaData::getOrgId,orgId)
+                .last(Constants.LIMIT1)
+                .one();
     }
 }