From ee8bb47024e9ef5a585a5f4d61d1ab236c9d4341 Mon Sep 17 00:00:00 2001 From: cjl <909710561@qq.com> Date: Tue, 23 Apr 2024 15:05:33 +0800 Subject: [PATCH] fix:因子相关性比较均值 --- screen-api/src/main/java/com/moral/api/service/impl/DataDisplayServiceImpl.java | 181 +++++++++++++++++++++++-- screen-api/src/main/resources/mapper/HistoryMonthlyMapper.xml | 15 ++ screen-api/src/main/java/com/moral/api/service/DataDisplayService.java | 1 screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java | 19 ++ screen-api/src/main/java/com/moral/api/mapper/HistoryMonthlyMapper.java | 7 screen-api/src/main/java/com/moral/api/service/impl/HistoryHourlyServiceImpl.java | 23 +++ screen-api/src/main/java/com/moral/api/service/impl/DeviceServiceImpl.java | 9 + screen-api/src/main/java/com/moral/api/pojo/vo/historyMonthly/HistoryResultVo.java | 43 ++++++ screen-api/src/main/java/com/moral/api/service/DeviceService.java | 4 screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java | 11 + screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 5 screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java | 3 screen-api/src/main/resources/mapper/HistoryDailyMapper.xml | 13 + screen-api/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java | 4 screen-api/src/main/java/com/moral/api/service/HistoryHourlyService.java | 10 + screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java | 8 + screen-api/src/main/java/com/moral/api/controller/DataDisplayController.java | 2 screen-api/src/main/resources/mapper/HistoryHourlyMapper.xml | 13 + 18 files changed, 346 insertions(+), 25 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 91ccf70..c4b0894 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 @@ -60,7 +60,7 @@ if (!params.containsKey("mac") || !params.containsKey("sensorCodes") || !params.containsKey("reportType") || !params.containsKey("times")) { return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); } - List<SensorComparisonDisplayDTO> dtos = dataDisplayService.getSensorComparisonDisplayDataV2(params); + List<SensorComparisonDisplayDTO> dtos = dataDisplayService.getSensorComparisonDisplayDataV3(params); return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(),dtos); } diff --git a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java index 7db2d85..895e4ef 100644 --- a/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java +++ b/screen-api/src/main/java/com/moral/api/controller/MonitorPointController.java @@ -58,7 +58,7 @@ List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(form); //������������������ - MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints,false); + MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints,false,false); return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); } @@ -73,7 +73,22 @@ List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(form); //������������������ - MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints,true); + MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints,true,false); + + return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); + } + + @GetMapping("queryMonitorPointsAvg") + public ResultMessage queryMonitorPointsAvg(MonitorPointQueryForm form) { + //������������������������ + if (!form.valid()) + return ResultMessage.fail(ResponseCodeEnum.PARAMETERS_IS_MISSING.getCode(), + ResponseCodeEnum.PARAMETERS_IS_MISSING.getMsg()); + //������������������ + List<MonitorPoint> monitorPoints = monitorPointService.queryByOrgIdAndRegionCode(form); + + //������������������ + MonitorPointsVO vo = MonitorPointsVO.convert(monitorPoints,false,true); return new ResultMessage(ResponseCodeEnum.SUCCESS.getCode(), ResponseCodeEnum.SUCCESS.getMsg(), vo); } diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java index 35614f0..c5c2e16 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/HistoryDailyMapper.java @@ -1,9 +1,12 @@ package com.moral.api.mapper; +import java.util.List; import java.util.Map; import com.moral.api.entity.HistoryDaily; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; +import org.apache.ibatis.annotations.Param; /** * <p> @@ -17,4 +20,5 @@ Map<String, Object> getAvgByMac(Map<String, Object> params); + List<HistoryResultVo> listAvgResult(@Param("type") String type, @Param("macs") List<String> macs, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java index b4295db..d38ab72 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/HistoryHourlyMapper.java @@ -5,6 +5,7 @@ import com.moral.api.entity.HistoryMinutely; import com.moral.api.pojo.dto.Wind.WindData; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -48,5 +49,7 @@ List<HistoryHourly> listLikeResult(Map<String, Object> params); + List<HistoryResultVo> listAvgResult(Map<String, Object> params); + List<HistoryMinutely> HistoryMinutelyQuery(Map<String, Object> params); } diff --git a/screen-api/src/main/java/com/moral/api/mapper/HistoryMonthlyMapper.java b/screen-api/src/main/java/com/moral/api/mapper/HistoryMonthlyMapper.java index 4d498d0..fcd353b 100644 --- a/screen-api/src/main/java/com/moral/api/mapper/HistoryMonthlyMapper.java +++ b/screen-api/src/main/java/com/moral/api/mapper/HistoryMonthlyMapper.java @@ -1,7 +1,11 @@ package com.moral.api.mapper; -import com.moral.api.entity.HistoryMonthly; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.moral.api.entity.HistoryMonthly; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * <p> @@ -13,4 +17,5 @@ */ public interface HistoryMonthlyMapper extends BaseMapper<HistoryMonthly> { + List<HistoryResultVo> listAll(@Param("type") String type, @Param("macs") List<String> macs, @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/historyMonthly/HistoryResultVo.java b/screen-api/src/main/java/com/moral/api/pojo/vo/historyMonthly/HistoryResultVo.java new file mode 100644 index 0000000..41b2966 --- /dev/null +++ b/screen-api/src/main/java/com/moral/api/pojo/vo/historyMonthly/HistoryResultVo.java @@ -0,0 +1,43 @@ +package com.moral.api.pojo.vo.historyMonthly; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; + +/** + * <p> + * ��������� + * </p> + * + * @author moral + * @since 2021-07-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value="HistoryMonthlyVo - ���������VO������", description="HistoryMonthlyVo -���������VO������") +public class HistoryResultVo { + + private static final long serialVersionUID = 1L; + + /** + * ������mac + */ + private String mac; + + /** + * ������ + */ + private String time; + + /** + * ������ + */ + private BigDecimal value; + + + +} diff --git a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java index d54852a..90233f2 100644 --- a/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java +++ b/screen-api/src/main/java/com/moral/api/pojo/vo/monitorPoint/MonitorPointsVO.java @@ -21,7 +21,7 @@ private List<MonitorPointVO> monitorPoints; - public static MonitorPointsVO convert(List<MonitorPoint> monitorPoints,boolean type){ + public static MonitorPointsVO convert(List<MonitorPoint> monitorPoints,boolean type, boolean code){ MonitorPointsVO monitorPointsVO = new MonitorPointsVO(); List<MonitorPointVO> monitorPointVOS = new ArrayList<>(); for (MonitorPoint monitorPoint : monitorPoints) { @@ -32,6 +32,12 @@ DeviceVO deviceVO = deviceConvert(device); deviceVOS.add(deviceVO); } + if(code){ + DeviceVO vo = new DeviceVO(); + vo.setName(monitorPoint.getName()+"������"); + vo.setMac(monitorPoint.getId()+",avg"); + deviceVOS.add(vo); + } List<Device> resultState = devices.stream().filter(it->!it.getState().equals("0")).collect(Collectors.toList()); monitorPointVO.setId(monitorPoint.getId()); StringBuffer stringBuffer = new StringBuffer(monitorPoint.getName()); diff --git a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java index 20443b0..8276581 100644 --- a/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java +++ b/screen-api/src/main/java/com/moral/api/service/DataDisplayService.java @@ -44,6 +44,7 @@ */ List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params); + List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV3(Map<String, Object> params); List<HeatMapDTO> getHeatMapData(String code, String startTime, String type, String form); 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 b5b3bd8..c231777 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 @@ -43,6 +43,10 @@ //���������������������������mac������ List<String> getMacsByOrganizationId(Integer organizationId); + //���������������������������mac������ + List<String> getMacMonitorPointId(Integer monitorPointId); + + //������������������,���������������������������mac������ List getMacsByOrgIdAndRegionCode(Integer organizationId,Integer regionCode); diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java index 0825277..97206e3 100644 --- a/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java +++ b/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java @@ -8,6 +8,8 @@ import com.moral.api.entity.HistoryDaily; import com.baomidou.mybatisplus.extension.service.IService; import com.moral.api.entity.HistoryMinutely; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; +import org.apache.ibatis.annotations.Param; /** * <p> @@ -52,6 +54,15 @@ List<HistoryDaily> getHistoryDailyByMacAndTimeSlot(List<String> macs, Date startDate, Date endDate); /** + * ������������������������ + * @param type + * @param macs + * @param startTime + * @param endTime + * @return + */ + List<HistoryResultVo> listAvgResult(String type, List<String> macs, String startTime, String endTime); + /** *@Description: ������������id��������������������������������������� *@Param: [map] *@return: java.util.Map<java.lang.String,java.lang.Object> diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryHourlyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryHourlyService.java index 3f2c42b..5d1f62f 100644 --- a/screen-api/src/main/java/com/moral/api/service/HistoryHourlyService.java +++ b/screen-api/src/main/java/com/moral/api/service/HistoryHourlyService.java @@ -2,6 +2,7 @@ import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.HistoryMinutely; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; import com.moral.api.vo.HistoryHourlyVo; import java.util.Date; @@ -103,6 +104,15 @@ List<HistoryHourly> getValueByMacAndTime(List<String> mac, Date startDate, Date endDate); /** + * @Description: ������mac��������������������������� + * @Param: [mac, startDate, endDate] + * @return: java.util.List<com.moral.api.entity.HistoryHourly> + * @Author: ��������� + * @Date: 2021/9/28 + */ + List<HistoryResultVo> getAvgValueByMacAndTime(List<String> mac,String type, Date startDate, Date endDate); + + /** * @param macs List<String> * @param time String ������2021-12-23 * @description: ��������������������������������������� 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 12b96f5..909f5af 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 @@ -11,8 +11,10 @@ import com.moral.api.pojo.dto.dataDisplay.SensorComparisonDisplayDTO; import com.moral.api.pojo.form.dataDisplay.MonitorPointDataDisplayForm; import com.moral.api.pojo.form.dataDisplay.SensorComparisonDisplayForm; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; import com.moral.api.service.*; import com.moral.api.utils.GetCenterPointFromListOfCoordinates; +import com.moral.api.utils.StringUtils; import com.moral.constant.Constants; import com.moral.constant.SeparateTableType; import com.moral.pojo.AQI; @@ -250,6 +252,21 @@ return dtos; } + public static void main(String[] args) { + List<String> sensors = new ArrayList<>(); + sensors.add("a34004"); + sensors.add("a34002"); + sensors.add("a21026"); + StringBuilder str = new StringBuilder(); + for(String s : sensors){ + str.append(" avg(JSON_EXTRACT( value, '$"+s+"' )) pm,"); + } + str.deleteCharAt(str.length() - 1); + System.out.println(str.toString()); + + } + + @Override public List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV2(Map<String, Object> params) { //������ @@ -260,31 +277,60 @@ List<String> times = (List<String>) params.get("times"); String startTime = times.get(0); String endTime = times.get(1); - String mac = params.get("mac").toString(); + boolean type = subStr(params.get("mac").toString()); + String mac = type?params.get("mac").toString().substring(0, params.get("mac").toString().indexOf(",avg")):params.get("mac").toString(); + List<String> macList = new ArrayList<>(); + if(type){ + macList = deviceService.getMacMonitorPointId(Integer.parseInt(mac)); + }else { + macList.add(mac); + } + String reportType = params.get("reportType").toString(); Map<String, String> timeValueMap = new LinkedHashMap<>();//key���time���value������������json //��������������� if (reportType.equals(Constants.MONTHLY_REPORT)) { + //������������������ + List<SensorComparisonDisplayDTO> dtos = new ArrayList<>(); + Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_EN); Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_EN); - //List<HistoryHourly> hourlies = historyHourlyService.getValueByMacAndTime(mac, startDate, endDate); - QueryWrapper<HistoryMonthly> historyMonthlyQueryWrapper = new QueryWrapper<>(); - historyMonthlyQueryWrapper.eq("mac",mac); - historyMonthlyQueryWrapper.between("time",startTime.substring(0,7)+"-01 00:00:00",endTime.substring(0,7)+"-01 00:00:00"); - List<HistoryMonthly> monthlies = historyMonthlyMapper.selectList(historyMonthlyQueryWrapper); - for (HistoryMonthly historyMonthly : monthlies) { - Date time = historyMonthly.getTime(); - String dateStr = DateUtils.dateToDateString(time, "yyyy-MM"); - String value = historyMonthly.getValue(); - timeValueMap.put(dateStr, value); + for(String s : sensors){ + SensorComparisonDisplayDTO dto = new SensorComparisonDisplayDTO(); + if(s.equals("a00e12") || s.equals("a00e03")){ + dto.setCode("1"); + }else if (s.equals("a01006")){ + dto.setCode("2"); + }else if (s.equals("a99054") || s.equals("a21005")){ + dto.setCode("3"); + }else { + dto.setCode("0"); + } + List<Map<String, Object>> dtoTimeValueList = new ArrayList<>(); + String str = " ROUND(avg(JSON_EXTRACT( value, '$."+s+"' )),2) value "; + List<HistoryResultVo> monthlies = historyMonthlyMapper.listAll(str.toString(),macList,startTime.substring(0,7)+"-01 00:00:00",endTime.substring(0,7)+"-01 00:00:00"); + Map<String, List<HistoryResultVo>> prodMap= monthlies.stream().collect(Collectors.groupingBy(HistoryResultVo::getTime)); + //��������������������� + Date middleDate = startDate; + while (DateUtils.compareDateStr(DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_EN),DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN),DateUtils.yyyy_MM_EN)<=0){ + Map<String, Object> resultMap = new LinkedHashMap<>(); + resultMap.put("time",DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)); + if (prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)) == null){ + resultMap.put("value",null); + }else { + List<HistoryResultVo> resultList = prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)); + resultMap.put("value", resultList.get(0).getValue()); + } + dtoTimeValueList.add(resultMap); + middleDate = DateUtils.addMonths(middleDate,1); + } + + dto.setTimeValueList(dtoTimeValueList); + dtos.add(dto); } - //��������������������� - Date middleDate = startDate; - while (DateUtils.compareDateStr(DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_EN),DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN),DateUtils.yyyy_MM_EN)<=0){ - if (timeValueMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)) == null) - timeValueMap.put(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN), null); - middleDate = DateUtils.addMonths(middleDate,1); - } + + return dtos; + } //������������������ else if (reportType.equals(Constants.HOURLY_REPORT)) { @@ -389,6 +435,98 @@ dtos.add(dto); } return dtos; + } + @Override + public List<SensorComparisonDisplayDTO> getSensorComparisonDisplayDataV3(Map<String, Object> params) { + //������ + List<String> sensors = (List<String>) params.get("sensorCodes"); + //������������ + List<String> times = (List<String>) params.get("times"); + String startTime = times.get(0); + String endTime = times.get(1); + boolean type = subStr(params.get("mac").toString()); + String mac = type?params.get("mac").toString().substring(0, params.get("mac").toString().indexOf(",avg")):params.get("mac").toString(); + List<String> macList = new ArrayList<>(); + if(type){ + macList = deviceService.getMacMonitorPointId(Integer.parseInt(mac)); + }else { + macList.add(mac); + } + String reportType = params.get("reportType").toString(); + List<SensorComparisonDisplayDTO> dtos = new ArrayList<>(); + Date startDate = null; + Date endDate = null; + if (reportType.equals(Constants.MONTHLY_REPORT)) { + startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_EN); + endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_EN); + } else if (reportType.equals(Constants.HOURLY_REPORT)) { + startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_EN); + endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_HH_EN); + } else if (reportType.equals(Constants.DAILY_REPORT)) { + startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_EN); + endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_EN); + } + for(String s : sensors){ + SensorComparisonDisplayDTO dto = new SensorComparisonDisplayDTO(); + if(s.equals("a00e12") || s.equals("a00e03")){ + dto.setCode("1"); + }else if (s.equals("a01006")){ + dto.setCode("2"); + }else if (s.equals("a99054") || s.equals("a21005")){ + dto.setCode("3"); + }else { + dto.setCode("0"); + } + List<Map<String, Object>> dtoTimeValueList = new ArrayList<>(); + String str = " ROUND(avg(JSON_EXTRACT( value, '$."+s+"' )),2) value "; + List<HistoryResultVo> historyResultVos = new ArrayList<>(); + if (reportType.equals(Constants.MONTHLY_REPORT)) { + historyResultVos = historyMonthlyMapper.listAll(str,macList,startTime.substring(0,7)+"-01 00:00:00",endTime.substring(0,7)+"-01 00:00:00"); + } else if (reportType.equals(Constants.HOURLY_REPORT)) { + historyResultVos = historyHourlyService.getAvgValueByMacAndTime(macList,str, startDate, endDate); + } else if (reportType.equals(Constants.DAILY_REPORT)) { + historyResultVos = historyDailyService.listAvgResult(str,macList,DateUtils.dateToDateString(startDate,DateUtils.yyyy_MM_dd_EN) ,DateUtils.dateToDateString(endDate,DateUtils.yyyy_MM_dd_EN) ); + } + Map<String, List<HistoryResultVo>> prodMap= historyResultVos.stream().collect(Collectors.groupingBy(HistoryResultVo::getTime)); + Date middleDate = startDate; + while(DateUtils.isTimeBeforE(endDate,middleDate)){ + Map<String, Object> resultMap = new LinkedHashMap<>(); + if (reportType.equals(Constants.MONTHLY_REPORT)) { + resultMap.put("time",DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)); + if (prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)) == null){ + resultMap.put("value",null); + }else { + List<HistoryResultVo> resultList = prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_EN)); + resultMap.put("value", resultList.get(0).getValue()); + } + dtoTimeValueList.add(resultMap); + middleDate = DateUtils.addMonths(middleDate,1); + }else if(reportType.equals(Constants.HOURLY_REPORT)) { + resultMap.put("time",DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN)); + if (prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN)) == null){ + resultMap.put("value",null); + }else { + List<HistoryResultVo> resultList = prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_HH_EN)); + resultMap.put("value", resultList.get(0).getValue()); + } + dtoTimeValueList.add(resultMap); + middleDate = DateUtils.addHours(middleDate,1); + }else if(reportType.equals(Constants.DAILY_REPORT)){ + resultMap.put("time",DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN)); + if (prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN)) == null){ + resultMap.put("value",null); + }else { + List<HistoryResultVo> resultList = prodMap.get(DateUtils.dateToDateString(middleDate,DateUtils.yyyy_MM_dd_EN)); + resultMap.put("value", resultList.get(0).getValue()); + } + dtoTimeValueList.add(resultMap); + middleDate = DateUtils.addDays(middleDate,1); + } + } + dto.setTimeValueList(dtoTimeValueList); + dtos.add(dto); + } + return dtos; } /** @@ -1028,6 +1166,11 @@ dto.setComIndex(comIndex); }); } - + private boolean subStr(String mac){ + if(StringUtils.isNotEmpty(mac)&&mac.contains(",avg")){ + return true; + } + return false; + } } 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 8763d27..201dcdd 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 @@ -538,6 +538,15 @@ } @Override + public List getMacMonitorPointId(Integer monitorPointId) { + QueryWrapper<Device> queryWrapper = new QueryWrapper<>(); + queryWrapper.select("mac") + .eq("monitor_point_id", monitorPointId) + .eq("is_delete", Constants.NOT_DELETE); + return deviceMapper.selectObjs(queryWrapper); + } + + @Override public List getMacsByOrgIdAndRegionCode(Integer organizationId, Integer regionCode) { QueryWrapper<Device> queryWrapper = new QueryWrapper<>(); queryWrapper.select("mac") diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java index b1d5996..b88640b 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java @@ -3,6 +3,7 @@ import com.moral.api.entity.*; import com.moral.api.mapper.ServicesScopeDeviceMapper; import com.moral.api.mapper.ServicesScopeMapper; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; @@ -120,6 +121,10 @@ List<HistoryDaily> historyDailies = historyDailyMapper.selectList(wrapper); return historyDailies; } + @Override + public List<HistoryResultVo> listAvgResult(String type, List<String> macs, String startTime, String endTime) { + return historyDailyMapper.listAvgResult(type, macs, startTime, endTime); + } @Override public Map<String, Object> getThermodynamicDiagramDataByOrgIdSensorCodeTime(Map<String, Object> parameters) { 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 4dd56ea..b675bc2 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 @@ -5,6 +5,7 @@ import com.moral.api.entity.*; import com.moral.api.mapper.ServicesScopeDeviceMapper; import com.moral.api.mapper.ServicesScopeMapper; +import com.moral.api.pojo.vo.historyMonthly.HistoryResultVo; import com.moral.api.vo.HistoryHourlyVo; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -765,7 +766,17 @@ List<HistoryHourly> datas = multiTableQuery(mapParams, tableNames); return datas; } - + @Override + public List<HistoryResultVo> getAvgValueByMacAndTime(List<String> mac,String type, Date startDate, Date endDate) { + Map<String, Object> mapParams = new HashMap<>(); + mapParams.put("startTime",startDate); + mapParams.put("endTime",endDate); + mapParams.put("type",type); + mapParams.put("macs",mac); + List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH); + List<HistoryResultVo> datas = multiTableQueryAvg(mapParams, tableNames); + return datas; + } @Override public List<HistoryHourly> getValueByMacs(List<String> macs, String time) { Map<String, Object> mapParams = new HashMap<>(); @@ -859,6 +870,16 @@ return result; } + private List<HistoryResultVo> multiTableQueryAvg(Map<String, Object> params, List<String> tableNames) { + List<HistoryResultVo> result = new ArrayList<>(); + for (String tableName : tableNames) { + params.put("table",tableName); + List<HistoryResultVo> datas = historyHourlyMapper.listAvgResult(params); + result.addAll(datas); + } + return result; + } + /** * @Description: ������������������������������������������������wrapper��������������� * @Param: [wrapper, tableNames] diff --git a/screen-api/src/main/resources/mapper/HistoryDailyMapper.xml b/screen-api/src/main/resources/mapper/HistoryDailyMapper.xml index a54c78b..503f162 100644 --- a/screen-api/src/main/resources/mapper/HistoryDailyMapper.xml +++ b/screen-api/src/main/resources/mapper/HistoryDailyMapper.xml @@ -18,4 +18,17 @@ AND time <![CDATA[<=]]> #{end} </select> + <select id="listAvgResult" resultType="com.moral.api.pojo.vo.historyMonthly.HistoryResultVo"> + select DATE_FORMAT(time,'%Y-%m-%d') time,${type} + from history_daily + where date(time) <![CDATA[>=]]> #{startTime} + and date(time) <![CDATA[<=]]> #{endTime} + and mac in + <foreach collection="macs" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + group by time + order by time + </select> + </mapper> \ No newline at end of file diff --git a/screen-api/src/main/resources/mapper/HistoryHourlyMapper.xml b/screen-api/src/main/resources/mapper/HistoryHourlyMapper.xml index 1d339df..3d978ce 100644 --- a/screen-api/src/main/resources/mapper/HistoryHourlyMapper.xml +++ b/screen-api/src/main/resources/mapper/HistoryHourlyMapper.xml @@ -129,6 +129,19 @@ order by time desc </select> + <select id="listAvgResult" resultType="com.moral.api.pojo.vo.historyMonthly.HistoryResultVo"> + select DATE_FORMAT(time,'%Y-%m-%d %H') time,${type} + FROM history_hourly${table} WHERE 1 =1 and + time <![CDATA[>=]]> #{startTime} + and time <![CDATA[<=]]> #{endTime} + and mac in + <foreach collection="macs" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + group by time + order by time + </select> + <select id="HistoryMinutelyQuery" resultType="com.moral.api.entity.HistoryMinutely"> SELECT mac,time,value,version FROM history_minutely${table} WHERE 1 =1 diff --git a/screen-api/src/main/resources/mapper/HistoryMonthlyMapper.xml b/screen-api/src/main/resources/mapper/HistoryMonthlyMapper.xml index 942a9a0..4efcb36 100644 --- a/screen-api/src/main/resources/mapper/HistoryMonthlyMapper.xml +++ b/screen-api/src/main/resources/mapper/HistoryMonthlyMapper.xml @@ -9,4 +9,19 @@ <result column="value" property="value"/> </resultMap> + <select id="listAll" resultType="com.moral.api.pojo.vo.historyMonthly.HistoryResultVo"> + select DATE_FORMAT(time,'%Y-%m') time,${type} + from history_monthly + where date(time) <![CDATA[>=]]> #{startTime} + and date(time) <![CDATA[<=]]> #{endTime} + and mac in + <foreach collection="macs" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + group by time + order by time + </select> + + + </mapper> \ No newline at end of file -- Gitblit v1.8.0