From 7bdd62f0266f8caa8fbb167c8906a756f0299428 Mon Sep 17 00:00:00 2001
From: zhitan-cloud <394600+ustcyc@user.noreply.gitee.com>
Date: 星期三, 12 二月 2025 23:02:55 +0800
Subject: [PATCH] !67 !66 电能质量分析,匹配模板编码 Merge pull request !67 from zhitan-cloud/develop1.0

---
 zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java |    6 
 zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java                            |    6 
 zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java                |   21 +
 zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java                            |    9 
 zhitan-vue/src/views/deepanalysis/deepAnalysis.vue                                                               |  304 +++++++++++++++---------
 zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java                   |   13 +
 zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java                                          |   16 
 zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java                   |   30 ++
 zhitan-vue/src/api/energyAnalysis/energyAnalysis.js                                                              |   46 ++-
 zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml                                       |   22 +
 zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java   |    4 
 zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java    |    6 
 /dev/null                                                                                                        |  163 -------------
 zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java                           |   12 
 zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java                                       |    4 
 zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java                                |    8 
 zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java                                         |   12 
 zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml                                              |   17 +
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java             |    4 
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java              |    4 
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java                |    5 
 21 files changed, 355 insertions(+), 357 deletions(-)

diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java
index 4ce9a69..879ecce 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/DailyComprehensiveController.java
@@ -67,7 +67,7 @@
                 i++;
             }
             List<DailyComprehensive> list = dailyComprehensiveService.getDailyComprehensiveList(modelNode.getNodeId(),
-                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
+                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
             return AjaxResult.success(list);
         } catch (Exception ex) {
             logger.error("鑾峰彇鍑洪敊锛�", ex);
@@ -87,7 +87,7 @@
         dataItem.setBeginTime(dataItem.getDataTime());
         String endTime=aa+" 24:00:00";
         dataItem.setEndTime(sf.parse(endTime));
-        List<DailyComprehensive> list = dailyComprehensiveService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<DailyComprehensive> list = dailyComprehensiveService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
 
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java
index 8e41cf7..0a98ba3 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/MonthlyComprehensiveController.java
@@ -82,7 +82,7 @@
                 return AjaxResult.success(reportList);
             }
             List<MonthlyComprehensive> list = monthlyComprehensive.getMonthlyComprehensiveList(modelNode.getNodeId(),
-                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
+                    dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
             int count = Integer.parseInt(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2));
             list.forEach(monthlyReport -> monthlyReport.setCount(count));
             reportList.setTabledata(list);
@@ -107,7 +107,7 @@
         dataItem.setBeginTime(sf.parse(beginTime));
         String endTime=aa+"-"+Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))+" 00:00:00";
         dataItem.setEndTime(sf.parse(endTime));
-        List<MonthlyComprehensive> list = monthlyComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<MonthlyComprehensive> list = monthlyComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
     public static String getLastDayOfMonth(String yearMonth) {
@@ -171,7 +171,7 @@
                 return AjaxResult.success(reportList);
             }
             List<MonthlyComprehensive> list = monthlyComprehensive.getMonthlyComprehensiveList(modelNode.getNodeId(), dataList,
-                    dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getIndexStorageId());
+                    dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
             int count = Integer.parseInt(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2));
             list.forEach(monthlyReport -> monthlyReport.setCount(count));
             if (CollectionUtils.isNotEmpty(list)) {
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java
index fc5a46c..3f6a91b 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/comprehensivestatistics/YearComprehensiveController.java
@@ -74,7 +74,7 @@
                 i++;
             }
             List<YearComperhensive> list = yearComprehensive.getYearComprehensiveList(modelNode.getNodeId(),
-                    dataList,dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+                    dataList,dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
             return AjaxResult.success(list);
         } catch (Exception ex) {
             logger.error("鑾峰彇鍑洪敊锛�", ex);
@@ -92,7 +92,7 @@
         dataItem.setBeginTime(DateUtil.beginOfYear(dataItem.getDataTime()));
         dataItem.setEndTime(DateUtil.endOfYear(dataItem.getDataTime()));
 
-        List<YearComperhensive> list = yearComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<YearComperhensive> list = yearComprehensive.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
 
@@ -127,7 +127,7 @@
                 i++;
             }
             List<YearComperhensive> list = yearComprehensive.getYearComprehensiveList(modelNode.getNodeId(),
-                    dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+                    dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
             if(CollectionUtils.isNotEmpty(list)){
                 list.forEach(this::valueRep);
             }
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java
index b20411c..be5615e 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/energyMonitor/ElectricLoadController.java
@@ -5,6 +5,7 @@
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
 import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
+import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO;
 import com.zhitan.energyMonitor.service.IElectricLoadService;
 import com.zhitan.model.domain.EnergyIndex;
 import com.zhitan.model.service.IEnergyIndexService;
@@ -16,6 +17,8 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * @Description: 璐熻嵎鍒嗘瀽
@@ -50,7 +53,15 @@
                            @RequestParam(name = "timeCode") String timeCode) {
         EnergyIndex energyIndex = energyIndexService.getDeviceIndexByCode(nodeId, meterId, CommonConst.TAG_CODE_ZYGGL);
 
-        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex);
+        ListElectricLoadVO vo = electricLoadService.list(timeType, timeCode, energyIndex, meterId);
+        return AjaxResult.success(vo);
+    }
+
+    @Log(title = "鑾峰彇鑺傜偣涓嬫墍鏈夌數琛�")
+    @ApiOperation(value = "鑾峰彇鑺傜偣涓嬫墍鏈夌數琛�", notes = "鑾峰彇鑺傜偣涓嬫墍鏈夌數琛�")
+    @GetMapping(value = "/listElectricMeter")
+    public AjaxResult listElectricMeter(@RequestParam(name = "nodeId") String nodeId) {
+        List<ListElectricityMeterVO> vo = electricLoadService.listElectricMeter(nodeId);
         return AjaxResult.success(vo);
     }
 
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java
index aa80c65..07dbc79 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java
@@ -75,7 +75,7 @@
             i++;
         };
         startPage();
-        List<DailyKeyEquipment> list = dailykeyEquipment.getdailyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<DailyKeyEquipment> list = dailykeyEquipment.getdailyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return getDataTable(list);
     }
 
