From f51be3cd3f96e4f8875fad0d6bb13d9ebcca9f93 Mon Sep 17 00:00:00 2001
From: ustcyc <yincun@163.com>
Date: 星期五, 21 三月 2025 14:58:42 +0800
Subject: [PATCH] Merge branch 'master' of https://github.com/Andy-Yin/zhitan-ems

---
 zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/MonthlyProcessEnergyServiceImpl.java           |   43 
 zhitan-vue/src/views/keyEquipment/monthly/index.vue                                                              |  219 +++
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/DailyComprehensiveMapper.java              |    5 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/IMonthlyKeyEquipmentService.java                     |    7 
 zhitan-vue/src/views/processEnergy/monthly/index.vue                                                             |  226 +++
 zhitan-system/src/main/java/com/zhitan/processenergy/dto/DataItemQueryDTO.java                                   |   28 
 zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java                          |    5 
 zhitan-vue/src/views/keyEquipment/comps/LineChart.vue                                                            |  177 ++
 zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/DailyProcessEnergyController.java             |   90 +
 zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/YearProcessEnergyServiceImpl.java              |   59 
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java                |    5 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java               |   15 
 zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java                                            |  107 +
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java                |   48 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java             |    5 
 zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue                                                |    9 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java                        |   10 
 zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/DailyProcessEnergyServiceImpl.java             |   39 
 zhitan-system/src/main/java/com/zhitan/processenergy/domain/DailyProcessEnergy.java                              |   74 +
 zhitan-vue/src/views/processEnergy/daily/index.vue                                                               |  220 +++
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/DailyComprehensiveServiceImpl.java   |    5 
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/YearComprehensiveServiceImpl.java    |    7 
 zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/MonthlyProcessEnergyController.java           |  135 +
 zhitan-system/src/main/java/com/zhitan/processenergy/service/IYearProcessEnergyService.java                      |   26 
 zhitan-vue/src/views/keyEquipment/daily/index.vue                                                                |  232 +++
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java                   |    5 
 zhitan-system/src/main/resources/mapper/dailyprocessenergy/DailyProcessEnergyMapper.xml                          |   87 +
 zhitan-system/src/main/resources/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml                               |    2 
 zhitan-system/src/main/resources/mapper/dailyprocessenergy/MonthlyProcessEnergyMapper.xml                        |   95 +
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java            |    5 
 zhitan-system/src/main/java/com/zhitan/processenergy/domain/MonthlyProcessEnergy.java                            |  427 ++++++
 zhitan-system/src/main/java/com/zhitan/processenergy/domain/YearProcessEnergy.java                               |  237 +++
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java |    6 
 zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/YearProcessEnergyController.java              |   74 +
 zhitan-vue/src/views/keyEquipment/year/index.vue                                                                 |  226 +++
 zhitan-common/src/main/java/com/zhitan/common/utils/TypeTime.java                                                |   29 
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/YearComprehensiveMapper.java               |    5 
 zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/DataItemQueryDTO.java                             |   21 
 zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue                                                   |    2 
 zhitan-system/src/main/resources/mapper/keyequipment/DailyKeyEquipmentMapper.xml                                 |    2 
 zhitan-vue/src/api/process/api.js                                                                                |   51 
 zhitan-system/src/main/java/com/zhitan/processenergy/mapper/MonthlyProcessEnergyMapper.java                      |   47 
 zhitan-vue/src/api/keyEquipment/api.js                                                                           |   67 
 zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java                           |   10 
 zhitan-system/src/main/resources/mapper/dailyprocessenergy/YearProcessEnergyMapper.xml                           |   81 +
 zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml                                  |   41 
 zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue                                                  |    2 
 zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/MonthlyKeyEquipmentMapper.java                        |    5 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/YearKeyEquipmentServiceImpl.java                |   21 
 zhitan-vue/src/views/processEnergy/year/index.vue                                                                |  226 +++
 zhitan-system/src/main/java/com/zhitan/processenergy/mapper/DailyProcessEnergyMapper.java                        |   48 
 zhitan-system/src/main/java/com/zhitan/processenergy/service/IDailyProcessEnergyService.java                     |   38 
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IDailyComprehensiveService.java           |    5 
 zhitan-system/src/main/java/com/zhitan/processenergy/mapper/YearProcessEnergyMapper.java                         |   46 
 zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java                                         |    7 
 zhitan-system/src/main/java/com/zhitan/processenergy/service/IMonthlyProcessEnergyService.java                   |   19 
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java             |  104 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/IDailyKeyEquipmentService.java                       |    5 
 zhitan-vue/src/views/processEnergy/comps/LineChart.vue                                                           |  177 ++
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/DailyKeyEquipmenteController.java              |   14 
 60 files changed, 3,841 insertions(+), 192 deletions(-)

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 07dbc79..ac287f6 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
@@ -3,7 +3,6 @@
 import com.zhitan.basicdata.domain.FacilityArchives;
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
-import com.zhitan.common.core.page.TableDataInfo;
 import com.zhitan.keyequipment.domain.DailyKeyEquipment;
 import com.zhitan.keyequipment.service.IDailyKeyEquipmentService;
 import com.zhitan.model.domain.EnergyIndex;
@@ -43,14 +42,14 @@
 
     @GetMapping("/list")
     @ApiOperation(value = "閲嶇偣璁惧鑳借�楀垎鏋愶紙鏃ワ級鍒楄〃")
-    public TableDataInfo list(DataItem dataItem) throws ParseException {
+    public AjaxResult list(DataItem dataItem) throws ParseException {
         List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
         if(CollectionUtils.isEmpty(nodeId)){
-            return getDataTable(new ArrayList<>());
+            return success(new ArrayList<>());
         }
         List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
         if(CollectionUtils.isEmpty(energyList)){
-            return getDataTable(new ArrayList<>());
+            return success(new ArrayList<>());
         }
         List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
         List<DailyKeyEquipment> dataList=new ArrayList<>();
@@ -74,9 +73,10 @@
             dataList.add(report);
             i++;
         };
-        startPage();
+
         List<DailyKeyEquipment> list = dailykeyEquipment.getdailyKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
-        return getDataTable(list);
+
+        return success(list);
     }
 
     @GetMapping("/listChart")
@@ -93,7 +93,7 @@
     }
     /*鎵�鏈夎澶�*/
     @GetMapping("/getFacilityArchives")
-    @ApiOperation(value = "鏌ヨ鎵�鏈夎澶囧垪琛�")
+    @ApiOperation(value = "鏌ヨ閲嶇偣璁惧鍒楄〃")
     public AjaxResult getFacilityArchives() {
         try {
             List<FacilityArchives> list=dailykeyEquipment.getFacilityArchives();
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 7cb93ba..11164fc 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
@@ -1,7 +1,6 @@
 package com.zhitan.web.controller.keyequipment;
 
 
-import com.github.pagehelper.PageInfo;
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
 import com.zhitan.keyequipment.domain.MonthlyKeyEquipment;
@@ -25,14 +24,14 @@
 import java.util.stream.Collectors;
 
 /**
- *閲嶇偣璁惧鑳借�楃粺璁� 鏈�
+ * 閲嶇偣璁惧鑳借�楃粺璁� 鏈�
  *
  * @author sys
  * @date 2021-01-11
  */
 @RestController
 @RequestMapping("/keyEquipment/MonthlyKeyEquipment")
-@Api(value = "閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級",tags = {"璁惧鍗曡�楀垎鏋�"})
+@Api(value = "閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級", tags = {"璁惧鍗曡�楀垎鏋�"})
 public class MonthlyKeyEquipmentController extends BaseController {
 
     @Autowired
@@ -42,59 +41,49 @@
 
     @GetMapping("/list")
     @ApiOperation(value = "閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級鍒楄〃")
-    public AjaxResult list(DataItem dataItem) {
-        try {
-            List<MonthlyKeyEquipment> dataList=new ArrayList<>();
+    public AjaxResult list(DataItem dataItem) throws ParseException {
+        List<MonthlyKeyEquipment> dataList = new ArrayList<>();
 
-            Map tableColumn =new HashMap<>();//琛ㄦ暟鎹�
-            DateFormat df = new SimpleDateFormat("yyyy-MM");
-            SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            String aa= df.format(dataItem.getDataTime());
-            String bb="";
-            int i = 1;
-            String beginTime=aa+"-01 00:00:00";
-            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));
-            while (i <= Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))) {
-                if(i>9){
-                    bb=aa+"-"+i+" 00:00:00";
-                }else{
-                    bb=aa+"-0"+i+" 00:00:00";
-                }
-                MonthlyKeyEquipment report=new MonthlyKeyEquipment();
-                report.setDataTime(sf.parse(bb));
-                report.setValue("value"+i);
-                dataList.add(report);
-                tableColumn.put("value"+i,String.valueOf(i)+"鏃�");
-                i++;
+        Map tableColumn = new HashMap<>();//琛ㄦ暟鎹�
+        DateFormat df = new SimpleDateFormat("yyyy-MM");
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String aa = df.format(dataItem.getDataTime());
+        String bb = "";
+        int i = 1;
+        String beginTime = aa + "-01 00:00:00";
+        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));
+        while (i <= Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2))) {
+            if (i > 9) {
+                bb = aa + "-" + i + " 00:00:00";
+            } else {
+                bb = aa + "-0" + i + " 00:00:00";
             }
-            List<Map> table=new ArrayList<>();
-            MonthlyKeyEquipment reportList =new  MonthlyKeyEquipment();
-            table.add(tableColumn);
-            reportList.setTablehead(table);
-            List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
-            if(CollectionUtils.isEmpty(nodeId)){
-                return AjaxResult.success(reportList);
-            }
-            List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
-            if(CollectionUtils.isEmpty(energyList)){
-                return AjaxResult.success(reportList);
-            }
-            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.getEnergyType());
-            int count=Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2));
-            list.forEach(monthlyReport -> monthlyReport.setCount(count));
-            reportList.setTabledata(list);
-            reportList.setTotal(new PageInfo(list).getTotal());
-
-            return AjaxResult.success(reportList);
-        } catch (Exception ex) {
-            logger.error("鑾峰彇鍑洪敊锛�", ex);
-            return AjaxResult.error("鑾峰彇鍑洪敊!");
+            MonthlyKeyEquipment report = new MonthlyKeyEquipment();
+            report.setDataTime(sf.parse(bb));
+            report.setValue("value" + i);
+            dataList.add(report);
+            tableColumn.put("value" + i, String.valueOf(i) + "鏃�");
+            i++;
         }
+        List<Map> table = new ArrayList<>();
+        MonthlyKeyEquipment reportList = new MonthlyKeyEquipment();
+        table.add(tableColumn);
+        reportList.setTablehead(table);
+        List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
+        if (CollectionUtils.isEmpty(nodeId)) {
+            return success(new ArrayList<>());
+        }
+        List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
+        if (CollectionUtils.isEmpty(energyList)) {
+            return success(new ArrayList<>());
+        }
+        List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
+
+        List<MonthlyKeyEquipment> list = monthlyKeyEquipmentService.getMonthlyKeyEquipmentList(indexIds, dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
+
+        return success(list);
     }
 
     @GetMapping("/listChart")
