|
|
@@ -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);
|
|
|
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|