@@ -88,7 +88,7 @@
         dataItem.setBeginTime(dataItem.getDataTime());
         String endTime=aa+" 24:00:00";
         dataItem.setEndTime(sf.parse(endTime));
-        List<DailyKeyEquipment> list = dailykeyEquipment.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<DailyKeyEquipment> list = dailykeyEquipment.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
     /*鎵�鏈夎澶�*/
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java
index da8f636..7cb93ba 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java
@@ -84,7 +84,7 @@
             List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
 
             startPage();
-            List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getMonthlyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+            List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getMonthlyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
             int count=Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2));
             list.forEach(monthlyReport -> monthlyReport.setCount(count));
             reportList.setTabledata(list);
@@ -107,7 +107,7 @@
         dataItem.setBeginTime(sf.parse(beginTime));
         String endTime=aa+"-"+Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))+" 00:00:00";
         dataItem.setEndTime(sf.parse(endTime));
-        List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
     public static String getLastDayOfMonth(String yearMonth) {
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java
index 8f0c4c5..4b1b56b 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java
@@ -4,7 +4,6 @@
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
 import com.zhitan.common.core.page.TableDataInfo;
-import com.zhitan.comprehensivestatistics.domain.YearComperhensive;
 import com.zhitan.keyequipment.domain.YearKeyEquipment;
 import com.zhitan.keyequipment.service.IYearKeyEquipmentService;
 import com.zhitan.model.domain.EnergyIndex;
@@ -77,7 +76,7 @@
             i++;
         }
         startPage();
-        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return getDataTable(list);
     }
 
@@ -85,7 +84,7 @@
     @ApiOperation(value = "閲嶇偣璁惧鑳借�楃粺璁★紙骞达級鍥捐〃")
     public AjaxResult listChart(DataItem dataItem){
 
-        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getIndexStorageId());
+        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
         return AjaxResult.success(list);
     }
 }
diff --git a/zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java b/zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
index c328731..73fea42 100644
--- a/zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
+++ b/zhitan-common/src/main/java/com/zhitan/common/constant/CommonConst.java
@@ -867,7 +867,7 @@
     /**
      * 鎬绘湁鍔熷姛鐜囩偣浣嶆ā鏉縞ode
      */
-    public static final String TAG_CODE_ZYGGL = "\\_ActivePower_Total";
+    public static final String TAG_CODE_ZYGGL = "ActivePow";
     /**
      * 鎬绘湁鍔熷姛鐜囩偣浣嶆ā鏉縞ode
      */
@@ -887,7 +887,7 @@
     /**
      * 鎬诲姛鐜囧洜鏁� 鐐逛綅妯℃澘code
      */
-    public static final String TAG_CODE_GLYS = "PowerFactor_Total";
+    public static final String TAG_CODE_GLYS = "PowFactorT";
     /**
      * 鐢垫祦
      */
@@ -935,27 +935,27 @@
     /**
      * A鐩哥數娴�
      */
-    public static final String TAG_CODE_CURRENT_A = "Current_A";
+    public static final String TAG_CODE_CURRENT_A = "CurrentA";
     /**
      * B鐩哥數娴�
      */
-    public static final String TAG_CODE_CURRENT_B = "Current_B";
+    public static final String TAG_CODE_CURRENT_B = "CurrentB";
     /**
      * C鐩哥數娴�
      */
-    public static final String TAG_CODE_CURRENT_C = "Current_C";
+    public static final String TAG_CODE_CURRENT_C = "CurrentC";
     /**
      * A鐩哥數鍘�
      */
-    public static final String TAG_CODE_VOLTAGE_A = "Voltage_A";
+    public static final String TAG_CODE_VOLTAGE_A = "VoltageA";
     /**
      * B鐩哥數鍘�
      */
-    public static final String TAG_CODE_VOLTAGE_B = "Voltage_B";
+    public static final String TAG_CODE_VOLTAGE_B = "VoltageB";
     /**
      * C鐩哥數鍘�
      */
-    public static final String TAG_CODE_VOLTAGE_C = "Voltage_C";
+    public static final String TAG_CODE_VOLTAGE_C = "VoltageC";
     /**
      * A鐩稿姛鐜囧洜鏁�
      */
diff --git a/zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java b/zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java
index b744816..ae25bae 100644
--- a/zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/basicdata/mapper/MeterImplementMapper.java
@@ -88,4 +88,12 @@
     MeterImplement selectByNodeIdIndexId(@Param("nodeId") String nodeId, @Param("indexId") String indexId);
 
     List<MeterImplement> listMeterImplByInstallLocation(@Param("installactionLocation") String installactionLocation);
