From 711c69bdaddecabc8d21aa66499cc6bae6ce4e00 Mon Sep 17 00:00:00 2001
From: DYL0109 <1332079466@qq.com>
Date: 星期六, 08 二月 2025 15:58:41 +0800
Subject: [PATCH] !51 同环比分析 Merge pull request !51 from DYL0109/dyl_dev

---
 zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java |   73 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 10 deletions(-)

diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java
index 9acf65f..43cb400 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/realtimedata/RealtimeTrendController.java
@@ -5,9 +5,14 @@
 import com.zhitan.common.core.domain.AjaxResult;
 import com.zhitan.common.enums.BusinessType;
 import com.zhitan.common.utils.poi.ExcelUtil;
+import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.realtimedata.domain.TagValue;
 import com.zhitan.realtimedata.domain.dto.EnergyIndexMonitorDTO;
+import com.zhitan.realtimedata.domain.vo.EquipmentMeasuringPointParameters;
 import com.zhitan.realtimedata.domain.vo.EquipmentPointParametersExcel;
 import com.zhitan.realtimedata.domain.vo.ExportrealtimeTrendVO;
+import com.zhitan.realtimedata.service.ISvgTrendService;
+import com.zhitan.realtimedata.service.RealtimeDatabaseService;
 import com.zhitan.realtimedata.service.RealtimeTrendService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -15,14 +20,18 @@
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
- * @Description 瀹炴椂鐩戞祴鎺у埗绫�
- *
- * @Author zhoubg
- * @date 2024-10-15
+ * 瀹炴椂鐩戞祴鎺у埗绫�
  **/
 @RestController
 @RequestMapping("rtdb/realtimeTrend")
@@ -31,11 +40,13 @@
 
     @Autowired
     private RealtimeTrendService realtimeTrendService;
+    @Resource
+    private ISvgTrendService svgTrendService;
+    @Resource
+    private RealtimeDatabaseService realtimeDatabaseService;
 
     /**
      * 鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣
-     *
-     * @return
      */
     @GetMapping("/list")
     @ApiOperation(value = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣")
@@ -45,9 +56,6 @@
 
     /**
      * 鑾峰彇鍘嗗彶妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣鏁版嵁
-     * @param tagCode
-     * @param dataTime
-     * @return
      */
     @Log(title = "鑾峰彇鍘嗗彶妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣鏁版嵁", businessType = BusinessType.UPDATE)
     @GetMapping("/chartByDay")
@@ -58,7 +66,6 @@
 
     /**
      * 瀵煎嚭瀹炴椂鐩戞祴Excel淇℃伅
-     * @return
      */
     @Log(title = "瀵煎嚭瀹炴椂鐩戞祴Excel淇℃伅", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
@@ -69,4 +76,50 @@
         util.exportExcel(response,list, "瀹炴椂鐩戞祴");
     }
 
+    /**
+     * 鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣
+     */
+    @Log(title = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣", businessType = BusinessType.UPDATE)
+    @GetMapping("/svgTrendView/energyIndex/list")
+    @ApiOperation(value = "鑾峰彇妯″瀷鑺傜偣鍏宠仈閲囬泦鎸囨爣")
+    public AjaxResult getSvgTrendViewSettingIndex(EnergyIndex energyIndex) {
+        try {
+            List<EnergyIndex> infoList = svgTrendService.selectSvgList(energyIndex);
+            if (infoList == null || infoList.isEmpty()){
+                return AjaxResult.success(Collections.emptyList());
+            }
+            List<String> codeList = infoList.stream().map(EnergyIndex::getCode).collect(Collectors.toList());
+
+            List<TagValue> valList = realtimeDatabaseService.retrieve(codeList);
+            if (valList == null || valList.isEmpty()) {
+                return AjaxResult.success(Collections.emptyList());
+            }
+
+            Map<String, List<TagValue>> tagValueMap = valList.stream().collect(Collectors.groupingBy(TagValue::getTagCode));
+
+            List<EquipmentMeasuringPointParameters> resultList = infoList.stream().map(index -> {
+                EquipmentMeasuringPointParameters item = new EquipmentMeasuringPointParameters();
+                item.setCode(index.getCode());
+                item.setIndexName(index.getName());
+                item.setIndexUnit(index.getUnitId());
+                item.setMeteName(index.getMeterName());
+                item.setyValue("y0");
+
+                List<TagValue> tagValueList = tagValueMap.getOrDefault(index.getCode(), Collections.emptyList());
+                if (!tagValueList.isEmpty()){
+                    Optional<Double> sumOptional = tagValueList.stream()
+                            .map(TagValue::getValue)
+                            .reduce(Double::sum);
+                    sumOptional.ifPresent(sum -> item.setValue(BigDecimal.valueOf(sum)
+                            .setScale(2, RoundingMode.HALF_UP).doubleValue()));
+                }
+                return item;
+            }).collect(Collectors.toList());
+
+            return AjaxResult.success(resultList);
+        } catch (Exception ex) {
+            logger.error("鑾峰彇鍏宠仈閲囬泦鎸囨爣鍑洪敊锛�", ex);
+            return AjaxResult.error("鑾峰彇鍏宠仈鎸囨爣鍑洪敊!");
+        }
+    }
 }

--
Gitblit v1.9.3