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 | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 112 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 b4e854d..b38a543 100644 --- a/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java +++ b/src/main/java/com/fengdu/gas/service/DataUploadRecordService.java @@ -26,13 +26,16 @@ 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; import org.apache.commons.lang3.BooleanUtils; +import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -46,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; /** * 数据上报记录 @@ -67,6 +71,8 @@ private DataUploadRecordMonthMapperImpl dataUploadRecordMonthMapper; @Autowired 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 @@ -202,9 +208,33 @@ // } // return ExecutedResult.success(); // } + + /** + * mqtt收到消息 + * @param topic 主题 + * @param msg 消息内容 + */ + public void mqttReceived(String topic, String msg) { + if (StringUtil.isNullOrEmpty(topic)) { + ERROR_LOGGER.error("主题不能为空"); + return; + } + if (StringUtil.isNullOrEmpty(msg)) { + ERROR_LOGGER.error("消息不能为空"); + return; + } + if (msg.startsWith("{\"platform")) { + return; + } + //报文解析 + //添加参数报警记录 + List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); + FacilityAlarmRecordPO recordPO = new FacilityAlarmRecordPO(); + + } + public ExecutedResult<String> dataUpload(Long startTime, Long endTime, Integer type) { List<WaterFacilityPO> facilityPOList = waterFacilityMapper.getList(); - List<WaterMonitoryPointPO> pointPOList = waterMonitoryPointMapper.getList(); //获取所有设备参数 List<WaterFacilityParameterPO> parameterPOList = waterFacilityParameterMapper.getList(); @@ -212,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); //根据设备参数筛选数据集合 @@ -243,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()); @@ -271,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()); @@ -299,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