+
+    /**
+     * 鏍规嵁鑺傜偣id鏌ヨ璁¢噺鍣ㄥ叿淇℃伅
+     *
+     * @param nodeId
+     * @return
+     */
+    List<MeterImplement> selectByNodeId(@Param("nodeId") String nodeId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java
index 27fb12a..2256b65 100644
--- a/zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/dataitem/service/impl/DataItemServiceImpl.java
@@ -158,18 +158,13 @@
         if(ObjectUtils.isEmpty(modelNodes)){
             throw new RuntimeException("鏈煡璇㈠埌妯″瀷淇℃伅");
         }
-        Optional<ModelNode> modelNodeInfo = modelNodes.stream().findFirst();
-        String nodeId = modelNodeInfo.map(ModelNode::getNodeId).toString();
+        ModelNode modelNode = modelNodes.stream().findFirst().get();
+        String nodeId = modelNode.getNodeId();
         dto.setNodeId(nodeId);
         String energyType = dto.getEnergyType();
         LocalDate queryTime = dto.getQueryTime();
         TimeType timeType = dto.getTimeType();
 
-        // 鑾峰彇鑺傜偣淇℃伅
-        ModelNode modelNode = modelNodeMapper.selectModelNodeById(nodeId);
-        if (ObjectUtils.isEmpty(modelNode)) {
-            return flowChartsVO;
-        }
         // 鑾峰彇鏌ヨ鏃堕棿
         Map<String, LocalDateTime> dateTimeMap = getDataItemByIndexId(timeType, queryTime);
 
diff --git a/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java b/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java
index f3c4448..cfc6098 100644
--- a/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java
+++ b/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/IElectricLoadService.java
@@ -1,7 +1,10 @@
 package com.zhitan.energyMonitor.service;
 
 import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
+import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO;
 import com.zhitan.model.domain.EnergyIndex;
+
+import java.util.List;
 
 /**
  * @Description:
@@ -14,5 +17,12 @@
     /**
      * 鑾峰彇璐熻嵎鍒嗘瀽鏁版嵁
      */
-    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex);
+    ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, String meterId);
+
+    /**
+     * 鑾峰彇鑺傜偣涓嬫墍鏈夌數琛�
+     * @param nodeId
+     * @return
+     */
+    List<ListElectricityMeterVO> listElectricMeter(String nodeId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java
index a01fd03..2e47b66 100644
--- a/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/energyMonitor/service/impl/ElectricLoadServiceImpl.java
@@ -14,7 +14,9 @@
 import com.zhitan.energyMonitor.domain.vo.ListElectricLoadDetail;
 import com.zhitan.energyMonitor.domain.vo.ListElectricLoadItem;
 import com.zhitan.energyMonitor.domain.vo.ListElectricLoadVO;
+import com.zhitan.energyMonitor.domain.vo.ListElectricityMeterVO;
 import com.zhitan.energyMonitor.service.IElectricLoadService;
+import com.zhitan.knowledgeBase.domain.enums.EnergyTypeEnum;
 import com.zhitan.model.domain.EnergyIndex;
 import com.zhitan.realtimedata.domain.TagValue;
 import com.zhitan.realtimedata.service.RealtimeDatabaseService;
@@ -28,6 +30,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @Description: sensor_alarm_item
@@ -43,7 +46,7 @@
     private MeterImplementMapper meterImplementMapper;
 
     @Override
-    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex) {
+    public ListElectricLoadVO list(String timeType, String timeCode, EnergyIndex energyIndex, String meterId) {
         ListElectricLoadVO vo = new ListElectricLoadVO();
         List<ListElectricLoadItem> itemList = new ArrayList<>();
         vo.setItemList(itemList);
@@ -56,7 +59,7 @@
         detail.setRate(CommonConst.DOUBLE_MINUS_SIGN);
         vo.setDetail(detail);
 
-        MeterImplement meterImplement = meterImplementMapper.selectById(energyIndex.getMeterId());
+        MeterImplement meterImplement = meterImplementMapper.selectById(meterId);
 
         if (ObjectUtil.isEmpty(meterImplement)) {
             return vo;
@@ -124,6 +127,7 @@
         List<TagValue> minList = new ArrayList<>();
         List<TagValue> avgList = new ArrayList<>();
         if (TimeTypeConst.TIME_TYPE_DAY.equals(timeType)) {
+
         } else {
             String tempTimeCode = StringUtil.ifEmptyOrNullReturnValue(timeCode).replace(CommonConst.SINGLE_MINUS_SIGN, CommonConst.EMPTY);
             Date start = DateTimeUtil.toDateTime(tempTimeCode, DateTimeUtil.COMMON_PATTERN_MONTH);
@@ -230,13 +234,13 @@
                 TagValue rt3 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.max);
                 TagValue rt4 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.min);
                 TagValue rt2 = realtimeDatabaseService.statistics(code, date, endTime, CollectionModes.mean);
-                if (ObjectUtils.isNotEmpty(rt2.getValue())) {
+                if (ObjectUtils.isNotEmpty(rt2)) {
                     temp.setAvg(String.valueOf(DoubleUtil.formatDouble(rt2.getValue())));
                 }
-                if (ObjectUtils.isNotEmpty(rt3.getValue())) {
+                if (ObjectUtils.isNotEmpty(rt3)) {
                     temp.setMax(String.valueOf(DoubleUtil.formatDouble(rt3.getValue())));
                 }
-                if (ObjectUtils.isNotEmpty(rt4.getValue())) {
+                if (ObjectUtils.isNotEmpty(rt4)) {
                     temp.setMin(String.valueOf(DoubleUtil.formatDouble(rt4.getValue())));
                 }
             }
@@ -255,4 +259,20 @@
     }
 
 
+    /**
+     * 鑾峰彇鐢佃〃鍒楄〃
+     */
+    @Override
+    public List<ListElectricityMeterVO> listElectricMeter(String nodeId) {
+        List<MeterImplement> meterImplements = meterImplementMapper.selectByNodeId(nodeId);
+        meterImplements = meterImplements.stream().filter(x -> "electric".equals(x.getEnergyType())).collect(Collectors.toList());
+        List<ListElectricityMeterVO> list = new ArrayList<>();
+        for (MeterImplement meterImplement : meterImplements) {
+            ListElectricityMeterVO vo = new ListElectricityMeterVO();
+            vo.setCode(meterImplement.getId());
+            vo.setLabel(meterImplement.getMeterName());
+            list.add(vo);
+        }
+        return list;
+    }
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
index 3c4928a..3c02acc 100644
--- a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
@@ -99,5 +99,7 @@
 
   Page<EnergyIndex> selectEnergyIndexPage(@Param("page")Page<?> page, @Param("query") EnergyIndexQuery energyIndexQuery);
 
-    List<EnergyIndex> getIndexByCode(@Param("code")String code, @Param("nodeId")String nodeId);
+  List<EnergyIndex> getIndexByCode(@Param("code")String code, @Param("nodeId")String nodeId);
+
+  List<EnergyIndex> getIndexByMeterIdIndexCode(@Param("meterId") String meterId, @Param("indexCode") String indexCode, @Param("nodeId") String nodeId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
index aa5f76f..16d8a62 100644
--- a/zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/model/service/impl/EnergyIndexServiceImpl.java
@@ -345,10 +345,8 @@
      * @return
      */
     public List<EnergyIndex> listDeviceIndexByCode(String nodeId, String meterId, String indexCode) {
-        return energyIndexMapper.selectList(Wrappers.<EnergyIndex>lambdaQuery()
-                .eq(EnergyIndex::getNodeId, nodeId)
-                .eq(EnergyIndex::getMeterId, meterId)
-                .like(EnergyIndex::getCode, indexCode));
+        List<EnergyIndex> energyIndexList = energyIndexMapper.getIndexByMeterIdIndexCode(meterId,indexCode,nodeId);
+        return energyIndexList;
     }
 
     /**
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java
deleted file mode 100644
index f3914ff..0000000
--- a/zhitan-system/src/main/java/com/zhitan/realtimedata/data/RealtimeDatabaseManager.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.zhitan.realtimedata.data;
-
-import com.influxdb.client.InfluxDBClient;
-import com.influxdb.client.InfluxDBClientFactory;
-import com.influxdb.client.domain.HealthCheck;
-import com.zhitan.common.enums.CollectionModes;
-import com.zhitan.common.enums.RetrievalModes;
-import com.zhitan.realtimedata.config.RtdbConfig;
-import com.zhitan.realtimedata.domain.TagValue;
-import com.zhitan.realtimedata.service.RealtimeDatabase;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
-
-/**
- * @author 鑼冩柊瀵� 瀹炴椂鏁版嵁搴撹闂鐞�.
- */
-@Component
-public class RealtimeDatabaseManager {
-
-    private final RealtimeDatabase connection;
-
-    private final Logger logger = LogManager.getLogger(RealtimeDatabaseManager.class);
-
-    public RealtimeDatabaseManager(RtdbConfig config) {
-    connection = new VirtualRtdb();
-        try {
-            InfluxDBClient influxDBClient = InfluxDBClientFactory.create(config.getHost(),
-                    config.getToken().toCharArray(), config.getOrg(), config.getBucket());
-
-            logger.error("--------------------瀹炴椂搴撹繛鎺ユ垚鍔�--------------------");
-            HealthCheck health = influxDBClient.health();
-            if (health.getStatus() == HealthCheck.StatusEnum.FAIL) {
-                influxDBClient.close();
-            }
-        } catch (Exception e) {
-            logger.error(e);
-        }
-    }
-
-    public TagValue retrieve(String tagCode) {
-        List<String> tagCodes = new ArrayList<>();
-        tagCodes.add(tagCode);
-        List<TagValue> tagValues = retrieve(tagCodes);
-        if (!tagValues.isEmpty()) {
-            return tagValues.get(0);
-        }
-
-        return null;
-    }
-
-    public List<TagValue> retrieve(List<String> tagCodes) {
-        List<TagValue> tagValues = new ArrayList<>();
-        try {
-            tagValues = connection.retrieve(tagCodes);
-        } catch (Exception e) {
-            logger.error(e);
-        }
-
-        return tagValues;
-    }
-
-    public TagValue retrieve(String tagCode, Date dataTime, String timeCode) {
-        List<String> tagCodes = new ArrayList<>();
-        tagCodes.add(tagCode);
-        List<TagValue> tagValues = retrieve(tagCodes, dataTime, timeCode);
-        if (!tagValues.isEmpty()) {
-            return tagValues.get(0);
-        }
-
-        return null;
-    }
-
-    public List<TagValue> retrieve(List<String> tagCodes, Date dataTime, String timeCode) {
-        List<TagValue> tagValues = new ArrayList<>();
-        try {
-            List<TagValue> tmp = connection.retrieve(tagCodes, dataTime, timeCode);
-            for (String tagCode : tagCodes) {
-                Optional<TagValue> tagValue = tmp.stream()
-                        .filter(f -> StringUtils.equalsIgnoreCase(f.getTagCode(), tagCode)).findAny();
-                TagValue value;
-                if (!tagValue.isPresent()) {
-                    value = new TagValue();
-                    value.setTagCode(tagCode);
-                    value.setDataTime(dataTime);
-                } else {
-                    value = tagValue.get();
-                }
-
-                tagValues.add(value);
-            }
-        } catch (Exception e1) {
-            logger.error(e1);
-        }
-
-        return tagValues;
-    }
-
-    public List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
-                                   RetrievalModes retrievalModes, int pointCount) {
-        List<String> tagCodes = new ArrayList<>();
-        tagCodes.add(tagCode);
-        return retrieve(tagCodes, beginTime, endTime, retrievalModes, pointCount);
-    }
-
-    public List<TagValue> retrieve(List<String> tagCodes, Date beginTime, Date endTime,
-                                   RetrievalModes retrievalModes, int pointCount) {
-        List<TagValue> tagValues = new ArrayList<>();
-        try {
-            tagValues = connection.retrieve(tagCodes, beginTime, endTime, retrievalModes, pointCount);
-        } catch (Exception e1) {
-            logger.error(e1);
-        }
-
-        return tagValues;
-    }
-
-    public TagValue statistics(String tagCode, Date beginTime, Date endTime,
-                               CollectionModes collectionModes) {
-        List<String> tagCodes = new ArrayList<>();
-        tagCodes.add(tagCode);
-        List<TagValue> tagValues = statistics(tagCodes, beginTime, endTime, collectionModes);
-        if (!tagValues.isEmpty()) {
-            return tagValues.get(0);
-        }
-
-        return null;
-    }
-
-    public List<TagValue> statistics(List<String> tagCodes, Date beginTime, Date endTime,
-                                     CollectionModes collectionModes) {
-        List<TagValue> tagValues = new ArrayList<>();
-        try {
-            tagValues = connection.statistics(tagCodes, beginTime, endTime, collectionModes);
-        } catch (Exception e1) {
-            logger.error(e1);
-        }
-
-        return tagValues;
-    }
-
-    public void storeData(List<TagValue> tagValues) {
-        try {
-            connection.storeData(tagValues);
-        } catch (Exception e1) {
-            logger.error(e1);
-        }
-    }
-
-    public void insertData(List<TagValue> tagValues) {
-        try {
-            connection.insertData(tagValues);
-        } catch (Exception e1) {
-            logger.error(e1);
-        }
-    }
-}
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java
index e5127f0..08eac67 100644
--- a/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java
@@ -17,8 +17,8 @@
 
   @ApiModelProperty(value = "鎸囨爣id")
   private String indexId;
-  @ApiModelProperty(value = "鎸囨爣搴搃d")
-  private String indexStorageId;
+  @ApiModelProperty(value = "鑳芥簮鍝佺")
+  private String energyType;
   @ApiModelProperty(value = "鎸囨爣code")
   private String indexCode;
   @ApiModelProperty(value = "鎸囨爣鍚嶇О")
@@ -54,12 +54,12 @@
     this.indexId = indexId;
   }
 
-  public String getIndexStorageId() {
-    return indexStorageId;
+  public String getEnergyType() {
+    return energyType;
   }
 
-  public void setIndexStorageId(String indexStorageId) {
-    this.indexStorageId = indexStorageId;
+  public void setEnergyType(String energyType) {
+    this.energyType = energyType;
   }
 
   public String getIndexCode() {
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
index 9e16113..796fa5f 100644
--- a/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/service/impl/RealtimeDatabaseServiceImpl.java
@@ -6,11 +6,12 @@
 import com.zhitan.common.enums.CollectionModes;
 import com.zhitan.common.enums.GroupTimeType;
 import com.zhitan.common.enums.RetrievalModes;
-import com.zhitan.realtimedata.data.RealtimeDatabaseManager;
 import com.zhitan.realtimedata.data.influxdb.InfluxDBRepository;
 import com.zhitan.realtimedata.domain.TagValue;
 import com.zhitan.realtimedata.service.RealtimeDatabaseService;
 import org.apache.commons.collections4.CollectionUtils;
+import org.joda.time.DateTime;
+import org.joda.time.Seconds;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -23,11 +24,10 @@
 
     private final InfluxDBRepository repository;
 
-    private final RealtimeDatabaseManager realtimeDatabaseManager;
 
-    public RealtimeDatabaseServiceImpl(InfluxDBRepository repository, RealtimeDatabaseManager realtimeDatabaseManager) {
+    public RealtimeDatabaseServiceImpl(InfluxDBRepository repository
+    ) {
         this.repository = repository;
-        this.realtimeDatabaseManager = realtimeDatabaseManager;
     }
 
     /**
@@ -115,7 +115,7 @@
     @Override
     public TagValue statistics(String tagCode, Date beginTime, Date endTime, CollectionModes collectionModes) {
         List<TagValue> tagValues = repository.statistics(Collections.singletonList(tagCode), beginTime, endTime, collectionModes);
-        return CollectionUtils.isEmpty(tagValues) ? tagValues.get(0) : null;
+        return CollectionUtils.isNotEmpty(tagValues) ? tagValues.get(0) : null;
     }
 
     /**
@@ -169,6 +169,15 @@
     @Override
     public List<TagValue> retrieve(String tagCode, Date beginTime, Date endTime,
                                    RetrievalModes retrievalModes, int pointCount) {
-        return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
+        repository.getHistoryData(Collections.singletonList(tagCode), beginTime, endTime, pointCount);
+        pointCount = retrievalModes == RetrievalModes.Full ? 200 : pointCount;
+        int span =
+                Seconds.secondsBetween(new DateTime(beginTime), new DateTime(endTime)).getSeconds();
+        int interval = span / pointCount;
+        List<String> tagCodes = new ArrayList<>();
+        tagCodes.add(tagCode);
+        List<TagValue> historyData = repository.getHistoryData(tagCodes, beginTime, endTime, interval);
+        return historyData;
+//        return realtimeDatabaseManager.retrieve(tagCode, beginTime, endTime, retrievalModes, pointCount);
     }
 }
diff --git a/zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml b/zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml
index 9635b86..da977d8 100644
--- a/zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/basicdata/MeterImplementMapper.xml
@@ -4,7 +4,7 @@
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhitan.basicdata.mapper.MeterImplementMapper">
 
-    <resultMap type="MeterImplement" id="MeterImplementResult">
+    <resultMap type="com.zhitan.basicdata.domain.MeterImplement" id="MeterImplementResult">
         <result property="id"    column="id"    />
         <result property="code"    column="code"    />
         <result property="meterName"    column="meter_name"    />
@@ -31,7 +31,7 @@
         <result property="gatewayId"    column="gateway_id"    />
         <result property="gatewayName"    column="gateway_name"    />
     </resultMap>
-    <resultMap type="MeterImplementExcel" id="MeterImplementResultExcel">
+    <resultMap type="com.zhitan.basicdata.domain.MeterImplementExcel" id="MeterImplementResultExcel">
         <result property="id"    column="id"    />
         <result property="code"    column="code"    />
         <result property="meterName"    column="meter_name"    />
@@ -59,7 +59,7 @@
         select id,energy_type, code, meter_name, meter_type, model_number, measure_range, manufacturer, person_charge, installaction_location, start_time, check_cycle, reminder_cycle, meter_status, del_flage, remark, putrun_time,create_time, create_by, update_time, update_by,(start_time+check_cycle-reminder_cycle)&lt;=current_date as txflage,wire_diameter,max_allowable_power,gateway_id,gateway_name from meter_implement
     </sql>
 
-    <select id="selectMeterImplementList" parameterType="MeterImplement" resultMap="MeterImplementResult">
+    <select id="selectMeterImplementList" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResult">
         <include refid="selectMeterImplementVo"/>
         <where>
             del_flage='N'
@@ -73,7 +73,7 @@
         order by code
     </select>
 
-    <select id="exectMeterImplementList" parameterType="MeterImplement" resultMap="MeterImplementResultExcel">
+    <select id="exectMeterImplementList" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResultExcel">
         select id,energy_type, code, meter_name, fun_getDiceData('sys_device_type',meter_status) as meter_type, model_number, measure_range, manufacturer,
         person_charge, installaction_location, to_char(start_time,'YYYY-MM-DD') start_time, check_cycle, reminder_cycle, fun_getDiceData('meter_status',meter_status) as meter_status,
         del_flage, remark, create_time, create_by, update_time, update_by,wire_diameter,max_allowable_power,gateway_name
@@ -95,7 +95,7 @@
         where id = #{id}
     </select>
 
-    <select id="selectMeterImplementByCode" parameterType="MeterImplement" resultMap="MeterImplementResult">
+    <select id="selectMeterImplementByCode" parameterType="com.zhitan.basicdata.domain.MeterImplement" resultMap="MeterImplementResult">
         <include refid="selectMeterImplementVo"/>
         where code = #{code}
         <if test="id != null  and id != ''"> and id != #{id} or id is null</if>
@@ -133,8 +133,16 @@
             installaction_location = #{installactionLocation}
         </where>
     </select>
+    <select id="selectByNodeId" resultType="com.zhitan.basicdata.domain.MeterImplement">
+        <include refid="selectMeterImplementVo"/>
+        mi
+        left join node_device nd on mi.id = nd.device_id
+        where
+            mi.del_flage = 'N'
+            AND nd.node_id = #{nodeId}
+    </select>
 
-    <insert id="insertMeterImplement" parameterType="MeterImplement">
+    <insert id="insertMeterImplement" parameterType="com.zhitan.basicdata.domain.MeterImplement">
         insert into meter_implement
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="id != null  and id != ''">id,</if>
@@ -192,7 +200,7 @@
          </trim>
     </insert>
 
-    <update id="updateMeterImplement" parameterType="MeterImplement">
+    <update id="updateMeterImplement" parameterType="com.zhitan.basicdata.domain.MeterImplement">
         update meter_implement
         <trim prefix="SET" suffixOverrides=",">
             <if test="code != null  and code != ''">code = #{code},</if>
diff --git a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
index 3ea43ac..78d0144 100644
--- a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
@@ -391,4 +391,21 @@
         </if>
     </where>
   </select>
+  <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex">
+    SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
+    LEFT JOIN node_device nd on ei.meter_id =  nd.device_id
+    LEFT JOIN meter_implement  mi on mi."id" = nd.device_id
+    <where>
+        <if test="nodeId != null  and nodeId != ''">and nd.node_id  = #{nodeId}</if>
+        <if test="indexCode != null  and indexCode != ''">
+          and (mi.meter_name like concat('%', #{indexCode}, '%')
+          or ei.code like concat('%', #{indexCode}, '%')
+          or ei.name like concat('%', #{indexCode}, '%')
+          )
+        </if>
+        <if test="meterId != null  and meterId != ''">
+          and ei.meter_id = #{meterId}
+        </if>
+    </where>
+  </select>
 </mapper>
diff --git a/zhitan-vue/src/api/energyAnalysis/energyAnalysis.js b/zhitan-vue/src/api/energyAnalysis/energyAnalysis.js
index 510703c..cbb5712 100644
--- a/zhitan-vue/src/api/energyAnalysis/energyAnalysis.js
+++ b/zhitan-vue/src/api/energyAnalysis/energyAnalysis.js
@@ -1,54 +1,62 @@
-import request from '@/utils/request'
+import request from "@/utils/request"
 
 // 鑳借�楀姣斿垎鏋�-鍖哄煙鑳借�楀垎鏋�-鑳借�楄秼鍔�/鍖哄煙鑳借�楃粺璁″垎鏋愯〃-鍒楄〃
 // 鑳借�楀姣斿垎鏋�-绉戝鑳借�楀垎鏋�-鑳借�楄秼鍔�/鑳借�楃粺璁″垎鏋愯〃-鍒楄〃
 // 鑳借�楀姣斿垎鏋�-璁惧鑳借�楀垎鏋�-鑳借�楄秼鍔�/鑳借�楃粺璁″垎鏋愯〃-鍒楄〃
 export function listRegion(query) {
   return request({
-    url: '/consumptionanalysis/getByArea',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getByArea",
+    method: "get",
+    params: query,
   })
 }
 // 鑳借�楀姣斿垎鏋�-绉戝鑳借�楀垎鏋�-鑳借�楁帓鍚�-鍒楄〃
 // 鑳借�楀姣斿垎鏋�-璁惧鑳借�楀垎鏋�-鑳借�楁帓鍚�-鍒楄〃
 export function listDepartment(query) {
   return request({
-    url: '/consumptionanalysis/getByDepartment',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getByDepartment",
+    method: "get",
+    params: query,
   })
 }
 // 鑳借�楀姣斿垎鏋�-鑳借�楁寚鏍囪�冩牳-鑳借�楄秼鍔�/鍖哄煙鑳借�楃粺璁″垎鏋愯〃
 export function listIndicatorassessment(query) {
   return request({
-    url: '/consumptionanalysis/getPlanAndProdCount',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getPlanAndProdCount",
+    method: "get",
+    params: query,
   })
 }
 // 鑳借�楀姣斿垎鏋�-缁煎悎鑳借�楀垎鏋�-缁煎悎鑳借�楄秼鍔�/鍚勪粙璐ㄨ兘鑰楀崰姣�/鍖哄煙鑳借�楃粺璁″垎鏋愯〃-鍒楄〃
 export function listComprehensive(query) {
   return request({
-    url: '/consumptionanalysis/getComprehensiveEnergy',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getComprehensiveEnergy",
+    method: "get",
+    params: query,
   })
 }
 // 鑳借�楀姣斿垎鏋�-缁煎悎鑳借�楀垎鏋�-鑳借�楀悓姣旂幆姣�-鍒楄〃
 export function listYoY(query) {
   return request({
-    url: '/consumptionanalysis/getYOY',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getYOY",
+    method: "get",
+    params: query,
   })
 }
 // 鑳借�楀姣斿垎鏋�-缁煎悎鑳借�楀垎鏋�-鐢ㄨ兘鍗曞厓鑳借�楁帓鍚�-鍒楄〃
 export function listEnergyRanking(query) {
   return request({
-    url: '/consumptionanalysis/getEnergyRanking',
-    method: 'get',
-    params: query
+    url: "/consumptionanalysis/getEnergyRanking",
+    method: "get",
+    params: query,
   })
 }
 
+// statisticsAnalysis/getFlowCharts
+export function getFlowCharts(query) {
+  return request({
+    url: "/statisticsAnalysis/getFlowCharts",
+    method: "get",
+    params: query,
+  })
+}
diff --git a/zhitan-vue/src/views/deepanalysis/deepAnalysis.vue b/zhitan-vue/src/views/deepanalysis/deepAnalysis.vue
index 11e5ea0..c4b13c4 100644
--- a/zhitan-vue/src/views/deepanalysis/deepAnalysis.vue
+++ b/zhitan-vue/src/views/deepanalysis/deepAnalysis.vue
@@ -4,19 +4,28 @@
       <el-form :model="form" ref="queryRef" :inline="true" label-width="80px">
         <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
           <el-select v-model="form.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
-            <el-option :label="item.enername" :value="item.enersno" v-for="item in energyTypeList"
-              :key="item.enersno" />
+            <el-option
+              :label="item.enername"
+              :value="item.enersno"
+              v-for="item in energyTypeList"
+              :key="item.enersno"
+            />
           </el-select>
         </el-form-item>
-        <el-form-item label="鏈熼棿" prop="timeType" >
+        <el-form-item label="鏈熼棿" prop="timeType">
           <el-select v-model="form.timeType" placeholder="鏈熼棿" clearable style="width: 120px" @change="handleTimeType">
             <el-option v-for="dict in period" :key="dict.value" :label="dict.label" :value="dict.value" />
           </el-select>
         </el-form-item>
         <el-form-item label="鏃堕棿閫夋嫨" prop="dataTime">
-          <el-date-picker v-if="form.type == 1" v-model="form.dataTime" type="year" />
-          <el-date-picker v-else-if="form.type == 2" v-model="form.dataTime" type="month" format="YYYY-MM"
-            value-format="YYYY-MM" />
+          <el-date-picker v-if="form.timeType == 'YEAR'" v-model="form.dataTime" type="year" />
+          <el-date-picker
+            v-else-if="form.timeType == 'MONTH'"
+            v-model="form.dataTime"
+            type="month"
+            format="YYYY-MM"
+            value-format="YYYY-MM"
+          />
           <el-date-picker v-else v-model="form.dataTime" type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" />
         </el-form-item>
         <el-form-item>
@@ -46,178 +55,245 @@
   </div>
 </template>
 <script setup>
-import useSettingsStore from '@/store/modules/settings'
-import { listEnergyTypeList } from "@/api/modelConfiguration/energyType";
+import useSettingsStore from "@/store/modules/settings"
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import { getFlowCharts } from "@/api/energyAnalysis/energyAnalysis"
 const settingsStore = useSettingsStore()
-import * as echarts from 'echarts';
+import * as echarts from "echarts"
 let { proxy } = getCurrentInstance()
-import { onMounted } from 'vue';
-const { period } = proxy.useDict("period");
+import { nextTick, onMounted } from "vue"
+const { period } = proxy.useDict("period")
+console.log(period)
 let form = ref({
   energyType: null,
   timeType: null,
   dataTime: null,
 })
 function handleTimeType(e) {
-  form.value.timeType = e;
-  form.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD");
+  form.value.timeType = e
+  form.value.dataTime = proxy.dayjs(new Date()).format("YYYY-MM-DD")
+  getData()
 }
-const energyTypeList = ref();
+const energyTypeList = ref()
 function getEnergyTypeList() {
   listEnergyTypeList().then((res) => {
-    energyTypeList.value = res.data;
+    energyTypeList.value = res.data
     form.value.energyType = energyTypeList.value[0].enersno
-    handleTimeType(period.value[0].value);
-  });
+    handleTimeType(period.value[0].value)
+  })
 }
-getEnergyTypeList()
 
 function handleSelect(e) {
   console.log(e, form.value.type)
   if (form.value.type == 1) {
-    form.value.time = proxy.dayjs().format('YYYY')
+    form.value.time = proxy.dayjs().format("YYYY")
   } else if (form.value.type == 2) {
-    form.value.time = proxy.dayjs().format('YYYY-MM')
+    form.value.time = proxy.dayjs().format("YYYY-MM")
   } else {
-    form.value.time = proxy.dayjs().format('YYYY-MM-DD')
+    form.value.time = proxy.dayjs().format("YYYY-MM-DD")
   }
 }
-function handleQuery() { }
+function handleQuery() {
+  getData()
+}
 
 function resetQuery() {
   form.value = {
     type: 1,
-    time: proxy.dayjs().format('YYYY'),
+    time: proxy.dayjs().format("YYYY"),
   }
 }
 
-import icon1 from '@/assets/images/period/icon1.png'
-import icon2 from '@/assets/images/period/icon2.png'
-import icon3 from '@/assets/images/period/icon3.png'
-import icon4 from '@/assets/images/period/icon4.png'
-import icon5 from '@/assets/images/period/icon5.png'
+import icon1 from "@/assets/images/period/icon1.png"
+import icon2 from "@/assets/images/period/icon2.png"
+import icon3 from "@/assets/images/period/icon3.png"
+import icon4 from "@/assets/images/period/icon4.png"
+import icon5 from "@/assets/images/period/icon5.png"
 const periodList = ref([
   {
     icon: icon1,
     color: "#3371eb",
     title: "绱鑳借��",
-    data: '1000.1 m鲁'
+    data: "1000.1 m鲁",
   },
   {
     icon: icon3,
     color: "#ff6200",
     title: "鍒嗚〃鑳借��",
-    data: ' 0 m鲁'
+    data: " 0 m鲁",
   },
   {
     icon: icon4,
     color: "#ffce0c",
     title: "鎹熷け閲�",
-    data: '1000.1 m鲁'
+    data: "1000.1 m鲁",
   },
   {
     icon: icon5,
     color: "#78e801",
     title: "鎹熷け姣斾緥",
-    data: '100.00%'
+    data: "100.00%",
   },
 ])
 
-watch(() => settingsStore.sideTheme, (val) => {
-  getChart()
-})
+const flowData = ref({})
+function getData() {
+  getFlowCharts({
+    energyType: form.value.energyType,
+    nodeId: "",
+    queryTime: form.value.dataTime,
+    timeType: form.value.timeType,
+    modelCode: proxy.$route.query.modelCode,
+  }).then((res) => {
+    periodList.value[0].data = res.data.totalAccumulatedAmount
+    periodList.value[1].data = res.data.childNodeAccumulatedAmount
+    periodList.value[2].data = res.data.difference
+    periodList.value[3].data = res.data.energyLossRatio + "%"
+    flowData.value = res.data.itemVOList
+    nextTick(() => {
+      getChart()
+    })
+  })
+}
+
+watch(
+  () => settingsStore.sideTheme,
+  (val) => {
+    getChart()
+  }
+)
 
 function getChart() {
+  let colors = ["#FBB4AE", "#B3CDE3", "#CCEBC5", "#DECBE4", "#5470C6"]
+  let mydata = []
+  let mylinks = []
+  if (flowData.value.length) {
+    mylinks = flowData.value || []
+    let nodes = []
+    mylinks.forEach((element) => {
+      nodes.push(element.source)
+      nodes.push(element.target)
+    })
+    mydata = Array.from(new Set(nodes)).map((item) => {
+      return {
+        name: item,
+      }
+    })
+  }
+  console.log(mydata)
+  console.log(mylinks)
 
-
-  let colors = ['#FBB4AE', '#B3CDE3', '#CCEBC5', '#DECBE4', '#5470C6'];
-  let mydata = [
-    { name: 'L1', itemStyle: { color: colors[0] }, depth: 0 },
-    { name: 'L1-1', itemStyle: { color: colors[0] }, depth: 0 },
-    { name: 'L1-2', itemStyle: { color: colors[0] }, depth: 0 },
-    { name: 'L1-3', itemStyle: { color: colors[0] }, depth: 0 },
-
-
-    { name: 'L2', itemStyle: { color: colors[1] }, depth: 1 },
-    { name: 'L2-1', itemStyle: { color: colors[1] }, depth: 1 },
-    { name: 'L2-2', itemStyle: { color: colors[1] }, depth: 1 },
-    { name: 'L2-3', itemStyle: { color: colors[1] }, depth: 1 },
-
-
-    { name: 'L3', itemStyle: { color: colors[2] }, depth: 2 },
-    { name: 'L3-1', itemStyle: { color: colors[2] }, depth: 2 },
-    { name: 'L3-2', itemStyle: { color: colors[2] }, depth: 2 },
-
-
-    { name: 'L4', itemStyle: { color: colors[3] }, depth: 3 },
-
-
-
-  ];
-  // mydata.reverse()
-  let mylinks = [
-    // L1鈫扡4	 9720
-    { source: 'L1', target: 'L4', value: 9720 },
-    // L2鈫扡4	 24396
-    { source: 'L2', target: 'L4', value: 24396 },
-    // L3鈫扡4	 1462
-    { source: 'L3', target: 'L4', value: 1462 },
-
-    // L1鈫扡2鈫扡3鈫扡4	 215
-    { source: 'L1-1', target: 'L2-1', value: 215 },
-    { source: 'L2-1', target: 'L3-1', value: 215 },
-    { source: 'L3-1', target: 'L4', value: 215 },
-
-    // L1鈫扡2鈫扡4	 4518
-    { source: 'L1-2', target: 'L2-2', value: 4518 },
-    { source: 'L2-2', target: 'L4', value: 4518 },
-    // L1鈫扡3鈫扡4	 217
-    { source: 'L1-3', target: 'L3-2', value: 217 },
-    { source: 'L3-2', target: 'L4', value: 217 },
-
-    // L2鈫扡3鈫扡4	 893
-    { source: 'L2-3', target: 'L3-3', value: 893 },
-    { source: 'L3-3', target: 'L4', value: 893 },
-
-  ];
-
-
-  const myChart1 = echarts.init(document.getElementById("Chart1"));
+  const myChart1 = echarts.init(document.getElementById("Chart1"))
   myChart1.setOption({
     tooltip: {
-      trigger: 'item',
-      triggerOn: 'mousemove',
+      trigger: "item",
+      triggerOn: "mousemove",
     },
-    series: {
-      type: 'sankey',
-      lineStyle: {
-        opacity: 0.3,
-        color: 'gradient',
-        curveness: 0.7,
+    // series: {
+    //   type: "sankey",
+    //   lineStyle: {
+    //     opacity: 0.3,
+    //     color: "gradient",
+    //     curveness: 0.7,
+    //   },
+    //   // nodeAlign: 'left',
+    //   nodeGap: 18,
+    //   layoutIterations: 1,
+    //   emphasis: {
+    //     focus: "adjacency",
+    //   },
+    //   data: mydata,
+    //   links: mylinks,
+    // },
+    series: [
+      {
+        type: "sankey",
+        left: 50.0,
+        top: 20.0,
+        right: 100.0,
+        bottom: 25.0,
+        data: mydata,
+        links: mylinks,
+        nodeGap: 18,
+        layoutIterations: 1,
+        //emphasis: {
+        //  focus: 'adjacency',
+        //},
+        nodeAlign: "left",
+        lineStyle: {
+          color: "source",
+          curveness: 0.7,
+          opacity: 0.3,
+        },
+        itemStyle: {
+          color: "#333",
+          borderColor: "#1f77b4",
+        },
+        // label: {
+        //   color: "rgba(0,0,0,0.7)",
+        //   fontSize: 10,
+        // },
+        levels: [
+          {
+            depth: 0,
+            itemStyle: {
+              color: colors[0],
+            },
+            lineStyle: {
+              color: "source",
+              opacity: 0.3,
+            },
+          },
+          {
+            depth: 1,
+            itemStyle: {
+              color: colors[1],
+            },
+            lineStyle: {
+              color: "source",
+              opacity: 0.3,
+            },
+          },
+          {
+            depth: 2,
+            itemStyle: {
+              color: colors[2],
+            },
+            lineStyle: {
+              color: "source",
+              opacity: 0.3,
+            },
+          },
+          {
+            depth: 3,
+            itemStyle: {
+              color: colors[3],
+            },
+            lineStyle: {
+              color: "source",
+              opacity: 0.3,
+            },
+          },
+        ],
       },
-      // nodeAlign: 'left',
-      nodeGap: 18,
-      layoutIterations: 1,
-      emphasis: {
-        focus: 'adjacency',
-      },
-      data: mydata,
-      links: mylinks,
-    },
+    ],
   })
-  window.addEventListener("resize", () => {
-    myChart1.resize();
-  }, { passive: true });
+  window.addEventListener(
+    "resize",
+    () => {
+      myChart1.resize()
+    },
+    { passive: true }
+  )
 }
 onMounted(() => {
-  getChart()
+  getEnergyTypeList()
 })
 </script>
 <style scoped lang="scss">
 @import "@/assets/styles/page.scss";
 
 .themeDark {
-
   .card-list {
     display: flex;
     justify-content: space-between;
@@ -295,7 +371,7 @@
       height: 167px;
       background: #fff;
       border-radius: 5px 5px 5px 5px;
-      border: 1px solid #E8E8E8;
+      border: 1px solid #e8e8e8;
       background-size: 100% 100%;
       box-sizing: border-box;
       padding: 20px 18px 23px 16px;
@@ -337,7 +413,7 @@
           font-family: OPPOSans, OPPOSans;
           font-weight: 500;
           font-size: 14px;
-          color: #5D5C5C;
+          color: #5d5c5c;
         }
 
         .bottom-right {
@@ -360,4 +436,4 @@
     height: 100%;
   }
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3