From a8993d54a33db030fc17649777062f76043be7ea Mon Sep 17 00:00:00 2001
From: DYL0109 <dn18191638832@163.com>
Date: 星期四, 20 三月 2025 21:41:38 +0800
Subject: [PATCH] Merge pull request #18 from Andy-Yin/develop1.0

---
 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-system/src/main/java/com/zhitan/comprehensivestatistics/mapper/MonthlyComprehensiveMapper.java            |    5 
 zhitan-vue/src/views/processEnergy/monthly/index.vue                                                             |  226 +++++
 zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/DailyKeyEquipmentMapper.java                          |    5 
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/impl/MonthlyComprehensiveServiceImpl.java |    6 
 zhitan-vue/src/views/keyEquipment/comps/LineChart.vue                                                            |  177 ++++
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/ImonthlyComprehensive.java                |    5 
 zhitan-vue/src/views/keyEquipment/year/index.vue                                                                 |  226 +++++
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/DailyKeyEquipmentServiceImpl.java               |   15 
 zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java                                            |   43 +
 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-admin/src/main/java/com/zhitan/web/controller/keyequipment/YearKeyEquipmentController.java                |   48 
 zhitan-system/src/main/java/com/zhitan/realtimedata/domain/dto/DataItemQueryDTO.java                             |   21 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/impl/MonthlyKeyEquipmentServiceImpl.java             |    5 
 zhitan-vue/src/views/comprehensive/monthlyComprehensive/index.vue                                                |    9 
 zhitan-vue/src/views/comprehensive/yearComprehensive/index.vue                                                   |    2 
 zhitan-vue/src/api/process/api.js                                                                                |   51 +
 zhitan-vue/src/api/keyEquipment/api.js                                                                           |   67 +
 zhitan-system/src/main/java/com/zhitan/keyequipment/mapper/YearKeyEquipmentMapper.java                           |   10 
 zhitan-system/src/main/java/com/zhitan/keyequipment/service/IYearKeyEquipmentService.java                        |    7 
 zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml                                  |   39 
 zhitan-vue/src/views/comprehensive/dailyComprehensive/index.vue                                                  |    2 
 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-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/comprehensivestatistics/service/IDailyComprehensiveService.java           |    5 
 zhitan-system/src/main/java/com/zhitan/realtimedata/domain/DataItem.java                                         |    7 
 zhitan-vue/src/views/keyEquipment/daily/index.vue                                                                |  232 ++++++
 zhitan-admin/src/main/java/com/zhitan/web/controller/keyequipment/MonthlyKeyEquipmentController.java             |  104 +-
 zhitan-system/src/main/java/com/zhitan/comprehensivestatistics/service/IyearComprehensive.java                   |    5 
 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 
 39 files changed, 2,079 insertions(+), 188 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-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java b/zhitan-common/src/main/java/com/zhitan/common/utils/DateTimeUtil.java
index 248cb2f..48091c1 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,10 +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: 鏃堕棿宸ュ叿绫�
  * @author: yxw
@@ -745,4 +742,42 @@
         }
         return momDate;
     }
+   public static List<TypeTime> getDateTimeList(String timeType,Date dataTime){
+        List<TypeTime> resultlist = new ArrayList<>();
+        Date beginTime = DateUtil.beginOfDay(dataTime);
+        switch (timeType){
+            case TimeTypeConst.TIME_TYPE_DAY:
+                for(int i = 0;i<24;i++){
+                    TypeTime typeTime = new TypeTime();
+                    typeTime.setDataTime(DateUtil.format(beginTime,COMMON_PATTERN));
+                    typeTime.setDateTime(DateTimeUtil.toDateTime(typeTime.getDataTime()));
+                    typeTime.setTimeCode(CommonConst.WORD_H + DateUtil.format(beginTime,COMMON_PATTERN_HOUR));
+                    typeTime.setValue("value" + i);
+                    resultlist.add(typeTime);
+                    beginTime = addHours(beginTime,1);
+                }
+                break;
+            case TimeTypeConst.TIME_TYPE_MONTH:
+                for(int i = 0;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.setValue("value" + i);
+                    resultlist.add(typeTime);
+                    beginTime = addHours(beginTime,1);
+                }
+                break;
+            case TimeTypeConst.TIME_TYPE_YEAR:
+                for(int i = 0;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.setValue("value" + i);
+                    resultlist.add(typeTime);
+                    beginTime = addHours(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..62f5f62 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,8 +1,9 @@
 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;
@@ -14,6 +15,6 @@
  * @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);
+    public 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/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/keyequipment/YearKeyEquipmentMapper.xml b/zhitan-system/src/main/resources/mapper/keyequipment/YearKeyEquipmentMapper.xml
index 6a2316e..3d4e35e 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,9 +43,12 @@
         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}
@@ -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..93564e0
--- /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