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/SpecialDeviceService.java | 3
screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml | 47 +++++++++
screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java | 5 +
screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java | 7 +
screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java | 128 ++++++++++++++++++++++++-
screen-manage/src/main/java/com/moral/api/util/CacheUtils.java | 57 +++++++++++
screen-manage/src/main/java/com/moral/api/controller/SpecialDeviceController.java | 9 +
7 files changed, 249 insertions(+), 7 deletions(-)
diff --git a/screen-manage/src/main/java/com/moral/api/controller/SpecialDeviceController.java b/screen-manage/src/main/java/com/moral/api/controller/SpecialDeviceController.java
index c1e2361..b796646 100644
--- a/screen-manage/src/main/java/com/moral/api/controller/SpecialDeviceController.java
+++ b/screen-manage/src/main/java/com/moral/api/controller/SpecialDeviceController.java
@@ -36,7 +36,12 @@
@ResponseBody
public ResultMessage insert(@RequestBody SpecialDevice specialDevice){
System.out.println(specialDevice);
- specialDeviceService.insert(specialDevice);
- return null;
+ Map<String,Object> resultMap = specialDeviceService.insert(specialDevice);
+ String msg = resultMap.get("msg").toString();
+ int code = Integer.parseInt(resultMap.get("code").toString());
+ if (code == 0){
+ return ResultMessage.ok(msg);
+ }
+ return ResultMessage.fail(Integer.parseInt(resultMap.get("code").toString()),resultMap.get("msg").toString());
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java b/screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java
index ef614d2..b5a7266 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/SpecialDevice.java
@@ -1,6 +1,7 @@
package com.moral.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
@@ -75,6 +76,12 @@
*/
private String isDelete;
+ /*
+ * ������������
+ * */
+ @TableField(exist = false)
+ private Version version;
+
@Override
protected Serializable pkVal() {
diff --git a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
index c5c44bb..82bc9e6 100644
--- a/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
+++ b/screen-manage/src/main/java/com/moral/api/mapper/SpecialDeviceMapper.java
@@ -3,6 +3,9 @@
import com.moral.api.entity.SpecialDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import java.util.List;
+import java.util.Map;
+
/**
* <p>
* Mapper ������
@@ -13,4 +16,6 @@
*/
public interface SpecialDeviceMapper extends BaseMapper<SpecialDevice> {
+ List<SpecialDevice> querySpecialDeviceUnitAlarmInfo();
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/SpecialDeviceService.java b/screen-manage/src/main/java/com/moral/api/service/SpecialDeviceService.java
index 43a6968..688478c 100644
--- a/screen-manage/src/main/java/com/moral/api/service/SpecialDeviceService.java
+++ b/screen-manage/src/main/java/com/moral/api/service/SpecialDeviceService.java
@@ -21,4 +21,7 @@
@Transactional
Map<String,Object> insert(SpecialDevice specialDevice);
+
+ //������������id���������������������������������������
+ Map<String, Object> selectDeviceInfoById(Integer deviceId);
}
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);
+ }
+ }
+ }
}
}
diff --git a/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java b/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
index f8e27ee..5f292cf 100644
--- a/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/CacheUtils.java
@@ -4,6 +4,7 @@
import com.moral.api.entity.*;
import com.moral.api.mapper.DeviceMapper;
import com.moral.api.mapper.SensorMapper;
+import com.moral.api.mapper.SpecialDeviceMapper;
import com.moral.api.mapper.UnitConversionMapper;
import com.moral.api.service.SensorService;
import com.moral.api.service.SysDictDataService;
@@ -35,6 +36,8 @@
private static RedisTemplate redisTemplate;
private static DeviceMapper deviceMapper;
+
+ private static SpecialDeviceMapper specialDeviceMapper;
private static SysDictDataService sysDictDataService;
@@ -70,6 +73,11 @@
@Autowired
public void setUnitConversionMapper(UnitConversionMapper unitConversionMapper) {
CacheUtils.unitConversionMapper = unitConversionMapper;
+ }
+
+ @Autowired
+ public void setSpecialDeviceMapper(SpecialDeviceMapper specialDeviceMapper) {
+ CacheUtils.specialDeviceMapper = specialDeviceMapper;
}
@@ -122,6 +130,55 @@
redisTemplate.opsForHash().putAll(RedisConstants.DEVICE_INFO,result);
}
+ public static void refreshSpecialDeviceAlarmInfo() {
+ //������������
+ redisTemplate.delete(RedisConstants.SPECIAL_DEVICE_INFO);
+ //������������������
+ List<SpecialDevice> specialDevices = specialDeviceMapper.querySpecialDeviceUnitAlarmInfo();
+ Map<String, SysDictData> unitMap = sysDictDataService.getDictDatasByType("unit");
+ //���������������������������������������������
+ Map<String,SpecialDevice> result = new HashMap<>();
+ for (SpecialDevice specialDevice : specialDevices) {
+ Version version = specialDevice.getVersion();
+ List<Sensor> sensors = version.getSensors();
+ for (Sensor sensor : sensors) {
+ //������������������
+ String unitKey = sensor.getUnitKey();
+ String showUnitKey = sensor.getShowUnitKey();
+ SysDictData unitData = unitMap.get(unitKey);
+ SysDictData showUnitData = unitMap.get(showUnitKey);
+ sensor.setUnit(unitData.getDataValue());
+ sensor.setShowUnit(showUnitData.getDataValue());
+ //������������������
+ Map<String, Sensor> allSensors = sensorService.getAllSensorFromCache();
+ String sensorName = allSensors.get(sensor.getCode()).getName();
+ sensor.setName(sensorName);
+ //������������������
+ if (!unitKey.equals(showUnitKey)) {
+ QueryWrapper<UnitConversion> queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("is_delete", Constants.NOT_DELETE);
+ queryWrapper.eq("original_unit_key", unitKey);
+ queryWrapper.eq("target_unit_key", showUnitKey);
+ List<UnitConversion> unitConversions = unitConversionMapper.selectList(queryWrapper);
+ if (unitConversions.size() == 1) {
+ UnitConversion unitConversion = unitConversions.get(0);
+ if (ObjectUtils.isEmpty(unitConversion.getSensorCode()))
+ sensor.setFormula(unitConversion.getFormula());
+
+ } else {
+ for (UnitConversion unitConversion : unitConversions) {
+ if (sensor.getCode().equals(unitConversion.getSensorCode()))
+ sensor.setFormula(unitConversion.getFormula());
+ }
+ }
+ }
+ }
+ result.put(specialDevice.getMac(),specialDevice);
+ }
+ //������redis
+ redisTemplate.opsForHash().putAll(RedisConstants.SPECIAL_DEVICE_INFO,result);
+ }
+
public static void refreshSensor(){
sensorService.refreshCache();
}
diff --git a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
index db8b4e6..82d3e45 100644
--- a/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
+++ b/screen-manage/src/main/resources/mapper/SpecialDeviceMapper.xml
@@ -16,4 +16,51 @@
<result column="is_delete" property="isDelete" />
</resultMap>
+ <resultMap id="querySpecialDeviceUnitAlarmInfoMap" type="com.moral.api.entity.SpecialDevice">
+ <id column="d.id" property="id"/>
+ <result column="d.name" property="name"/>
+ <result column="d.mac" property="mac"/>
+ <result column="d.operate_ids" property="operateIds"/>
+ <result column="d.monitor_point_id" property="monitorPointId"/>
+ <result column="d.organization_id" property="organizationId"/>
+ <result column="oua.version_id" property="deviceVersionId"/>
+ <association property="version" column="d.device_version_id" javaType="com.moral.api.entity.Version">
+ <id column="v.id" property="id"></id>
+ <result column="v.name" property="name"></result>
+ <collection column="d.device_version_id" property="sensors" ofType="com.moral.api.entity.Sensor">
+ <result column="oua.sensor_code" property="code" ></result>
+ <result column="oua.unit_key" property="unitKey"></result>
+ <result column="oua.show_unit_key" property="showUnitKey"></result>
+ <result column="oua.alarm_level" property="alarmLevel" javaType="String" ></result>
+ </collection>
+ </association>
+ </resultMap>
+
+ <select id="querySpecialDeviceUnitAlarmInfo" resultMap="querySpecialDeviceUnitAlarmInfoMap">
+ select
+ d.id as `d.id`,
+ d.mac as `d.mac`,
+ d.name as `d.name`,
+ d.operate_ids as `d.operate_ids`,
+ d.organization_id as `d.organization_id`,
+ oua.version_id as `oua.version_id`,
+ oua.sensor_code as `oua.sensor_code`,
+ oua.unit_key as `oua.unit_key`,
+ oua.show_unit_key as `oua.show_unit_key`,
+ oua.alarm_level as `oua.alarm_level`,
+ v.id as `v.id`,
+ v.name as `v.name`
+ from
+ special_device d
+ join
+ version v
+ on
+ v.`id` = d.`device_version_id` and v.`is_delete` = 0
+ join
+ organization_unit_alarm oua
+ on
+ d.`device_version_id` = oua.`version_id` and d.`organization_id` = oua.`organization_id` and oua.`is_delete` = 0
+ where
+ d.`is_delete` = 0;
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.8.0