From 90acff60761ed769014b34c5cea4c8300ac8f802 Mon Sep 17 00:00:00 2001 From: jinpengyong <jpy123456> Date: Wed, 05 Jul 2023 14:38:32 +0800 Subject: [PATCH] 监测站点显示修改 --- screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java | 91 +++++++++-------- screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | 163 +++++++++++++++++++++++++------- screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java | 6 3 files changed, 180 insertions(+), 80 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java b/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java index ef7c6fe..91ccf70 100644 --- a/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java +++ b/screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java @@ -32,10 +32,10 @@ @Autowired DataDisplayService dataDisplayService; - @GetMapping("monitorPointDataDisplay") - public ResultMessage monitorPointDataDisplay(MonitorPointDataDisplayForm form){ + @PostMapping("monitorPointDataDisplay") + public ResultMessage monitorPointDataDisplay( @RequestBody MonitorPointDataDisplayForm form){ //������������������������ - if (!form.valid()) + if (form.getMacs()==null && form.getEndTime() ==null && form.getStartTime() ==null && form.getReportType()==null) return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); diff --git a/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java index 86df41a..cc43b35 100644 --- a/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java +++ b/screen-api/src/main/java/com/moral/api/pojo/form/dataDisplay/MonitorPointDataDisplayForm.java @@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.util.Date; +import java.util.List; /** * @ClassName MonitorPointDataDisplayForm @@ -20,21 +21,27 @@ /* * ������id - * */ - private Integer monitorPointId; + */ +// private Integer monitorPointId; + + + /** + * mac��� + */ + private List<String> macs; /* * ������������ * */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH") + @JsonFormat(pattern = "yyyy-MM-dd HH", timezone = "GMT+8") private Date startTime; /* * ������������ * */ - @DateTimeFormat(pattern = "yyyy-MM-dd") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH") + @JsonFormat(pattern = "yyyy-MM-dd HH", timezone = "GMT+8") private Date endTime; /* @@ -45,41 +52,41 @@ /* * ������������������������ * */ - public boolean valid() { - if (monitorPointId == null) - return false; - if (reportType == null) { - if (startTime == null || endTime == null) - return false; - //������������������������������������������ - String endTimeStr = DateUtils.dateToDateString(endTime,"yyyy-MM-dd"); - endTimeStr+=" 23:59:59"; - endTime = DateUtils.getDate(endTimeStr,"yyyy-MM-dd HH:mm:ss"); - } else { - if(startTime!=null&&endTime!=null) - return false; - if (reportType.equals(Constants.HOURLY_REPORT)) { - //������������������������������������������ - Date previousHour = DateUtils.getDateOfMin(new Date(), -60); - startTime = DateUtils.getHourlyStartTime(previousHour); - } else if (reportType.equals(Constants.DAILY_REPORT)) { - //������������������������������������ - Date yesterday = DateUtils.getDateOfDay(new Date(),-1); - startTime = DateUtils.getDailyStartTime(yesterday); - } else if (reportType.equals(Constants.WEEKLY_REPORT)) { - //������������������������������������ - Date previous = DateUtils.getDateOfDay(new Date(),-7); - startTime = DateUtils.getWeeklyStartTime(previous); - endTime = DateUtils.getWeeklyEndTime(previous); - } else if (reportType.equals(Constants.MONTHLY_REPORT)) { - //������������������������������������ - Date lastMonthFirstDay = DateUtils.getFirstDayOfLastMonth(); - startTime = DateUtils.getMonthlyStartTime(lastMonthFirstDay); - endTime = DateUtils.getMonthlyEndTime(lastMonthFirstDay); - } else - return false; - } - return true; - } +// public boolean valid() { +// if (monitorPointId == null) +// return false; +// if (reportType == null) { +// if (startTime == null || endTime == null) +// return false; +// //������������������������������������������ +// String endTimeStr = DateUtils.dateToDateString(endTime,"yyyy-MM-dd"); +// endTimeStr+=" 23:59:59"; +// endTime = DateUtils.getDate(endTimeStr,"yyyy-MM-dd HH:mm:ss"); +// } else { +// if(startTime!=null&&endTime!=null) +// return false; +// if (reportType.equals(Constants.HOURLY_REPORT)) { +// //������������������������������������������ +// Date previousHour = DateUtils.getDateOfMin(new Date(), -60); +// startTime = DateUtils.getHourlyStartTime(previousHour); +// } else if (reportType.equals(Constants.DAILY_REPORT)) { +// //������������������������������������ +// Date yesterday = DateUtils.getDateOfDay(new Date(),-1); +// startTime = DateUtils.getDailyStartTime(yesterday); +// } else if (reportType.equals(Constants.WEEKLY_REPORT)) { +// //������������������������������������ +// Date previous = DateUtils.getDateOfDay(new Date(),-7); +// startTime = DateUtils.getWeeklyStartTime(previous); +// endTime = DateUtils.getWeeklyEndTime(previous); +// } else if (reportType.equals(Constants.MONTHLY_REPORT)) { +// //������������������������������������ +// Date lastMonthFirstDay = DateUtils.getFirstDayOfLastMonth(); +// startTime = DateUtils.getMonthlyStartTime(lastMonthFirstDay); +// endTime = DateUtils.getMonthlyEndTime(lastMonthFirstDay); +// } else +// return false; +// } +// return true; +// } } diff --git a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java index 543886e..b710fdc 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.*; +import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.HistoryMonthlyMapper; import com.moral.api.pojo.dto.dataDisplay.MonitorPointDataDisplayDTO; import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO; @@ -17,6 +18,8 @@ import org.springframework.util.ObjectUtils; import java.util.*; + +import static com.moral.util.DateUtils.dateToDateString; /** * @ClassName DataDisplayServiceImpl @@ -41,19 +44,27 @@ @Autowired HistoryMonthlyService historyMonthlyService; + @Autowired + DeviceMapper deviceMapper; + @Override public List<MonitorPointDataDisplayDTO> getMonitorPointDisplayData(MonitorPointDataDisplayForm form) { //������ - Integer monitorPointId = form.getMonitorPointId(); +// Integer monitorPointId = form.getMacs(); + List<String> macs = form.getMacs(); String reportType = form.getReportType(); Date startTime = form.getStartTime(); Date endTime = form.getEndTime(); //������������id������������������������������ - List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPointId); +// List<Device> devices = deviceService.getDevicesByMonitorPointId(monitorPointId); + QueryWrapper<Device> deviceQueryWrapper = new QueryWrapper<>(); + deviceQueryWrapper.eq("is_delete",Constants.NOT_DELETE); + deviceQueryWrapper.in("mac", macs); + List<Device> devices = deviceMapper.selectList(deviceQueryWrapper); Map<String, Device> deviceMap = new HashMap<>(); - List<String> macs = new ArrayList<>(); +// List<String> ListMacs = new ArrayList<>(); devices.forEach(value -> { - macs.add(value.getMac()); +// ListMacs.add(value.getMac()); deviceMap.put(value.getMac(), value); }); List<MonitorPointDataDisplayDTO> dtos = new ArrayList<>(); @@ -73,20 +84,26 @@ } //��������������������������������������������������������� else if (reportType.equals(Constants.HOURLY_REPORT)) { - Map<String, HistoryHourly> macDataMap = new HashMap<>(); + Map<String, List<HistoryHourly>> macDataMap = new HashMap<>(); //������������ macs.forEach(value -> { - List<HistoryHourly> datas = historyHourlyService.getValueByMacAndTime(value, startTime, startTime); + List<HistoryHourly> datas = historyHourlyService.getValueByMacAndTime(value, startTime, endTime); if (datas.size() != 0) - macDataMap.put(value, datas.get(0)); + macDataMap.put(value,datas); }); if (macDataMap.size() != 0) dtos = calculateReportData(macDataMap, deviceMap, reportType, startTime); } //��������������������������������������������� else if (reportType.equals(Constants.DAILY_REPORT)) { + Map<String, List<HistoryDaily>> macDataMap = new HashMap<>(); //������������ - Map<String, HistoryDaily> macDataMap = historyDailyService.getHistoryDailyByMacsAndDate(macs, startTime); + macs.forEach(value -> { + List<HistoryDaily> datas = historyDailyService.getHistoryDailyByMacAndTimeSlot(value, startTime, endTime); + if (datas.size() != 0) + macDataMap.put(value,datas); + }); + if (macDataMap.size() != 0) dtos = calculateReportData(macDataMap, deviceMap, reportType, startTime); } @@ -101,7 +118,15 @@ else if (reportType.equals(Constants.MONTHLY_REPORT)) { //������������������������������������������������������������������������������������������������ Map<String, List<HistoryDaily>> macDataDailyMap = new HashMap<>(); - Map<String, HistoryMonthly> macDataMonthlyMap = historyMonthlyService.getHistoryMonthlyByMacsAndDate(macs, startTime); + Map<String, List<HistoryMonthly>> macDataMonthlyMap = new HashMap<>(); + macs.forEach(mac -> { + QueryWrapper<HistoryMonthly> wrapper = new QueryWrapper<>(); + wrapper.eq("mac",mac); + wrapper.between("time",startTime,endTime); + List<HistoryMonthly> monthlyList = historyMonthlyMapper.selectList(wrapper); + if (!ObjectUtils.isEmpty(monthlyList)) + macDataMonthlyMap.put(mac, monthlyList); + }); macs.forEach(mac -> { List<HistoryDaily> dailyDatas = historyDailyService.getHistoryDailyByMacAndTimeSlot(mac, startTime, endTime); if (!ObjectUtils.isEmpty(dailyDatas)) @@ -533,35 +558,103 @@ */ private <T> List<MonitorPointDataDisplayDTO> calculateReportData(Map<String, T> macDataMap, Map<String, Device> deviceMap, String reportType, Date... date) { List<MonitorPointDataDisplayDTO> dtos = new ArrayList<>(); - macDataMap.forEach((key, valueObject) -> { - MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); - dto.setMac(key); - //���������map - Map<String, Object> valueMap; - //���������������value��������� - Object valueO = ClassUtils.getPropertyValue(valueObject, "value"); - if (valueO == null) - return; - String value = (String) valueO; - valueMap = JSON.parseObject(value, Map.class); + Set<String> strings = macDataMap.keySet(); + for (String key : strings) { + if (reportType.equals("0")){ + List<HistoryHourly> t = (List<HistoryHourly>)macDataMap.get(key); + for (HistoryHourly historyHourly : t) { + MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); + String value = historyHourly.getValue(); + Map map = JSON.parseObject(value, Map.class); + String time = DateUtils.dateToDateString(historyHourly.getTime(), "yyyy-MM-dd HH:00:00"); + injectDataToDto(map, false, dto, reportType); + dto.setTime(time); + dto.setMac(key); + dto.setDeviceName(deviceMap.get(key).getName()); + dtos.add(dto); + } + } + if (reportType.equals("1")){ + List<HistoryDaily> t = (List<HistoryDaily>)macDataMap.get(key); + for (HistoryDaily historyDaily : t) { + MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); + String value = historyDaily.getValue(); + Map map = JSON.parseObject(value, Map.class); + String time = DateUtils.dateToDateString(historyDaily.getTime(), "yyyy-MM-dd"); + injectDataToDto(map, false, dto, reportType); + dto.setTime(time); + dto.setMac(key); + dto.setDeviceName(deviceMap.get(key).getName()); + dtos.add(dto); + } + + } + if (reportType.equals("2")){ + HistoryWeekly historyWeekly = (HistoryWeekly)macDataMap.get(key); + MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); + String value = historyWeekly.getValue(); + Map map = JSON.parseObject(value, Map.class); + String time = DateUtils.dateToDateString(historyWeekly.getTime(), "yyyy-MM-dd"); + injectDataToDto(map, false, dto, reportType); + dto.setTime(time); + dto.setMac(key); + dto.setDeviceName(deviceMap.get(key).getName()); + dtos.add(dto); + + } + if (reportType.equals("3")){ + List<HistoryMonthly> t = (List<HistoryMonthly>)macDataMap.get(key); + for (HistoryMonthly historyMonthly : t) { + MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); + String value = historyMonthly.getValue(); + Map map = JSON.parseObject(value, Map.class); + String time = DateUtils.dateToDateString(historyMonthly.getTime(), "yyyy-MM"); + injectDataToDto(map, false, dto, reportType); + dto.setTime(time); + dto.setMac(key); + dto.setDeviceName(deviceMap.get(key).getName()); + dtos.add(dto); + } + } + } + +// macDataMap.forEach((key, valueObject) -> { +// MonitorPointDataDisplayDTO dto = new MonitorPointDataDisplayDTO(); +// dto.setMac(key); +// //���������map +// Map<String, Object> valueMap; +// List<Map<String, Object>> list; +// //���������������value��������� +// Object valueO = ClassUtils.getPropertyValue(valueObject, "value"); +// if (valueO == null) +// return; +// String value = (String) valueO; +// list = JSON.parseObject(value, List.class); +// for (Map<String, Object> map : list) { +// String o = map.get("value").toString(); +// valueMap = JSON.parseObject(o, Map.class); +// injectDataToDto(valueMap, false, dto, reportType); +// String deviceName = deviceMap.get(key).getName(); +// dto.setDeviceName(deviceName); +// String startTime = DateUtils.dateToDateString((Date) map.get("time"), "yyyy-MM-dd HH:mm:ss"); +// dto.setTime(startTime); +// dtos.add(dto); +// } //������������������ - String deviceName = deviceMap.get(key).getName(); - dto.setDeviceName(deviceName); + //������������,������������������������������������������������������������������������������������������������������ - String startTime = ""; - if (valueObject instanceof HistoryHourly && date.length == 1) - startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd HH:mm:ss"); - else if (valueObject instanceof HistoryDaily && date.length == 1) - startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd"); - else if (valueObject instanceof HistoryWeekly && date.length == 2) - startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd") + " -- " + DateUtils.dateToDateString(date[1], "yyyy-MM-dd"); - else if (valueObject instanceof HistoryMonthly && date.length == 1) - startTime = DateUtils.dateToDateString(date[0], "yyyy-MM"); - dto.setTime(startTime); +// String startTime = ""; +// if (valueObject instanceof HistoryHourly && date.length == 1) +// startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd HH:mm:ss"); +// else if (valueObject instanceof HistoryDaily && date.length == 1) +// startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd"); +// else if (valueObject instanceof HistoryWeekly && date.length == 2) +// startTime = DateUtils.dateToDateString(date[0], "yyyy-MM-dd") + " -- " + DateUtils.dateToDateString(date[1], "yyyy-MM-dd"); +// else if (valueObject instanceof HistoryMonthly && date.length == 1) +// startTime = DateUtils.dateToDateString(date[0], "yyyy-MM"); +// dto.setTime(startTime); //������������ - injectDataToDto(valueMap, false, dto, reportType); - dtos.add(dto); - }); +// }); return dtos; } -- Gitblit v1.8.0