@@ -102,14 +91,15 @@
     public AjaxResult listChart(DataItem dataItem) throws ParseException {
         DateFormat df = new SimpleDateFormat("yyyy-MM");
         SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String aa= df.format(dataItem.getDataTime());
-        String beginTime=aa+"-01 00:00:00";
+        String aa = df.format(dataItem.getDataTime());
+        String beginTime = aa + "-01 00:00:00";
         dataItem.setBeginTime(sf.parse(beginTime));
-        String endTime=aa+"-"+Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length()-2))+" 00:00:00";
+        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.getEnergyType());
+        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) {
         int year = Integer.parseInt(yearMonth.split("-")[0]);  //骞�
         int month = Integer.parseInt(yearMonth.split("-")[1]); //鏈�
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 4b1b56b..03ff12b 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
@@ -1,15 +1,18 @@
 package com.zhitan.web.controller.keyequipment;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
-import com.zhitan.common.core.page.TableDataInfo;
+import com.zhitan.common.utils.DateTimeUtil;
+import com.zhitan.common.utils.TypeTime;
 import com.zhitan.keyequipment.domain.YearKeyEquipment;
 import com.zhitan.keyequipment.service.IYearKeyEquipmentService;
 import com.zhitan.model.domain.EnergyIndex;
 import com.zhitan.model.domain.ModelNode;
 import com.zhitan.model.service.IModelNodeService;
 import com.zhitan.realtimedata.domain.DataItem;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections4.CollectionUtils;
@@ -18,13 +21,11 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
-
 /**
  *閲嶇偣璁惧鑳借�楃粺璁� 骞�
  *
@@ -43,48 +44,31 @@
 
     @GetMapping("/list")
     @ApiOperation(value = "閲嶇偣璁惧鑳借�楃粺璁★紙骞达級鍒楄〃")
-    public TableDataInfo list(DataItem dataItem) throws ParseException {
+    public AjaxResult list(DataItem dataItem) throws ParseException {
         List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
         if(CollectionUtils.isEmpty(nodeId)){
-            return getDataTable(new ArrayList<>());
+            return success(new ArrayList<>());
         }
         List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
         if(CollectionUtils.isEmpty(energyList)){
-            return getDataTable(new ArrayList<>());
+            return success(new ArrayList<>());
         }
         List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
-        List<YearKeyEquipment> dataList=new ArrayList<>();
 
-        dataItem.setBeginTime(DateUtil.beginOfYear(dataItem.getDataTime()));
-        dataItem.setEndTime(DateUtil.endOfYear(dataItem.getDataTime()));
 
-        DateFormat df = new SimpleDateFormat("yyyy");
-        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String aa= df.format(dataItem.getDataTime());
-        String bb="";
-        int i = 1;
-        while (i <= 12) {
-            if(i>9){
-                bb=aa+"-"+i+"-01 00:00:00";
-            }else{
-                bb=aa+"-0"+i+"-01 00:00:00";
-            }
-            YearKeyEquipment report=new YearKeyEquipment();
-            report.setDataTime(sf.parse(bb));
-            report.setValue("value"+i);
-            dataList.add(report);
-            i++;
-        }
-        startPage();
-        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
-        return getDataTable(list);
+       Date convertTime = DateTimeUtil.getEndTimeByType(dataItem.getTimeType(),dataItem.getDataTime());
+       DateTime beginTime = DateUtil.beginOfYear(convertTime);
+       DateTime endTime = DateUtil.endOfYear(convertTime);
+       List<TypeTime> typeTimeList = DateTimeUtil.getDateTimeList(dataItem.getTimeType(),convertTime);
+        List<YearKeyEquipment> list = yearKeyEquipmentService.getYearKeyEquipmentList(indexIds, typeTimeList,beginTime,endTime, dataItem.getTimeType(),dataItem.getEnergyType());
+        return success(list);
     }
 
     @GetMapping("/listChart")
     @ApiOperation(value = "閲嶇偣璁惧鑳借�楃粺璁★紙骞达級鍥捐〃")
-    public AjaxResult listChart(DataItem dataItem){
+    public AjaxResult listChart(DataItemQueryDTO queryDto){
 
-        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(dataItem.getIndexId(),dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
+        List<YearKeyEquipment> list = yearKeyEquipmentService.getListChart(queryDto);
         return AjaxResult.success(list);
     }
 }
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/DailyProcessEnergyController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/DailyProcessEnergyController.java
new file mode 100644
index 0000000..45c2acf
--- /dev/null
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/DailyProcessEnergyController.java
@@ -0,0 +1,90 @@
+package com.zhitan.web.controller.processenergy;
+
+import com.zhitan.basicdata.domain.FacilityArchives;
+import com.zhitan.common.core.controller.BaseController;
+import com.zhitan.common.core.domain.AjaxResult;
+import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.domain.ModelNode;
+import com.zhitan.model.service.IModelNodeService;
+import com.zhitan.processenergy.domain.DailyProcessEnergy;
+import com.zhitan.processenergy.service.IDailyProcessEnergyService;
+import com.zhitan.realtimedata.domain.DataItem;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 宸ュ簭鑳借�� 鏃�
+ */
+@RestController
+@RequestMapping("/processEnergy/dailyProcessEnergy")
+@Api(value = "宸ュ簭鑳借�楃粺璁★紙鏃ワ級", tags = {"宸ュ簭鑳借�楃粺璁�"})
+public class DailyProcessEnergyController extends BaseController {
+
+    @Autowired
+    private IModelNodeService modelNodeService;
+
+    @Autowired
+    private IDailyProcessEnergyService dailyProcessEnergy;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "宸ュ簭鑳借�楃粺璁★紙鏃ワ級鍒楄〃")
+    public AjaxResult list(DataItem dataItem) throws ParseException{
+        List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
+        if(CollectionUtils.isEmpty(nodeId)){
+            return success(new ArrayList<>());
+        }
+        List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
+        if(CollectionUtils.isEmpty(energyList)){
+            return success(new ArrayList<>());
+        }
+        List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
+        List<DailyProcessEnergy> dataList = new ArrayList<>();
+        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String aa= df.format(dataItem.getDataTime());
+        String bb="";
+        int i = 0;
+        dataItem.setBeginTime(dataItem.getDataTime());
+        String endTime=aa+" 24:00:00";
+        dataItem.setEndTime(sf.parse(endTime));
+        while (i < 24) {
+            if(i>9){
+                bb=aa+" "+i+":00:00";
+            }else{
+                bb=aa+" 0"+i+":00:00";
+            }
+            DailyProcessEnergy report=new DailyProcessEnergy();
+            report.setDataTime(sf.parse(bb));
+            report.setValue("value"+i);
+            dataList.add(report);
+            i++;
+        }
+        List<DailyProcessEnergy> list = dailyProcessEnergy.getDailyProcessEnergyList(indexIds, dataList,dataItem.getBeginTime(),dataItem.getEndTime(), dataItem.getTimeType(),dataItem.getEnergyType());
+        return success(list);
+    }
+
+    @GetMapping("/listChart")
+    @ApiOperation(value = "宸ュ簭鑳借�楋紙鏃ワ級鍥捐〃")
+    public AjaxResult listChart(DataItem dataItem) throws ParseException {
+        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String aa= df.format(dataItem.getDataTime());
+        dataItem.setBeginTime(dataItem.getDataTime());
+        String endTime=aa+" 24:00:00";
+        dataItem.setEndTime(sf.parse(endTime));
+        List<DailyProcessEnergy> list = dailyProcessEnergy.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/processenergy/MonthlyProcessEnergyController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/MonthlyProcessEnergyController.java
new file mode 100644
index 0000000..5b809f0
--- /dev/null
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/MonthlyProcessEnergyController.java
@@ -0,0 +1,135 @@
+package com.zhitan.web.controller.processenergy;
+
+import com.zhitan.common.core.controller.BaseController;
+import com.zhitan.common.core.domain.AjaxResult;
+import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.domain.ModelNode;
+import com.zhitan.model.service.IModelNodeService;
+import com.zhitan.processenergy.domain.MonthlyProcessEnergy;
+import com.zhitan.processenergy.service.IMonthlyProcessEnergyService;
+import com.zhitan.realtimedata.domain.DataItem;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * 宸ュ簭鑳借�� 鏈�
+ */
+@RestController
+@RequestMapping("/processEnergy/monthlyProcessEnergy")
+@Api(value = "宸ュ簭鑳借�楃粺璁★紙鏈堬級", tags = {"宸ュ簭鑳借�楃粺璁�"})
+public class MonthlyProcessEnergyController extends BaseController {
+
+    @Autowired
+    private IModelNodeService modelNodeService;
+    @Autowired
+    private IMonthlyProcessEnergyService monthlyProcessEnergyService;
+
+    /**
+     *
+     * @param dataItem
+     * @return
+     * @throws ParseException
+     */
+    @GetMapping("/list")
+    @ApiOperation(value = "宸ュ簭鑳借�楃粺璁★紙鏈堬級")
+    public AjaxResult list(DataItem dataItem) throws ParseException {
+        List<MonthlyProcessEnergy> dataList = new ArrayList<>();
+
+        Map tableColumn = new HashMap<>();//琛ㄦ暟鎹�
+        DateFormat df = new SimpleDateFormat("yyyy-MM");
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String aa = df.format(dataItem.getDataTime());
+        String bb = "";
+        int i = 1;
+        String beginTime = aa + "-01 00:00:00";
+        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));
+        while (i <= Integer.valueOf(getLastDayOfMonth(aa).substring(getLastDayOfMonth(aa).length() - 2))) {
+            if (i > 9) {
+                bb = aa + "-" + i + " 00:00:00";
+            } else {
+                bb = aa + "-0" + i + " 00:00:00";
+            }
+            MonthlyProcessEnergy report = new MonthlyProcessEnergy();
+            report.setDataTime(sf.parse(bb));
+            report.setValue("value" + i);
+            dataList.add(report);
+            tableColumn.put("value" + i, String.valueOf(i) + "鏃�");
+            i++;
+        }
+        List<Map> table = new ArrayList<>();
+        MonthlyProcessEnergy reportList = new MonthlyProcessEnergy();
+        table.add(tableColumn);
+        reportList.setTablehead(table);
+        List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
+        if (CollectionUtils.isEmpty(nodeId)) {
+            return success(new ArrayList<>());
+        }
+        List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
+        if (CollectionUtils.isEmpty(energyList)) {
+            return success(new ArrayList<>());
+        }
+        List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
+
+        List<MonthlyProcessEnergy> list = monthlyProcessEnergyService.getMonthlyProcessEnergy(indexIds, dataList, dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
+
+        return success(list);
+    }
+
+    /**
+     *
+     * @param dataItem
+     * @return
+     * @throws ParseException
+     */
+    @GetMapping("/listChart")
+    @ApiOperation(value = "閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級鍥捐〃")
+    public AjaxResult listChart(DataItem dataItem) throws ParseException {
+        DateFormat df = new SimpleDateFormat("yyyy-MM");
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String aa = df.format(dataItem.getDataTime());
+        String beginTime = aa + "-01 00:00:00";
+        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<MonthlyProcessEnergy> list = monthlyProcessEnergyService.getListChart(dataItem.getIndexId(), dataItem.getBeginTime(), dataItem.getEndTime(), dataItem.getTimeType(), dataItem.getEnergyType());
+        return AjaxResult.success(list);
+    }
+
+    /**
+     *
+     * @param yearMonth
+     * @return
+     */
+    public static String getLastDayOfMonth(String yearMonth) {
+        int year = Integer.parseInt(yearMonth.split("-")[0]);  //骞�
+        int month = Integer.parseInt(yearMonth.split("-")[1]); //鏈�
+        Calendar cal = Calendar.getInstance();
+        // 璁剧疆骞翠唤
+        cal.set(Calendar.YEAR, year);
+        // 璁剧疆鏈堜唤
+        // cal.set(Calendar.MONTH, month - 1);
+        cal.set(Calendar.MONTH, month); //璁剧疆褰撳墠鏈堢殑涓婁竴涓湀
+        // 鑾峰彇鏌愭湀鏈�澶уぉ鏁�
+        //int lastDay = cal.getActualMaximum(Calendar.DATE);
+        int lastDay = cal.getMinimum(Calendar.DATE); //鑾峰彇鏈堜唤涓殑鏈�灏忓�硷紝鍗崇涓�澶�
+        // 璁剧疆鏃ュ巻涓湀浠界殑鏈�澶уぉ鏁�
+        //cal.set(Calendar.DAY_OF_MONTH, lastDay);
+        cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //涓婃湀鐨勭涓�澶╁噺鍘�1灏辨槸褰撴湀鐨勬渶鍚庝竴澶�
+        // 鏍煎紡鍖栨棩鏈�
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+        return sdf.format(cal.getTime());
+    }
+}
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/YearProcessEnergyController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/YearProcessEnergyController.java
new file mode 100644
index 0000000..54c988e
--- /dev/null
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/processenergy/YearProcessEnergyController.java
@@ -0,0 +1,74 @@
+package com.zhitan.web.controller.processenergy;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.zhitan.common.core.controller.BaseController;
+import com.zhitan.common.core.domain.AjaxResult;
+import com.zhitan.common.utils.DateTimeUtil;
+import com.zhitan.common.utils.TypeTime;
+import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.domain.ModelNode;
+import com.zhitan.model.service.IModelNodeService;
+import com.zhitan.processenergy.domain.YearProcessEnergy;
+import com.zhitan.processenergy.service.IYearProcessEnergyService;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 宸ュ簭鑳借�� 骞�
+ *
+ *
+ */
+@RestController
+@RequestMapping("/processEnergy/YearProcessEnergy")
+@Api(value = "宸ュ簭鑳借�楃粺璁★紙骞达級", tags = {"宸ュ簭鑳借�楃粺璁�"})
+public class YearProcessEnergyController extends BaseController {
+
+    @Autowired
+    private IModelNodeService modelNodeService;
+
+    @Autowired
+    private IYearProcessEnergyService yearProcessEnergyService;
+
+    @GetMapping("/list")
+    @ApiOperation(value = "宸ュ簭鑳借�楃粺璁★紙骞达級鍒楄〃")
+    private AjaxResult list(DataItemQueryDTO dataItem) throws ParseException{
+        List<ModelNode> nodeId = modelNodeService.getModelNodeByModelCode(dataItem.getIndexCode());
+        if(CollectionUtils.isEmpty(nodeId)){
+            return success(new ArrayList<>());
+        }
+        List<EnergyIndex> energyList = modelNodeService.getSettingIndex(nodeId.get(0).getNodeId());
+        if(CollectionUtils.isEmpty(energyList)){
+            return success(new ArrayList<>());
+        }
+        List<String> indexIds = energyList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
+
+        Date convertTime = DateTimeUtil.getTypeTime(dataItem.getTimeType(), dataItem.getDataTime());
+        DateTime beginTime = DateUtil.beginOfYear(convertTime);
+        DateTime endTime = DateUtil.endOfYear(convertTime);
+
+        List<TypeTime> typeTimeList = DateTimeUtil.getDateTimeList(dataItem.getTimeType(),convertTime);
+
+        List<YearProcessEnergy> list = yearProcessEnergyService.getYearProcessEnergy(indexIds, typeTimeList,beginTime,endTime, dataItem.getTimeType(),dataItem.getEnergyType());
+        return success(list);
+    }
+
+    @GetMapping("/listChart")
+    @ApiOperation(value = "宸ュ簭鑳借�楋紙骞达級鍥捐〃")
+    public AjaxResult listChart(DataItemQueryDTO queryDto) {
+        List<YearProcessEnergy> list = yearProcessEnergyService.getListChart(queryDto);
+        return AjaxResult.success(list);
+    }
+}
diff --git a/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java b/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
index 248cb2f..3299e26 100644
--- a/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
+++ b/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
@@ -10,9 +10,7 @@
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
+import java.util.*;
 
 /**
  * @Description: 鏃堕棿宸ュ叿绫�
@@ -642,6 +640,35 @@
     }
 
     /**
+     * 鏍规嵁鏃堕棿绫诲瀷鎶婂瓧绗︿覆杞垚瀵瑰簲鐨勬椂闂�
+     * timeType="HOUR",time="2025-02-01"锛岃繑鍥�"2025-02-01 01:00:00"
+     * timeType="DAY",time="2025-02"锛岃繑鍥�"2025-02-01 01:00:00"
+     * timeType="MONTH",time="2025"锛岃繑鍥�"2025-02-01 01:00:00"
+     *
+     * @param timeType 鏃堕棿绫诲瀷
+     * @param time     鏃堕棿瀛楃涓�
+     * @return
+     */
+    public static Date getTypeTime(String timeType, String time) {
+        Date dt = null;
+        timeType = StringUtil.ifEmptyOrNullReturnValue(timeType).toUpperCase();
+        switch (timeType) {
+            case TimeTypeConst.TIME_TYPE_HOUR:
+                dt = toDateTime(time, COMMON_PATTERN_TO_DAY);
+                break;
+            case TimeTypeConst.TIME_TYPE_DAY:
+                dt = toDateTime(time, COMMON_PATTERN_TO_MONTH);
+                break;
+            case TimeTypeConst.TIME_TYPE_MONTH:
+                dt = toDateTime(time, COMMON_PATTERN_YEAR);
+                break;
+            default:
+                break;
+        }
+        return dt;
+    }
+
+    /**
      * 鏍规嵁鏃堕棿绫诲瀷鎶婅繛缁殑鏃ユ湡瀛楃涓茶浆鎴愬搴旂殑鏃堕棿 锛�202303銆�20230303銆�2023030301銆�202303030101锛�
      *
      * @param timeType 鏃堕棿绫诲瀷
@@ -705,7 +732,7 @@
      * @param val 璁$畻鍊�
      * @return
      */
-    public static Date productionCycleCal(Date date, String cycleType,int val) {
+    public static Date productionCycleCal(Date date, String cycleType, int val) {
         Date momDate = date;
         switch (cycleType) {
             case TimeTypeConst.TIME_TYPE_HOUR:
@@ -745,4 +772,76 @@
         }
         return momDate;
     }
+
+    /**
+     * 閫氳繃鏃堕棿绫诲瀷杩斿洖瀵瑰簲鐨勬椂闂磍ist
+     * <p>
+     * 鍙傛暟锛�
+     * timeType="YEAR",dataTime="2025-01-01 00:00:00"
+     * timeType="MONTH",dataTime="2025-01-01 00:00:00"
+     * timeType="DAY",dataTime="2025-01-01 00:00:00"
+     * 杩斿洖鏍煎紡锛�
+     * [
+     * {"datatime":"2025-01-01 00:00:00","value":"value1"},
+     * {"datatime":"2025-02-01 00:00:00","value":"value2"},
+     * {"datatime":"2025-03-01 00:00:00","value":"value3"},
+     * {"datatime":"2025-04-01 00:00:00","value":"value4"},
+     * {"datatime":"2025-05-01 00:00:00","value":"value5"},
+     * {"datatime":"2025-06-01 00:00:00","value":"value6"},
+     * {"datatime":"2025-07-01 00:00:00","value":"value7"},
+     * {"datatime":"2025-08-01 00:00:00","value":"value8"},
+     * {"datatime":"2025-09-01 00:00:00","value":"value9"},
+     * {"datatime":"2025-10-01 00:00:00","value":"value10"},
+     * {"datatime":"2025-11-01 00:00:00","value":"value11"},
+     * {"datatime":"2025-12-01 00:00:00","value":"value12"}
+     * ]
+     *
+     * @param timeType
+     * @param dataTime
+     * @return
+     */
+    public static List<TypeTime> getDateTimeList(String timeType, Date dataTime) {
+
+        List<TypeTime> resultList = new ArrayList<>();
+        Date beginTime;
+        switch (timeType) {
+            case TimeTypeConst.TIME_TYPE_HOUR:
+                beginTime = DateUtil.beginOfDay(dataTime);
+                for (int i = 1; i <= 24; i++) {
+                    TypeTime typeTime = new TypeTime();
+                    typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+                    typeTime.setTimeCode(CommonConst.WORD_H + DateUtil.format(beginTime, COMMON_PATTERN_HOUR));
+                    typeTime.setDateTime(beginTime);
+                    typeTime.setValue("value" + i);
+                    resultList.add(typeTime);
+                    beginTime = addHours(beginTime, 1);
+                }
+                break;
+            case TimeTypeConst.TIME_TYPE_DAY:
+                beginTime = DateUtil.beginOfMonth(dataTime);
+                for (int i = 1; i <= 31; i++) {
+                    TypeTime typeTime = new TypeTime();
+                    typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+                    typeTime.setTimeCode(CommonConst.WORD_D + DateUtil.format(beginTime, COMMON_PATTERN_DAY));
+                    typeTime.setDateTime(beginTime);
+                    typeTime.setValue("value" + i);
+                    resultList.add(typeTime);
+                    beginTime = addDays(beginTime, 1);
+                }
+                break;
+            case TimeTypeConst.TIME_TYPE_MONTH:
+                beginTime = DateUtil.beginOfYear(dataTime);
+                for (int i = 1; i <= 12; i++) {
+                    TypeTime typeTime = new TypeTime();
+                    typeTime.setDataTime(DateUtil.format(beginTime, COMMON_PATTERN));
+                    typeTime.setTimeCode(CommonConst.WORD_M + DateUtil.format(beginTime, COMMON_PATTERN_MONTH));
+                    typeTime.setDateTime(beginTime);
+                    typeTime.setValue("value" + i);
+                    resultList.add(typeTime);
+                    beginTime = addMonths(beginTime, 1);
+                }
+                break;
+        }
+        return resultList;
+    }
 }
diff --git a/zhitan-common/src/main/java/com/zhitan/common/utils/TypeTime.java b/zhitan-common/src/main/java/com/zhitan/common/utils/TypeTime.java
new file mode 100644
index 0000000..a50a0d5
--- /dev/null
+++ b/zhitan-common/src/main/java/com/zhitan/common/utils/TypeTime.java
@@ -0,0 +1,29 @@
+package com.zhitan.common.utils;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * [
+ * {"dataTime":"2025-01-01 00:00:00","value":"value0"}
+ * {"dataTime":"2025-02-01 00:00:00","value":"value1"}
+ * {"dataTime":"2025-03-01 00:00:00","value":"value2"}
+ * {"dataTime":"2025-04-01 00:00:00","value":"value3"}
+ * {"dataTime":"2025-05-01 00:00:00","value":"value4"}
+ * {"dataTime":"2025-06-01 00:00:00","value":"value5"}
+ * {"dataTime":"2025-07-01 00:00:00","value":"value6"}
+ * {"dataTime":"2025-08-01 00:00:00","value":"value7"}
+ * {"dataTime":"2025-09-01 00:00:00","value":"value8"}
+ * {"dataTime":"2025-10-01 00:00:00","value":"value9"}
+ * {"dataTime":"2025-11-01 00:00:00","value":"value10"}
+ * {"dataTime":"2025-12-01 00:00:00","value":"value11"}
+ * }
+ */
+@Data
+public class TypeTime {
+   private String dataTime;
+   private String value;
+   private String timeCode;
+
+   private Date dateTime;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/DailyComprehensiveMapper.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/DailyComprehensiveMapper.java
index 3a4de64..4ce024d 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/DailyComprehensiveMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/DailyComprehensiveMapper.java
@@ -1,6 +1,5 @@
 package com.zhitan.comprehensivestatistics.mapper;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.DailyComprehensive;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,13 +17,13 @@
                                                               @Param("dataList") List<DailyComprehensive> dataList,
                                                               @Param("beginTime") Date beginTime,
                                                               @Param("endTime") Date endTime,
-                                                              @Param("timeType") TimeType timeType,
+                                                              @Param("timeType") String timeType,
                                                               @Param("indexStorageId") String indexStorageId);
 
     List<DailyComprehensive> getListChart(@Param("indexId") String indexId,
                                             @Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
-                                            @Param("timeType") TimeType timeType,
+                                            @Param("timeType") String timeType,
                                             @Param("indexStorageId")  String indexStorageId);
 
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java
index ca9a75c..15af3ff 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java
@@ -1,6 +1,5 @@
 package com.zhitan.comprehensivestatistics.mapper;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.MonthlyComprehensive;
 import org.apache.ibatis.annotations.Param;
 
@@ -29,7 +28,7 @@
                                                                   @Param("dataList") List<MonthlyComprehensive> dataList,
                                                                   @Param("beginTime") Date beginTime,
                                                                   @Param("endTime") Date endTime,
-                                                                  @Param("timeType") TimeType timeType,
+                                                                  @Param("timeType") String timeType,
                                                                   @Param("indexStorageId") String indexStorageId);
 
     /**
@@ -45,7 +44,7 @@
     List<MonthlyComprehensive> getListChart(@Param("indexId") String indexId,
                                             @Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
-                                            @Param("timeType") TimeType timeType,
+                                            @Param("timeType") String timeType,
                                             @Param("indexStorageId") String indexStorageId);
 
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/YearComprehensiveMapper.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/YearComprehensiveMapper.java
index 7293dd7..2e6d632 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/YearComprehensiveMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/YearComprehensiveMapper.java
@@ -1,6 +1,5 @@
 package com.zhitan.comprehensivestatistics.mapper;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.YearComperhensive;
 import org.apache.ibatis.annotations.Param;
 
@@ -29,7 +28,7 @@
                                                             @Param("dataList") List<YearComperhensive> dataList,
                                                             @Param("beginTime") Date beginTime,
                                                             @Param("endTime") Date endTime,
-                                                            @Param("timeType") TimeType timeType,
+                                                            @Param("timeType") String timeType,
                                                             @Param("indexStorageId") String indexStorageId);
 
     /**
@@ -45,7 +44,7 @@
     List<YearComperhensive> getListChart(@Param("indexId") String indexId,
                                             @Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
-                                            @Param("timeType") TimeType timeType,
+                                            @Param("timeType") String timeType,
                                             @Param("indexStorageId") String indexStorageId);
 
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IDailyComprehensiveService.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IDailyComprehensiveService.java
index 5378839..c46d162 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IDailyComprehensiveService.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IDailyComprehensiveService.java
@@ -1,7 +1,6 @@
 package com.zhitan.comprehensivestatistics.service;
 
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.DailyComprehensive;
 
 import java.util.Date;
@@ -14,6 +13,6 @@
  * @date 2020-03-25
  */
 public interface IDailyComprehensiveService {
-    public List<DailyComprehensive> getDailyComprehensiveList(String nodeId, List<DailyComprehensive> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
-    List<DailyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    public List<DailyComprehensive> getDailyComprehensiveList(String nodeId, List<DailyComprehensive> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+    List<DailyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java
index 13221a0..1527ce3 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java
@@ -1,7 +1,6 @@
 package com.zhitan.comprehensivestatistics.service;
 
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.MonthlyComprehensive;
 
 import java.util.Date;
@@ -25,7 +24,7 @@
      * @param indexStorageId
      * @return
      */
-    List<MonthlyComprehensive> getMonthlyComprehensiveList(String nodeId, List<MonthlyComprehensive> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    List<MonthlyComprehensive> getMonthlyComprehensiveList(String nodeId, List<MonthlyComprehensive> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
 
     /**
      * 鍏ㄥ巶缁煎悎鑳借�楃粺璁� 鏈�
@@ -37,5 +36,5 @@
      * @param indexStorageId
      * @return
      */
-    List<MonthlyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    List<MonthlyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java
index 2c3a979..566ea94 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java
@@ -1,7 +1,6 @@
 package com.zhitan.comprehensivestatistics.service;
 
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.YearComperhensive;
 
 import java.util.Date;
@@ -26,7 +25,7 @@
      * @return
      */
     List<YearComperhensive> getYearComprehensiveList(String nodeId, List<YearComperhensive> dataList,
-                                                            Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+                                                            Date beginTime, Date endTime, String timeType, String indexStorageId);
 
     /**
      * 鑾峰彇缁煎悎鎸囨爣鍒嗘瀽锛堝勾锛夊浘琛ㄦ暟鎹�
@@ -38,5 +37,5 @@
      * @param indexStorageId
      * @return
      */
-    List<YearComperhensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    List<YearComperhensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/DailyComprehensiveServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/DailyComprehensiveServiceImpl.java
index 19fd4b5..c67511e 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/DailyComprehensiveServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/DailyComprehensiveServiceImpl.java
@@ -1,6 +1,5 @@
 package com.zhitan.comprehensivestatistics.service.impl;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.DailyComprehensive;
 import com.zhitan.comprehensivestatistics.mapper.DailyComprehensiveMapper;
 import com.zhitan.comprehensivestatistics.service.IDailyComprehensiveService;
@@ -24,7 +23,7 @@
     private DailyComprehensiveMapper dailyMapper;
 
     public List<DailyComprehensive> getDailyComprehensiveList(String nodeId, List<DailyComprehensive> dataList,
-                                                              Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+                                                              Date beginTime, Date endTime, String timeType, String indexStorageId){
 
         if (StringUtils.isNotEmpty(nodeId)) {
             return dailyMapper.getDailyComprehensiveList(nodeId, dataList, beginTime, endTime, timeType, indexStorageId);
@@ -32,7 +31,7 @@
         return Collections.emptyList();
     }
     @Override
-    public List<DailyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<DailyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexId != null && !indexId.isEmpty()) {
             return dailyMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
         }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java
index 04beef7..64d2bb3 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java
@@ -1,11 +1,9 @@
 package com.zhitan.comprehensivestatistics.service.impl;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.comprehensivestatistics.domain.MonthlyComprehensive;
 import com.zhitan.comprehensivestatistics.mapper.MonthlyComprehensiveMapper;
 import com.zhitan.comprehensivestatistics.service.ImonthlyComprehensive;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -25,7 +23,7 @@
     private MonthlyComprehensiveMapper monthMapper;
 
     public List<MonthlyComprehensive> getMonthlyComprehensiveList(String nodeId, List<MonthlyComprehensive> dataList,
-                                                                  Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+                                                                  Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (StringUtils.isNotEmpty(nodeId)) {
             return monthMapper.getMonthlyComprehensiveList(nodeId, dataList, beginTime, endTime, timeType, indexStorageId);
         }
@@ -33,7 +31,7 @@
     }
 
     @Override
-    public List<MonthlyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<MonthlyComprehensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexId != null && !indexId.isEmpty()) {
             return monthMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
         }
diff --git a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/YearComprehensiveServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/YearComprehensiveServiceImpl.java
index df2ac97..6cf4ac0 100644
--- a/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/YearComprehensiveServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/YearComprehensiveServiceImpl.java
@@ -2,7 +2,6 @@
 
 import cn.hutool.core.date.DateUtil;
 import com.zhitan.common.constant.CommonConst;
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.common.utils.DateTimeUtil;
 import com.zhitan.comprehensivestatistics.domain.YearComperhensive;
 import com.zhitan.comprehensivestatistics.mapper.YearComprehensiveMapper;
@@ -29,14 +28,14 @@
 
     @Override
     public List<YearComperhensive> getYearComprehensiveList(String nodeId, List<YearComperhensive> dataList,
-                                                            Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+                                                            Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (StringUtils.isNotEmpty(nodeId)) {
             return yearMapper.getYearComprehensiveList(nodeId, dataList, beginTime, endTime, timeType, indexStorageId);
         }
         return Collections.emptyList();
     }
     @Override
-    public List<YearComperhensive> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<YearComperhensive> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
         List<YearComperhensive> dataList = new ArrayList<>();
         if (StringUtils.isNotEmpty(indexId)) {
             List<YearComperhensive> listChart = yearMapper.getListChart(indexId, beginTime, endTime, timeType, indexStorageId);
@@ -54,7 +53,7 @@
                     } else {
                         yearComperhensive.setTimeCode(format);
                         yearComperhensive.setIndexId(indexId);
-                        yearComperhensive.setTimeType(timeType.name());
+                        yearComperhensive.setTimeType(timeType);
                         yearComperhensive.setUnitId(first.getUnitId());
                         yearComperhensive.setIndexName(first.getIndexName());
                     }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java
index 4ef9af3..f317bc0 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java
@@ -1,7 +1,6 @@
 package com.zhitan.keyequipment.mapper;
 
 import com.zhitan.basicdata.domain.FacilityArchives;
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.DailyKeyEquipment;
 import org.apache.ibatis.annotations.Param;
 
@@ -19,12 +18,12 @@
                                                             @Param("dataList") List<DailyKeyEquipment> dataList,
                                                             @Param("beginTime") Date beginTime,
                                                             @Param("endTime") Date endTime,
-                                                            @Param("timeType") TimeType timeType,
+                                                            @Param("timeType") String timeType,
                                                             @Param("indexStorageId") String indexStorageId);
     List<DailyKeyEquipment> getListChart(@Param("indexId") String indexId,
                                             @Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
-                                            @Param("timeType") TimeType timeType,
+                                            @Param("timeType") String timeType,
                                             @Param("indexStorageId")  String indexStorageId);
     List<FacilityArchives> getFacilityArchives();
     List<FacilityArchives> getPointFacility();
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/MonthlyKeyEquipmentMapper.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/MonthlyKeyEquipmentMapper.java
index 557bbdb..db4c6da 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/MonthlyKeyEquipmentMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/MonthlyKeyEquipmentMapper.java
@@ -1,6 +1,5 @@
 package com.zhitan.keyequipment.mapper;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.MonthlyKeyEquipment;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,12 +17,12 @@
                                                                 @Param("dataList") List<MonthlyKeyEquipment> dataList,
                                                                 @Param("beginTime") Date beginTime,
                                                                 @Param("endTime") Date endTime,
-                                                                @Param("timeType") TimeType timeType,
+                                                                @Param("timeType") String timeType,
                                                                 @Param("indexStorageId") String indexStorageId);
     List<MonthlyKeyEquipment> getListChart(@Param("indexId") String indexId,
                                                @Param("beginTime") Date beginTime,
                                                @Param("endTime") Date endTime,
-                                               @Param("timeType") TimeType timeType,
+                                               @Param("timeType") String timeType,
                                                @Param("indexStorageId") String indexStorageId);
 
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java
index 12e61dd..6bc97ad 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java
@@ -1,6 +1,6 @@
 package com.zhitan.keyequipment.mapper;
 
-import com.zhitan.common.enums.TimeType;
+import com.zhitan.common.utils.TypeTime;
 import com.zhitan.keyequipment.domain.YearKeyEquipment;
 import org.apache.ibatis.annotations.Param;
 
@@ -15,15 +15,15 @@
  */
 public interface YearKeyEquipmentMapper {
     public List<YearKeyEquipment> getYearKeyEquipmentList(@Param("indexIds") List<String> indexIds,
-                                                          @Param("dataList") List<YearKeyEquipment> dataList,
+                                                          @Param("dataList") List<TypeTime> dataList,
                                                           @Param("beginTime") Date beginTime,
                                                           @Param("endTime") Date endTime,
-                                                          @Param("timeType") TimeType timeType,
+                                                          @Param("timeType") String timeType,
                                                           @Param("indexStorageId") String indexStorageId);
     List<YearKeyEquipment> getListChart(@Param("indexId") String indexId,
                                             @Param("beginTime") Date beginTime,
                                             @Param("endTime") Date endTime,
-                                            @Param("timeType") TimeType timeType,
-                                            @Param("indexStorageId") String indexStorageId);
+                                            @Param("timeType") String timeType
+                                            );
 
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IDailyKeyEquipmentService.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IDailyKeyEquipmentService.java
index feb1c27..dad2d88 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IDailyKeyEquipmentService.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IDailyKeyEquipmentService.java
@@ -1,7 +1,6 @@
 package com.zhitan.keyequipment.service;
 
 import com.zhitan.basicdata.domain.FacilityArchives;
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.DailyKeyEquipment;
 
 import java.util.Date;
@@ -14,8 +13,8 @@
  * @date 2021-01-11
  */
 public interface IDailyKeyEquipmentService {
-    public List<DailyKeyEquipment> getdailyKeyEquipmentList(List<String> indexIds, List<DailyKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
-    public List<DailyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    public List<DailyKeyEquipment> getdailyKeyEquipmentList(List<String> indexIds, List<DailyKeyEquipment> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+    public List<DailyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
     public List<FacilityArchives> getFacilityArchives();
     public List<FacilityArchives> getPointFacility();
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IMonthlyKeyEquipmentService.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IMonthlyKeyEquipmentService.java
index e3a2cbc..b57380c 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IMonthlyKeyEquipmentService.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IMonthlyKeyEquipmentService.java
@@ -1,7 +1,6 @@
 package com.zhitan.keyequipment.service;
 
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.MonthlyKeyEquipment;
 
 import java.util.Date;
@@ -14,6 +13,8 @@
  * @date 2021-01-11
  */
 public interface IMonthlyKeyEquipmentService {
-    public List<MonthlyKeyEquipment> getMonthlyKeyEquipmentList(List<String> indexIds, List<MonthlyKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
-    List<MonthlyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+
+    List<MonthlyKeyEquipment> getMonthlyKeyEquipmentList(List<String> indexIds, List<MonthlyKeyEquipment> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+
+    List<MonthlyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java
index e97d0c3..2ca3b8e 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java
@@ -1,19 +1,21 @@
 package com.zhitan.keyequipment.service;
 
 
-import com.zhitan.common.enums.TimeType;
+import com.zhitan.common.utils.TypeTime;
 import com.zhitan.keyequipment.domain.YearKeyEquipment;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
 
 import java.util.Date;
 import java.util.List;
 
 /**
- *閲嶇偣璁惧鑳借�楃粺璁� 骞�
+ * 閲嶇偣璁惧鑳借�楃粺璁� 骞�
  *
  * @author sys
  * @date 2021-01-11
  */
 public interface IYearKeyEquipmentService {
-    public List<YearKeyEquipment> getYearKeyEquipmentList(List<String> indexIds, List<YearKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
-    List<YearKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId);
+    List<YearKeyEquipment> getYearKeyEquipmentList(List<String> indexIds, List<TypeTime> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+
+    List<YearKeyEquipment> getListChart(DataItemQueryDTO queryDto);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java
index d0acd5b..def03eb 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java
@@ -1,7 +1,6 @@
 package com.zhitan.keyequipment.service.impl;
 
 import com.zhitan.basicdata.domain.FacilityArchives;
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.DailyKeyEquipment;
 import com.zhitan.keyequipment.mapper.DailyKeyEquipmentMapper;
 import com.zhitan.keyequipment.service.IDailyKeyEquipmentService;
@@ -23,15 +22,25 @@
     @Autowired
     private DailyKeyEquipmentMapper dailyKeyEquipmentMapper;
 
+    /**
+     *
+     * @param indexIds
+     * @param dataList
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
     @Override
-    public List<DailyKeyEquipment> getdailyKeyEquipmentList(List<String> indexIds, List<DailyKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<DailyKeyEquipment> getdailyKeyEquipmentList(List<String> indexIds, List<DailyKeyEquipment> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexIds != null && !indexIds.isEmpty()) {
             return dailyKeyEquipmentMapper.getdailyKeyEquipmentList(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
         }
         return Collections.emptyList();
     }
     @Override
-    public List<DailyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<DailyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexId != null && !indexId.isEmpty()) {
             return dailyKeyEquipmentMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
         }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java
index d76e549..577484e 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java
@@ -1,6 +1,5 @@
 package com.zhitan.keyequipment.service.impl;
 
-import com.zhitan.common.enums.TimeType;
 import com.zhitan.keyequipment.domain.MonthlyKeyEquipment;
 import com.zhitan.keyequipment.mapper.MonthlyKeyEquipmentMapper;
 import com.zhitan.keyequipment.service.IMonthlyKeyEquipmentService;
@@ -23,7 +22,7 @@
     private MonthlyKeyEquipmentMapper monthlyKeyEquipmentMapper;
 
     @Override
-    public List<MonthlyKeyEquipment> getMonthlyKeyEquipmentList(List<String> indexIds, List<MonthlyKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<MonthlyKeyEquipment> getMonthlyKeyEquipmentList(List<String> indexIds, List<MonthlyKeyEquipment> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexIds != null && !indexIds.isEmpty()) {
             return monthlyKeyEquipmentMapper.getMonthlyKeyEquipmentList(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
         }
@@ -31,7 +30,7 @@
     }
 
     @Override
-    public List<MonthlyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<MonthlyKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexId != null && !indexId.isEmpty()) {
             return monthlyKeyEquipmentMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
         }
diff --git a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/YearKeyEquipmentServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/YearKeyEquipmentServiceImpl.java
index 15c24d6..ce6878b 100644
--- a/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/YearKeyEquipmentServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/YearKeyEquipmentServiceImpl.java
@@ -1,9 +1,14 @@
 package com.zhitan.keyequipment.service.impl;
 
-import com.zhitan.common.enums.TimeType;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import com.zhitan.common.utils.DateTimeUtil;
+import com.zhitan.common.utils.TypeTime;
 import com.zhitan.keyequipment.domain.YearKeyEquipment;
 import com.zhitan.keyequipment.mapper.YearKeyEquipmentMapper;
 import com.zhitan.keyequipment.service.IYearKeyEquipmentService;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -22,17 +27,19 @@
     @Autowired
     private YearKeyEquipmentMapper yearKeyEquipmentMapper;
 
-    public List<YearKeyEquipment> getYearKeyEquipmentList(List<String> indexIds, List<YearKeyEquipment> dataList, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
+    public List<YearKeyEquipment> getYearKeyEquipmentList(List<String> indexIds, List<TypeTime> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
         if (indexIds != null && !indexIds.isEmpty()) {
             return yearKeyEquipmentMapper.getYearKeyEquipmentList(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
         }
         return Collections.emptyList();
     }
     @Override
-    public List<YearKeyEquipment> getListChart(String indexId, Date beginTime, Date endTime, TimeType timeType, String indexStorageId){
-        if (indexId != null && !indexId.isEmpty()) {
-            return yearKeyEquipmentMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
+    public List<YearKeyEquipment> getListChart(DataItemQueryDTO queryDto){
+        if(ObjectUtils.isEmpty(queryDto.getIndexId())){
+            return Collections.emptyList();}
+        Date convertTime = DateTimeUtil.getTime(queryDto.getTimeType(), queryDto.getDataTime());
+        DateTime beginTime = DateUtil.beginOfYear(convertTime);
+        DateTime endTime = DateUtil.endOfYear(convertTime);
+        return yearKeyEquipmentMapper.getListChart(queryDto.getIndexId(),beginTime,endTime,queryDto.getTimeType());
         }
-        return Collections.emptyList();
-    }
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/domain/DailyProcessEnergy.java b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/DailyProcessEnergy.java
new file mode 100644
index 0000000..5899f2a
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/DailyProcessEnergy.java
@@ -0,0 +1,74 @@
+package com.zhitan.processenergy.domain;
+
+import com.zhitan.common.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+@Data
+public class DailyProcessEnergy implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String indexId;
+    @Excel(name = "鎸囨爣鍚嶇О")
+    private String indexName;
+    private String value;
+    private Date dataTime;
+    private String timeType;
+    private String timeCode;
+    private String unitId;
+    @Excel(name = "1鏃�")
+    private Double value1;
+    @Excel(name = "2鏃�")
+    private Double value2;
+    @Excel(name = "3鏃�")
+    private Double value3;
+    @Excel(name = "4鏃�")
+    private Double value4;
+    @Excel(name = "5鏃�")
+    private Double value5;
+    @Excel(name = "6鏃�")
+    private Double value6;
+    @Excel(name = "7鏃�")
+    private Double value7;
+    @Excel(name = "8鏃�")
+    private Double value8;
+    @Excel(name = "9鏃�")
+    private Double value9;
+    @Excel(name = "10鏃�")
+    private Double value10;
+    @Excel(name = "11鏃�")
+    private Double value11;
+    @Excel(name = "12鏃�")
+    private Double value12;
+    @Excel(name = "13鏃�")
+    private Double value13;
+    @Excel(name = "14鏃�")
+    private Double value14;
+    @Excel(name = "15鏃�")
+    private Double value15;
+    @Excel(name = "16鏃�")
+    private Double value16;
+    @Excel(name = "17鏃�")
+    private Double value17;
+    @Excel(name = "18鏃�")
+    private Double value18;
+    @Excel(name = "19鏃�")
+    private Double value19;
+    @Excel(name = "20鏃�")
+    private Double value20;
+    @Excel(name = "21鏃�")
+    private Double value21;
+    @Excel(name = "22鏃�")
+    private Double value22;
+    @Excel(name = "23鏃�")
+    private Double value23;
+    @Excel(name = "0鏃�")
+    private Double value0;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/domain/MonthlyProcessEnergy.java b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/MonthlyProcessEnergy.java
new file mode 100644
index 0000000..4cfff4c
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/MonthlyProcessEnergy.java
@@ -0,0 +1,427 @@
+package com.zhitan.processenergy.domain;
+
+import com.zhitan.common.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *宸ュ簭鑳借�� 鏈�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+public class MonthlyProcessEnergy implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String indexId;
+    @Excel(name = "鎸囨爣鍚嶇О")
+    private String indexName;
+    private String value;
+    private Date dataTime;
+    private String timeType;
+    private String timeCode;
+    @Excel(name = "1鏃�")
+    private Double value1;
+    @Excel(name = "2鏃�")
+    private Double value2;
+    @Excel(name = "3鏃�")
+    private Double value3;
+    @Excel(name = "4鏃�")
+    private Double value4;
+    @Excel(name = "5鏃�")
+    private Double value5;
+    @Excel(name = "6鏃�")
+    private Double value6;
+    @Excel(name = "7鏃�")
+    private Double value7;
+    @Excel(name = "8鏃�")
+    private Double value8;
+    @Excel(name = "9鏃�")
+    private Double value9;
+    @Excel(name = "10鏃�")
+    private Double value10;
+    @Excel(name = "11鏃�")
+    private Double value11;
+    @Excel(name = "12鏃�")
+    private Double value12;
+    @Excel(name = "13鏃�")
+    private Double value13;
+    @Excel(name = "14鏃�")
+    private Double value14;
+    @Excel(name = "15鏃�")
+    private Double value15;
+    @Excel(name = "16鏃�")
+    private Double value16;
+    @Excel(name = "17鏃�")
+    private Double value17;
+    @Excel(name = "18鏃�")
+    private Double value18;
+    @Excel(name = "19鏃�")
+    private Double value19;
+    @Excel(name = "20鏃�")
+    private Double value20;
+    @Excel(name = "21鏃�")
+    private Double value21;
+    @Excel(name = "22鏃�")
+    private Double value22;
+    @Excel(name = "23鏃�")
+    private Double value23;
+    @Excel(name = "24鏃�")
+    private Double value24;
+    @Excel(name = "25鏃�")
+    private Double value25;
+    @Excel(name = "26鏃�")
+    private Double value26;
+    @Excel(name = "27鏃�")
+    private Double value27;
+    @Excel(name = "28鏃�")
+    private Double value28;
+    @Excel(name = "29鏃�")
+    private Double value29;
+    @Excel(name = "30鏃�")
+    private Double value30;
+    @Excel(name = "31鏃�")
+    private Double value31;
+    private Integer count;
+    private String unitId;
+    /** 鎬昏褰曟暟 */
+    private long total;
+    private List<Map> tablehead =new ArrayList<>();
+    private List<MonthlyProcessEnergy> tabledata =new ArrayList<MonthlyProcessEnergy>();
+    public String getIndexId() {
+        return indexId;
+    }
+
+    public void setIndexId(String indexId) {
+        this.indexId = indexId;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+    public String getUnitId() {
+        return unitId;
+    }
+
+    public void setUnitId(String unitId) {
+        this.unitId = unitId;
+    }
+
+    public String getTimeCode() {
+        return timeCode;
+    }
+
+    public void setTimeCode(String timeCode) {
+        this.timeCode = timeCode;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getTimeType() {
+        return timeType;
+    }
+
+    public void setTimeType(String timeType) {
+        this.timeType = timeType;
+    }
+
+    public Date getDataTime() {
+        return dataTime;
+    }
+
+    public void setDataTime(Date dataTime) {
+        this.dataTime = dataTime;
+    }
+
+    public Double getValue1() {
+        return value1;
+    }
+
+    public void setValue1(Double value1) {
+        this.value1 = value1;
+    }
+
+    public Double getValue2() {
+        return value2;
+    }
+
+    public void setValue2(Double value2) {
+        this.value2 = value2;
+    }
+
+    public Double getValue3() {
+        return value3;
+    }
+
+    public void setValue3(Double value3) {
+        this.value3 = value3;
+    }
+
+    public Double getValue4() {
+        return value4;
+    }
+
+    public void setValue4(Double value4) {
+        this.value4 = value4;
+    }
+
+    public Double getValue5() {
+        return value5;
+    }
+
+    public void setValue5(Double value5) {
+        this.value5 = value5;
+    }
+
+    public Double getValue6() {
+        return value6;
+    }
+
+    public void setValue6(Double value6) {
+        this.value6 = value6;
+    }
+
+    public Double getValue7() {
+        return value7;
+    }
+
+    public void setValue7(Double value7) {
+        this.value7 = value7;
+    }
+
+    public Double getValue8() {
+        return value8;
+    }
+
+    public void setValue8(Double value8) {
+        this.value8 = value8;
+    }
+
+    public Double getValue9() {
+        return value9;
+    }
+
+    public void setValue9(Double value9) {
+        this.value9 = value9;
+    }
+
+    public Double getValue10() {
+        return value10;
+    }
+
+    public void setValue10(Double value10) {
+        this.value10 = value10;
+    }
+
+    public Double getValue11() {
+        return value11;
+    }
+
+    public void setValue11(Double value11) {
+        this.value11 = value11;
+    }
+
+    public Double getValue12() {
+        return value12;
+    }
+
+    public void setValue12(Double value12) {
+        this.value12 = value12;
+    }
+
+    public Double getValue13() {
+        return value13;
+    }
+
+    public void setValue13(Double value13) {
+        this.value13 = value13;
+    }
+
+    public Double getValue14() {
+        return value14;
+    }
+
+    public void setValue14(Double value14) {
+        this.value14 = value14;
+    }
+
+    public Double getValue15() {
+        return value15;
+    }
+
+    public void setValue15(Double value15) {
+        this.value15 = value15;
+    }
+
+    public Double getValue16() {
+        return value16;
+    }
+
+    public void setValue16(Double value16) {
+        this.value16 = value16;
+    }
+
+    public Double getValue17() {
+        return value17;
+    }
+
+    public void setValue17(Double value17) {
+        this.value17 = value17;
+    }
+
+    public Double getValue18() {
+        return value18;
+    }
+
+    public void setValue18(Double value18) {
+        this.value18 = value18;
+    }
+
+    public Double getValue19() {
+        return value19;
+    }
+
+    public void setValue19(Double value19) {
+        this.value19 = value19;
+    }
+
+    public Double getValue20() {
+        return value20;
+    }
+
+    public void setValue20(Double value20) {
+        this.value20 = value20;
+    }
+
+    public Double getValue21() {
+        return value21;
+    }
+
+    public void setValue21(Double value21) {
+        this.value21 = value21;
+    }
+
+    public Double getValue22() {
+        return value22;
+    }
+
+    public void setValue22(Double value22) {
+        this.value22 = value22;
+    }
+
+    public Double getValue23() {
+        return value23;
+    }
+
+    public void setValue23(Double value23) {
+        this.value23 = value23;
+    }
+
+    public Double getValue24() {
+        return value24;
+    }
+
+    public void setValue24(Double value24) {
+        this.value24 = value24;
+    }
+
+    public Double getValue25() {
+        return value25;
+    }
+
+    public void setValue25(Double value25) {
+        this.value25 = value25;
+    }
+
+    public Double getValue26() {
+        return value26;
+    }
+
+    public void setValue26(Double value26) {
+        this.value26 = value26;
+    }
+
+    public Double getValue27() {
+        return value27;
+    }
+
+    public void setValue27(Double value27) {
+        this.value27 = value27;
+    }
+
+    public Double getValue28() {
+        return value28;
+    }
+
+    public void setValue28(Double value28) {
+        this.value28 = value28;
+    }
+
+    public Double getValue29() {
+        return value29;
+    }
+
+    public void setValue29(Double value29) {
+        this.value29 = value29;
+    }
+
+    public Double getValue30() {
+        return value30;
+    }
+
+    public void setValue30(Double value30) {
+        this.value30 = value30;
+    }
+
+    public Double getValue31() {
+        return value31;
+    }
+
+    public void setValue31(Double value31) {
+        this.value31 = value31;
+    }
+
+    public List<Map> getTablehead() {
+        return tablehead;
+    }
+
+    public void setTablehead(List<Map> tablehead) {
+        this.tablehead = tablehead;
+    }
+    public List<MonthlyProcessEnergy> getTabledata() {
+        return tabledata;
+    }
+
+    public void setTabledata(List<MonthlyProcessEnergy> tabledata) {
+        this.tabledata = tabledata;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public void setTotal(long total) {
+        this.total = total;
+    }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/domain/YearProcessEnergy.java b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/YearProcessEnergy.java
new file mode 100644
index 0000000..e48f5ac
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/domain/YearProcessEnergy.java
@@ -0,0 +1,237 @@
+package com.zhitan.processenergy.domain;
+
+import com.zhitan.common.annotation.Excel;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *宸ュ簭鑳借�� 鏈�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+public class YearProcessEnergy implements Serializable {
+    private static final long serialVersionUID = 1L;
+    private String indexId;
+    @Excel(name = "鎸囨爣鍚嶇О")
+    private String indexName;
+    private String value;
+    private Date dataTime;
+    private String timeType;
+    private String timeCode;
+    @Excel(name = "1鏈�")
+    private Double value1;
+    @Excel(name = "2鏈�")
+    private Double value2;
+    @Excel(name = "3鏈�")
+    private Double value3;
+    @Excel(name = "4鏈�")
+    private Double value4;
+    @Excel(name = "5鏈�")
+    private Double value5;
+    @Excel(name = "6鏈�")
+    private Double value6;
+    @Excel(name = "7鏈�")
+    private Double value7;
+    @Excel(name = "8鏈�")
+    private Double value8;
+    @Excel(name = "9鏈�")
+    private Double value9;
+    @Excel(name = "10鏈�")
+    private Double value10;
+    @Excel(name = "11鏈�")
+    private Double value11;
+    @Excel(name = "12鏈�")
+    private Double value12;
+    private Integer count;
+    private String unitId;
+    /** 鎬昏褰曟暟 */
+    private long total;
+    private List<Map> tablehead =new ArrayList<>();
+    private List<YearProcessEnergy> tabledata =new ArrayList<YearProcessEnergy>();
+    public String getIndexId() {
+        return indexId;
+    }
+
+    public void setIndexId(String indexId) {
+        this.indexId = indexId;
+    }
+
+    public String getIndexName() {
+        return indexName;
+    }
+
+    public void setIndexName(String indexName) {
+        this.indexName = indexName;
+    }
+    public String getUnitId() {
+        return unitId;
+    }
+
+    public void setUnitId(String unitId) {
+        this.unitId = unitId;
+    }
+
+    public String getTimeCode() {
+        return timeCode;
+    }
+
+    public void setTimeCode(String timeCode) {
+        this.timeCode = timeCode;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    public String getTimeType() {
+        return timeType;
+    }
+
+    public void setTimeType(String timeType) {
+        this.timeType = timeType;
+    }
+
+    public Date getDataTime() {
+        return dataTime;
+    }
+
+    public void setDataTime(Date dataTime) {
+        this.dataTime = dataTime;
+    }
+
+    public Double getValue1() {
+        return value1;
+    }
+
+    public void setValue1(Double value1) {
+        this.value1 = value1;
+    }
+
+    public Double getValue2() {
+        return value2;
+    }
+
+    public void setValue2(Double value2) {
+        this.value2 = value2;
+    }
+
+    public Double getValue3() {
+        return value3;
+    }
+
+    public void setValue3(Double value3) {
+        this.value3 = value3;
+    }
+
+    public Double getValue4() {
+        return value4;
+    }
+
+    public void setValue4(Double value4) {
+        this.value4 = value4;
+    }
+
+    public Double getValue5() {
+        return value5;
+    }
+
+    public void setValue5(Double value5) {
+        this.value5 = value5;
+    }
+
+    public Double getValue6() {
+        return value6;
+    }
+
+    public void setValue6(Double value6) {
+        this.value6 = value6;
+    }
+
+    public Double getValue7() {
+        return value7;
+    }
+
+    public void setValue7(Double value7) {
+        this.value7 = value7;
+    }
+
+    public Double getValue8() {
+        return value8;
+    }
+
+    public void setValue8(Double value8) {
+        this.value8 = value8;
+    }
+
+    public Double getValue9() {
+        return value9;
+    }
+
+    public void setValue9(Double value9) {
+        this.value9 = value9;
+    }
+
+    public Double getValue10() {
+        return value10;
+    }
+
+    public void setValue10(Double value10) {
+        this.value10 = value10;
+    }
+
+    public Double getValue11() {
+        return value11;
+    }
+
+    public void setValue11(Double value11) {
+        this.value11 = value11;
+    }
+
+    public Double getValue12() {
+        return value12;
+    }
+
+    public void setValue12(Double value12) {
+        this.value12 = value12;
+    }
+
+    public List<Map> getTablehead() {
+        return tablehead;
+    }
+
+    public void setTablehead(List<Map> tablehead) {
+        this.tablehead = tablehead;
+    }
+    public List<YearProcessEnergy> getTabledata() {
+        return tabledata;
+    }
+
+    public void setTabledata(List<YearProcessEnergy> tabledata) {
+        this.tabledata = tabledata;
+    }
+
+    public Integer getCount() {
+        return count;
+    }
+
+    public void setCount(Integer count) {
+        this.count = count;
+    }
+
+    public long getTotal() {
+        return total;
+    }
+
+    public void setTotal(long total) {
+        this.total = total;
+    }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/dto/DataItemQueryDTO.java b/zhitan-system/src/main/java/com/zhitan/processenergy/dto/DataItemQueryDTO.java
new file mode 100644
index 0000000..b9a69c7
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/dto/DataItemQueryDTO.java
@@ -0,0 +1,28 @@
+package com.zhitan.processenergy.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍛ㄦ湡鏁版嵁椤�.
+ */
+@Data
+public class DataItemQueryDTO {
+
+
+  @ApiModelProperty(value = "鎸囨爣id")
+  private String indexId;
+
+  @ApiModelProperty(value = "妯″瀷code")
+  private String indexCode;
+
+  @ApiModelProperty(value = "鏃堕棿瀛楃涓�")
+  private String dataTime;
+
+  @ApiModelProperty(value = "鏃堕棿绫诲瀷")
+  private String timeType;
+
+  @ApiModelProperty(value = "鑳芥簮绫诲瀷")
+  private String energyType;
+
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/DailyProcessEnergyMapper.java b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/DailyProcessEnergyMapper.java
new file mode 100644
index 0000000..0c3af6f
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/DailyProcessEnergyMapper.java
@@ -0,0 +1,48 @@
+package com.zhitan.processenergy.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.zhitan.processenergy.domain.DailyProcessEnergy;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ */
+public interface DailyProcessEnergyMapper extends BaseMapper<DailyProcessEnergy> {
+
+    /**
+     *
+     * @param indexIds
+     * @param dataList
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<DailyProcessEnergy> getDailyProcessEnergyList(@Param("indexIds") List<String> indexIds,
+                                                              @Param("dataList") List<DailyProcessEnergy> dataList,
+                                                              @Param("beginTime") Date beginTime,
+                                                              @Param("endTime") Date endTime,
+                                                              @Param("timeType") String timeType,
+                                                              @Param("indexStorageId") String indexStorageId);
+
+    /**
+     *
+     * @param indexId
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<DailyProcessEnergy> getListChart(@Param("indexId") String indexId,
+                                          @Param("beginTime") Date beginTime,
+                                          @Param("endTime") Date endTime,
+                                          @Param("timeType") String timeType,
+                                          @Param("indexStorageId")  String indexStorageId);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/MonthlyProcessEnergyMapper.java b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/MonthlyProcessEnergyMapper.java
new file mode 100644
index 0000000..2447aa7
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/MonthlyProcessEnergyMapper.java
@@ -0,0 +1,47 @@
+package com.zhitan.processenergy.mapper;
+
+import com.zhitan.processenergy.domain.MonthlyProcessEnergy;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ */
+public interface MonthlyProcessEnergyMapper {
+
+    /**
+     *
+     * @param indexIds
+     * @param dataList
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<MonthlyProcessEnergy> getMonthlyProcessEnergy(@Param("indexIds") List<String> indexIds,
+                                                               @Param("dataList") List<MonthlyProcessEnergy> dataList,
+                                                               @Param("beginTime") Date beginTime,
+                                                               @Param("endTime") Date endTime,
+                                                               @Param("timeType") String timeType,
+                                                               @Param("indexStorageId") String indexStorageId);
+
+    /**
+     *
+     * @param indexId
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<MonthlyProcessEnergy> getListChart(@Param("indexId") String indexId,
+                                            @Param("beginTime") Date beginTime,
+                                            @Param("endTime") Date endTime,
+                                            @Param("timeType") String timeType,
+                                            @Param("indexStorageId") String indexStorageId);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/YearProcessEnergyMapper.java b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/YearProcessEnergyMapper.java
new file mode 100644
index 0000000..7bd7292
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/mapper/YearProcessEnergyMapper.java
@@ -0,0 +1,46 @@
+package com.zhitan.processenergy.mapper;
+
+import com.zhitan.common.utils.TypeTime;
+import com.zhitan.processenergy.domain.YearProcessEnergy;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ */
+public interface YearProcessEnergyMapper {
+
+    /**
+     *
+     * @param indexIds
+     * @param dataList
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<YearProcessEnergy> getYearProcessEnergy(@Param("indexIds") List<String> indexIds,
+                                                           @Param("dataList") List<TypeTime> dataList,
+                                                           @Param("beginTime") Date beginTime,
+                                                           @Param("endTime") Date endTime,
+                                                           @Param("timeType") String timeType,
+                                                           @Param("indexStorageId") String indexStorageId);
+
+    /**
+     *
+     * @param indexId
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @return
+     */
+    List<YearProcessEnergy> getListChart(@Param("indexId") String indexId,
+                                            @Param("beginTime") Date beginTime,
+                                            @Param("endTime") Date endTime,
+                                            @Param("timeType") String timeType);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/IDailyProcessEnergyService.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IDailyProcessEnergyService.java
new file mode 100644
index 0000000..3164ded
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IDailyProcessEnergyService.java
@@ -0,0 +1,38 @@
+package com.zhitan.processenergy.service;
+
+import com.zhitan.processenergy.domain.DailyProcessEnergy;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+public interface IDailyProcessEnergyService {
+
+    /**
+     *
+     * @param indexIds
+     * @param dataList
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<DailyProcessEnergy> getDailyProcessEnergyList(List<String> indexIds, List<DailyProcessEnergy> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+
+    /**
+     *
+     * @param indexId
+     * @param beginTime
+     * @param endTime
+     * @param timeType
+     * @param indexStorageId
+     * @return
+     */
+    List<DailyProcessEnergy> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/IMonthlyProcessEnergyService.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IMonthlyProcessEnergyService.java
new file mode 100644
index 0000000..a05ed47
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IMonthlyProcessEnergyService.java
@@ -0,0 +1,19 @@
+package com.zhitan.processenergy.service;
+
+import com.zhitan.common.enums.TimeType;
+import com.zhitan.processenergy.domain.MonthlyProcessEnergy;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+public interface IMonthlyProcessEnergyService {
+    public List<MonthlyProcessEnergy> getMonthlyProcessEnergy(List<String> indexIds, List<MonthlyProcessEnergy> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+
+    List<MonthlyProcessEnergy> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/IYearProcessEnergyService.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IYearProcessEnergyService.java
new file mode 100644
index 0000000..0c8baac
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/IYearProcessEnergyService.java
@@ -0,0 +1,26 @@
+package com.zhitan.processenergy.service;
+
+import com.zhitan.common.utils.TypeTime;
+import com.zhitan.processenergy.domain.YearProcessEnergy;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ *宸ュ簭鑳借�� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+public interface IYearProcessEnergyService {
+
+    List<YearProcessEnergy> getYearProcessEnergy(List<String> indexIds, List<TypeTime> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId);
+
+    /**
+     *
+     * @param queryDto
+     * @return
+     */
+    List<YearProcessEnergy> getListChart(DataItemQueryDTO queryDto);
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/DailyProcessEnergyServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/DailyProcessEnergyServiceImpl.java
new file mode 100644
index 0000000..e4ee415
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/DailyProcessEnergyServiceImpl.java
@@ -0,0 +1,39 @@
+package com.zhitan.processenergy.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhitan.processenergy.domain.DailyProcessEnergy;
+import com.zhitan.processenergy.mapper.DailyProcessEnergyMapper;
+import com.zhitan.processenergy.service.IDailyProcessEnergyService;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ *閲嶇偣璁惧鑳借�楃粺璁� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+@Service
+public class DailyProcessEnergyServiceImpl extends ServiceImpl<DailyProcessEnergyMapper,DailyProcessEnergy> implements IDailyProcessEnergyService {
+
+
+    @Override
+    public List<DailyProcessEnergy> getDailyProcessEnergyList(List<String> indexIds, List<DailyProcessEnergy> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
+        if (indexIds != null && !indexIds.isEmpty()){
+            return baseMapper.getDailyProcessEnergyList(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
+        }
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<DailyProcessEnergy> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
+        if (indexId != null && !indexId.isEmpty()) {
+            return baseMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
+        }
+        return Collections.emptyList();
+    }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/MonthlyProcessEnergyServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/MonthlyProcessEnergyServiceImpl.java
new file mode 100644
index 0000000..8016462
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/MonthlyProcessEnergyServiceImpl.java
@@ -0,0 +1,43 @@
+package com.zhitan.processenergy.service.impl;
+
+import com.zhitan.common.enums.TimeType;
+import com.zhitan.processenergy.domain.MonthlyProcessEnergy;
+import com.zhitan.processenergy.mapper.MonthlyProcessEnergyMapper;
+import com.zhitan.processenergy.service.IMonthlyProcessEnergyService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ *閲嶇偣璁惧鑳借�楃粺璁� 鏃�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+@Service
+public class MonthlyProcessEnergyServiceImpl implements IMonthlyProcessEnergyService {
+
+    @Resource
+    private MonthlyProcessEnergyMapper monthlyProcessEnergyMapper;
+
+    @Override
+    public List<MonthlyProcessEnergy> getMonthlyProcessEnergy(List<String> indexIds, List<MonthlyProcessEnergy> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
+        if (indexIds != null && !indexIds.isEmpty()){
+            return monthlyProcessEnergyMapper.getMonthlyProcessEnergy(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
+        }
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<MonthlyProcessEnergy> getListChart(String indexId, Date beginTime, Date endTime, String timeType, String indexStorageId){
+        if (indexId != null && !indexId.isEmpty()) {
+            return monthlyProcessEnergyMapper.getListChart(indexId,beginTime,endTime,timeType,indexStorageId);
+        }
+        return Collections.emptyList();
+    }
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/YearProcessEnergyServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/YearProcessEnergyServiceImpl.java
new file mode 100644
index 0000000..4f992b0
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/processenergy/service/impl/YearProcessEnergyServiceImpl.java
@@ -0,0 +1,59 @@
+package com.zhitan.processenergy.service.impl;
+
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.zhitan.common.utils.DateTimeUtil;
+import com.zhitan.common.utils.TypeTime;
+import com.zhitan.processenergy.domain.YearProcessEnergy;
+import com.zhitan.processenergy.mapper.YearProcessEnergyMapper;
+import com.zhitan.processenergy.service.IYearProcessEnergyService;
+import com.zhitan.realtimedata.domain.dto.DataItemQueryDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import javax.annotation.Resources;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+
+/**
+ *閲嶇偣璁惧鑳借�楃粺璁� 骞�
+ *
+ * @author sys
+ * @date 2021-01-11
+ */
+@Service
+public class YearProcessEnergyServiceImpl implements IYearProcessEnergyService {
+
+    @Resource
+    private YearProcessEnergyMapper yearProcessEnergyMapper;
+
+    @Override
+    public List<YearProcessEnergy> getYearProcessEnergy(List<String> indexIds, List<TypeTime> dataList, Date beginTime, Date endTime, String timeType, String indexStorageId){
+        if (indexIds != null && !indexIds.isEmpty()) {
+            return yearProcessEnergyMapper.getYearProcessEnergy(indexIds, dataList, beginTime, endTime, timeType, indexStorageId);
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     *
+     * @param queryDto
+     * @return
+     */
+    @Override
+    public List<YearProcessEnergy> getListChart(DataItemQueryDTO queryDto) {
+
+        if(ObjectUtil.isEmpty(queryDto.getIndexId())) {
+            return Collections.emptyList();
+        }
+
+        Date convertTime = DateTimeUtil.getTypeTime(queryDto.getTimeType(), queryDto.getDataTime());
+        DateTime beginTime = DateUtil.beginOfYear(convertTime);
+        DateTime endTime = DateUtil.endOfYear(convertTime);
+        return yearProcessEnergyMapper.getListChart(queryDto.getIndexId(),beginTime,endTime,queryDto.getTimeType());
+    }
+}
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 08eac67..65e01e4 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
@@ -1,7 +1,6 @@
 package com.zhitan.realtimedata.domain;
 
 import com.zhitan.common.enums.Quality;
-import com.zhitan.common.enums.TimeType;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -32,7 +31,7 @@
   @ApiModelProperty(value = "鏃堕棿绫诲瀷缂栫爜")
   private String timeCode;
   @ApiModelProperty(value = "鏃堕棿绫诲瀷")
-  private TimeType timeType;
+  private String timeType;
   @ApiModelProperty(value = "鍊�")
   private Double value;
   @ApiModelProperty(value = "璐ㄩ噺")
@@ -110,11 +109,11 @@
     this.timeCode = timeCode;
   }
 
-  public TimeType getTimeType() {
+  public String getTimeType() {
     return timeType;
   }
 
-  public void setTimeType(TimeType timeType) {
+  public void setTimeType(String timeType) {
     this.timeType = timeType;
   }
 
diff --git a/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/DataItemQueryDTO.java b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/DataItemQueryDTO.java
new file mode 100644
index 0000000..fdf53b1
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/DataItemQueryDTO.java
@@ -0,0 +1,21 @@
+package com.zhitan.realtimedata.domain.dto;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 鍛ㄦ湡鏁版嵁椤�.
+ */
+@Data
+public class DataItemQueryDTO {
+    @ApiModelProperty(value ="鎸囨爣id")
+    private String indexId;
+
+    @ApiModelProperty(value="妯″瀷code")
+    private String indexCode;
+    @ApiModelProperty(value ="鏃堕棿瀛楃涓�")
+    private String dataTime;
+    @ApiModelProperty(value ="鏃堕棿绫诲瀷")
+    private String timeType;
+    @ApiModelProperty(value = "鑳芥簮绫诲瀷")
+    private String energyType;
+}
diff --git a/zhitan-system/src/main/resources/mapper/dailyprocessenergy/DailyProcessEnergyMapper.xml b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/DailyProcessEnergyMapper.xml
new file mode 100644
index 0000000..a8b42b9
--- /dev/null
+++ b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/DailyProcessEnergyMapper.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhitan.processenergy.mapper.DailyProcessEnergyMapper">
+    <resultMap id="dataItemMap" type="com.zhitan.processenergy.domain.DailyProcessEnergy">
+        <result column="index_id" property="indexId"/>
+        <result column="index_name" property="indexName"/>
+        <result column="time_type" property="timeType"/>
+        <result column="time_code" property="timeCode"/>
+        <result column="unit_id" property="unitId"/>
+        <result column="value1" property="value1"/>
+        <result column="value2" property="value2"/>
+        <result column="value3" property="value3"/>
+        <result column="value4" property="value4"/>
+        <result column="value5" property="value5"/>
+        <result column="value6" property="value6"/>
+        <result column="value7" property="value7"/>
+        <result column="value8" property="value8"/>
+        <result column="value9" property="value9"/>
+        <result column="value10" property="value10"/>
+        <result column="value11" property="value11"/>
+        <result column="value12" property="value12"/>
+        <result column="value13" property="value13"/>
+        <result column="value14" property="value14"/>
+        <result column="value15" property="value15"/>
+        <result column="value16" property="value16"/>
+        <result column="value17" property="value17"/>
+        <result column="value18" property="value18"/>
+        <result column="value19" property="value19"/>
+        <result column="value20" property="value20"/>
+        <result column="value21" property="value21"/>
+        <result column="value22" property="value22"/>
+        <result column="value23" property="value23"/>
+        <result column="value0" property="value0"/>
+    </resultMap>
+    <select id="getDailyProcessEnergyList" resultMap="dataItemMap">
+        SELECT
+        aa.index_id,
+        aa.index_name,
+        <foreach item="item" index="index" collection="dataList">
+            MAX ( CASE WHEN data_time = #{item.dataTime} THEN "value" END ) AS ${item.value},
+        </foreach>
+        aa.time_type
+        FROM
+        (
+        SELECT
+        ci.index_id,
+        ci.NAME  AS "index_name",
+        di."value",
+        di.data_time,
+        di.time_type
+        FROM
+        data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        LEFT JOIN facility_archives f ON f."id"=ci.equipment
+        WHERE
+        di.data_time >= #{beginTime}
+        AND di.data_time &lt; #{endTime}
+        AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
+        AND di.time_type = #{timeType}
+        <if test="indexStorageId !='' and indexStorageId !=null">
+            and ci.energy_id=#{indexStorageId}
+        </if>
+        ) aa
+        GROUP BY
+        aa.index_id,aa.index_name,aa.time_type
+    </select>
+
+    <select id="getListChart" resultMap="dataItemMap">
+        SELECT
+            di.index_id,
+            ci.name AS "index_name",
+            ci.unit_id,
+            di."value",
+            di.data_time,
+            di.time_type,
+            di.time_code
+        FROM
+        data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        WHERE
+            di.index_id =#{indexId}
+            AND di.data_time &lt; #{endTime}
+            AND di.data_time >= #{beginTime}
+            AND di.time_type = #{timeType}
+        order by di.data_time
+    </select>
+</mapper>
diff --git a/zhitan-system/src/main/resources/mapper/dailyprocessenergy/MonthlyProcessEnergyMapper.xml b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/MonthlyProcessEnergyMapper.xml
new file mode 100644
index 0000000..544eba7
--- /dev/null
+++ b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/MonthlyProcessEnergyMapper.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhitan.processenergy.mapper.MonthlyProcessEnergyMapper">
+    <resultMap id="dataItemMap" type="com.zhitan.processenergy.domain.MonthlyProcessEnergy">
+        <result column="index_id" property="indexId"/>
+        <result column="index_name" property="indexName"/>
+        <result column="time_type" property="timeType"/>
+        <result column="time_code" property="timeCode"/>
+        <result column="unit_id" property="unitId"/>
+        <result column="value1" property="value1"/>
+        <result column="value2" property="value2"/>
+        <result column="value3" property="value3"/>
+        <result column="value4" property="value4"/>
+        <result column="value5" property="value5"/>
+        <result column="value6" property="value6"/>
+        <result column="value7" property="value7"/>
+        <result column="value8" property="value8"/>
+        <result column="value9" property="value9"/>
+        <result column="value10" property="value10"/>
+        <result column="value11" property="value11"/>
+        <result column="value12" property="value12"/>
+        <result column="value13" property="value13"/>
+        <result column="value14" property="value14"/>
+        <result column="value15" property="value15"/>
+        <result column="value16" property="value16"/>
+        <result column="value17" property="value17"/>
+        <result column="value18" property="value18"/>
+        <result column="value19" property="value19"/>
+        <result column="value20" property="value20"/>
+        <result column="value21" property="value21"/>
+        <result column="value22" property="value22"/>
+        <result column="value23" property="value23"/>
+        <result column="value24" property="value24"/>
+        <result column="value25" property="value25"/>
+        <result column="value26" property="value26"/>
+        <result column="value27" property="value27"/>
+        <result column="value28" property="value28"/>
+        <result column="value29" property="value29"/>
+        <result column="value30" property="value30"/>
+        <result column="value31" property="value31"/>
+    </resultMap>
+
+    <select id="getMonthlyProcessEnergy" resultMap="dataItemMap">
+        SELECT
+        aa.index_id,
+        aa.index_name,
+        <foreach item="item" index="index" collection="dataList">
+            MAX ( CASE WHEN data_time = #{item.dataTime} THEN "value" END ) AS ${item.value},
+        </foreach>
+        aa.time_type
+        FROM
+        (
+        SELECT
+        ci.index_id,
+        ci.NAME  AS "index_name",
+        di."value",
+        di.data_time,
+        di.time_type
+        FROM
+        data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        LEFT JOIN facility_archives f ON f."id"=ci.equipment
+        WHERE
+        di.data_time >= #{beginTime}
+        AND di.data_time &lt; #{endTime}
+        AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
+        AND di.time_type = #{timeType}
+        <if test="indexStorageId !='' and indexStorageId !=null">
+            and ci.energy_id=#{indexStorageId}
+        </if>
+        ) aa
+        GROUP BY
+        aa.index_id,aa.index_name,aa.time_type
+    </select>
+
+    <select id="getListChart" resultMap="dataItemMap">
+        SELECT
+            di.index_id,
+            ci.name AS "index_name",
+            ci.unit_id,
+            di."value",
+            di.data_time,
+            di.time_type,
+            di.time_code
+        FROM
+            data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        WHERE
+            di.index_id =#{indexId}
+          AND di.data_time >= #{beginTime}
+          AND di.data_time &lt; #{endTime}
+          AND di.time_type = #{timeType}
+        order by di.data_time
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/zhitan-system/src/main/resources/mapper/dailyprocessenergy/YearProcessEnergyMapper.xml b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/YearProcessEnergyMapper.xml
new file mode 100644
index 0000000..e1a384f
--- /dev/null
+++ b/zhitan-system/src/main/resources/mapper/dailyprocessenergy/YearProcessEnergyMapper.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhitan.processenergy.mapper.YearProcessEnergyMapper">
+    <resultMap id="dataItemMap" type="com.zhitan.processenergy.domain.YearProcessEnergy">
+        <result column="index_id" property="indexId"/>
+        <result column="index_name" property="indexName"/>
+        <result column="time_type" property="timeType"/>
+        <result column="time_code" property="timeCode"/>
+        <result column="unit_id" property="unitId"/>
+        <result column="value1" property="value1"/>
+        <result column="value2" property="value2"/>
+        <result column="value3" property="value3"/>
+        <result column="value4" property="value4"/>
+        <result column="value5" property="value5"/>
+        <result column="value6" property="value6"/>
+        <result column="value7" property="value7"/>
+        <result column="value8" property="value8"/>
+        <result column="value9" property="value9"/>
+        <result column="value10" property="value10"/>
+        <result column="value11" property="value11"/>
+        <result column="value12" property="value12"/>
+    </resultMap>
+
+    <select id="getYearProcessEnergy" resultMap="dataItemMap">
+        SELECT
+        aa.index_id,
+        aa.index_name,
+        <foreach item="item" index="index" collection="dataList">
+            MAX ( CASE WHEN data_time = #{item.dateTime} THEN "value" END ) AS ${item.value},
+        </foreach>
+        aa.time_type
+        FROM
+        (
+        SELECT
+        ci.index_id,
+        ci.NAME  AS "index_name",
+        di."value",
+        di.data_time,
+        di.time_type
+        FROM
+        data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        LEFT JOIN facility_archives f ON f."id"=ci.equipment
+        WHERE
+        di.data_time >= #{beginTime}
+        AND di.data_time &lt; #{endTime}
+        AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
+        AND di.time_type = #{timeType}
+        <if test="indexStorageId !='' and indexStorageId !=null">
+            and ci.energy_id=#{indexStorageId}
+        </if>
+        ) aa
+        GROUP BY
+        aa.index_id,aa.index_name,aa.time_type
+    </select>
+
+    <select id="getListChart" resultMap="dataItemMap">
+        SELECT
+            di.index_id,
+            ci.name AS "index_name",
+            ci.unit_id,
+            di."value",
+            di.data_time,
+            di.time_type,
+            di.time_code
+        FROM
+            data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
+        WHERE
+            di.index_id = #{indexId}
+        AND di.time_type = #{timeType}
+        <if test="endTime != null">
+            AND di.data_time &lt; #{endTime}
+        </if>
+        <if test="beginTime != null">
+            AND di.data_time >= #{beginTime}
+        </if>
+        order by di.data_time
+    </select>
+
+</mapper>
\ No newline at end of file
diff --git a/zhitan-system/src/main/resources/mapper/keyequipment/DailyKeyEquipmentMapper.xml b/zhitan-system/src/main/resources/mapper/keyequipment/DailyKeyEquipmentMapper.xml
index 22c3ec2..3ddc977 100644
--- a/zhitan-system/src/main/resources/mapper/keyequipment/DailyKeyEquipmentMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/keyequipment/DailyKeyEquipmentMapper.xml
@@ -59,7 +59,7 @@
         AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
         AND di.time_type = #{timeType}
         <if test="indexStorageId !='' and indexStorageId !=null">
-            and ci.equipment=#{indexStorageId}
+            and ci.energy_id=#{indexStorageId}
         </if>
         ) aa
         GROUP BY
diff --git a/zhitan-system/src/main/resources/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml b/zhitan-system/src/main/resources/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml
index 19f8a86..7e519d1 100644
--- a/zhitan-system/src/main/resources/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/keyequipment/MonthlyKeyEquipmentMapper.xml
@@ -67,7 +67,7 @@
         AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
         AND di.time_type = #{timeType}
         <if test="indexStorageId !='' and indexStorageId !=null">
-            and ci.equipment=#{indexStorageId}
+            and ci.energy_id=#{indexStorageId}
         </if>
         ) aa
         GROUP BY
diff --git a/zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml b/zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml
index 6a2316e..1777718 100644
--- a/zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhitan.keyequipment.mapper.YearKeyEquipmentMapper">
     <resultMap id="dataItemMap" type="com.zhitan.keyequipment.domain.YearKeyEquipment">
         <result column="index_id" property="indexId"/>
@@ -28,14 +28,14 @@
         aa.index_id,
         aa.index_name,
         <foreach item="item" index="index" collection="dataList">
-            MAX ( CASE WHEN data_time = #{item.dataTime} THEN "value" END ) AS ${item.value},
+            MAX ( CASE WHEN data_time = #{item.dateTime} THEN "value" END ) AS ${item.value},
         </foreach>
         aa.time_type
         FROM
         (
         SELECT
         ci.index_id,
-        ci.NAME  AS "index_name",
+        ci.NAME AS "index_name",
         di."value",
         di.data_time,
         di.time_type
@@ -43,12 +43,15 @@
         data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
         LEFT JOIN facility_archives f ON f."id"=ci.equipment
         WHERE
-        di.data_time >= #{beginTime}
+        di.data_time &gt;= #{beginTime}
         AND di.data_time &lt; #{endTime}
-        AND di.index_id IN <foreach item="indexId" index="index" collection="indexIds"  open="(" separator="," close=")">#{indexId} </foreach>
+        AND di.index_id IN
+        <foreach item="indexId" index="index" collection="indexIds" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>
         AND di.time_type = #{timeType}
         <if test="indexStorageId !='' and indexStorageId !=null">
-            and ci.equipment=#{indexStorageId}
+            and ci.energy_id=#{indexStorageId}
         </if>
         ) aa
         GROUP BY
@@ -57,20 +60,24 @@
 
     <select id="getListChart" resultMap="dataItemMap">
         SELECT
-            di.index_id,
-            ci.name AS "index_name",
-            ci.unit_id,
-            di."value",
-            di.data_time,
-            di.time_type,
-            di.time_code
+        di.index_id,
+        ci.name AS "index_name",
+        ci.unit_id,
+        di."value",
+        di.data_time,
+        di.time_type,
+        di.time_code
         FROM
         data_item di LEFT JOIN energy_index ci ON di.index_id = ci.index_id
         WHERE
-            di.index_id =#{indexId}
-            AND di.data_time &lt; #{endTime}
-            AND di.data_time >= #{beginTime}
+        di.index_id =#{indexId}
+        AND di.data_time &lt; #{endTime}
+        <if test="endTime != null">
+            AND di.data_time &gt;= #{beginTime}
+        </if>
+        <if test="beginTime != null">
             AND di.time_type = #{timeType}
+        </if>
         order by di.data_time
     </select>
 </mapper>
diff --git a/zhitan-vue/src/api/keyEquipment/api.js b/zhitan-vue/src/api/keyEquipment/api.js
new file mode 100644
index 0000000..9972ae6
--- /dev/null
+++ b/zhitan-vue/src/api/keyEquipment/api.js
@@ -0,0 +1,67 @@
+import request from "@/utils/request"
+export default {
+  //  鏌ヨ鎵�鏈夎澶囧垪琛�
+  getFacilityArchives(data) {
+    return request({
+      url: "/keyEquipment/dailyKeyEquipment/getFacilityArchives",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 鏌ヨ閲嶇偣璁惧鍒楄〃
+  getPointFacility(data) {
+    return request({
+      url: "/keyEquipment/dailyKeyEquipment/getPointFacility",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楀垎鏋愶紙鏃ワ級鍥捐〃
+  dailyList(data) {
+    return request({
+      url: "/keyEquipment/dailyKeyEquipment/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楀垎鏋愶紙鏃ワ級鍥捐〃
+  dailyChart(data) {
+    return request({
+      url: "/keyEquipment/dailyKeyEquipment/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級鍒楄〃
+  monthlyList(data) {
+    return request({
+      url: "/keyEquipment/MonthlyKeyEquipment/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楃粺璁★紙鏈堬級鍥捐〃
+  monthlyChart(data) {
+    return request({
+      url: "/keyEquipment/MonthlyKeyEquipment/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楃粺璁★紙骞达級鍒楄〃
+  yearList(data) {
+    return request({
+      url: "/keyEquipment/YearKeyEquipment/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 閲嶇偣璁惧鑳借�楃粺璁★紙骞达級鍥捐〃
+  yearChart(data) {
+    return request({
+      url: "/keyEquipment/YearKeyEquipment/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+}
diff --git a/zhitan-vue/src/api/process/api.js b/zhitan-vue/src/api/process/api.js
new file mode 100644
index 0000000..7923b2b
--- /dev/null
+++ b/zhitan-vue/src/api/process/api.js
@@ -0,0 +1,51 @@
+import request from "@/utils/request"
+export default {
+  // 宸ュ簭鑳借�楀垎鏋愶紙鏃ワ級鍥捐〃
+  dailyList(data) {
+    return request({
+      url: "/processEnergy/dailyProcessEnergy/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 宸ュ簭鑳借�楀垎鏋愶紙鏃ワ級鍥捐〃
+  dailyChart(data) {
+    return request({
+      url: "/processEnergy/dailyProcessEnergy/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 宸ュ簭鑳借�楃粺璁★紙鏈堬級鍒楄〃
+  monthlyList(data) {
+    return request({
+      url: "/processEnergy/monthlyProcessEnergy/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 宸ュ簭鑳借�楃粺璁★紙鏈堬級鍥捐〃
+  monthlyChart(data) {
+    return request({
+      url: "/processEnergy/monthlyProcessEnergy/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 宸ュ簭鑳借�楃粺璁★紙骞达級鍒楄〃
+  yearList(data) {
+    return request({
+      url: "/processEnergy/YearProcessEnergy/list",
+      method: "GET",
+      params: data,
+    })
+  },
+  // 宸ュ簭鑳借�楃粺璁★紙骞达級鍥捐〃
+  yearChart(data) {
+    return request({
+      url: "/processEnergy/YearProcessEnergy/listChart",
+      method: "GET",
+      params: data,
+    })
+  },
+}
diff --git a/zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue b/zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue
index 1d2d092..618d690 100644
--- a/zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue
+++ b/zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue
@@ -54,7 +54,7 @@
                   style="margin-right: 8px"
                 ></el-button>
                 <el-tooltip
-                  v-if="scope.row.indexName.length > 9"
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
                   class="item"
                   effect="dark"
                   :content="scope.row.indexName"
diff --git a/zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue b/zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue
index cc43f28..f6b537e 100644
--- a/zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue
+++ b/zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue
@@ -18,7 +18,7 @@
             v-model="queryParams.dataTime"
             type="month"
             :clearable="false"
-            value-format="yyyy-MM"
+            value-format="YYYY-MM"
             placeholder="閫夋嫨鏃ユ湡"
           >
           </el-date-picker>
@@ -35,7 +35,7 @@
 
     <div class="table-bg-style" style="padding-bottom: 12px">
       <div class="table-box">
-        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px" height="380">
           <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
             <template #default="scope">
               <div style="width: 100%; text-align: left">
@@ -54,7 +54,7 @@
                   style="margin-right: 8px"
                 ></el-button>
                 <el-tooltip
-                  v-if="scope.row.indexName.length > 9"
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
                   class="item"
                   effect="dark"
                   :content="scope.row.indexName"
@@ -68,7 +68,7 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column v-for="index in 31" :key="index" :label="index + '鏃�'" align="center" min-width="100">
+          <el-table-column v-for="index in 31" :key="index" :label="index + '鏃�'" align="center" min-width="100px">
             <template #default="scope">{{ numFilter(scope.row[`value${index}`]) }}</template>
           </el-table-column>
         </el-table>
@@ -123,6 +123,7 @@
   getDataList({
     ...queryParams.value,
   }).then((response) => {
+    console.log("1111111111", response)
     energyList.value = response.data.tabledata
     if (energyList.value && energyList.value.length !== 0) {
       selectChange(energyList.value[0])
diff --git a/zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue b/zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue
index d916e04..83b06c9 100644
--- a/zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue
+++ b/zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue
@@ -54,7 +54,7 @@
                   style="margin-right: 8px"
                 ></el-button>
                 <el-tooltip
-                  v-if="scope.row.indexName.length > 9"
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
                   class="item"
                   effect="dark"
                   :content="scope.row.indexName"
diff --git a/zhitan-vue/src/views/keyEquipment/comps/LineChart.vue b/zhitan-vue/src/views/keyEquipment/comps/LineChart.vue
new file mode 100644
index 0000000..75914f3
--- /dev/null
+++ b/zhitan-vue/src/views/keyEquipment/comps/LineChart.vue
@@ -0,0 +1,177 @@
+<template>
+  <div class="chart-box">
+    <div id="ChartDom" style="width: 100%; height: 100%"></div>
+  </div>
+</template>
+
+<script setup>
+import * as echarts from "echarts"
+const { proxy } = getCurrentInstance()
+import useSettingsStore from "@/store/modules/settings"
+const settingsStore = useSettingsStore()
+const emit = defineEmits()
+const props = defineProps({
+  chartData: {
+    type: Object,
+    default: () => {},
+  },
+})
+
+watch(
+  () => props.chartData,
+  (val) => {
+    console.log("watch", val)
+    initChart()
+  }
+)
+watch(
+  () => settingsStore.sideTheme,
+  (val) => {
+    initChart()
+  }
+)
+
+onMounted(() => {
+  initChart()
+})
+
+function initChart(value) {
+  const chartDom = document.getElementById("ChartDom")
+  if (echarts.getInstanceByDom(chartDom)) {
+    echarts.dispose(chartDom)
+  }
+  const myChart = echarts.init(chartDom)
+  let option = {
+    title: {
+      text: props.chartData.title,
+      left: "40",
+      textStyle: {
+        color: "#2979ff",
+      },
+    },
+    color: ["#40c2ff", "#2979ff", "#ff9900", "#fa3534"],
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        type: "shadow",
+      },
+    },
+    legend: {
+      icon: "rect",
+      itemWidth: 14,
+      itemHeight: 10,
+      textStyle: {
+        color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+      },
+    },
+    grid: {
+      top: "60",
+      left: "50",
+      right: "40",
+      bottom: "20",
+      containLabel: true,
+    },
+    xAxis: {
+      type: "category",
+      axisPointer: {
+        type: "shadow",
+      },
+      axisLine: {
+        show: true,
+        lineStyle: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+        },
+      },
+      axisTick: {
+        show: false,
+      },
+      splitArea: {
+        show: false,
+      },
+      splitLine: {
+        show: false,
+      },
+      axisLabel: {
+        color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+        fontSize: 14,
+        padding: [5, 0, 0, 0],
+        //   formatter: '{value} ml'
+      },
+      data: props.chartData.xData,
+    },
+    yAxis: [
+      {
+        type: "value",
+        nameTextStyle: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          fontSize: 14,
+          padding: [0, 0, 5, 0],
+        },
+        axisLine: {
+          show: false,
+        },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            type: "dashed",
+            color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          },
+        },
+        axisTick: {
+          show: false,
+        },
+        splitArea: {
+          show: false,
+        },
+        axisLabel: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          fontSize: 14,
+        },
+      },
+    ],
+    series: [
+      {
+        name: props.chartData.title,
+        type: "bar",
+        barWidth: "16",
+        // tooltip: {
+        //   valueFormatter: function (value) {
+        //     return value + "tce"
+        //   },
+        // },
+        itemStyle: {
+          borderRadius: [15, 15, 0, 0],
+        },
+        data: props.chartData.yData,
+        markPoint: {
+          data: [
+            { type: "max", name: "Max" },
+            { type: "min", name: "Min" },
+          ],
+        },
+      },
+    ],
+  }
+  setTimeout(() => {
+    myChart.setOption(option)
+  }, 200)
+
+  window.addEventListener(
+    "resize",
+    () => {
+      myChart.resize()
+    },
+    { passive: true }
+  )
+}
+</script>
+
+<style lang="scss" scoped>
+.chart-box {
+  width: 100%;
+  height: 400px;
+  border: 1px solid #eaeaea;
+  margin-top: 20px;
+  padding-top: 20px;
+}
+</style>
diff --git a/zhitan-vue/src/views/keyEquipment/daily/index.vue b/zhitan-vue/src/views/keyEquipment/daily/index.vue
new file mode 100644
index 0000000..055037a
--- /dev/null
+++ b/zhitan-vue/src/views/keyEquipment/daily/index.vue
@@ -0,0 +1,232 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <!-- <el-form-item label="閲嶇偣璁惧" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨閲嶇偣璁惧">
+            <el-option :label="item.name" :value="item.id" v-for="item in facilityList" :key="item.id" />
+          </el-select>
+        </el-form-item> -->
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            v-model="queryParams.dataTime"
+            type="date"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            placeholder="閫夋嫨鏃ユ湡"
+            style="width: 100%"
+            :clearable="false"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 24" :key="index" :label="index - 1 + '鏃�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index - 1}`]) }}</template>
+          </el-table-column>
+        </el-table>
+
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import keyEquipmentApi from "@/api/keyEquipment/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+const facilityList = ref([])
+function getEquip() {
+  keyEquipmentApi.getPointFacility().then((res) => {
+    facilityList.value = res.data
+  })
+}
+getEquip()
+
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let total = ref(0)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  keyEquipmentApi
+    .dailyList({
+      ...queryParams.value,
+      timeType: "HOUR",
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (response.data && response.data.length !== 0) {
+        selectChange(response.data[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  queryParams.value.timeType = "HOUR"
+  keyEquipmentApi.dailyChart(queryParams.value).then((response) => {
+    let actualData = []
+    let expectedData = []
+    let title = ""
+    response.data.forEach((item) => {
+      expectedData.push(numFilter(item.value))
+      actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏃�")
+      title = item.indexName + "(" + (item.unitId || "") + ")"
+    })
+
+    console.log(response)
+    console.log(actualData)
+    console.log(expectedData)
+
+    lineChartData.value = {
+      xData: actualData,
+      yData: expectedData,
+      title,
+    }
+    // LineChartRef.value.initChart()
+    // this.lineChartData.actualData = actualData;
+    // this.lineChartData.expectedData = expectedData;
+    // this.lineChartData.title = title;
+    // this.$refs.LineChart.initChart(this.lineChartData);
+    // this.$refs.BarChart.initChart(this.lineChartData);
+  })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + "-" + month + "-" + date
+}
+getTime()
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+  }
+  getTime()
+  getList()
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>
diff --git a/zhitan-vue/src/views/keyEquipment/monthly/index.vue b/zhitan-vue/src/views/keyEquipment/monthly/index.vue
new file mode 100644
index 0000000..b7a327c
--- /dev/null
+++ b/zhitan-vue/src/views/keyEquipment/monthly/index.vue
@@ -0,0 +1,219 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            style="width: 100%"
+            v-model="queryParams.dataTime"
+            type="month"
+            :clearable="false"
+            value-format="YYYY-MM"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 31" :key="index" :label="index + '鏃�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index}`]) }}</template>
+          </el-table-column>
+        </el-table>
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/monthlyComprehensive/monthlyComprehensive"
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import keyEquipmentApi from "@/api/keyEquipment/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let total = ref(0)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "",
+  timeType: "DAY",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  keyEquipmentApi
+    .monthlyList({
+      ...queryParams.value,
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (energyList.value && energyList.value.length !== 0) {
+        selectChange(energyList.value[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  keyEquipmentApi.monthlyChart(queryParams.value).then((response) => {
+    let actualData = []
+    let expectedData = []
+    let title = ""
+    response.data.forEach((item) => {
+      expectedData.push(numFilter(item.value))
+      actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏃�")
+      title = item.indexName + "(" + (item.unitId || "") + ")"
+    })
+
+    console.log(response)
+    console.log(actualData)
+    console.log(expectedData)
+
+    lineChartData.value = {
+      xData: actualData,
+      yData: expectedData,
+      title,
+    }
+    // LineChartRef.value.initChart()
+    // this.lineChartData.actualData = actualData;
+    // this.lineChartData.expectedData = expectedData;
+    // this.lineChartData.title = title;
+    // this.$refs.LineChart.initChart(this.lineChartData);
+    // this.$refs.BarChart.initChart(this.lineChartData);
+  })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + "-" + month
+}
+getTime()
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+    timeType: "DAY",
+  }
+  getTime()
+  getList()
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>
diff --git a/zhitan-vue/src/views/keyEquipment/year/index.vue b/zhitan-vue/src/views/keyEquipment/year/index.vue
new file mode 100644
index 0000000..cdb08f3
--- /dev/null
+++ b/zhitan-vue/src/views/keyEquipment/year/index.vue
@@ -0,0 +1,226 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            style="width: 100%"
+            v-model="queryParams.dataTime"
+            type="year"
+            :clearable="false"
+            value-format="YYYY"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 12" :key="index" :label="index + '鏈�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index}`]) }}</template>
+          </el-table-column>
+        </el-table>
+
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/yearComprehensive/yearComprehensive"
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import keyEquipmentApi from "@/api/keyEquipment/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "2025-01-0",
+  timeType: "MONTH",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  keyEquipmentApi
+    .yearList({
+      ...queryParams.value,
+      dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "",
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (response.data && response.data.length !== 0) {
+        selectChange(response.data[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  keyEquipmentApi
+    .yearChart({
+      ...queryParams.value,
+      dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "",
+    })
+    .then((response) => {
+      let actualData = []
+      let expectedData = []
+      let title = ""
+      response.data.forEach((item) => {
+        expectedData.push(numFilter(item.value))
+        actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏈�")
+        title = item.indexName + "(" + (item.unitId || "") + ")"
+      })
+
+      console.log(response)
+      console.log(actualData)
+      console.log(expectedData)
+
+      lineChartData.value = {
+        xData: actualData,
+        yData: expectedData,
+        title,
+      }
+      // LineChartRef.value.initChart()
+      // this.lineChartData.actualData = actualData;
+      // this.lineChartData.expectedData = expectedData;
+      // this.lineChartData.title = title;
+      // this.$refs.LineChart.initChart(this.lineChartData);
+      // this.$refs.BarChart.initChart(this.lineChartData);
+    })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + ""
+}
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+    timeType: "MONTH",
+  }
+  getTime()
+  getList()
+}
+
+getTime()
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>
diff --git a/zhitan-vue/src/views/processEnergy/comps/LineChart.vue b/zhitan-vue/src/views/processEnergy/comps/LineChart.vue
new file mode 100644
index 0000000..75914f3
--- /dev/null
+++ b/zhitan-vue/src/views/processEnergy/comps/LineChart.vue
@@ -0,0 +1,177 @@
+<template>
+  <div class="chart-box">
+    <div id="ChartDom" style="width: 100%; height: 100%"></div>
+  </div>
+</template>
+
+<script setup>
+import * as echarts from "echarts"
+const { proxy } = getCurrentInstance()
+import useSettingsStore from "@/store/modules/settings"
+const settingsStore = useSettingsStore()
+const emit = defineEmits()
+const props = defineProps({
+  chartData: {
+    type: Object,
+    default: () => {},
+  },
+})
+
+watch(
+  () => props.chartData,
+  (val) => {
+    console.log("watch", val)
+    initChart()
+  }
+)
+watch(
+  () => settingsStore.sideTheme,
+  (val) => {
+    initChart()
+  }
+)
+
+onMounted(() => {
+  initChart()
+})
+
+function initChart(value) {
+  const chartDom = document.getElementById("ChartDom")
+  if (echarts.getInstanceByDom(chartDom)) {
+    echarts.dispose(chartDom)
+  }
+  const myChart = echarts.init(chartDom)
+  let option = {
+    title: {
+      text: props.chartData.title,
+      left: "40",
+      textStyle: {
+        color: "#2979ff",
+      },
+    },
+    color: ["#40c2ff", "#2979ff", "#ff9900", "#fa3534"],
+    tooltip: {
+      trigger: "axis",
+      axisPointer: {
+        type: "shadow",
+      },
+    },
+    legend: {
+      icon: "rect",
+      itemWidth: 14,
+      itemHeight: 10,
+      textStyle: {
+        color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+      },
+    },
+    grid: {
+      top: "60",
+      left: "50",
+      right: "40",
+      bottom: "20",
+      containLabel: true,
+    },
+    xAxis: {
+      type: "category",
+      axisPointer: {
+        type: "shadow",
+      },
+      axisLine: {
+        show: true,
+        lineStyle: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+        },
+      },
+      axisTick: {
+        show: false,
+      },
+      splitArea: {
+        show: false,
+      },
+      splitLine: {
+        show: false,
+      },
+      axisLabel: {
+        color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+        fontSize: 14,
+        padding: [5, 0, 0, 0],
+        //   formatter: '{value} ml'
+      },
+      data: props.chartData.xData,
+    },
+    yAxis: [
+      {
+        type: "value",
+        nameTextStyle: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          fontSize: 14,
+          padding: [0, 0, 5, 0],
+        },
+        axisLine: {
+          show: false,
+        },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            type: "dashed",
+            color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          },
+        },
+        axisTick: {
+          show: false,
+        },
+        splitArea: {
+          show: false,
+        },
+        axisLabel: {
+          color: settingsStore.sideTheme == "theme-dark" ? "#FFFFFF" : "#222222",
+          fontSize: 14,
+        },
+      },
+    ],
+    series: [
+      {
+        name: props.chartData.title,
+        type: "bar",
+        barWidth: "16",
+        // tooltip: {
+        //   valueFormatter: function (value) {
+        //     return value + "tce"
+        //   },
+        // },
+        itemStyle: {
+          borderRadius: [15, 15, 0, 0],
+        },
+        data: props.chartData.yData,
+        markPoint: {
+          data: [
+            { type: "max", name: "Max" },
+            { type: "min", name: "Min" },
+          ],
+        },
+      },
+    ],
+  }
+  setTimeout(() => {
+    myChart.setOption(option)
+  }, 200)
+
+  window.addEventListener(
+    "resize",
+    () => {
+      myChart.resize()
+    },
+    { passive: true }
+  )
+}
+</script>
+
+<style lang="scss" scoped>
+.chart-box {
+  width: 100%;
+  height: 400px;
+  border: 1px solid #eaeaea;
+  margin-top: 20px;
+  padding-top: 20px;
+}
+</style>
diff --git a/zhitan-vue/src/views/processEnergy/daily/index.vue b/zhitan-vue/src/views/processEnergy/daily/index.vue
new file mode 100644
index 0000000..1ca6431
--- /dev/null
+++ b/zhitan-vue/src/views/processEnergy/daily/index.vue
@@ -0,0 +1,220 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            v-model="queryParams.dataTime"
+            type="date"
+            format="YYYY-MM-DD"
+            value-format="YYYY-MM-DD"
+            placeholder="閫夋嫨鏃ユ湡"
+            style="width: 100%"
+            :clearable="false"
+          />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 24" :key="index" :label="index - 1 + '鏃�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index - 1}`]) }}</template>
+          </el-table-column>
+        </el-table>
+
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import processApi from "@/api/process/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let total = ref(0)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  processApi
+    .dailyList({
+      ...queryParams.value,
+      timeType: "HOUR",
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (response.data && response.data.length !== 0) {
+        selectChange(response.data[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  queryParams.value.timeType = "HOUR"
+  processApi.dailyChart(queryParams.value).then((response) => {
+    let actualData = []
+    let expectedData = []
+    let title = ""
+    response.data.forEach((item) => {
+      expectedData.push(numFilter(item.value))
+      actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏃�")
+      title = item.indexName + "(" + (item.unitId || "") + ")"
+    })
+
+    console.log(response)
+    console.log(actualData)
+    console.log(expectedData)
+
+    lineChartData.value = {
+      xData: actualData,
+      yData: expectedData,
+      title,
+    }
+    // LineChartRef.value.initChart()
+    // this.lineChartData.actualData = actualData;
+    // this.lineChartData.expectedData = expectedData;
+    // this.lineChartData.title = title;
+    // this.$refs.LineChart.initChart(this.lineChartData);
+    // this.$refs.BarChart.initChart(this.lineChartData);
+  })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + "-" + month + "-" + date
+}
+getTime()
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+  }
+  getTime()
+  getList()
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>
diff --git a/zhitan-vue/src/views/processEnergy/monthly/index.vue b/zhitan-vue/src/views/processEnergy/monthly/index.vue
new file mode 100644
index 0000000..8378f6f
--- /dev/null
+++ b/zhitan-vue/src/views/processEnergy/monthly/index.vue
@@ -0,0 +1,226 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            style="width: 100%"
+            v-model="queryParams.dataTime"
+            type="month"
+            :clearable="false"
+            value-format="YYYY-MM"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 31" :key="index" :label="index + '鏃�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index}`]) }}</template>
+          </el-table-column>
+        </el-table>
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/monthlyComprehensive/monthlyComprehensive"
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import processApi from "@/api/process/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let total = ref(0)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "",
+  timeType: "DAY",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  processApi
+    .monthlyList({
+      ...queryParams.value,
+      dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "",
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (energyList.value && energyList.value.length !== 0) {
+        selectChange(energyList.value[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  processApi
+    .monthlyChart({
+      ...queryParams.value,
+      dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "",
+    })
+    .then((response) => {
+      let actualData = []
+      let expectedData = []
+      let title = ""
+      response.data.forEach((item) => {
+        expectedData.push(numFilter(item.value))
+        actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏃�")
+        title = item.indexName + "(" + (item.unitId || "") + ")"
+      })
+
+      console.log(response)
+      console.log(actualData)
+      console.log(expectedData)
+
+      lineChartData.value = {
+        xData: actualData,
+        yData: expectedData,
+        title,
+      }
+      // LineChartRef.value.initChart()
+      // this.lineChartData.actualData = actualData;
+      // this.lineChartData.expectedData = expectedData;
+      // this.lineChartData.title = title;
+      // this.$refs.LineChart.initChart(this.lineChartData);
+      // this.$refs.BarChart.initChart(this.lineChartData);
+    })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + "-" + month
+  console.log(queryParams.value.dataTime)
+}
+getTime()
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+    timeType: "DAY",
+  }
+  getTime()
+  getList()
+}
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>
diff --git a/zhitan-vue/src/views/processEnergy/year/index.vue b/zhitan-vue/src/views/processEnergy/year/index.vue
new file mode 100644
index 0000000..3f66205
--- /dev/null
+++ b/zhitan-vue/src/views/processEnergy/year/index.vue
@@ -0,0 +1,226 @@
+<template>
+  <div class="page">
+    <div class="form-card">
+      <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="鑳芥簮绫诲瀷" prop="energyType">
+          <el-select v-model="queryParams.energyType" placeholder="璇烽�夋嫨鑳芥簮绫诲瀷">
+            <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="缁熻鏃堕棿">
+          <el-date-picker
+            style="width: 100%"
+            v-model="queryParams.dataTime"
+            type="year"
+            :clearable="false"
+            value-format="YYYY"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+          <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
+        </el-form-item>
+        <!-- <el-form-item>
+          <el-button type="warning" icon="Download" @click="handleExport"> 瀵煎嚭 </el-button>
+        </el-form-item> -->
+      </el-form>
+    </div>
+
+    <div class="table-bg-style" style="padding-bottom: 12px">
+      <div class="table-box">
+        <el-table :data="energyList" v-loading="loading" border max-height="380px">
+          <el-table-column fixed prop="indexName" label="鎸囨爣鍚嶇О" width="210px">
+            <template #default="scope">
+              <div style="width: 100%; text-align: left">
+                <el-button
+                  v-if="scope.row.indexId == queryParams.indexId"
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="color: #fff; background: #409eff; margin-right: 8px"
+                ></el-button>
+                <el-button
+                  v-else
+                  icon="search"
+                  circle
+                  @click="selectChange(scope.row)"
+                  style="margin-right: 8px"
+                ></el-button>
+                <el-tooltip
+                  v-if="scope.row.indexName && scope.row.indexName.length > 9"
+                  class="item"
+                  effect="dark"
+                  :content="scope.row.indexName"
+                  placement="top-end"
+                >
+                  <span>
+                    {{ scope.row.indexName.substr(0, 9) + "..." }}
+                  </span>
+                </el-tooltip>
+                <span v-else>{{ scope.row.indexName || "--" }}</span>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column v-for="index in 12" :key="index" :label="index + '鏈�'" align="center" min-width="100">
+            <template #default="scope">{{ numFilter(scope.row[`value${index}`]) }}</template>
+          </el-table-column>
+        </el-table>
+
+        <div>
+          <line-chart ref="LineChartRef" :chartData="lineChartData" />
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { getDataList, getlistChart } from "@/api/comprehensiveStatistics/yearComprehensive/yearComprehensive"
+import { listEnergyTypeList } from "@/api/modelConfiguration/energyType"
+import processApi from "@/api/process/api"
+import LineChart from "../comps/LineChart.vue"
+let { proxy } = getCurrentInstance()
+const energyTypeList = ref()
+function getEnergyTypeList() {
+  listEnergyTypeList().then((res) => {
+    energyTypeList.value = res.data
+    // form.value.indexType = alarm_record_category.value[0].value
+    // form.value.energyType = energyTypeList.value[0].enersno
+    getList()
+  })
+}
+getEnergyTypeList()
+function numFilter(value) {
+  // 鎴彇褰撳墠鏁版嵁鍒板皬鏁扮偣鍚庣殑鍑犱綅
+  let realVal = ""
+  if (!isNaN(value) && value !== "" && value !== null) {
+    realVal = parseFloat(value).toFixed(2)
+  } else {
+    realVal = "--"
+  }
+  return realVal
+}
+let loading = ref(false)
+let queryParams = ref({
+  indexStorageId: "",
+  indexCode: "",
+  pageNum: 1,
+  pageSize: 10,
+  dataTime: "2025-01-01",
+  timeType: "MONTH",
+})
+
+const energyList = ref([])
+const lineChartData = ref({})
+function getList() {
+  queryParams.value.indexCode = proxy.$route.query.modelCode
+  processApi
+    .yearList({
+      ...queryParams.value,
+      dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01" : "",
+    })
+    .then((response) => {
+      energyList.value = response.data
+      if (response.data && response.data.length !== 0) {
+        selectChange(response.data[0])
+      } else {
+        lineChartData.value = {}
+      }
+    })
+}
+
+const LineChartRef = ref()
+function selectChange(row) {
+  queryParams.value.indexId = row ? row.indexId : undefined
+  processApi
+    .yearChart({
+      ...queryParams.value,
+      // dataTime: queryParams.value.dataTime ? queryParams.value.dataTime + "-01-01" : "",
+    })
+    .then((response) => {
+      let actualData = []
+      let expectedData = []
+      let title = ""
+      response.data.forEach((item) => {
+        expectedData.push(numFilter(item.value))
+        actualData.push(item.timeCode.slice(item.timeCode.length - 2, item.timeCode.length) + "鏈�")
+        title = item.indexName + "(" + (item.unitId || "") + ")"
+      })
+
+      console.log(response)
+      console.log(actualData)
+      console.log(expectedData)
+
+      lineChartData.value = {
+        xData: actualData,
+        yData: expectedData,
+        title,
+      }
+      // LineChartRef.value.initChart()
+      // this.lineChartData.actualData = actualData;
+      // this.lineChartData.expectedData = expectedData;
+      // this.lineChartData.title = title;
+      // this.$refs.LineChart.initChart(this.lineChartData);
+      // this.$refs.BarChart.initChart(this.lineChartData);
+    })
+}
+
+function getTime() {
+  var date = new Date()
+  var year = date.getFullYear()
+  var month = date.getMonth() + 1
+  var date = date.getDate()
+  month = month < 10 ? "0" + month : month
+  date = date < 10 ? "0" + date : date
+  queryParams.value.dataTime = year + ""
+}
+
+// 瀵煎嚭鎸夐挳鎿嶄綔
+function handleExport() {
+  exportList(queryParams.value).then((response) => {
+    console.log(response)
+    // download(response.msg);
+  })
+}
+
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+function resetQuery() {
+  queryParams.value = {
+    limitName: "",
+    pageNum: 1,
+    pageSize: 10,
+    dataTime: null,
+    timeType: "MONTH",
+  }
+  getTime()
+  getList()
+}
+
+getTime()
+</script>
+
+<style lang="scss" scoped>
+@import "@/assets/styles/page.scss";
+
+.header-box {
+  :deep .el-form-item__content {
+    color: #fff;
+    font-size: 16px;
+  }
+}
+
+:deep .el-table--fit {
+  border-bottom: 1px solid #eaeaea;
+}
+</style>

--
Gitblit v1.9.3