From 41622b7aa1d948040b0f8ea024aece42d5a518a2 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Wed, 25 Aug 2021 09:29:05 +0800
Subject: [PATCH] screen-api SQL优化 screen-manage 日志模块更新,SQL优化
---
screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java | 23 +
screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java | 6
screen-api/src/main/java/com/moral/api/entity/DeviceAdjustValue.java | 74 ++++++
screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceServiceImpl.java | 1
screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java | 72 ++++-
screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 2
screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 27 ++
screen-common/src/main/java/com/moral/pojo/CompareFieldResult.java | 33 ++
screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java | 3
screen-api/src/main/java/com/moral/api/service/MonitorPointService.java | 2
screen-api/src/main/java/com/moral/api/service/DeviceService.java | 3
screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java | 60 +++++
screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 2
screen-manage/src/main/resources/mapper/ManageMenuMapper.xml | 4
screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java | 82 ++++++
screen-common/src/main/java/com/moral/anno/FieldName.java | 16 +
screen-manage/src/main/java/com/moral/api/entity/ManageAccount.java | 5
screen-api/src/main/java/com/moral/api/controller/TestController.java | 15 +
screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java | 49 ++++
screen-manage/src/main/java/com/moral/api/util/CompareFieldUtils.java | 98 ++++++++
screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java | 6
screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java | 84 +++++++
screen-manage/src/main/java/com/moral/api/entity/User.java | 5
screen-manage/src/main/java/com/moral/api/entity/Menu.java | 9
screen-manage/src/main/java/com/moral/api/util/LogUtils.java | 4
screen-manage/src/main/resources/mapper/ManageRoleMapper.xml | 12
screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java | 1
screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java | 2
screen-api/src/main/java/com/moral/api/controller/DeviceController.java | 9
screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java | 5
30 files changed, 670 insertions(+), 44 deletions(-)
diff --git a/screen-api/src/main/java/com/moral/api/controller/DeviceController.java b/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
index 1c32fd9..3262a32 100644
--- a/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/DeviceController.java
@@ -54,8 +54,17 @@
@Autowired
private DeviceService deviceService;
+ /**
+ * @Description: ������mac������������������
+ * @Param: [mac]
+ * @return: com.moral.constant.ResultMessage
+ * @Author: ���������
+ * @Date: 2021/8/23
+ */
@GetMapping("queryAlarmByMac")
public ResultMessage queryAlarmByMac(String mac) {
+ if(mac==null)
+ return new ResultMessage(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg(),null);
List<Sensor> sensors = organizationUnitAlarmService.queryAlarmLevel(mac);
AlarmLevelVO vo = AlarmLevelVO.convert(sensors);
return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo);
diff --git a/screen-api/src/main/java/com/moral/api/controller/TestController.java b/screen-api/src/main/java/com/moral/api/controller/TestController.java
index 47dfffb..1981134 100644
--- a/screen-api/src/main/java/com/moral/api/controller/TestController.java
+++ b/screen-api/src/main/java/com/moral/api/controller/TestController.java
@@ -1,10 +1,13 @@
package com.moral.api.controller;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.moral.api.entity.HistoryFiveMinutely;
+import com.moral.api.entity.Sensor;
import com.moral.api.entity.Test;
import com.moral.api.mapper.HistoryFiveMinutelyMapper;
+import com.moral.api.mapper.SensorMapper;
import com.moral.api.service.TestService;
import com.moral.constant.Constants;
import com.moral.constant.ResultMessage;
@@ -15,8 +18,11 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.handler.WebRequestHandlerInterceptorAdapter;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
@Slf4j
@@ -30,6 +36,9 @@
@Autowired
private TestService testService;
+
+ @Autowired
+ private SensorMapper sensorMapper;
@Autowired
private HistoryFiveMinutelyMapper historyFiveMinutelyMapper;
@@ -107,8 +116,8 @@
@GetMapping("test")
public void test(){
- QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>();
- List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyMapper.selectList(queryWrapper);
- System.out.println(1111);
+
}
+
+
}
diff --git a/screen-api/src/main/java/com/moral/api/entity/DeviceAdjustValue.java b/screen-api/src/main/java/com/moral/api/entity/DeviceAdjustValue.java
new file mode 100644
index 0000000..4c471d4
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/entity/DeviceAdjustValue.java
@@ -0,0 +1,74 @@
+package com.moral.api.entity;
+
+import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.sql.Time;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author moral
+ * @since 2021-06-07
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DeviceAdjustValue extends Model<DeviceAdjustValue> {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * ������
+ */
+ private Integer id;
+
+ /**
+ * ������id
+ */
+ private String mac;
+
+ /**
+ * ������������
+ */
+ @DateTimeFormat(pattern = "HH:mm:ss")
+ @JsonFormat(pattern = "HH:mm:ss",timezone = "GMT+8")
+ private Time startTime;
+
+ /**
+ * ������������
+ */
+ private Time endTime;
+
+ /**
+ * ���������
+ */
+ private String sensorCode;
+
+ /**
+ * ������
+ */
+ private String value;
+
+ /**
+ * ������������
+ */
+ private Date createTime;
+
+ /**
+ * ������������
+ */
+ private Date updateTime;
+
+ /**
+ * ������������
+ */
+ private String isDelete;
+
+
+}
diff --git a/screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java b/screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java
index 42794b5..b5056fd 100644
--- a/screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java
+++ b/screen-api/src/main/java/com/moral/api/entity/OrganizationUnitAlarm.java
@@ -5,6 +5,8 @@
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
+import java.util.Date;
+
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -61,12 +63,12 @@
/**
* ������������
*/
- private LocalDateTime createTime;
+ private Date createTime;
/**
* ������������
*/
- private LocalDateTime updateTime;
+ private Date updateTime;
/**
* ������������
diff --git a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
index c573c6a..aa5bcc7 100644
--- a/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
+++ b/screen-api/src/main/java/com/moral/api/kafka/consumer/SecondDataConsumer.java
@@ -37,7 +37,7 @@
public void listen(ConsumerRecord<String, String> record, Consumer consumer) throws Exception {
String messageStr = record.value();
Map<String, Object> message = (Map<String, Object>) JSON.parse(messageStr);
- long serverStartTime = System.currentTimeMillis();
+ //long serverStartTime = System.currentTimeMillis();
CopyOnWriteArraySet<SingleDeviceServer> sockets = SingleDeviceServer.sockets;
for (SingleDeviceServer socket : sockets) {
//���������������������������socket
@@ -46,8 +46,7 @@
if (!mac.equalsIgnoreCase(messageMac))
continue;
//������������������
- Map<String, Device> devicesInfo = socket.getDevicesInfo();
- Device device = devicesInfo.get(mac);
+ Device device = socket.getDeviceAlarmInfo();
//������������������������
Map<String, Object> resultMessgae = new HashMap<>();
//������������
diff --git a/screen-api/src/main/java/com/moral/api/service/DeviceService.java b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
index 0e18dd2..662d3c4 100644
--- a/screen-api/src/main/java/com/moral/api/service/DeviceService.java
+++ b/screen-api/src/main/java/com/moral/api/service/DeviceService.java
@@ -25,4 +25,7 @@
//���������������������������������
List<Map<String, Object>> getTrendChartData(Map<String,Object> params);
+ //������mac������������������
+ Device getDeviceByMac(String mac);
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
index dd7cc79..9195454 100644
--- a/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
+++ b/screen-api/src/main/java/com/moral/api/service/MonitorPointService.java
@@ -17,7 +17,7 @@
public interface MonitorPointService extends IService<MonitorPoint> {
/**
- * @Description: ������������id���������������������������������
+ * @Description: ������������id������������(���������������)���������������������
* @Param: [form]
* @return: java.util.List<com.moral.api.entity.MonitorPoint>
* @Author: ���������
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
index 23efdd1..98bffb3 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java
@@ -1,5 +1,6 @@
package com.moral.api.service.impl;
+import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.Device;
import com.moral.api.entity.Sensor;
@@ -13,6 +14,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
@@ -142,5 +144,30 @@
return result;
}
+ @Override
+ public Device getDeviceByMac(String mac) {
+ Map<String,Object> deviceMap = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE,mac);
+ Device device = JSON.parseObject(JSON.toJSONString(deviceMap), Device.class);
+ //���map������organizationId���monitorPointId������versionId
+ Map<String,Object> organizationMap = (Map<String,Object>)deviceMap.get("organization");
+ Map<String,Object> monitorPointMap = (Map<String,Object>)deviceMap.get("monitorPoint");
+ Map<String,Object> versionMap = (Map<String,Object>)deviceMap.get("version");
+ device.setDeviceVersionId((Integer) versionMap.get("id"));
+ device.setOrganizationId((Integer) organizationMap.get("id"));
+ device.setMonitorPointId((Integer) monitorPointMap.get("id"));
+ //������������������������������������
+ if(ObjectUtils.isEmpty(device)){
+ return getDeviceByMacFromDB(mac);
+ }
+ return device;
+ }
+
+ private Device getDeviceByMacFromDB(String mac){
+ QueryWrapper<Device> wrapper = new QueryWrapper<>();
+ wrapper.eq("mac",mac);
+ wrapper.eq("is_delete",Constants.NOT_DELETE);
+ return deviceMapper.selectOne(wrapper);
+ }
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
index b64554c..59a1139 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java
@@ -35,7 +35,7 @@
public Map<String, Object> getHourlyAqiByMac(String mac) {
QueryWrapper<HistoryHourly> queryWrapper = new QueryWrapper<>();
String time = DateUtils.dateToDateString(new Date(), DateUtils.yyyy_MM_dd_HH_EN) + ":00:00";
- queryWrapper.eq("mac", mac).eq("time", time);
+ queryWrapper.eq("time", time).eq("mac", mac);
//������������������
HistoryHourly historyHourly = historyHourlyMapper.selectOne(queryWrapper);
Map<String, Object> result = new HashMap<>();
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
index 0837c4a..8de6dc0 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java
@@ -16,6 +16,10 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -58,6 +62,7 @@
QueryWrapper<MonitorPoint> queryMonitorPointsWrapper = new QueryWrapper<>();
//������region������������������������������������������������������������������������������
+ //������region���������������������������������������������������������
if (region != null){
queryMonitorPointsWrapper.eq(region, regionCode);
}
@@ -83,6 +88,7 @@
queryWrapper.eq(RegionCodeUtils.regionCodeConvertToName(regionCode), regionCode);
return monitorPointMapper.selectList(queryWrapper);
}
+
}
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
index db78fac..ce1ee37 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationServiceImpl.java
@@ -37,6 +37,7 @@
@Override
public Organization getStateControlStation() {
QueryWrapper<Organization> wrapper = new QueryWrapper<>();
+ wrapper.select("id");
wrapper.eq("name","���������");
wrapper.eq("is_delete",Constants.NOT_DELETE);
Organization organization = organizationMapper.selectOne(wrapper);
@@ -52,6 +53,7 @@
*/
private void recursionQueryChildren(Integer parentId, List<Organization> children) {
QueryWrapper<Organization> queryWrapper = new QueryWrapper();
+ queryWrapper.select("id");
queryWrapper.eq("is_delete", Constants.NOT_DELETE);
queryWrapper.eq("parent_id", parentId);
List<Organization> organizations = organizationMapper.selectList(queryWrapper);
diff --git a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
index 761a62b..a8ad783 100644
--- a/screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
+++ b/screen-api/src/main/java/com/moral/api/service/impl/OrganizationUnitAlarmServiceImpl.java
@@ -1,17 +1,23 @@
package com.moral.api.service.impl;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.moral.api.entity.Device;
import com.moral.api.entity.OrganizationUnitAlarm;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.Version;
import com.moral.api.mapper.OrganizationUnitAlarmMapper;
+import com.moral.api.service.DeviceService;
import com.moral.api.service.OrganizationUnitAlarmService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.constant.Constants;
import com.moral.constant.RedisConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
+import org.springframework.util.ObjectUtils;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -28,12 +34,55 @@
@Autowired
RedisTemplate redisTemplate;
+ @Autowired
+ DeviceService deviceService;
+ @Autowired
+ OrganizationUnitAlarmMapper organizationUnitAlarmMapper;
+ /**
+ * @Description: ���������������������������������
+ * @Param: [mac]
+ * @return: java.util.List<com.moral.api.entity.Sensor>
+ * @Author: ���������
+ * @Date: 2021/8/23
+ */
@Override
public List<Sensor> queryAlarmLevel(String mac) {
Device device = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, mac);
Version version = device.getVersion();
List<Sensor> sensors = version.getSensors();
+ //������������������������������������������������
+ if (ObjectUtils.isEmpty(sensors)) {
+ sensors = queryAlarmLevelFromDb(mac);
+ }
+ return sensors;
+ }
+
+
+ /**
+ * @Description: ������������������������������������
+ * @Param: [mac]
+ * @return: java.util.List<com.moral.api.entity.Sensor>
+ * @Author: ���������
+ * @Date: 2021/8/23
+ */
+ private List<Sensor> queryAlarmLevelFromDb(String mac) {
+ Device device = deviceService.getDeviceByMac(mac);
+ Integer organizationId = device.getOrganizationId();
+ Integer deviceVersionId = device.getDeviceVersionId();
+ QueryWrapper<OrganizationUnitAlarm> wrapper = new QueryWrapper<>();
+ wrapper.eq("organization_id", organizationId);
+ wrapper.eq("version_id", deviceVersionId);
+ wrapper.eq("is_delete", Constants.NOT_DELETE);
+ List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(wrapper);
+ List<Sensor> sensors = new ArrayList<>();
+ //���������sensorcode���alarmlevel������
+ for (OrganizationUnitAlarm organizationUnitAlarm : organizationUnitAlarms) {
+ Sensor sensor = new Sensor();
+ sensor.setCode(organizationUnitAlarm.getSensorCode());
+ sensor.setAlarmLevel(organizationUnitAlarm.getAlarmLevel());
+ sensors.add(sensor);
+ }
return sensors;
}
}
diff --git a/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java b/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java
new file mode 100644
index 0000000..324795d
--- /dev/null
+++ b/screen-api/src/main/java/com/moral/api/utils/AdjustDataUtils.java
@@ -0,0 +1,84 @@
+package com.moral.api.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.googlecode.aviator.AviatorEvaluator;
+import com.googlecode.aviator.Expression;
+import com.moral.api.entity.DeviceAdjustValue;
+import com.moral.constant.Constants;
+import com.moral.util.DateUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
+import org.springframework.util.StringUtils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Component
+public class AdjustDataUtils {
+ /**
+ * @param deviceData ������������
+ * @param adjustFormula ������������
+ * @param aqiMap ���������������������������������aqi������
+ * @return Map<String, Object> ���������������
+ * */
+ public Map<String, Object> adjust(Map<String, Object> deviceData, Map<String, Object> adjustFormula, Map<String, Object> aqiMap) {
+ try {
+ Date time = DateUtils.getDate((String) deviceData.get("DataTime"), DateUtils.yyyyMMddHHmmss_EN);
+ long finalTime = DateUtils.dataToTimeStampTime(time, DateUtils.HH_mm_ss_EN).getTime();
+ for (String key : deviceData.keySet()) {
+ if (!key.equals("mac") && !key.equals("time") && !key.equals("DataTime") && !key.equals("ver") && !key.contains("Flag")) {
+ //���������
+ Object measuredValue = deviceData.get(key);
+ //������������������������
+ List<DeviceAdjustValue> sensorFormulas = (List<DeviceAdjustValue>) adjustFormula.get(key);
+ if (ObjectUtils.isEmpty(sensorFormulas)) {
+ deviceData.put(key, measuredValue);
+ continue;
+ }
+
+ //���������������������������������
+ DeviceAdjustValue deviceAdjustValue = sensorFormulas.stream()
+ .filter(o -> o.getStartTime().getTime() <= finalTime && o.getEndTime().getTime() > finalTime)
+ .findFirst().get();
+ String formula = deviceAdjustValue.getValue();
+ if (StringUtils.isEmpty(formula)) {
+ deviceData.put(key, measuredValue);
+ continue;
+ }
+
+ Expression expression = AviatorEvaluator.compile(formula);
+ Map<String, Object> env = new HashMap<>();
+ if (formula.contains("aqi")) {
+ Object aqiValue = null;
+ if (aqiMap != null) {
+ aqiValue = aqiMap.get(key);
+ }
+ env.put("aqi", ObjectUtils.isEmpty(aqiValue) ? 0F : Float.parseFloat((String) aqiValue));
+ }
+ if (formula.contains("vocs")) {
+ Object vocsValue = ObjectUtils.isEmpty(deviceData.get(Constants.SENSOR_CODE_VOCS)) ? 0F : deviceData.get(Constants.SENSOR_CODE_VOCS);
+ env.put("vocs", vocsValue);
+ }
+ if (formula.contains("cel")) {
+ env.put("cel", Float.parseFloat((String) measuredValue));
+ }
+ //������
+ measuredValue = expression.execute(env);
+ //������������
+ if (!Constants.SENSOR_CODE_TEMP.equals(measuredValue) && Float.parseFloat(measuredValue.toString()) < 0) {
+ measuredValue = 0F;
+ }
+ deviceData.put(key, Double.parseDouble(String.format("%.4f", measuredValue)));
+ }
+ }
+ } catch (Exception e) {
+ log.error("param[0] deviceData:" + JSON.toJSONString(deviceData));
+ log.error(e.getMessage());
+ }
+ return deviceData;
+ }
+}
diff --git a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
index 748efc3..fa6fd33 100644
--- a/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
+++ b/screen-api/src/main/java/com/moral/api/websocket/SingleDeviceServer.java
@@ -1,12 +1,14 @@
package com.moral.api.websocket;
import com.moral.api.entity.Device;
+import com.moral.api.entity.MonitorPoint;
import com.moral.api.entity.Sensor;
import com.moral.api.entity.UnitConversion;
import com.moral.constant.RedisConstants;
import lombok.Data;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
+import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PathVariable;
import javax.websocket.*;
@@ -37,19 +39,32 @@
private String mac;
- private Map<String, Device> devicesInfo;
+ private Device deviceAlarmInfo;
private List<UnitConversion> unitConversions;
+
+ private Map<String, Object> regionAqi;
@OnOpen
public void onOpen(Session session, @PathParam("mac") String mac) throws Exception {
this.session = session;
this.mac = mac;
- this.devicesInfo = redisTemplate.opsForHash().entries(RedisConstants.DEVICE_INFO);
+ this.deviceAlarmInfo = (Device) redisTemplate.opsForHash().get(RedisConstants.DEVICE_INFO, mac);
this.unitConversions = redisTemplate.opsForList().range(RedisConstants.UNIT_CONVERSION, 0, -1);
+ //���������������������������AQI������������������
+ Map<String, Object> deviceInfo = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DEVICE, mac);
+ Map<String, Object> monitorPointMap = (Map<String, Object>) deviceInfo.get("monitorPoint");
+ String areaCode = String.valueOf(monitorPointMap.get("areaCode"));
+ String cityCode = String.valueOf(monitorPointMap.get("cityCode"));
+ try {
+ this.regionAqi = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, areaCode);
+ if (ObjectUtils.isEmpty(this.regionAqi))
+ this.regionAqi = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.AQI_DATA, cityCode);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
sockets.add(this);
- System.out.println(mac);
-}
+ }
@OnClose
public void onClose() {
diff --git a/screen-common/src/main/java/com/moral/anno/FieldName.java b/screen-common/src/main/java/com/moral/anno/FieldName.java
new file mode 100644
index 0000000..5d3d49b
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/anno/FieldName.java
@@ -0,0 +1,16 @@
+package com.moral.anno;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+* @Description: ������������������������������������������������������������������������������
+ * @Param:
+ * @return:
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface FieldName {
+ String value() default "";
+}
diff --git a/screen-common/src/main/java/com/moral/pojo/CompareFieldResult.java b/screen-common/src/main/java/com/moral/pojo/CompareFieldResult.java
new file mode 100644
index 0000000..8cd9e16
--- /dev/null
+++ b/screen-common/src/main/java/com/moral/pojo/CompareFieldResult.java
@@ -0,0 +1,33 @@
+package com.moral.pojo;
+
+import lombok.Data;
+
+/**
+ * @ClassName CompareFieldResult
+ * @Description ���������������������������������������bean
+ * @Author ���������
+ * @Date 2021/8/24 14:00
+ * @Version TODO
+ **/
+@Data
+public class CompareFieldResult {
+ /*
+ * ������������
+ * */
+ private String fieldName;
+
+ /*
+ * ���������������fieldName���������������
+ * */
+ private String fieldAnnoName;
+
+ /*
+ * ���������������
+ * */
+ private String oldData;
+
+ /*
+ * ���������������
+ * */
+ private String newData;
+}
diff --git a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
index f52b66c..7c12510 100644
--- a/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
+++ b/screen-job/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java
@@ -18,3 +18,5 @@
void insertHistoryHourly(List<HistoryHourly> list);
}
+
+
diff --git a/screen-manage/src/main/java/com/moral/api/entity/ManageAccount.java b/screen-manage/src/main/java/com/moral/api/entity/ManageAccount.java
index 30706e1..08aa2b2 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/ManageAccount.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/ManageAccount.java
@@ -10,6 +10,7 @@
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.moral.anno.FieldName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -46,21 +47,25 @@
/**
* ������������
*/
+ @FieldName("������������")
private String userName;
/**
* ������
*/
+ @FieldName("������")
private String email;
/**
* ���������
*/
+ @FieldName("���������")
private String mobile;
/**
* ������
*/
+ @FieldName("������")
private String wechat;
/**
diff --git a/screen-manage/src/main/java/com/moral/api/entity/Menu.java b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
index 1054e55..1131ef8 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/Menu.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/Menu.java
@@ -4,11 +4,11 @@
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import java.io.Serializable;
+
import java.util.Date;
import java.util.List;
+import com.moral.anno.FieldName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -35,26 +35,31 @@
/**
* ���������
*/
+ @FieldName("������������")
private String name;
/**
* url������
*/
+ @FieldName("url")
private String url;
/**
* ������������
*/
+ @FieldName("������url")
private String icon;
/**
* ���������
*/
+ @FieldName("���������id")
private Integer parentId;
/**
* ���������������������������
*/
+ @FieldName("������������")
@TableField(value="`order`")
private Integer order;
diff --git a/screen-manage/src/main/java/com/moral/api/entity/User.java b/screen-manage/src/main/java/com/moral/api/entity/User.java
index 397231c..3270af6 100644
--- a/screen-manage/src/main/java/com/moral/api/entity/User.java
+++ b/screen-manage/src/main/java/com/moral/api/entity/User.java
@@ -9,6 +9,7 @@
import java.io.Serializable;
import java.util.Date;
+import com.moral.anno.FieldName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -51,6 +52,7 @@
/**
* ������������
*/
+ @FieldName("������������")
private String userName;
/**
@@ -61,16 +63,19 @@
/**
* ������
*/
+ @FieldName("������")
private String email;
/**
* ���������
*/
+ @FieldName("������")
private String mobile;
/**
* ������
*/
+ @FieldName("������")
private String wechat;
/**
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
index d17e139..8aa5319 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/ManageAccountServiceImpl.java
@@ -25,9 +25,11 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.config.mybatis.wrapper.NullFilterWrapper;
import com.moral.api.service.ManageMenuService;
+import com.moral.api.util.CompareFieldUtils;
import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
+import com.moral.pojo.CompareFieldResult;
import com.moral.util.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -89,7 +91,8 @@
//������������������
QueryWrapper<ManageAccount> wrapper = new QueryWrapper<>();
wrapper.eq("account", account);
- wrapper.eq("is_delete",Constants.NOT_DELETE);
+ wrapper.eq("is_delete", Constants.NOT_DELETE);
+ wrapper.select("id", "password");
ManageAccount manageAccount = manageAccountMapper.selectOne(wrapper);
if (ObjectUtils.isEmpty(manageAccount)) {
loginDTO.setCode(ResponseCodeEnum.ACCOUNT_NOT_EXIST.getCode());
@@ -192,17 +195,11 @@
}
);
}
+ //������������������
+ insertLog(manageAccount);
//������������������
accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
-
- //������������������
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- StringBuilder content = new StringBuilder();
- content.append("������������������").append(manageAccount.getUserName() + ";")
- .append("account���" + manageAccount.getAccount() + ";");
- logUtils.saveOperationForManage(request, content.toString(), Constants.INSERT_OPERATE_TYPE);
-
return accountDTO;
}
@@ -337,12 +334,7 @@
accountDTO.setCode(ResponseCodeEnum.SUCCESS.getCode());
accountDTO.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
//������������������
- HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
- StringBuilder content = new StringBuilder();
- content.append("������������������").append(existManageAccount.getUserName() + ";")
- .append("������:" + existManageAccount.getAccount() + ";");
- logUtils.saveOperationForManage(request, content.toString(), Constants.DELETE_OPERATE_TYPE);
-
+ deleteLog(existManageAccount);
return accountDTO;
}
@@ -375,9 +367,8 @@
//������ManageAccount���
manageAccountMapper.updateById(manageAccount);
-
//������������������
- insertUpdateLog(accountUpdateForm, oldManageAccount);
+ updateLog(oldManageAccount,manageAccount);
//������token
TokenUtils.destoryToken(manageAccount.getId());
//������������������
@@ -428,4 +419,51 @@
}
+ /**
+ * @Description: ������������������������
+ * @Param: [oldAccount, newAccount]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/25
+ */
+ private void updateLog(ManageAccount oldAccount,ManageAccount newAccount){
+ List<CompareFieldResult> results = CompareFieldUtils.compare(ManageAccount.class, oldAccount, newAccount);
+ StringBuilder content = new StringBuilder("���������������������"+";");
+ content.append("���������"+oldAccount.getAccount()+";");
+ //������������������
+ if(!ObjectUtils.isEmpty(newAccount.getPassword()))
+ content.append("���������������");
+ String resultContent = CompareFieldUtils.resultsConvertContent(results,content.toString());
+ logUtils.saveOperationForManage(resultContent, Constants.UPDATE_OPERATE_TYPE);
+ }
+
+ /**
+ * @Description: ������������������������
+ * @Param: [account]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/25
+ */
+ private void insertLog(ManageAccount manageAccount){
+ StringBuilder content = new StringBuilder();
+ content.append("������������������������").append(manageAccount.getUserName() + ";")
+ .append("account���" + manageAccount.getAccount() + ";");
+ logUtils.saveOperationForManage(content.toString(), Constants.INSERT_OPERATE_TYPE);
+ }
+
+
+ /**
+ * @Description: ������������������������
+ * @Param: [manageAccount]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/25
+ */
+ private void deleteLog(ManageAccount manageAccount){
+ StringBuilder content = new StringBuilder();
+ content.append("������������������").append(manageAccount.getUserName() + ";")
+ .append("������:" + manageAccount.getAccount() + ";");
+ logUtils.saveOperationForManage( content.toString(), Constants.DELETE_OPERATE_TYPE);
+ }
}
+
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
index 204f902..ce9f9a0 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/MenuServiceImpl.java
@@ -17,8 +17,11 @@
import com.moral.api.service.GroupService;
import com.moral.api.service.MenuService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.util.CompareFieldUtils;
+import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
+import com.moral.pojo.CompareFieldResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -47,6 +50,8 @@
GroupService groupService;
@Autowired
GroupMenuMapper groupMenuMapper;
+ @Autowired
+ LogUtils logUtils;
@Override
@@ -122,9 +127,10 @@
dto.setMsg(ResponseCodeEnum.MENU_IS_EXIST.getMsg());
return dto;
}
-
//������������������
menuMapper.insert(menu);
+ //������������
+ insertLog(menu);
//������������������
dto.setMenu(menu);
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
@@ -167,6 +173,18 @@
deleteGroupMenuWrapper.in("menu_id", allMenuIds);
deleteGroupMenuWrapper.set("is_delete", Constants.DELETE);
groupMenuMapper.update(null, deleteGroupMenuWrapper);
+ //������������
+ StringBuilder content = new StringBuilder();
+ if (existMenu.getParentId().equals(0))
+ content.append("���������������������" + existMenu.getName() + ";");
+ else
+ content.append("���������������������" + existMenu.getName() + ";");
+ if (!ObjectUtils.isEmpty(childrenIds)) {
+ for (Integer childrenId : childrenIds) {
+ content.append("������������������" + menuMapper.selectById(childrenId).getName() + ";");
+ }
+ }
+ logUtils.saveOperationForManage(content.toString(), Constants.DELETE_OPERATE_TYPE);
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -196,6 +214,8 @@
menuMapper.updateById(menu);
//������������������������
menu = menuMapper.selectById(menu.getId());
+ //������������
+ updateLog(oldMenu, menu);
//������������������
dto.setMenu(menu);
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
@@ -383,4 +403,64 @@
});
}
+ /**
+ * @Description: ������������������������
+ * @Param: [oldMenu, newMenu]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ private void updateLog(Menu oldMenu, Menu newMenu) {
+ List<CompareFieldResult> compareResult = CompareFieldUtils.compare(Menu.class, oldMenu, newMenu);
+ for (CompareFieldResult result : compareResult) {
+ //parentId���������������
+ if (result.getFieldName().equals("parentId")) {
+ //���������id������������������
+ String oldData = result.getOldData();
+ String newData = result.getNewData();
+
+ if (!oldData.equals("0"))
+ oldData = menuMapper.selectById(Integer.parseInt(oldData)).getName();
+ else
+ oldData = "null";
+
+ if (!newData.equals("0"))
+ newData = menuMapper.selectById(Integer.parseInt(newData)).getName();
+ else
+ newData = "null";
+
+ result.setNewData(newData);
+ result.setOldData(oldData);
+ result.setFieldAnnoName("���������");
+ }
+ }
+ String content = CompareFieldUtils.resultsConvertContent(compareResult, "���������������������");
+ logUtils.saveOperationForManage(content, Constants.UPDATE_OPERATE_TYPE);
+ }
+
+ /**
+ * @Description: ������������������������
+ * @Param: [menu]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ private void insertLog(Menu menu) {
+ StringBuilder content = new StringBuilder();
+ //������������������������������������������
+ if (menu.getParentId() == null) {
+ content.append("������������������������;");
+ } else {
+ content.append("������������������������;");
+ //���������������id������������������
+ Menu parentMenu = menuMapper.selectById(menu.getParentId());
+ content.append("������������" + parentMenu.getName() + ";");
+ }
+ content.append("���������" + menu.getName() + ";");
+ if (menu.getUrl() != null)
+ content.append("url���" + menu.getUrl() + ";");
+ content.append("���������" + menu.getOrder() + ";");
+ logUtils.saveOperationForManage(content.toString(), Constants.INSERT_OPERATE_TYPE);
+ }
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java
index 2c884a9..ea69baa 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/SpecialDeviceHistoryServiceImpl.java
@@ -94,6 +94,7 @@
QueryWrapper<ManageAccount> wapper_manageAccount = new QueryWrapper<>();
wapper_manageAccount.eq("is_delete",Constants.NOT_DELETE);
wapper_manageAccount.in("id",operateIdList);
+ wapper_manageAccount.select("id", "user_name");
List<ManageAccount> manageAccounts = manageAccountMapper.selectList(wapper_manageAccount);
for (ManageAccount manageAccount:manageAccounts) {
Map<String,Object> operateMap = new HashMap<>();
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 bfca277..6962fd1 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
@@ -137,6 +137,7 @@
QueryWrapper<ManageAccount> wapper_manageAccount = new QueryWrapper<>();
wapper_manageAccount.eq("is_delete",Constants.NOT_DELETE);
wapper_manageAccount.in("id",operateIdList);
+ wapper_manageAccount.select("id", "user_name");
List<ManageAccount> manageAccounts = manageAccountMapper.selectList(wapper_manageAccount);
for (ManageAccount manageAccount:manageAccounts) {
Map<String,Object> operateMap = new HashMap<>();
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
index 054185d..711180c 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/UserServiceImpl.java
@@ -18,9 +18,13 @@
import com.moral.api.pojo.form.user.UserUpdateForm;
import com.moral.api.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.moral.api.util.CompareFieldUtils;
+import com.moral.api.util.LogUtils;
import com.moral.constant.Constants;
import com.moral.constant.ResponseCodeEnum;
+import com.moral.pojo.CompareFieldResult;
import com.moral.util.ConvertUtils;
+import com.moral.util.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -29,6 +33,7 @@
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.logging.SimpleFormatter;
/**
* <p>
@@ -51,6 +56,8 @@
UserGroupMapper userGroupMapper;
@Autowired
GroupMenuMapper groupMenuMapper;
+ @Autowired
+ LogUtils logUtils;
@Override
public UserQueryDTO queryUsers(UserQueryForm form) {
@@ -150,6 +157,12 @@
//������
userMapper.updateById(user);
+ //������������������������
+ user = userMapper.selectById(user.getId());
+
+ //������������
+ updatelog(oldUser,user);
+
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -208,6 +221,8 @@
organization.setAdminUserId(user.getId());
organization.setId(organizationId);
organizationMapper.updateById(organization);
+ //������������������
+ insertLog(user,organizationId);
//������������������
dto.setCode(ResponseCodeEnum.SUCCESS.getCode());
dto.setMsg(ResponseCodeEnum.SUCCESS.getMsg());
@@ -246,4 +261,49 @@
return dto;
}
+ /**
+ * @Description: ������������������������
+ * @Param: [user, organizationId]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ private void insertLog(User user,Integer organizationId) {
+ StringBuilder content = new StringBuilder("���������������������;");
+ content.append("���������admin;");
+ //������������admin���������������
+ Organization organization = organizationMapper.selectById(organizationId);
+ content.append("���������"+organization.getName()+";");
+ content.append("���������"+user.getAccount()+";");
+ content.append("���������������"+user.getUserName()+";");
+ content.append("���������������"+ DateUtils.dateToDateString(user.getExpireTime(),"yyyy-MM-dd")+";");
+ if(user.getEmail()!=null)
+ content.append("���������"+user.getEmail()+";");
+ if(user.getMobile()!=null)
+ content.append("���������"+user.getMobile()+";");
+ if(user.getWechat()!=null)
+ content.append("���������"+user.getWechat()+";");
+ logUtils.saveOperationForManage(content.toString(), Constants.INSERT_OPERATE_TYPE);
+ }
+
+
+ /**
+ * @Description: ������������������������
+ * @Param: [oldUser, newUser]
+ * @return: void
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ private void updatelog(User oldUser,User newUser){
+ List<CompareFieldResult> results = CompareFieldUtils.compare(User.class, oldUser, newUser);
+ StringBuilder content = new StringBuilder("���������������������;");
+ content.append("���������������"+organizationMapper.selectById(oldUser.getOrganizationId()).getName()+";");
+ //������������������
+ if(newUser.getPassword()!=null)
+ content.append("���������������;");
+ String resultContent = CompareFieldUtils.resultsConvertContent(results,content.toString());
+ logUtils.saveOperationForManage(resultContent, Constants.UPDATE_OPERATE_TYPE);
+ }
+
+
}
diff --git a/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java b/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
index 7af8572..636d821 100644
--- a/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
+++ b/screen-manage/src/main/java/com/moral/api/service/impl/VersionServiceImpl.java
@@ -168,6 +168,7 @@
Integer id = form.getId();
//������������������������������������������������������������
QueryWrapper<OrganizationUnitAlarm> queryWrapper = new QueryWrapper<>();
+ queryWrapper.select("id");
queryWrapper.eq("is_delete", Constants.NOT_DELETE);
queryWrapper.eq("version_id", id);
List<OrganizationUnitAlarm> organizationUnitAlarms = organizationUnitAlarmMapper.selectList(queryWrapper);
@@ -347,5 +348,5 @@
return dto;
}
-
}
+
diff --git a/screen-manage/src/main/java/com/moral/api/util/CompareFieldUtils.java b/screen-manage/src/main/java/com/moral/api/util/CompareFieldUtils.java
new file mode 100644
index 0000000..976444c
--- /dev/null
+++ b/screen-manage/src/main/java/com/moral/api/util/CompareFieldUtils.java
@@ -0,0 +1,98 @@
+package com.moral.api.util;
+
+import com.moral.anno.FieldName;
+import com.moral.pojo.CompareFieldResult;
+import lombok.extern.slf4j.Slf4j;
+
+import java.beans.IntrospectionException;
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Field;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @ClassName ComparePropertyUtils
+ * @Description TODO
+ * @Author ���������
+ * @Date 2021/8/24 13:34
+ * @Version TODO
+ **/
+@Slf4j
+public class CompareFieldUtils {
+
+ /**
+ * @Description: ���������������������������������������
+ * @Param: [t, oldObject, newObject]
+ * @return: java.util.List<com.moral.pojo.CompareFieldResult>
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ public static <T> List<CompareFieldResult> compare(T t, Object oldObject, Object newObject) {
+ List<CompareFieldResult> results = new ArrayList<>();
+ try {
+ T oldObj = (T) oldObject;
+ T newObj = (T) newObject;
+ //������class������
+ Class<?> TClass = oldObject.getClass();
+ //������������������
+ Field[] fields = TClass.getDeclaredFields();
+ for (Field field : fields) {
+ //���������������������Id
+ if ("serialVersionUID".equals(field.getName())) {
+ continue;
+ }
+ //������������fieldName���������������
+ FieldName annotation = field.getAnnotation(FieldName.class);
+ if(annotation==null)
+ continue;
+ //���������������������
+ PropertyDescriptor pd = new PropertyDescriptor(field.getName(), TClass);
+ //������������������get������
+ Method readMethod = pd.getReadMethod();
+ //���������������������������
+ Object oldDataObj = readMethod.invoke(oldObj);
+ Object newDataObj = readMethod.invoke(newObj);
+ //������������������null������������������������������
+ if(newDataObj==null)
+ continue;
+ //������������������������������������������������
+ if(oldDataObj!=null&&oldDataObj.toString().equals(newDataObj.toString()))
+ continue;
+ //������������������
+ CompareFieldResult result = new CompareFieldResult();
+ result.setFieldName(field.getName());
+ result.setFieldAnnoName(annotation.value());
+ result.setNewData(newDataObj.toString());
+ if(oldDataObj==null)
+ result.setOldData("null");
+ else
+ result.setOldData(oldDataObj.toString());
+ results.add(result);
+ }
+ }catch (IntrospectionException e) {
+ log.error(e.getMessage());
+ } catch (IllegalAccessException e) {
+ log.error(e.getMessage());
+ } catch (InvocationTargetException e) {
+ log.error(e.getMessage());
+ }
+ return results;
+ }
+
+ /**
+ * @Description: ���������������������������content
+ * @Param: [results, content] content������������������������������������������������������������������������������������������������
+ * @return: java.lang.String
+ * @Author: ���������
+ * @Date: 2021/8/24
+ */
+ public static String resultsConvertContent(List<CompareFieldResult> results,String content){
+ StringBuilder contentReulst = new StringBuilder(content+";");
+ for (CompareFieldResult result : results) {
+ contentReulst.append(result.getFieldAnnoName()+"���"+result.getOldData()+"->"+result.getNewData()+";");
+ }
+ return contentReulst.toString();
+ }
+}
diff --git a/screen-manage/src/main/java/com/moral/api/util/LogUtils.java b/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
index d87cc42..9d363a3 100644
--- a/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
+++ b/screen-manage/src/main/java/com/moral/api/util/LogUtils.java
@@ -14,6 +14,7 @@
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
+import java.util.Scanner;
/**
* @ClassName LogUtils
@@ -71,7 +72,6 @@
public void saveLoginForManage(HttpServletRequest request,String content,ManageAccount account,String userName){
ManageLog log = new ManageLog();
String ip = WebUtils.getIpAddr(request);
-
log.setAccountId(account.getId());
log.setAccount(account.getAccount());
log.setUserName(userName);
@@ -80,4 +80,6 @@
log.setType(Constants.LOGIN_OPERTATE_TYPE);
manageLogMapper.insert(log);
}
+
+
}
diff --git a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
index fecfa44..9b8457e 100644
--- a/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
+++ b/screen-manage/src/main/resources/mapper/ManageMenuMapper.xml
@@ -32,7 +32,7 @@
join
manage_role_menu mrm
on
- mm.`id` = mrm.`menu_id` and mrm.`is_delete`=0
+ mm.`id` = mrm.`menu_id` and mrm.`is_delete`= '0'
join
manage_role mr
on
@@ -41,7 +41,7 @@
#{role.id}
</foreach>
where
- mm.`is_delete`=0
+ mm.`is_delete`= '0'
</select>
<select id="getManageMenuByName" resultMap="BaseResultMap">
diff --git a/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml b/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
index b7521d2..6e7155a 100644
--- a/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
+++ b/screen-manage/src/main/resources/mapper/ManageRoleMapper.xml
@@ -22,18 +22,18 @@
FROM
manage_role mr
JOIN manage_account_role mar
- ON mar.role_id=mr.id AND mar.is_delete = 0
+ ON mar.role_id=mr.id AND mar.is_delete = '0'
JOIN manage_account ma
ON ma.id=mar.account_id and ma.id = #{accountId}
where
- mr.is_delete=0
+ mr.is_delete='0'
</select>
<select id="getAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"></include>
from manage_role mr
- where mr.is_delete = 0
+ where mr.is_delete = '0'
</select>
<select id="getManageRoleByName" resultMap="BaseResultMap">
@@ -41,7 +41,7 @@
<include refid="Base_Column_List"></include>
from manage_role mr
where name = #{name}
- and mr.is_delete = 0
+ and mr.is_delete = '0'
</select>
<select id="getManageRoleById" resultMap="BaseResultMap">
@@ -49,7 +49,7 @@
<include refid="Base_Column_List"></include>
from manage_role mr
where mr.id = #{id}
- and mr.is_delete = 0
+ and mr.is_delete = '0'
</select>
<select id="getManageRoleByNameFuzzy" resultMap="BaseResultMap">
@@ -57,7 +57,7 @@
<include refid="Base_Column_List"></include>
from manage_role mr
where mr.name like concat('%',#{name},'%')
- and mr.is_delete = 0
+ and mr.is_delete = '0'
</select>
<insert id="insertOne" parameterType="com.moral.api.entity.ManageRole">
--
Gitblit v1.8.0