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