From bcf8c46e009d5d825a7bf07b9eac46fb7432418b Mon Sep 17 00:00:00 2001 From: liulin <lin.liu@88.com> Date: 星期四, 17 七月 2025 08:42:13 +0800 Subject: [PATCH] 添加首页大屏数据统计 --- src/main/java/com/fengdu/gas/service/DataUploadRecordService.java | 93 ++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 88 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java index 621cc16..b38a543 100644 --- a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java +++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java @@ -26,9 +26,11 @@ import com.fengdu.gas.common.enums.*; import com.fengdu.gas.common.model.Tuple; import com.fengdu.gas.common.util.*; +import com.fengdu.gas.entity.request.datauploadrecord.ReqGetDataUploadRecord; import com.fengdu.gas.repository.impl.*; import com.fengdu.gas.repository.mapper.DataUploadRecordHourMapper; import com.fengdu.gas.repository.po.*; +import com.fengdu.gas.repository.vo.DataUploadRecordDayVO; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; @@ -47,6 +49,7 @@ import com.fengdu.gas.entity.search.SearchDataUploadRecord; import com.fengdu.gas.repository.vo.DataUploadRecordVO; import com.fengdu.gas.service.convert.DataUploadRecordConvert; +import org.springframework.web.bind.annotation.RequestBody; /** * 数据上报记录 @@ -70,6 +73,7 @@ private WaterFacilityParameterMapperImpl waterFacilityParameterMapper; private static final Logger DEBUG_LOGGER = LoggerUtil.get(ELogger.DEBUG); private static final Logger ERROR_LOGGER = LoggerUtil.get(ELogger.SYS_ERROR); + public ExecutedResult<Long> create(ReqCreateDataUploadRecord request) { // 转换po DataUploadRecordPO item = DataUploadRecordConvert.INSTANCE.toCreate(request); @@ -204,6 +208,7 @@ // } // return ExecutedResult.success(); // } + /** * mqtt收到消息 * @param topic 主题 @@ -224,9 +229,10 @@ //报文解析 //添加参数报警记录 List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); - FacilityAlarmRecordPO recordPO=new FacilityAlarmRecordPO(); + FacilityAlarmRecordPO recordPO = new FacilityAlarmRecordPO(); } + public ExecutedResult<String> dataUpload(Long startTime, Long endTime, Integer type) { List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); //获取所有设备参数 @@ -236,7 +242,7 @@ case 1: //按小时统计插入数据 List<DataUploadRecordPO> recordPOList = mapper.getByTime(startTime, endTime); - if(ListUtil.isNotNullOrEmpty(recordPOList)){ + if (ListUtil.isNotNullOrEmpty(recordPOList)) { for (WaterFacilityParameterPO parameterPO : parameterPOList) { WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null); //根据设备参数筛选数据集合 @@ -267,7 +273,7 @@ break; case 2://按天统计插入数据 List<DataUploadRecordHourPO> hourPOList = dataUploadRecordHourMapper.getByTime(startTime, endTime); - if(ListUtil.isNotNullOrEmpty(hourPOList)){ + if (ListUtil.isNotNullOrEmpty(hourPOList)) { for (WaterFacilityParameterPO parameterPO : parameterPOList) { WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null); List<DataUploadRecordHourPO> dataList = hourPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList()); @@ -295,7 +301,7 @@ break; case 3://按月统计插入数据 List<DataUploadRecordDayPO> dayPOList = dataUploadRecordDayMapper.getByTime(startTime, endTime); - if(ListUtil.isNotNullOrEmpty(dayPOList)){ + if (ListUtil.isNotNullOrEmpty(dayPOList)) { for (WaterFacilityParameterPO parameterPO : parameterPOList) { WaterFacilityPO waterFacilityPO = facilityPOList.stream().filter(item -> item.getId().equals(parameterPO.getFacilityId())).findFirst().orElse(null); List<DataUploadRecordDayPO> dataList = dayPOList.stream().filter(item -> item.getFacilityId().equals(parameterPO.getFacilityId()) && item.getColumnsCode().equals(parameterPO.getColumnsCode())).collect(Collectors.toList()); @@ -323,11 +329,88 @@ } - } return ExecutedResult.success(); } + public ExecutedResult<List<DataUploadRecordDayVO>> getLineChart(ReqGetDataUploadRecord record) { + Long beginTime = 0L; + Long endTime = 0L; + List<DataUploadRecordDayVO> data = new ArrayList<>(); + List<DataUploadRecordDayVO> result = new ArrayList<>(); + switch (record.getDateType()) { + case 1: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.todayEndTime()).getTime(); + if (beginTime > 0 && endTime > 0) { + List<DataUploadRecordHourPO> lineChart = dataUploadRecordHourMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime); + if(ListUtil.isNotNullOrEmpty(lineChart)){ + data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class); + } + + } + break; + case 2: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.weekEndTime()).getTime(); + if (beginTime > 0 && endTime > 0) { + List<DataUploadRecordDayPO> lineChart = dataUploadRecordDayMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime); + if(ListUtil.isNotNullOrEmpty(lineChart)){ + data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class); + } + } + break; + case 3: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.monthEndTime()).getTime(); + if (beginTime > 0 && endTime > 0) { + List<DataUploadRecordMonthPO> lineChart = dataUploadRecordMonthMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime); + if(ListUtil.isNotNullOrEmpty(lineChart)){ + data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class); + } + } + break; + case 4: + beginTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearStartTime()).getTime(); + endTime = LocalDateTimeUtil.getTimeStamp(LocalDateTimeUtils.yearEndTime()).getTime(); + if (beginTime > 0 && endTime > 0) { + List<DataUploadRecordMonthPO> lineChart = dataUploadRecordMonthMapper.getLineChart(record.getPointId(), record.getColumnsCode(), beginTime, endTime); + if(ListUtil.isNotNullOrEmpty(lineChart)){ + data = CopierUtil.mapTo(lineChart, DataUploadRecordDayVO.class); + } + } + break; + } + //查询监控点下是否存在多个设备的数据,存在则计算最小、最大、平均值 + if (ListUtil.isNotNullOrEmpty(data)) { + Map<String, List<DataUploadRecordDayVO>> collect = data.stream().collect(Collectors.groupingBy(DataUploadRecordDayVO::getUploadDate)); + for (Map.Entry<String, List<DataUploadRecordDayVO>> map : collect.entrySet()) { + List<DataUploadRecordDayVO> value = map.getValue(); + DataUploadRecordDayVO dayVO = new DataUploadRecordDayVO(); + dayVO.setUploadDate(map.getKey()); + BigDecimal maxValue = BigDecimal.ZERO; + BigDecimal minValue = BigDecimal.ZERO; + BigDecimal avgValue = BigDecimal.ZERO; + if (value.size() > 1) { + maxValue = Collections.max(value, Comparator.comparing(DataUploadRecordDayVO::getMaxValue)).getMaxValue(); + minValue = Collections.min(value, Comparator.comparing(DataUploadRecordDayVO::getMinValue)).getMinValue(); + BigDecimal sum = maxValue.add(minValue); + avgValue=sum.divide(new BigDecimal(2)).setScale(2,RoundingMode.DOWN); + }else { + maxValue=value.get(0).getMaxValue(); + minValue=value.get(0).getMinValue(); + avgValue=value.get(0).getAvgValue(); + } + dayVO.setMaxValue(maxValue); + dayVO.setMinValue(minValue); + dayVO.setAvgValue(avgValue); + result.add(dayVO); + } + result.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getUploadDate()))); + } + return ExecutedResult.success(result); + } + public ExecutedResult<List<DataUploadRecordVO>> getList(List<Long> listId) { List<DataUploadRecordVO> result = new ArrayList<>(); -- Gitblit v1.9.3