From d92f097bf2ad1cbab44f620831e10b2dbe8324b3 Mon Sep 17 00:00:00 2001
From: lizijie <lzjiiie@163.com>
Date: Tue, 17 Aug 2021 08:50:27 +0800
Subject: [PATCH] 特殊设备更新接口

---
 screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java |  128 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 123 insertions(+), 5 deletions(-)

diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
index d08d880..2a00d2a 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java
@@ -6,22 +6,26 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.moral.api.entity.*;
 import com.moral.api.mapper.*;
+import com.moral.api.pojo.vo.device.DeviceVO;
 import com.moral.api.service.SpecialDeviceService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.util.CacheUtils;
+import com.moral.api.util.LogUtils;
 import com.moral.constant.Constants;
 import com.moral.constant.RedisConstants;
 import com.moral.constant.ResponseCodeEnum;
+import com.moral.util.DateUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
+import javax.servlet.http.HttpServletRequest;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -54,6 +58,15 @@
 
     @Autowired(required = false)
     private RedisTemplate redisTemplate;
+
+    @Autowired(required = false)
+    private OrganizationUnitAlarmMapper organizationUnitAlarmMapper;
+
+    @Autowired(required = false)
+    private VersionSensorUnitMapper versionSensorUnitMapper;
+
+    @Autowired
+    private LogUtils logUtils;
 
     /*
      * ���redis������������������
@@ -252,6 +265,111 @@
             wrapper_specialDeviceHistory.eq("organization_id",organizationId);*/
             specialDeviceHistoryMapper.update(insertSpecialDeviceHistory,wrapper_specialDeviceHistory);
         }
-        return null;
+        Map<String, Object> deviceInfo = selectDeviceInfoById(specialDevice.getId());
+        //���������������������������
+        insertOrganizationUnitAlarm(specialDevice.getOrganizationId(), specialDevice.getDeviceVersionId());
+        //������������������������redis
+        String mac1 = specialDevice.getMac();
+        //���redis���������������������
+        delDeviceInfoFromRedis(mac1);
+        //������������������redis
+        setDeviceInfoToRedis(mac1, deviceInfo);
+        //������deviceInfo������
+        CacheUtils.refreshSpecialDeviceAlarmInfo();
+        //������������������
+        HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
+        StringBuilder content = new StringBuilder();
+        content.append("������������������������").append(specialDevice.getName()).append(":").append("mac���").append(mac);
+        logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE);
+        resultMap.put("code", ResponseCodeEnum.SUCCESS.getCode());
+        resultMap.put("msg", ResponseCodeEnum.SUCCESS.getMsg());
+        return resultMap;
+    }
+
+    @Override
+    public Map<String, Object> selectDeviceInfoById(Integer deviceId) {
+        String mac = specialDeviceMapper.selectById(deviceId).getMac();
+        Map<String, Object> specialDeviceInfo = getDeviceInfoFromRedis(mac);
+        //������redis������
+        if (specialDeviceInfo != null) {
+            return specialDeviceInfo;
+        }
+        specialDeviceInfo = new LinkedHashMap<>();
+        //DeviceVO device = deviceMapper.selectDeviceInfoById(deviceId);
+        SpecialDevice specialDevice = specialDeviceMapper.selectById(deviceId);
+        //������
+        specialDeviceInfo.put("id", specialDevice.getId());
+        specialDeviceInfo.put("name", specialDevice.getName());
+        specialDeviceInfo.put("mac", specialDevice.getMac());
+        specialDeviceInfo.put("createTime", DateUtils.dateToDateString(specialDevice.getCreateTime()));
+
+        //������������
+        //specialDeviceInfo.put("extend", device.getExtend());
+
+        //������
+        Map<String, Object> versionInfo = new LinkedHashMap<>();
+        Version version = versionMapper.selectById(specialDevice.getDeviceVersionId());
+        versionInfo.put("id", version.getId());
+        versionInfo.put("name", version.getName());
+        specialDeviceInfo.put("version", versionInfo);
+
+        //���������
+        List<Map<String, Object>> operatorsInfo = new ArrayList<>();
+        String operateIds = specialDevice.getOperateIds();
+        if (!ObjectUtils.isEmpty(operateIds)){
+            String[] operateIdArr = operateIds.split(",");
+            if (operateIdArr.length>0){
+                List<Integer> operateIdList = new ArrayList<>();
+                for (int i = 0; i < operateIdArr.length; i++){
+                    operateIdList.add(Integer.parseInt(operateIdArr[i]));
+                }
+                QueryWrapper<ManageAccount> wapper_manageAccount = new QueryWrapper<>();
+                wapper_manageAccount.eq("is_delete",Constants.NOT_DELETE);
+                wapper_manageAccount.in("id",operateIdList);
+                List<ManageAccount> manageAccounts = manageAccountMapper.selectList(wapper_manageAccount);
+                for (ManageAccount manageAccount:manageAccounts) {
+                    Map<String,Object> operateMap = new HashMap<>();
+                    operateMap.put("id",manageAccount.getId());
+                    operateMap.put("name",manageAccount.getUserName());
+                    operatorsInfo.add(operateMap);
+                }
+            }
+        }
+        specialDeviceInfo.put("operators", operatorsInfo);
+
+        //������
+        Map<String, Object> orgInfo = new LinkedHashMap<>();
+        Organization organization = organizationMapper.selectById(specialDevice.getOrganizationId());
+        orgInfo.put("id", organization.getId());
+        orgInfo.put("name", organization.getName());
+        specialDeviceInfo.put("organization", orgInfo);
+
+        setDeviceInfoToRedis(mac, specialDeviceInfo);
+        return specialDeviceInfo;
+    }
+
+    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 (org.springframework.util.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 (!org.springframework.util.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);
+                }
+            }
+        }
     }
 }

--
Gitblit v1.8.0