Parcourir la source

平台设备维护:监控主机新增 代码提交

jingyuanchao il y a 11 mois
Parent
commit
d6390e144c

+ 93 - 81
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotDeviceInfoServiceImpl.java

@@ -217,103 +217,112 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
     public Integer editAlarmHostDevice(EditAlarmHostDeviceDto req) {
         Long deviceId = req.getId();
         SysOrg sysOrg = orgService.selectOrgById(req.getOrgId(), SecurityConstants.INNER);
+
         if (deviceId == null) {
             addAlarmHostDevice(req, sysOrg);
             return 1;
         }
-        updateAddAlarmHostDevice(req, sysOrg);
-
 
+        updateAddAlarmHostDevice(req, sysOrg);
         return 1;
     }
 
     private void updateAddAlarmHostDevice(EditAlarmHostDeviceDto req, SysOrg sysOrg) {
-        final SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
-        final IotDeviceInfo deviceInfo = getById(req.getId());
+        SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
+        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;
+
+        List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList = req.getSubSystemList();
+        if (CollUtil.isNotEmpty(subSystemList)) {
+            updateSubsystems(deviceInfo, subSystemList);
+            updateSensors(deviceInfo, req.getInputSensorList());
         }
-        //修改报警主机下子系统delete=1
-        final LambdaQueryWrapper<IotAlarmSubsystem> wrapper = new LambdaQueryWrapper<>();
+    }
+
+    private void updateSubsystems(IotDeviceInfo deviceInfo, List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList) {
+        LambdaQueryWrapper<IotAlarmSubsystem> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(IotAlarmSubsystem::getAlarmHostCode, deviceInfo.getDeviceCode());
-        final List<IotAlarmSubsystem> selectList = subsystemMapper.selectList(wrapper);
+
+        List<IotAlarmSubsystem> selectList = subsystemMapper.selectList(wrapper);
         if (CollUtil.isNotEmpty(selectList)) {
-            final List<Long> subSystemIds = selectList.stream().map(IotAlarmSubsystem::getId).collect(Collectors.toList());
+            List<Long> subSystemIds = selectList.stream().map(IotAlarmSubsystem::getId).collect(Collectors.toList());
             subsystemMapper.updateDeletedByIds(subSystemIds);
+
+            for (IotAlarmSubsystem subsystem : selectList) {
+                subSystemList.stream()
+                        .filter(item -> item.getSubSystemIndex().equals(subsystem.getCode()))
+                        .findFirst()
+                        .ifPresent(subSystemDto -> {
+                            updateSubsystem(subsystem, subSystemDto);
+                        });
+            }
         }
-        //修改子系统下传感器delete=1
-        final LambdaQueryWrapper<IotAlarmDefenceArea> sensorWrapper = new LambdaQueryWrapper<>();
+    }
+
+    private void updateSubsystem(IotAlarmSubsystem subsystem, EditAlarmHostDeviceDto.SubSystemDto subSystemDto) {
+        subsystem.setDeleted(0);
+        subsystem.setEnable(subSystemDto.getEnable());
+        subsystem.setCode(subSystemDto.getSubSystemIndex());
+        subsystem.setName(subSystemDto.getSubSystemName());
+        subsystem.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getName());
+        subsystem.setUpdateTime(LocalDateTime.now());
+        subsystemMapper.updateById(subsystem);
+    }
+
+    private void updateSensors(IotDeviceInfo deviceInfo, List<EditAlarmHostDeviceDto.InputSensorDto> sensorList) {
+        LambdaQueryWrapper<IotAlarmDefenceArea> sensorWrapper = new LambdaQueryWrapper<>();
         sensorWrapper.eq(IotAlarmDefenceArea::getAlarmHostCode, deviceInfo.getDeviceCode());
-        final List<IotAlarmDefenceArea> defenceAreaList = defenceAreaMapper.selectList(sensorWrapper);
+
+        List<IotAlarmDefenceArea> defenceAreaList = defenceAreaMapper.selectList(sensorWrapper);
         if (CollUtil.isNotEmpty(defenceAreaList)) {
-            final List<Long> defenceAreaIds = defenceAreaList.stream().map(IotAlarmDefenceArea::getId).collect(Collectors.toList());
+            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);
-                        }
-                    }
-                }
-            }
+            defenceAreaList.forEach(defenceArea -> {
+                sensorList.stream()
+                        .filter(sensorDto -> ObjectUtil.equal(sensorDto.getInputSensorIndex(), defenceArea.getDefenceAreaIndex()))
+                        .findFirst()
+                        .ifPresent(sensorDto -> {
+                            updateDefenceArea(defenceArea, sensorDto);
+                        });
+            });
         }
