From 771623fe17658cc988445a031df6ed3e6edb76bc Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Tue, 22 Jun 2021 10:43:50 +0800
Subject: [PATCH] screen-manage                修复因子删除bug

---
 screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java |   85 +++++++++++++++++++++++++++++++++++-------
 1 files changed, 71 insertions(+), 14 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index 6a972f9..9e06f36 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -4,19 +4,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.moral.api.entity.Device;
-import com.moral.api.entity.ManageAccount;
-import com.moral.api.entity.MonitorPoint;
-import com.moral.api.entity.Organization;
-import com.moral.api.entity.SysDictData;
-import com.moral.api.entity.SysDictType;
-import com.moral.api.entity.Version;
-import com.moral.api.mapper.DeviceMapper;
-import com.moral.api.mapper.ManageAccountMapper;
-import com.moral.api.mapper.MonitorPointMapper;
-import com.moral.api.mapper.OrganizationMapper;
-import com.moral.api.mapper.SysDictDataMapper;
-import com.moral.api.mapper.SysDictTypeMapper;
+import com.moral.api.entity.*;
+import com.moral.api.mapper.*;
 import com.moral.api.pojo.vo.device.DeviceVO;
 import com.moral.api.service.DeviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -31,6 +20,7 @@
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 
@@ -80,6 +70,13 @@
     @Autowired
     private RedisTemplate redisTemplate;
 
+    @Autowired
+    private OrganizationUnitAlarmMapper organizationUnitAlarmMapper;
+
+    @Autowired
+    private VersionSensorUnitMapper versionSensorUnitMapper;
+
+
 
     /*
      * ���redis������������������
@@ -127,6 +124,8 @@
         device.setOrganizationId(orgId);
         deviceMapper.insert(device);
         Map<String, Object> deviceInfo = selectDeviceInfoById(device.getId());
+        //���������������������������
+        insertOrganizationUnitAlarm(orgId,device.getDeviceVersionId());
         //������������������������redis
         String mac = device.getMac();
         //���redis���������������������
@@ -150,6 +149,10 @@
         String mac = device.getMac();
         //���redis���������������������
         delDeviceInfoFromRedis(mac);
+        //���������������������������
+        Integer versionId = device.getDeviceVersionId();
+        Integer orgId = device.getOrganizationId();
+        deleteOrganizationUnitAlarm(orgId,versionId);
         //������������������
         HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
         StringBuilder content = new StringBuilder();
@@ -162,8 +165,23 @@
     public void update(Device device) {
         Integer deviceId = device.getId();
         Device oldDevice = deviceMapper.selectById(deviceId);
+        //���������������������������������������������������������������������������������id������������
+        if(!ObjectUtils.isEmpty(device.getMonitorPointId())){
+            MonitorPoint monitorPoint = monitorPointMapper.selectById(device.getMonitorPointId());
+            device.setOrganizationId(monitorPoint.getOrganizationId());
+        }
         deviceMapper.updateById(device);
-        String mac = deviceMapper.selectById(deviceId).getMac();
+        Device updateDevice = deviceMapper.selectById(deviceId);
+        String mac = updateDevice.getMac();
+        //���������������������������
+       Integer oldOrgId = oldDevice.getOrganizationId();
+       Integer newOrgId = updateDevice.getOrganizationId();
+       Integer oldVersionId = oldDevice.getDeviceVersionId();
+       Integer newVersionId = updateDevice.getDeviceVersionId();
+       if(!oldOrgId.equals(newOrgId)||!oldVersionId.equals(newVersionId)){
+           deleteOrganizationUnitAlarm(oldOrgId,oldVersionId);
+           insertOrganizationUnitAlarm(newOrgId,newVersionId);
+       }
         //���redis���������������������
         delDeviceInfoFromRedis(mac);
         Map<String, Object> deviceInfo = selectDeviceInfoById(deviceId);
@@ -409,5 +427,44 @@
         return null;
     }
 
+    private void insertOrganizationUnitAlarm(Integer orgId,Integer versionId){
+        QueryWrapper<OrganizationUnitAlarm> queryOrganizationVersionWrapper = new QueryWrapper<>();
+        queryOrganizationVersionWrapper.eq("organization_id",orgId);
+        queryOrganizationVersionWrapper.eq("version_id",versionId);
+        queryOrganizationVersionWrapper.eq("is_delete",Constants.NOT_DELETE);
+        List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryOrganizationVersionWrapper);
+        if(ObjectUtils.isEmpty(organizationUnitAlarms)){
+            QueryWrapper<VersionSensorUnit> queryVersionSensorUnitWrapper =new QueryWrapper<>();
+            queryVersionSensorUnitWrapper.eq("version_id",versionId);
+            queryVersionSensorUnitWrapper.eq("is_delete",Constants.NOT_DELETE);
+            List<VersionSensorUnit> versionSensorUnits = versionSensorUnitMapper.selectList(queryVersionSensorUnitWrapper);
+            if(!ObjectUtils.isEmpty(versionSensorUnits)){
+                for (VersionSensorUnit versionSensorUnit : versionSensorUnits) {
+                    OrganizationUnitAlarm organizationUnitAlarm = new OrganizationUnitAlarm();
+                    organizationUnitAlarm.setOrganizationId(orgId);
+                    organizationUnitAlarm.setVersionId(versionId);
+                    organizationUnitAlarm.setSensorCode(versionSensorUnit.getSensorCode());
+                    organizationUnitAlarm.setUnitKey(versionSensorUnit.getUnitKey());
+                    organizationUnitAlarm.setShowUnitKey(versionSensorUnit.getUnitKey());
+                    organizationUnitAlarmMapper.insert(organizationUnitAlarm);
+                }
+            }
+        }
+    }
 
+    private void deleteOrganizationUnitAlarm(Integer orgId,Integer versionId){
+        QueryWrapper<Device> queryOrganizationVersionWrapper = new QueryWrapper<>();
+        queryOrganizationVersionWrapper.eq("organization_id",orgId);
+        queryOrganizationVersionWrapper.eq("device_version_id",versionId);
+        queryOrganizationVersionWrapper.eq("is_delete",Constants.NOT_DELETE);
+        List<Device> devices = deviceMapper.selectList(queryOrganizationVersionWrapper);
+        if(ObjectUtils.isEmpty(devices)){//������������������������������������������������������
+            UpdateWrapper deleteWrapper = new UpdateWrapper();
+            deleteWrapper.eq("organization_id",orgId);
+            deleteWrapper.eq("version_id",versionId);
+            deleteWrapper.eq("is_delete",Constants.NOT_DELETE);
+            deleteWrapper.set("is_delete",Constants.DELETE);
+            organizationUnitAlarmMapper.update(null,deleteWrapper);
+        }
+    }
 }

--
Gitblit v1.8.0