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