Преглед на файлове

设备维护: 报警主机 代码部分提交

jingyuanchao преди 11 месеца
родител
ревизия
c38285a15d

+ 1 - 4
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/deviceInfo/EditAlarmHostDeviceDto.java

@@ -67,9 +67,6 @@ public class EditAlarmHostDeviceDto {
     @ApiModelProperty(value = "子系统列表")
     private List<SubSystemDto> subSystemList;
 
-    @ApiModelProperty(value = "输入传感器数量")
-    private Integer inputSensorNums;
-
     @ApiModelProperty(value = "输入传感器列表")
     private List<InputSensorDto> inputSensorList;
 
@@ -77,7 +74,7 @@ public class EditAlarmHostDeviceDto {
     @ApiModel(description = "子系统信息")
     public static class SubSystemDto {
         @ApiModelProperty(value = "子系统索引")
-        private Integer subSystemIndex;
+        private String subSystemIndex;
 
         @ApiModelProperty(value = "子系统名称")
         private String subSystemName;

+ 6 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmDefenceAreaMapper.java

@@ -3,6 +3,9 @@ package com.xunmei.iot.mapper;
 import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -15,4 +18,7 @@ import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
 @InterceptorIgnore(blockAttack = "true")
 public interface IotAlarmDefenceAreaMapper extends BaseMapper<IotAlarmDefenceArea> {
 
+    void updateDeleted(@Param("alarmHostCode") String alarmHostCode, @Param("subSystemCode") String subSystemCode);
+
+    void updateDeletedByIds(@Param("ids") List<Long> ids);
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotAlarmSubsystemMapper.java

@@ -10,4 +10,6 @@ import java.util.List;
 public interface IotAlarmSubsystemMapper extends BaseMapper<IotAlarmSubsystem> {
 
     List<DeviceDetailInfoVo> getByDeviceCodeAndIotToken(@Param("deviceCode") String deviceCode, @Param("iotToken") String iotToken);
+
+    void updateDeletedByIds(@Param("ids") List<Long> subSystemIds);
 }

+ 145 - 3
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.iot.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -9,6 +10,8 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.constant.RedisConstant;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmDefenceArea;
+import com.xunmei.common.core.domain.iot.domain.IotAlarmSubsystem;
 import com.xunmei.common.core.domain.iot.domain.IotServerProduct;
 import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
 import com.xunmei.common.core.utils.DateUtils;
@@ -19,6 +22,7 @@ import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.dto.deviceInfo.EditAlarmHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.EditDvrHostDeviceDto;
 import com.xunmei.iot.dto.deviceInfo.IotDeviceInfoPageDto;
+import com.xunmei.iot.mapper.IotAlarmDefenceAreaMapper;
 import com.xunmei.iot.mapper.IotAlarmSubsystemMapper;
 import com.xunmei.iot.mapper.IotDeviceInfoMapper;
 import com.xunmei.iot.mapper.IotServerProductMapper;
@@ -28,6 +32,7 @@ import com.xunmei.iot.vo.deviceInfo.DeviceDetailInfoVo;
 import com.xunmei.iot.vo.deviceInfo.IotDeviceInfoPageVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.api.domain.iot.IotDeviceInfo;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
@@ -35,9 +40,11 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 @Service
 public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, IotDeviceInfo> implements IIotDeviceInfoService {
@@ -46,7 +53,8 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
 
     @Resource
     private IotAlarmSubsystemMapper subsystemMapper;
-
+    @Resource
+    private IotAlarmDefenceAreaMapper defenceAreaMapper;
     @Resource
     private IotServerProductMapper productMapper;
     @Resource
@@ -211,13 +219,90 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
         if (deviceId == null) {
             addAlarmHostDevice(req, sysOrg);
+            return 1;
         }
+        updateAddAlarmHostDevice(req, sysOrg);
 
 
-        return null;
+        return 1;
+    }
+
+    private void updateAddAlarmHostDevice(EditAlarmHostDeviceDto req, SysOrg sysOrg) {
+        final SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
+        final IotDeviceInfo deviceInfo = getById(req.getId());
+        deviceInfo.setDeviceName(req.getDeviceName());
+        deviceInfo.setDeviceModel(req.getModels());
+        deviceInfo.setEnable(req.getEnable());
+        deviceInfo.setUpdateTime(new Date());
+        deviceInfo.setUpdateBy(sysUser.getName());
+        deviceInfo.setDeviceModel(req.getModels());
+        //扩展信息
+        extendService.updateAlarmHostExtendByDeviceId(deviceInfo.getId(), req);
+        //子系统
+        final List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList = req.getSubSystemList();
+        if (CollUtil.isEmpty(subSystemList)) {
+            return;
+        }
+        //修改报警主机下子系统delete=1
+        final LambdaQueryWrapper<IotAlarmSubsystem> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(IotAlarmSubsystem::getAlarmHostCode, deviceInfo.getDeviceCode());
+        final List<IotAlarmSubsystem> selectList = subsystemMapper.selectList(wrapper);
+        if (CollUtil.isNotEmpty(selectList)) {
+            final List<Long> subSystemIds = selectList.stream().map(IotAlarmSubsystem::getId).collect(Collectors.toList());
+            subsystemMapper.updateDeletedByIds(subSystemIds);
+        }
+        //修改子系统下传感器delete=1
+        final LambdaQueryWrapper<IotAlarmDefenceArea> sensorWrapper = new LambdaQueryWrapper<>();
+        sensorWrapper.eq(IotAlarmDefenceArea::getAlarmHostCode, deviceInfo.getDeviceCode());
+        final List<IotAlarmDefenceArea> defenceAreaList = defenceAreaMapper.selectList(sensorWrapper);
+        if (CollUtil.isNotEmpty(defenceAreaList)) {
+            final List<Long> defenceAreaIds = defenceAreaList.stream().map(IotAlarmDefenceArea::getId).collect(Collectors.toList());
+            defenceAreaMapper.updateDeletedByIds(defenceAreaIds);
+        }
+
+
+        if (CollUtil.isNotEmpty(selectList)) {
+            for (IotAlarmSubsystem subsystem : selectList) {
+                final EditAlarmHostDeviceDto.SubSystemDto subSystemDto = subSystemList.stream().filter(item -> item.getSubSystemIndex().equals(subsystem.getCode())).findFirst().orElseGet(null);
+                if (subSystemDto != null) {
+                    subsystem.setDeleted(0);
+                    subsystem.setEnable(subSystemDto.getEnable());
+                    subsystem.setCode(subSystemDto.getSubSystemIndex());
+                    subsystem.setName(subSystemDto.getSubSystemName());
+                    subsystem.setUpdateBy(sysUser.getName());
+                    subsystem.setUpdateTime(LocalDateTime.now());
+                    subsystemMapper.updateById(subsystem);
+                    // 传感器
+                    final List<EditAlarmHostDeviceDto.InputSensorDto> sensorList = req.getInputSensorList();
+                    if (CollUtil.isEmpty(sensorList)) {
+                        continue;
+                    }
+                    final List<IotAlarmDefenceArea> exitAreaList = defenceAreaList.stream().filter(r -> ObjectUtil.equal(r.getSubSystemCode(), subsystem.getCode())).collect(Collectors.toList());
+                    final List<EditAlarmHostDeviceDto.InputSensorDto> newAreaList = sensorList.stream().filter(r -> ObjectUtil.equal(r.getSubSystemIndex(), subsystem.getCode())).collect(Collectors.toList());
+                    if (CollUtil.isEmpty(newAreaList)) {
+                        continue;
+                    }
+                    for (IotAlarmDefenceArea defenceArea : exitAreaList) {
+                        final EditAlarmHostDeviceDto.InputSensorDto sensorDto = newAreaList.stream().filter(r -> ObjectUtil.equal(r.getInputSensorIndex(), defenceArea.getDefenceAreaIndex())).findFirst().orElseGet(null);
+                        if (sensorDto != null) {
+                            defenceArea.setDefenceAreaName(sensorDto.getInputSensorName());
+                            defenceArea.setSensorType(sensorDto.getSensorType());
+                            defenceArea.setDefenceAreaIndex(sensorDto.getInputSensorIndex());
+                            defenceArea.setEnable(sensorDto.getEnable());
+                            defenceArea.setUpdateBy(sysUser.getName());
+                            defenceArea.setModuleAddress(sensorDto.getModuleAddress());
+                            defenceArea.setDeleted(0);
+                            defenceAreaMapper.updateById(defenceArea);
+                        }
+                    }
+                }
+            }
+        }
+
     }
 
     private void addAlarmHostDevice(EditAlarmHostDeviceDto req, SysOrg sysOrg) {
+        final SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
         //主机信息
         final IotDeviceInfo deviceInfo = new IotDeviceInfo();
         deviceInfo.setId(IdWorker.getId());
@@ -234,13 +319,70 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         deviceInfo.setOrgId(req.getOrgId());
         deviceInfo.setEnable(req.getEnable());
         deviceInfo.setDeleted(0);
+        deviceInfo.setCreateTime(new Date());
         deviceInfo.setUpdateTime(new Date());
-        deviceInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getName());
+        deviceInfo.setCreateBy(sysUser.getId().toString());
+        deviceInfo.setUpdateBy(sysUser.getId().toString());
         deviceInfo.setOrgName(sysOrg.getShortName());
         deviceInfo.setOrgPath(sysOrg.getPath());
+        save(deviceInfo);
         //扩展信息
         extendService.updateAlarmHostExtendByDeviceId(deviceInfo.getId(), req);
         //子系统 传感器
+        final List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList = req.getSubSystemList();
+        if (CollUtil.isEmpty(subSystemList)) {
+            return;
+        }
+        for (EditAlarmHostDeviceDto.SubSystemDto systemDto : subSystemList) {
+            IotAlarmSubsystem subsystem = new IotAlarmSubsystem();
+            subsystem.setId(IdWorker.getId());
+            subsystem.setCode(systemDto.getSubSystemIndex());
+            subsystem.setName(systemDto.getSubSystemName());
+            subsystem.setOrgId(sysOrg.getId());
+            subsystem.setOrgName(sysOrg.getName());
+            subsystem.setOrgPath(sysOrg.getPath());
+            subsystem.setAlarmHostCode(deviceInfo.getDeviceCode());
+            subsystem.setDeleted(0);
+            subsystem.setEnable(systemDto.getEnable());
+            subsystem.setCreateTime(LocalDateTime.now());
+            subsystem.setUpdateTime(LocalDateTime.now());
+            subsystem.setCreateBy(sysUser.getName());
+            subsystem.setUpdateBy(sysUser.getName());
+            subsystem.setIotToken(req.getIotCode());
+            subsystemMapper.insert(subsystem);
+            //传感器
+            final List<EditAlarmHostDeviceDto.InputSensorDto> sensorList = req.getInputSensorList();
+            final List<EditAlarmHostDeviceDto.InputSensorDto> sensorDtoList = sensorList
+                    .stream()
+                    .filter(r -> ObjectUtil.equal(r.getSubSystemIndex(), systemDto.getSubSystemIndex()))
+                    .collect(Collectors.toList());
+            if (CollUtil.isEmpty(sensorDtoList)) {
+                continue;
+            }
+            for (EditAlarmHostDeviceDto.InputSensorDto sensorDto : sensorDtoList) {
+                final IotAlarmDefenceArea defenceArea = new IotAlarmDefenceArea();
+                defenceArea.setId(IdWorker.getId());
+                defenceArea.setOrgId(sysOrg.getId());
+                defenceArea.setOrgName(sysOrg.getName());
+                defenceArea.setOrgPath(sysOrg.getPath());
+                defenceArea.setOrganizationGuid(sysOrg.getCode());
+                defenceArea.setAlarmHostCode(deviceInfo.getDeviceCode());
+                defenceArea.setSubSystemCode(subsystem.getCode());
+                defenceArea.setDefenceAreaName(sensorDto.getInputSensorName());
+                defenceArea.setSensorType(sensorDto.getSensorType());
+                defenceArea.setDefenceAreaIndex(sensorDto.getInputSensorIndex());
+                defenceArea.setDeleted(0);
+                defenceArea.setEnable(sensorDto.getEnable());
+                defenceArea.setCreateTime(LocalDateTime.now());
+                defenceArea.setUpdateTime(LocalDateTime.now());
+                defenceArea.setCreateBy(sysUser.getName());
+                defenceArea.setUpdateBy(sysUser.getName());
+                defenceArea.setIotToken(req.getIotCode());
+                defenceArea.setModuleAddress(sensorDto.getModuleAddress());
+                defenceAreaMapper.insert(defenceArea);
 
+            }
+
+        }
     }
 }

+ 18 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmDefenceAreaMapper.xml

@@ -0,0 +1,18 @@
+<?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.iot.mapper.IotAlarmDefenceAreaMapper">
+
+    <update id="updateDeleted">
+        update iot_alarm_defence_area set deleted = 1 where alarm_host_code=#{alarmHostCode}
+        <if test="subSystemCode != null and subSystemCode != ''">
+            and sub_system_code = #{subSystemCode}
+        </if>
+    </update>
+
+    <update id="updateDeletedByIds">
+        update iot_alarm_defence_area set deleted = 1 where id in
+        <foreach collection="ids" item="id" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </update>
+</mapper>

+ 7 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotAlarmSubsystemMapper.xml

@@ -14,4 +14,11 @@
 	        AND s.alarm_host_code = #{deviceCode}
 	        AND s.iot_token = #{iotToken}
     </select>
+
+    <update id="updateDeletedByIds">
+        update iot_alarm_subsystem set deleted = 1 where id in
+            <foreach collection="ids" item="id" open="(" separator="," close=")">
+                #{id}
+            </foreach>
+    </update>
 </mapper>