+    }
+
+    private void updateDefenceArea(IotAlarmDefenceArea defenceArea, EditAlarmHostDeviceDto.InputSensorDto sensorDto) {
+        defenceArea.setDefenceAreaName(sensorDto.getInputSensorName());
+        defenceArea.setSensorType(sensorDto.getSensorType());
+        defenceArea.setDefenceAreaIndex(sensorDto.getInputSensorIndex());
+        defenceArea.setEnable(sensorDto.getEnable());
+        defenceArea.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().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();
+        SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
+        IotDeviceInfo deviceInfo = new IotDeviceInfo();
+
         deviceInfo.setId(IdWorker.getId());
         deviceInfo.setDeviceName(req.getDeviceName());
         deviceInfo.setDeviceType(BaseDeviceTypeEnum.AlarmHost.getCode());
         deviceInfo.setDeviceProduct(req.getDeviceProduct());
+
         if (ObjectUtil.isEmpty(deviceInfo.getDeviceCode())) {
-            final JSONObject object = new JSONObject();
+            JSONObject object = new JSONObject();
             object.put("deviceProduct", req.getDeviceProduct());
             deviceInfo.setDeviceCode(generalDeviceCode(BaseDeviceTypeEnum.AlarmHost, object));
         }
+
         deviceInfo.setDeviceModel(req.getModels());
         deviceInfo.setIotToken(req.getIotCode());
         deviceInfo.setOrgId(req.getOrgId());
@@ -325,14 +334,20 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
         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;
+        List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList = req.getSubSystemList();
+
+        if (CollUtil.isNotEmpty(subSystemList)) {
+            createSubsystems(deviceInfo, subSystemList, req.getInputSensorList(),sysOrg);
         }
+    }
+
+    private void createSubsystems(IotDeviceInfo deviceInfo, List<EditAlarmHostDeviceDto.SubSystemDto> subSystemList, List<EditAlarmHostDeviceDto.InputSensorDto> sensorList,SysOrg sysOrg) {
+        SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
+
         for (EditAlarmHostDeviceDto.SubSystemDto systemDto : subSystemList) {
             IotAlarmSubsystem subsystem = new IotAlarmSubsystem();
             subsystem.setId(IdWorker.getId());
@@ -348,25 +363,23 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
             subsystem.setUpdateTime(LocalDateTime.now());
             subsystem.setCreateBy(sysUser.getName());
             subsystem.setUpdateBy(sysUser.getName());
-            subsystem.setIotToken(req.getIotCode());
+            subsystem.setIotToken(deviceInfo.getIotToken());
+
             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();
+            createDefenceAreas(sensorList, subsystem, deviceInfo.getDeviceCode(), sysOrg, sysUser);
+        }
+    }
+
+    private void createDefenceAreas(List<EditAlarmHostDeviceDto.InputSensorDto> sensorList, IotAlarmSubsystem subsystem, String deviceCode, SysOrg sysOrg, SysUser sysUser) {
+        for (EditAlarmHostDeviceDto.InputSensorDto sensorDto : sensorList) {
+            if (ObjectUtil.equal(sensorDto.getSubSystemIndex(), subsystem.getCode())) {
+                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.setAlarmHostCode(deviceCode);
                 defenceArea.setSubSystemCode(subsystem.getCode());
                 defenceArea.setDefenceAreaName(sensorDto.getInputSensorName());
                 defenceArea.setSensorType(sensorDto.getSensorType());
@@ -377,12 +390,11 @@ public class IotDeviceInfoServiceImpl extends ServiceImpl<IotDeviceInfoMapper, I
                 defenceArea.setUpdateTime(LocalDateTime.now());
                 defenceArea.setCreateBy(sysUser.getName());
                 defenceArea.setUpdateBy(sysUser.getName());
-                defenceArea.setIotToken(req.getIotCode());
+                defenceArea.setIotToken(subsystem.getIotToken());
                 defenceArea.setModuleAddress(sensorDto.getModuleAddress());
-                defenceAreaMapper.insert(defenceArea);
 
+                defenceAreaMapper.insert(defenceArea);
             }
-
         }
     }
 }