From 940bdec33a4c2a6b52d1497e6eeffddb1b6b4585 Mon Sep 17 00:00:00 2001
From: DYL0109 <dn18191638832@163.com>
Date: 星期五, 18 四月 2025 19:17:25 +0800
Subject: [PATCH] Merge pull request #73 from zhitan-cloud/develop1.0

---
 zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java           |    7 
 zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java                  |    5 
 zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java      |    2 
 zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml                         |   18 
 zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java               |   45 +
 zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java       |   22 
 zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml                      |   82 ++
 zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java   |   21 
 zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java    |    5 
 zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java   |  180 ++++--
 zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java    |   17 
 zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java                |    3 
 zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml                       |  793 +++++++++++++++--------------
 zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue                                |   32 
 zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue                              |    2 
 zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java             |   15 
 zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java          |   15 
 zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java |  255 +++++---
 18 files changed, 891 insertions(+), 628 deletions(-)

diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java
similarity index 61%
rename from zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java
rename to zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java
index 8766e28..7b55dae 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalyisisController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/AlarmAnalysisController.java
@@ -2,36 +2,41 @@
 
 import com.zhitan.alarm.domain.dto.AlarmAnalysisDTO;
 import com.zhitan.alarm.domain.vo.AlarmAnalysisVO;
-import com.zhitan.alarm.services.IAlarmAnalyisisService;
+import com.zhitan.alarm.services.IAlarmAnalysisService;
 import com.zhitan.common.core.controller.BaseController;
 import com.zhitan.common.core.domain.AjaxResult;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 /**
-geng * description 鎶ヨ鍒嗘瀽鐩稿叧鍔熻兘
+* description 鎶ヨ鍒嗘瀽鐩稿叧鍔熻兘
  *
- * @author hmj
- * @date 2024-10-26 17:31
+ * @author zhitan
+ * @date
  */
 @RestController
 @RequestMapping("/alarmAnalysis")
-public class AlarmAnalyisisController extends BaseController {
+public class AlarmAnalysisController extends BaseController {
     @Autowired
-    private IAlarmAnalyisisService alarmAnalyisisService;
+    private IAlarmAnalysisService alarmAnalysisService;
 
     @GetMapping("/getByNodeId")
     public AjaxResult getByNodeId(@Validated AlarmAnalysisDTO alarmAnalysisDTO){
-        AlarmAnalysisVO alarmAnalysisVO  = alarmAnalyisisService.getByNodeId(alarmAnalysisDTO);
+        AlarmAnalysisVO alarmAnalysisVO  = alarmAnalysisService.getByNodeId(alarmAnalysisDTO);
         return AjaxResult.success(alarmAnalysisVO);
     }
 
     @GetMapping("/getCountInfo")
     public AjaxResult getCountInfo(@Validated AlarmAnalysisDTO alarmAnalysisDTO){
-        AlarmAnalysisVO alarmAnalysisVO  = alarmAnalyisisService.getCountInfo(alarmAnalysisDTO);
+
+        if(ObjectUtils.isEmpty(alarmAnalysisDTO.getModelCode())){
+            return AjaxResult.error("妯″瀷缂栫爜涓嶈兘涓虹┖");
+        }
+        AlarmAnalysisVO alarmAnalysisVO  = alarmAnalysisService.getCountInfo(alarmAnalysisDTO);
         return AjaxResult.success(alarmAnalysisVO);
     }
 }
diff --git a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java
index 181e1ff..4d2c776 100644
--- a/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java
+++ b/zhitan-admin/src/main/java/com/zhitan/web/controller/alarm/HistoryAlarmController.java
@@ -12,6 +12,7 @@
 import com.zhitan.common.enums.BusinessType;
 import com.zhitan.common.utils.poi.ExcelUtil;
 import com.zhitan.framework.web.service.TokenService;
+import com.zhitan.model.domain.ModelNode;
 import com.zhitan.realtimedata.domain.TagValue;
 import com.zhitan.realtimedata.service.RealtimeDatabaseService;
 import io.swagger.annotations.Api;
@@ -43,10 +44,7 @@
 public class HistoryAlarmController extends BaseController
 {
     @Autowired
-    private IHistoryAlarmService iHistoryAlarmService;
-
-    @Autowired
-    private TokenService tokenService;
+    private IHistoryAlarmService historyAlarmService;
 
     @Autowired
     private RealtimeDatabaseService realtimeDatabaseService;
@@ -55,12 +53,11 @@
      * 鍘嗗彶鎶ヨ 椤甸潰 鏍规嵁 鑺傜偣鐩綍鍜� 鏉′欢鏌ヨ
      */
     @ApiOperation("鍘嗗彶鎶ヨ鏌ヨ")
-//    @PreAuthorize("@ss.hasPermi('energyAlarm:historicalAlarm:list')")
+    @PreAuthorize("@ss.hasPermi('energyAlarm:historicalAlarm:list')")
     @GetMapping("/list")
-    public TableDataInfo list(JkHistoryAlarm jkHistoryAlarm,Long pageNum,Long pageSize)
+    public TableDataInfo list(JkHistoryAlarm jkHistoryAlarm)
     {
-        Page<JkHistoryAlarm> list = iHistoryAlarmService.selectJkHistoryAlarmPage(jkHistoryAlarm,pageNum,pageSize);
-        return getDataTable(list);
+        return getDataTable(historyAlarmService.selectHistoryAlarmPageList(jkHistoryAlarm));
     }
     /**
      * 瀵煎嚭鍘嗗彶鎶ヨ鐩戞帶鍒楄〃
@@ -70,7 +67,7 @@
     @GetMapping("/export")
     public AjaxResult export(JkHistoryAlarm jkHistoryAlarm)
     {
-        List<JkHistoryAlarm> list = iHistoryAlarmService.selectJkHistoryAlarmListExcel(jkHistoryAlarm);
+        List<JkHistoryAlarm> list = historyAlarmService.selectJkHistoryAlarmListExcel(jkHistoryAlarm);
         ExcelUtil<JkHistoryAlarm> util = new ExcelUtil<JkHistoryAlarm>(JkHistoryAlarm.class);
         return util.exportExcel(list, "alarm");
     }
@@ -165,7 +162,7 @@
     public TableDataInfo listNote(JkHistoryAlarm jkHistoryAlarm)
     {
         startPage();
-        List<JkHistoryAlarm> list = iHistoryAlarmService.selectHistoryAlarmNoteList(jkHistoryAlarm);
+        List<JkHistoryAlarm> list = historyAlarmService.selectHistoryAlarmNoteList(jkHistoryAlarm);
         return getDataTable(list);
     }
 }
diff --git a/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java b/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java
index be2716a..89ddfce 100644
--- a/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java
+++ b/zhitan-framework/src/main/java/com/zhitan/framework/web/service/SysLoginService.java
@@ -61,7 +61,7 @@
     public String login(String username, String password, String code, String uuid)
     {
         // 楠岃瘉鐮佹牎楠�
-        validateCaptcha(username, code, uuid);
+//        validateCaptcha(username, code, uuid);
         // 鐧诲綍鍓嶇疆鏍¢獙
         loginPreCheck(username, password);
         // 鐢ㄦ埛楠岃瘉
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java b/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java
index 5ca1ddf..507f1c0 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/domain/dto/AlarmAnalysisDTO.java
@@ -3,6 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.zhitan.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,8 +14,7 @@
  * @author hmj
  * @date 2024-10-16 17:55
  */
-@Getter
-@Setter
+@Data
 public class AlarmAnalysisDTO {
     @ApiModelProperty(value = "鑺傜偣id")
     private String nodeId;
@@ -28,18 +28,23 @@
     /**
      * 缁熻寮�濮嬫椂闂�
      */
+    @ApiModelProperty(value = "缁熻寮�濮嬫椂闂�")
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
     @Excel(name = "鎶ヨ寮�濮嬫椂闂�", dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date beginTime;
 
     /**
-     * 缁熻寮�濮嬫椂闂�
+     * 缁熻缁撴潫鏃堕棿
      */
+    @ApiModelProperty(value = "缁熻缁撴潫鏃堕棿")
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @Excel(name = "鎶ヨ寮�濮嬫椂闂�", dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @Excel(name = "鎶ヨ缁撴潫鏃堕棿", dateFormat = "yyyy-MM-dd HH:mm:ss")
     private Date endTime;
 
-    /** 妯″瀷缂栫爜 */
+    /**
+     * 妯″瀷缂栫爜
+     */
+    @ApiModelProperty(value = "妯″瀷缂栫爜")
     @Excel(name = "妯″瀷缂栫爜")
     private String modelCode;
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java b/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java
index ab16fbd..719be0b 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/mapper/HistoryAlarmMapper.java
@@ -7,6 +7,7 @@
 import com.zhitan.alarm.domain.JkHistoryAlarm;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -17,28 +18,34 @@
  */
 public interface HistoryAlarmMapper {
 
-  /**
-   * 鑾峰彇鍘嗗彶鎶ヨ闆嗗悎
-   *
-   * @param jkHistoryAlarm 鎶ヨ鍙傛暟
-   * @return 棰勬姤璀﹁缃泦鍚�
-   */
-  List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm);
+    /**
+     * 鑾峰彇鍘嗗彶鎶ヨ闆嗗悎
+     *
+     * @param jkHistoryAlarm 鎶ヨ鍙傛暟
+     * @return 棰勬姤璀﹁缃泦鍚�
+     */
+    List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm);
 
-  List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm);
+    List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm);
 
-  /**
-   * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤�  灞曠ず 缁勬�佸浘  娴嬬偣 鎶ヨ淇℃伅
-   *
-   * @param jkHistoryAlarm
-   * @return
-   */
-  List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm);
+    /**
+     * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤�  灞曠ず 缁勬�佸浘  娴嬬偣 鎶ヨ淇℃伅
+     *
+     * @param jkHistoryAlarm
+     * @return
+     */
+    List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm);
 
-  void updateHistoryAlarm(@Param("alarmCode") String alarmCode,
-      @Param("historyAlarm") HistoryAlarm historyAlarm);
+    void updateHistoryAlarm(@Param("alarmCode") String alarmCode, @Param("historyAlarm") HistoryAlarm historyAlarm);
 
-  Page<JkHistoryAlarm> selectJkHistoryAlarmPage(@Param("jkHistoryAlarm") JkHistoryAlarm jkHistoryAlarm,@Param("page")Page<?> page);
+    Page<JkHistoryAlarm> selectJkHistoryAlarmPage(@Param("jkHistoryAlarm") JkHistoryAlarm jkHistoryAlarm, @Param("page") Page<?> page);
 
-  Integer selectCountByTime(@Param("beginTime") DateTime beginTime, @Param("endTime") DateTime endTime);
+    Integer selectCountByTime(@Param("beginTime") DateTime beginTime,
+                              @Param("endTime") DateTime endTime,
+                              @Param("indexIdList") List<String> indexIdList);
+
+    Page<JkHistoryAlarm> getHistoryAlarmList(@Param("beginTime") Date beginTime,
+                                             @Param("endTime") Date endTime,
+                                             @Param("indexIdList") List<String> indexIdList,
+                                             Page<JkHistoryAlarm> pageInfo);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java
similarity index 61%
rename from zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java
rename to zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java
index 2c54007..cd694b8 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalyisisService.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/IAlarmAnalysisService.java
@@ -4,13 +4,20 @@
 import com.zhitan.alarm.domain.vo.AlarmAnalysisVO;
 
 /**
- * description todu
+ * 鎶ヨ鍒嗘瀽鎺ュ彛
  *
- * @author hmj
- * @date 2024-10-26 17:33
+ * @author zhitan
+ * @date
  */
-public interface IAlarmAnalyisisService {
+public interface IAlarmAnalysisService {
+
     AlarmAnalysisVO getByNodeId(AlarmAnalysisDTO alarmAnalysisDTO);
 
+    /**
+     * 鎶ヨ鍒嗘瀽缁熻
+     *
+     * @param alarmAnalysisDTO
+     * @return
+     */
     AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java
index b3dcc7c..78e58ec 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/IHistoryAlarmService.java
@@ -32,5 +32,10 @@
 
   void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm);
 
-  Page<JkHistoryAlarm> selectJkHistoryAlarmPage(JkHistoryAlarm jkHistoryAlarm, Long pageNum, Long pageSize);
+  /**
+   * 鍘嗗彶鎶ヨ鍒嗛〉鏌ヨ
+   * @param jkHistoryAlarm
+   * @return
+   */
+  Page<JkHistoryAlarm> selectHistoryAlarmPageList(JkHistoryAlarm jkHistoryAlarm);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java
index 3545c7d..f18bbc5 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/AlarmAnalyisisServiceImpl.java
@@ -2,13 +2,14 @@
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.zhitan.alarm.domain.JkHistoryAlarm;
 import com.zhitan.alarm.domain.dto.AlarmAnalysisDTO;
 import com.zhitan.alarm.domain.vo.AlarmAnalysisVO;
 import com.zhitan.alarm.mapper.HistoryAlarmMapper;
-import com.zhitan.alarm.services.IAlarmAnalyisisService;
-import com.zhitan.basicdata.domain.MeterImplement;
+import com.zhitan.alarm.services.IAlarmAnalysisService;
 import com.zhitan.basicdata.domain.SysEnergy;
+import com.zhitan.basicdata.domain.vo.MeterImplementModel;
 import com.zhitan.basicdata.mapper.MeterImplementMapper;
 import com.zhitan.basicdata.mapper.SysEnergyMapper;
 import com.zhitan.common.enums.IndexType;
@@ -16,7 +17,7 @@
 import com.zhitan.common.utils.StringUtils;
 import com.zhitan.consumptionanalysis.domain.vo.ChartData;
 import com.zhitan.consumptionanalysis.domain.vo.EnergyProportion;
-import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.domain.ModelNode;
 import com.zhitan.model.domain.vo.ModelNodeIndexInfo;
 import com.zhitan.model.mapper.EnergyIndexMapper;
 import com.zhitan.model.mapper.ModelNodeMapper;
@@ -25,21 +26,18 @@
 import org.springframework.stereotype.Service;
 
 import java.text.DecimalFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
- * description todu
+ * 鎶ヨ鍒嗘瀽瀹炵幇
  *
- * @author hmj
- * @date 2024-10-26 17:34
+ * @author
+ * @date
  */
 @Service
 @AllArgsConstructor
-public class AlarmAnalyisisServiceImpl implements IAlarmAnalyisisService {
+public class AlarmAnalyisisServiceImpl implements IAlarmAnalysisService {
 
     private final ModelNodeMapper modelNodeMapper;
     
@@ -50,22 +48,22 @@
     private final EnergyIndexMapper energyIndexMapper;
     
     private final SysEnergyMapper sysEnergyMapper;
+
+    /**
+     * 鏍规嵁鑺傜偣id鑾峰彇鎶ヨ鍒嗘瀽淇℃伅
+     *
+     * @param alarmAnalysisDTO
+     * @return
+     */
     @Override
     public AlarmAnalysisVO getByNodeId(AlarmAnalysisDTO alarmAnalysisDTO) {
         AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO();
-        List<EnergyProportion> alarmProportionList = new ArrayList<>();
-        for(IndexType indexType : IndexType.values()){
-            EnergyProportion proportion = new EnergyProportion();
-            proportion.setEnergyName(indexType.name());
-            proportion.setCount(0D);
-            proportion.setPercentage(0D);
-            alarmProportionList.add(proportion);
-        }
-                
-                
+        // 鍒濆鍖栨姤璀︽瘮渚嬪垪琛�
+        List<EnergyProportion> alarmProportionList = initializeProportionList(IndexType.values());
+        // 鍒濆鍖栬兘婧愭瘮渚嬪垪琛�
         List<EnergyProportion> energyProportionList = new ArrayList<>();
-        final List<SysEnergy> sysEnergies = sysEnergyMapper.selectSysEnergyList(new SysEnergy());
-        sysEnergies.forEach(sysEnergy -> {
+
+        sysEnergyMapper.selectSysEnergyList(new SysEnergy()).forEach(sysEnergy -> {
             EnergyProportion proportion = new EnergyProportion();
             proportion.setEnergyName(sysEnergy.getEnersno());
             proportion.setCount(0D);
@@ -103,67 +101,21 @@
         query.setNodeId(nodeId);
         final List<JkHistoryAlarm> jkHistoryAlarms = historyAlarmMapper.selectJkHistoryAlarmList(query);
         if(CollectionUtils.isNotEmpty(jkHistoryAlarms)) {
-            jkHistoryAlarms.forEach(alarm -> {
-                final String indexType = alarm.getIndexType();
-                final String indexId = alarm.getIndexId();
-                final String alarmNodeId = alarm.getNodeId();
-                if ("COLLECT".equals(indexType) && StringUtils.isEmpty(alarm.getEnergyId())) {
-                    //鏍规嵁nodeId鍜宨ndexId 鍘绘煡璇㈣閲忓櫒鍏�
-                    EnergyIndex energyIndex = energyIndexMapper.selectEnergyIndexById(indexId);
-                    final MeterImplement meterImplement = meterImplementMapper.selectMeterImplementById(energyIndex.getMeterId());
-                    alarm.setEnergyId(meterImplement.getEnergyType());
-                }
-            });
-            final Map<String, List<JkHistoryAlarm>> alarmTypeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getIndexType));
-            alarmTypeMap.forEach((key, value) -> {
-                alarmProportionList.forEach(alarm->{
-                    if(alarm.getEnergyName().equals(key)){
-                        alarm.setEnergyName(key);
-                        alarm.setCount(format2Double(value.size()));
-                        double percentage = value.size() / jkHistoryAlarms.size() * 100;
-                        alarm.setPercentage(format2Double(percentage));
-                    }
-                });
-            });
-            final Map<String, List<JkHistoryAlarm>> energyTypeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getEnergyId));
-            energyTypeMap.forEach((key, value) -> {
-                energyProportionList.forEach(en->{
-                    if(en.getEnergyName().equals(key)){
-                        en.setEnergyName(key);
-                        en.setCount(format2Double(value.size()));
-                        double percentage = value.size() / jkHistoryAlarms.size() * 100;
-                        en.setPercentage(format2Double(percentage));
-                    }
-                });
-                
-            });
 
+            // 璁剧疆鑳芥簮绫诲瀷
+            processEnergyType(jkHistoryAlarms);
 
-            jkHistoryAlarms.forEach(jkHistoryAlarm -> {
-                final String alarmBeginTime = DateUtil.format(jkHistoryAlarm.getAlarmBeginTime(), timeFormat);
-                jkHistoryAlarm.setAlarmTime(alarmBeginTime);
-            });
-            final Map<String, List<JkHistoryAlarm>> timeMap = jkHistoryAlarms.stream().collect(Collectors.groupingBy(JkHistoryAlarm::getAlarmTime));
-            while (!beginTime.after(endTime)) {
-                final String currentTime = DateUtil.format(beginTime, timeFormat);
-                final List<JkHistoryAlarm> value = timeMap.get(currentTime);
-                ChartData chartData = new ChartData();
-                chartData.setXData(currentTime);
-                chartData.setYValue(null == value?0:(double)value.size());
-                chartDataList.add(chartData);
+            // 璁$畻鎶ヨ绫诲瀷姣斾緥
+            calculateProportions(jkHistoryAlarms, alarmProportionList, JkHistoryAlarm::getIndexType);
+            // 璁$畻鑳芥簮绫诲瀷姣斾緥
+            calculateProportions(jkHistoryAlarms, energyProportionList, JkHistoryAlarm::getEnergyId);
 
-                switch (TimeType.valueOf(queryTimeType)) {
-                    case DAY:
-                        beginTime = DateUtil.offsetHour(beginTime, 1);
-                        break;
-                    case MONTH:
-                        beginTime = DateUtil.offsetDay(beginTime, 1);
-                        break;
-                    default:
-                        beginTime = DateUtil.offsetMonth(beginTime, 1);
-                        break;
-                }
-            }
+            // 澶勭悊鎶ヨ鏃堕棿
+            processAlarmTimes(jkHistoryAlarms, timeFormat);
+
+            // 鐢熸垚鍥捐〃鏁版嵁
+            generateChartData(chartDataList, jkHistoryAlarms, beginTime, endTime, timeFormat, queryTimeType);
+
         }
         alarmAnalysisVO.setAlarmProportion(alarmProportionList);
         alarmAnalysisVO.setEnergyProportion(energyProportionList);
@@ -171,29 +123,93 @@
         return alarmAnalysisVO;
     }
 
+    /**
+     * 璁剧疆鑳芥簮绫诲瀷
+     */
+    private void processEnergyType(List<JkHistoryAlarm> jkHistoryAlarms) {
+        List<String> indexIds = jkHistoryAlarms.stream().map(JkHistoryAlarm::getIndexId).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(indexIds)) {
+            List<MeterImplementModel> modelList = energyIndexMapper.selectEnergyTypeByIndex(indexIds);
+            if (CollectionUtils.isNotEmpty(modelList)){
+                Map<String, String> energyMap = modelList.stream().collect(Collectors.toMap(MeterImplementModel::getIndexId, MeterImplementModel::getEnergyType));
 
-    @Override
-    public AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO) {
-        AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO();
-        final String nodeId = alarmAnalysisDTO.getNodeId();
-        final DateTime beginOfMonth = DateUtil.beginOfMonth(new Date());
-        final DateTime endOfMonth = DateUtil.endOfMonth(new Date());
-        final DateTime beginOfYear = DateUtil.beginOfYear(new Date());
-        final DateTime endOfYear = DateUtil.endOfYear(new Date());
+                jkHistoryAlarms.forEach(alarm -> {
+                    if (IndexType.COLLECT.getDescription().equals(alarm.getIndexType()) && StringUtils.isEmpty(alarm.getEnergyId())){
+                        alarm.setEnergyId(energyMap.get(alarm.getIndexId()));
+                    }
+                });
+            }
+        }
+    }
 
-        /**
-         * 鏌ヨ鐐逛綅涓庣敤鑳藉崟鍏冧俊鎭�
-         */
-        List<ModelNodeIndexInfo> nodeIndexInforList = modelNodeMapper.getModelNodeIndexIdByNodeId(nodeId,null);
-        List<String> indexIds = nodeIndexInforList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList());
+    /**
+     * 璁$畻鍗犳瘮
+     */
+    private void calculateProportions(List<JkHistoryAlarm> jkHistoryAlarms, List<EnergyProportion> proportionList, java.util.function.Function<JkHistoryAlarm, String> keyExtractor) {
+        Map<String, List<JkHistoryAlarm>> typeMap = jkHistoryAlarms.stream()
+                .collect(Collectors.groupingBy(keyExtractor));
+        typeMap.forEach((key, value) -> {
+            proportionList.forEach(alarm -> {
+                if (alarm.getEnergyName().equals(key)) {
+                    alarm.setCount(format2Double(value.size()));
+                    double percentage = (double) value.size() / jkHistoryAlarms.size() * 100;
+                    alarm.setPercentage(format2Double(percentage));
+                }
+            });
+        });
+    }
 
-        Integer monthCount = historyAlarmMapper.selectCountByTime(beginOfMonth,endOfMonth);
-        Integer yearCount = historyAlarmMapper.selectCountByTime(beginOfYear,endOfYear);
-        
-        alarmAnalysisVO.setIndexCount(indexIds.size());
-        alarmAnalysisVO.setMonthCount(monthCount);
-        alarmAnalysisVO.setYearCount(yearCount);
-        return alarmAnalysisVO;
+    /**
+     * 澶勭悊鎶ヨ鏃堕棿
+     */
+    private void processAlarmTimes(List<JkHistoryAlarm> jkHistoryAlarms, String timeFormat) {
+        jkHistoryAlarms.forEach(jkHistoryAlarm -> {
+            String alarmBeginTime = DateUtil.format(jkHistoryAlarm.getAlarmBeginTime(), timeFormat);
+            jkHistoryAlarm.setAlarmTime(alarmBeginTime);
+        });
+    }
+
+    /**
+     * 鐢熸垚鍥捐〃鏁版嵁
+     */
+    private void generateChartData(List<ChartData> chartDataList, List<JkHistoryAlarm> jkHistoryAlarms, Date beginTime, Date endTime, String timeFormat, String queryTimeType) {
+        Map<String, List<JkHistoryAlarm>> timeMap = jkHistoryAlarms.stream()
+                .collect(Collectors.groupingBy(JkHistoryAlarm::getAlarmTime));
+        while (!beginTime.after(endTime)) {
+            String currentTime = DateUtil.format(beginTime, timeFormat);
+            List<JkHistoryAlarm> value = timeMap.get(currentTime);
+            ChartData chartData = new ChartData();
+            chartData.setXData(currentTime);
+            chartData.setYValue(value == null ? 0 : (double) value.size());
+            chartDataList.add(chartData);
+
+            switch (TimeType.valueOf(queryTimeType)) {
+                case DAY:
+                    beginTime = DateUtil.offsetHour(beginTime, 1);
+                    break;
+                case MONTH:
+                    beginTime = DateUtil.offsetDay(beginTime, 1);
+                    break;
+                default:
+                    beginTime = DateUtil.offsetMonth(beginTime, 1);
+                    break;
+            }
+        }
+    }
+
+    /**
+     * 鍒濆鍖栧崰姣斿垪琛�
+     */
+    private List<EnergyProportion> initializeProportionList(Object[] items) {
+        List<EnergyProportion> proportionList = new ArrayList<>();
+        for (Object item : items) {
+            EnergyProportion proportion = new EnergyProportion();
+            proportion.setEnergyName(item.toString());
+            proportion.setCount(0D);
+            proportion.setPercentage(0D);
+            proportionList.add(proportion);
+        }
+        return proportionList;
     }
 
     private double format2Double(double averageEnergy) {
@@ -204,4 +220,41 @@
         String formattedResult = df.format(averageEnergy);
         return Double.valueOf(formattedResult);
     }
+
+    /**
+     * 鑾峰彇鎶ヨ鍒嗘瀽缁熻淇℃伅
+     * @param alarmAnalysisDTO
+     * @return
+     */
+    @Override
+    public AlarmAnalysisVO getCountInfo(AlarmAnalysisDTO alarmAnalysisDTO) {
+
+        AlarmAnalysisVO alarmAnalysisVO = new AlarmAnalysisVO();
+
+        ModelNode parentNode = modelNodeMapper.selectModelNodeById(alarmAnalysisDTO.getNodeId());
+        if(ObjectUtils.isEmpty(parentNode)){
+            return alarmAnalysisVO;
+        }
+
+        // 鏌ヨ妯″瀷涓嬬殑鐐逛綅鏁版嵁
+        List<ModelNodeIndexInfo> nodeIndexInfoList = modelNodeMapper.getAllModelNodeIndexByAddress(parentNode.getModelCode(), parentNode.getAddress());
+        alarmAnalysisVO.setIndexCount(nodeIndexInfoList.size());
+        if (CollectionUtils.isEmpty(nodeIndexInfoList)) {
+            return alarmAnalysisVO;
+        }
+
+        // 鑾峰彇鏈堟姤璀︽暟銆佸勾鎶ヨ鏁�
+        List<String> indexIdList = nodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList());
+
+        DateTime beginOfMonth = DateUtil.beginOfMonth(new Date());
+        DateTime endOfMonth = DateUtil.endOfMonth(new Date());
+        DateTime beginOfYear = DateUtil.beginOfYear(new Date());
+        DateTime endOfYear = DateUtil.endOfYear(new Date());
+        Integer monthCount = historyAlarmMapper.selectCountByTime(beginOfMonth,endOfMonth, indexIdList);
+        Integer yearCount = historyAlarmMapper.selectCountByTime(beginOfYear,endOfYear, indexIdList);
+
+        alarmAnalysisVO.setMonthCount(monthCount);
+        alarmAnalysisVO.setYearCount(yearCount);
+        return alarmAnalysisVO;
+    }
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java
index 9b16045..da5e081 100644
--- a/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java
+++ b/zhitan-system/src/main/java/com/zhitan/alarm/services/impl/HistoryAlarmServiceImpl.java
@@ -1,5 +1,9 @@
 package com.zhitan.alarm.services.impl;
 
+import cn.hutool.core.date.DateUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zhitan.alarm.domain.HistoryAlarm;
 import com.zhitan.alarm.domain.JkHistoryAlarm;
@@ -8,83 +12,147 @@
 import com.zhitan.basicdata.domain.MeterImplement;
 import com.zhitan.basicdata.mapper.MeterImplementMapper;
 import com.zhitan.common.enums.TimeType;
+import com.zhitan.common.utils.DateUtils;
+import com.zhitan.common.utils.PageUtils;
 import com.zhitan.common.utils.StringUtils;
 import com.zhitan.model.domain.EnergyIndex;
+import com.zhitan.model.domain.ModelNode;
+import com.zhitan.model.domain.NodeIndex;
+import com.zhitan.model.domain.vo.ModelNodeIndexInfo;
 import com.zhitan.model.mapper.EnergyIndexMapper;
+import com.zhitan.model.mapper.ModelNodeMapper;
+import com.zhitan.model.mapper.NodeIndexMapper;
+import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
+
+@AllArgsConstructor
 
 @Service
 public class HistoryAlarmServiceImpl implements IHistoryAlarmService {
 
-  @Autowired
-  private HistoryAlarmMapper historyAlarmMapper;
+    @Resource
+    private HistoryAlarmMapper historyAlarmMapper;
 
-  @Autowired
-  private MeterImplementMapper meterImplementMapper;
+    @Resource
+    private MeterImplementMapper meterImplementMapper;
 
-  @Autowired
-  private EnergyIndexMapper energyIndexMapper;
+    @Resource
+    private ModelNodeMapper modelNodeMapper;
+    @Resource
+    private NodeIndexMapper nodeIndexMapper;
+    @Resource
+    private EnergyIndexMapper energyIndexMapper;
 
 
-  @Override
-  public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime) {
-    return null;
-  }
+    @Override
+    public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime) {
+        return null;
+    }
 
-  @Override
-  public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, TimeType timeType) {
-    return null;
-  }
+    @Override
+    public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, TimeType timeType) {
+        return null;
+    }
 
-  @Override
-  public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, String alarmType) {
-    return null;
-  }
+    @Override
+    public List<HistoryAlarm> getHistoryAlarm(Date beginTime, Date endTime, String alarmType) {
+        return null;
+    }
 
-  @Override
-  public List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm) {
-    return historyAlarmMapper.selectJkHistoryAlarmList(jkHistoryAlarm);
-  }
+    @Override
+    public List<JkHistoryAlarm> selectJkHistoryAlarmList(JkHistoryAlarm jkHistoryAlarm) {
+        return historyAlarmMapper.selectJkHistoryAlarmList(jkHistoryAlarm);
+    }
 
-  @Override
-  public List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm) {
-    return historyAlarmMapper.selectJkHistoryAlarmListExcel(jkHistoryAlarm);
-  }
+    @Override
+    public List<JkHistoryAlarm> selectJkHistoryAlarmListExcel(JkHistoryAlarm jkHistoryAlarm) {
+        return historyAlarmMapper.selectJkHistoryAlarmListExcel(jkHistoryAlarm);
+    }
 
-  /**
-   * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤�  灞曠ず 缁勬�佸浘  娴嬬偣 鎶ヨ淇℃伅
-   *
-   * @param jkHistoryAlarm
-   * @return
-   */
-  @Override
-  public List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm) {
-    return historyAlarmMapper.selectHistoryAlarmNoteList(jkHistoryAlarm);
-  }
+    /**
+     * 瀹炴椂妫�娴� 鍔熻兘 鐨勫 sheet椤�  灞曠ず 缁勬�佸浘  娴嬬偣 鎶ヨ淇℃伅
+     *
+     * @param jkHistoryAlarm
+     * @return
+     */
+    @Override
+    public List<JkHistoryAlarm> selectHistoryAlarmNoteList(JkHistoryAlarm jkHistoryAlarm) {
+        return historyAlarmMapper.selectHistoryAlarmNoteList(jkHistoryAlarm);
+    }
 
-  @Override
-  public void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm) {
-    historyAlarmMapper.updateHistoryAlarm(alarmCode, historyAlarm);
-  }
+    @Override
+    public void updateHistoryAlarm(String alarmCode, HistoryAlarm historyAlarm) {
+        historyAlarmMapper.updateHistoryAlarm(alarmCode, historyAlarm);
+    }
 
-  @Override
-  public Page<JkHistoryAlarm> selectJkHistoryAlarmPage(JkHistoryAlarm jkHistoryAlarm, Long pageNum, Long pageSize) {
-    final Page<JkHistoryAlarm> jkHistoryAlarmPage = historyAlarmMapper.selectJkHistoryAlarmPage(jkHistoryAlarm, new Page<>(pageNum, pageSize));
-    jkHistoryAlarmPage.getRecords().forEach(alarm->{
-      final String indexType = alarm.getIndexType();
-      final String indexId = alarm.getIndexId();
-      if("COLLECT".equals(indexType) && StringUtils.isEmpty(alarm.getEnergyId())){
-        //鏍规嵁nodeId鍜宨ndexId 鍘绘煡璇㈣閲忓櫒鍏�
-        EnergyIndex energyIndex = energyIndexMapper.selectEnergyIndexById(indexId);
-        final MeterImplement meterImplement = meterImplementMapper.selectMeterImplementById(energyIndex.getMeterId());
-        alarm.setEnergyId(meterImplement.getEnergyType());
-      }
-    });
-    return jkHistoryAlarmPage;
-  }
-  
+    /**
+     * 鑾峰彇鍘嗗彶鎶ヨ鍒嗛〉鏁版嵁
+     *
+     * @param historyAlarm
+     * @return
+     */
+    @Override
+    public Page<JkHistoryAlarm> selectHistoryAlarmPageList(JkHistoryAlarm historyAlarm) {
+        Page<JkHistoryAlarm> pageInfo = PageUtils.getPageInfo(JkHistoryAlarm.class);
+
+        List<String> indexIdList = new ArrayList<>();
+        if ("ALL".equals(historyAlarm.getEierarchyFlag())) {
+
+            ModelNode modelNode = modelNodeMapper.selectModelNodeById(historyAlarm.getNodeId());
+            List<ModelNodeIndexInfo> modelNodeIndexInfoList =
+                    modelNodeMapper.getAllModelNodeIndexByAddress(modelNode.getModelCode(), modelNode.getAddress());
+            if (StringUtils.isNotEmpty(historyAlarm.getIndexName())) {
+                modelNodeIndexInfoList = modelNodeIndexInfoList.stream()
+                        .filter(modelNodeIndexInfo -> modelNodeIndexInfo.getIndexName().contains(historyAlarm.getIndexName()))
+                        .collect(Collectors.toList());
+            }
+            if (ObjectUtils.isNotEmpty(historyAlarm.getIndexType())) {
+                modelNodeIndexInfoList = modelNodeIndexInfoList.stream()
+                        .filter(modelNodeIndexInfo -> historyAlarm.getIndexType().equals(modelNodeIndexInfo.getIndexType()))
+                        .collect(Collectors.toList());
+            }
+            indexIdList = modelNodeIndexInfoList.stream().map(ModelNodeIndexInfo::getIndexId).collect(Collectors.toList());
+
+        } else {
+
+            LambdaQueryWrapper<NodeIndex> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(NodeIndex::getNodeId, historyAlarm.getNodeId());
+            List<NodeIndex> nodeIndexList = nodeIndexMapper.selectList(queryWrapper);
+            List<String> allIndexIdList = nodeIndexList.stream().map(NodeIndex::getIndexId).collect(Collectors.toList());
+            if (ObjectUtils.isNotEmpty(allIndexIdList)) {
+                List<EnergyIndex> indexList = energyIndexMapper.selectEnergyIndexByIds(allIndexIdList);
+                if (ObjectUtils.isNotEmpty(historyAlarm.getIndexName())) {
+                    indexList = indexList.stream().filter(energyIndex -> energyIndex.getName().contains(historyAlarm.getIndexName())).collect(Collectors.toList());
+                }
+                if (ObjectUtils.isNotEmpty(historyAlarm.getIndexType())) {
+                    indexList = indexList.stream().filter(energyIndex -> historyAlarm.getIndexType().equals(energyIndex.getIndexTypeCode())).collect(Collectors.toList());
+                }
+                indexIdList = indexList.stream().map(EnergyIndex::getIndexId).collect(Collectors.toList());
+            }
+        }
+
+        if (ObjectUtils.isEmpty(indexIdList)) {
+            return pageInfo;
+        }
+
+        //鏃堕棿澶勭悊 濡傛灉涓嶄紶鏃堕棿榛樿鏌ヨ褰撳ぉ鐨勬暟鎹�
+        Date endTime = DateUtils.parseDate(historyAlarm.getEndTime());
+        if (ObjectUtils.isEmpty(endTime)) {
+            endTime = DateUtil.endOfDay(DateUtils.getNowDate());
+        }
+        Date beginTime = DateUtils.parseDate(historyAlarm.getBeginTime());
+        if (ObjectUtils.isEmpty(beginTime)) {
+            beginTime = DateUtil.beginOfDay(DateUtils.getNowDate());
+        }
+
+        return historyAlarmMapper.getHistoryAlarmList(beginTime, endTime,indexIdList, pageInfo);
+    }
+
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java b/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java
new file mode 100644
index 0000000..af09843
--- /dev/null
+++ b/zhitan-system/src/main/java/com/zhitan/basicdata/domain/vo/MeterImplementModel.java
@@ -0,0 +1,22 @@
+package com.zhitan.basicdata.domain.vo;
+
+import lombok.Data;
+
+@Data
+public class MeterImplementModel {
+
+    /**
+     * indexId
+     */
+    private String indexId;
+
+    /**
+     * meterId
+     */
+    private String meterId;
+
+    /**
+     * 鑳芥簮绫诲瀷
+     */
+    private String energyType;
+}
diff --git a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
index c757ace..63a326d 100644
--- a/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/model/mapper/EnergyIndexMapper.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zhitan.basicdata.domain.vo.MeterImplementModel;
 import com.zhitan.model.domain.EnergyIndex;
 import com.zhitan.model.domain.EnergyIndexQuery;
 import com.zhitan.model.domain.vo.ModelNodeIndexInfo;
@@ -105,4 +106,6 @@
   List<EnergyIndex> getIndexByMeterIdIndexCode(@Param("meterId") String meterId, @Param("indexCode") String indexCode, @Param("nodeId") String nodeId);
 
   List<ModelNodeIndexInfo> getModelNodeIndexInfoListByIndexIds(@Param("indexIds") String[] indexIds);
+
+  List<MeterImplementModel> selectEnergyTypeByIndex(@Param("indexIds") List<String> indexIds);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java b/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java
index 56b41e1..6af717b 100644
--- a/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java
+++ b/zhitan-system/src/main/java/com/zhitan/model/mapper/ModelNodeMapper.java
@@ -215,4 +215,9 @@
                                                      @Param("energyType") String energyType,
                                                      @Param("timeType") TimeType timeType,
                                                      @Param("dateTimeMap") Map<String, LocalDateTime> dateTimeMap);
+
+    /**
+     * 閫氳繃鑺傜偣鍦板潃鏌ヨ鑺傜偣涓嬪強瀛愯妭鐐逛笅鐨勬墍鏈夌偣浣嶄俊鎭�
+     */
+    List<ModelNodeIndexInfo> getAllModelNodeIndexByAddress(@Param("modelCode") String modelCode, @Param("address") String address);
 }
diff --git a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java
index a0bf88e..60e2e9c 100644
--- a/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java
+++ b/zhitan-system/src/main/java/com/zhitan/statisticalAnalysis/domain/vo/FlowChartsVO.java
@@ -52,10 +52,11 @@
 
     public BigDecimal getEnergyLossRatio() {
         if (BigDecimal.ZERO.compareTo(totalAccumulatedAmount) == 0
-                || BigDecimal.ZERO.compareTo(difference) == 0){
+                || BigDecimal.ZERO.compareTo(difference) == 0) {
             return BigDecimal.ZERO;
         }
-        return energyLossRatio = difference.divide(totalAccumulatedAmount, 2, RoundingMode.HALF_UP);
+        // 鍏堣绠楁瘮渚嬶紝鍐嶄箻浠� 100 杞崲涓虹櫨鍒嗘暟
+        return energyLossRatio = difference.divide(totalAccumulatedAmount, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP);
     }
 
     public FlowChartsVO() {
diff --git a/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml b/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml
index d7d6f6e..49eab74 100644
--- a/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/alarm/HistoryAlarmMapper.xml
@@ -4,7 +4,7 @@
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zhitan.alarm.mapper.HistoryAlarmMapper">
 
-  <resultMap type="HistoryAlarm" id="HistoryAlarmResult">
+  <resultMap type="com.zhitan.alarm.domain.HistoryAlarm" id="HistoryAlarmResult">
     <result property="id" column="id"/>
     <result property="endTime" column="end_time"/>
     <result property="indexId" column="index_id"/>
@@ -18,7 +18,7 @@
     <result property="content" column="content"/>
   </resultMap>
 
-  <resultMap type="JkHistoryAlarm" id="JkHistoryAlarmResult">
+  <resultMap type="com.zhitan.alarm.domain.JkHistoryAlarm" id="JkHistoryAlarmResult">
     <result property="modelName" column="modelname"/>
     <result property="code" column="code"/>
     <result property="indexName" column="indexname"/>
@@ -50,7 +50,7 @@
     from history_alarm
   </sql>
 
-  <select id="selectHistoryAlarmList" parameterType="HistoryAlarm" resultMap="HistoryAlarmResult">
+  <select id="selectHistoryAlarmList" parameterType="com.zhitan.alarm.domain.HistoryAlarm" resultMap="HistoryAlarmResult">
     <include refid="selectHistoryAlarmVo"/>
     <where>
       <if test="indexName != null  and indexName != ''">and index_name like concat('%',
@@ -77,7 +77,7 @@
   </select>
 
 
-  <update id="updateHistoryAlarm" parameterType="HistoryAlarm">
+  <update id="updateHistoryAlarm" parameterType="com.zhitan.alarm.domain.HistoryAlarm">
     delete from realtime_alarm where alarm_code = #{alarmCode};
     insert into history_alarm
     <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -127,7 +127,7 @@
   </delete>
 
   <!--鍘嗗彶 鎶ヨ鍒楄〃椤甸潰 閲囬泦鐐� 涓婚〉闈㈠垪琛ㄦ煡璇�-->
-  <select id="selectJkHistoryAlarmList" parameterType="JkHistoryAlarm"
+  <select id="selectJkHistoryAlarmList" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm"
     resultMap="JkHistoryAlarmResult">
     SELECT
     mo."name" AS modelname,
@@ -180,7 +180,7 @@
     order by alarm_level,mo.node_id,limit_type asc
   </select>
 
-  <select id="selectJkHistoryAlarmListExcel" parameterType="JkHistoryAlarm"
+  <select id="selectJkHistoryAlarmListExcel" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm"
     resultMap="JkHistoryAlarmResult">
     SELECT
     mo."name" AS modelname,
@@ -232,7 +232,7 @@
     order by alarm_level,mo.node_id,limit_type asc
   </select>
 
-  <select id="selectHistoryAlarmNoteList" parameterType="JkHistoryAlarm"
+  <select id="selectHistoryAlarmNoteList" parameterType="com.zhitan.alarm.domain.JkHistoryAlarm"
     resultMap="JkHistoryAlarmResult">
     SELECT
     ei.code,
@@ -273,7 +273,7 @@
     </if>
     order by alarm_level,limit_type asc
   </select>
-  <select id="selectJkHistoryAlarmPage" resultType="JkHistoryAlarm">
+  <select id="selectJkHistoryAlarmPage" resultType="com.zhitan.alarm.domain.JkHistoryAlarm">
     SELECT
     mo."name" AS modelname,
     ei.code,
@@ -294,7 +294,7 @@
     energy_index ei,
     node_index ni,
     model_node mo,
-    history_alarm bj ,
+    history_alarm bj,
     alarm_item alit
     WHERE
     ni.node_id IN (
@@ -310,30 +310,74 @@
     AND alit.alarm_code = bj.alarm_code
     AND alit.time_slot='LIVE'
     AND ei.index_type=#{jkHistoryAlarm.indexType}
-    <if test="jkHistoryAlarm.indexName != null  and jkHistoryAlarm.indexName != ''">and ei.name like concat('%', #{jkHistoryAlarm.indexName},
-      '%')
+    <if test="jkHistoryAlarm.indexName != null  and jkHistoryAlarm.indexName != ''">
+      and ei.name like concat('%', #{jkHistoryAlarm.indexName}, '%')
     </if>
-    <if test="jkHistoryAlarm.limitType != null  and jkHistoryAlarm.limitType != ''">and alit.limit_type=#{jkHistoryAlarm.limitType}</if>
-    <if test="jkHistoryAlarm.alarmLevel != null  and jkHistoryAlarm.alarmLevel != ''">and alit.alarm_level=#{jkHistoryAlarm.alarmLevel}</if>
-    <if test="jkHistoryAlarm.beginTime != null and jkHistoryAlarm.beginTime != ''">and begin_time &gt;=
-      to_timestamp(#{jkHistoryAlarm.beginTime},'yyyy-mm-dd hh24:mi:ss')
+    <if test="jkHistoryAlarm.limitType != null  and jkHistoryAlarm.limitType != ''">
+      and alit.limit_type=#{jkHistoryAlarm.limitType}
+      </if>
+    <if test="jkHistoryAlarm.alarmLevel != null  and jkHistoryAlarm.alarmLevel != ''">
+      and alit.alarm_level=#{jkHistoryAlarm.alarmLevel}
+      </if>
+    <if test="jkHistoryAlarm.beginTime != null and jkHistoryAlarm.beginTime != ''">
+      and begin_time &gt;= to_timestamp(#{jkHistoryAlarm.beginTime}, 'yyyy-mm-dd hh24:mi:ss')
     </if>
-    <if test="jkHistoryAlarm.endTime != null and jkHistoryAlarm.endTime != ''">and begin_time &lt;=
-      to_timestamp(#{jkHistoryAlarm.endTime},'yyyy-mm-dd hh24:mi:ss')
+    <if test="jkHistoryAlarm.endTime != null and jkHistoryAlarm.endTime != ''">
+      and begin_time &lt;= to_timestamp(#{jkHistoryAlarm.endTime},'yyyy-mm-dd hh24:mi:ss')
     </if>
     order by alarm_level,mo.node_id,limit_type asc
   </select>
+
   <select id="selectCountByTime" resultType="java.lang.Integer">
     select count(0)
     from history_alarm 
     <where>
       <if test="beginTime != null ">
-       and begin_time &gt;= #{beginTime}
+        and begin_time &gt;= #{beginTime}
       </if>
       <if test="endTime != null ">
-      and begin_time &lt;= #{endTime}
+        and begin_time &lt;= #{endTime}
+      </if>
+      <if test="indexIdList != null and indexIdList.size() > 0">
+        and index_id in
+        <foreach collection="indexIdList" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
       </if>
     </where>
   </select>
+    <select id="getHistoryAlarmList" resultType="com.zhitan.alarm.domain.JkHistoryAlarm">
+      SELECT
+        mn.node_id nodeId,
+        mn."name" modelName,
+        mi.meter_name meterName,
+        mi.energy_type energyId,
+        his.index_id indexId,
+        ei."name" indexName,
+        ei.index_type indexType,
+        ei.code code,
+        ei.unit_id unitId,
+        ai.alarm_level alarmLevel,
+        ai.limit_type limitType,
+        his.limiting_value limitingValue,
+        his.alarm_value alarmValue,
+        his.begin_time alarmBeginTime,
+        his.end_time alarmEndTime,
+        his.duration duration
+      FROM
+        history_alarm his
+          LEFT JOIN alarm_item ai ON his.item_id = ai."id"
+          LEFT JOIN energy_index ei ON his.index_id = ei.index_id
+          LEFT JOIN meter_implement mi ON ei.meter_id = mi."id"
+          LEFT JOIN model_node mn ON mn.node_id = ai.node_id
+      WHERE
+        his.begin_time BETWEEN #{beginTime} AND #{endTime}
+        <if test="indexIdList != null and indexIdList.size() > 0">
+          AND his.index_id IN
+          <foreach collection="indexIdList" item="item" open="(" separator="," close=")">
+            #{item}
+          </foreach>
+        </if>
+    </select>
 
 </mapper>
diff --git a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
index 3e16008..3534519 100644
--- a/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/model/EnergyIndexMapper.xml
@@ -1,317 +1,319 @@
 <?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.model.mapper.EnergyIndexMapper">
 
-  <resultMap type="EnergyIndex" id="EnergyIndexResult">
-    <result property="indexId" column="index_id"/>
-    <result property="name" column="name"/>
-    <result property="code" column="code"/>
-    <result property="indexType" column="index_type"/>
-    <result property="indexCategory" column="index_category"/>
-    <result property="remark" column="remark"/>
-    <result property="unitId" column="unit_id"/>
-    <result property="meterId" column="meter_id"/>
-    <result property="orderNum" column="order_num"/>
-    <result property="equipment" column="equipment"/>
-    <result property="energyId" column="energy_id"/>
-    <result property="meterName" column="meter_name"/>
-  </resultMap>
+    <resultMap type="com.zhitan.model.domain.EnergyIndex" id="EnergyIndexResult">
+        <result property="indexId" column="index_id"/>
+        <result property="name" column="name"/>
+        <result property="code" column="code"/>
+        <result property="indexType" column="index_type"/>
+        <result property="indexCategory" column="index_category"/>
+        <result property="remark" column="remark"/>
+        <result property="unitId" column="unit_id"/>
+        <result property="meterId" column="meter_id"/>
+        <result property="orderNum" column="order_num"/>
+        <result property="equipment" column="equipment"/>
+        <result property="energyId" column="energy_id"/>
+        <result property="meterName" column="meter_name"/>
+    </resultMap>
 
-  <sql id="selectEnergyIndexVo">
-    select index_id,
-           name,
-           code,
-           index_type,
-           index_category,
-           remark,
-           unit_id,
-           meter_id,
-           order_num,
-           equipment,
-           energy_id
-    from energy_index
-  </sql>
+    <sql id="selectEnergyIndexVo">
+        select index_id,
+               name,
+               code,
+               index_type,
+               index_category,
+               remark,
+               unit_id,
+               meter_id,
+               order_num,
+               equipment,
+               energy_id
+        from energy_index
+    </sql>
 
-  <select id="selectEnergyIndexList" parameterType="EnergyIndex" resultMap="EnergyIndexResult">
-    select ni.index_id, name, code, index_type, remark, unit_id, index_category
-    from energy_index ei left join node_index ni on ei.index_id = ni.index_id
-    <where>
-      <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
-      <if test="code != null  and code != ''">and code like concat('%', #{code}, '%')</if>
-      <if test="indexType != null">and index_type = #{indexType}</if>
-      <if test="nodeId != null  and nodeId != ''">and node_id = #{nodeId}</if>
-      <if test="indexCategory != null  and indexCategory != ''">and index_category =
-        #{indexCategory}
-      </if>
-    </where>
-    order by ei.order_num
-  </select>
+    <select id="selectEnergyIndexList" parameterType="com.zhitan.model.domain.EnergyIndex"
+            resultMap="EnergyIndexResult">
+        select ni.index_id, name, code, index_type, remark, unit_id, index_category
+        from energy_index ei left join node_index ni on ei.index_id = ni.index_id
+        <where>
+            <if test="name != null  and name != ''">and name like concat('%', #{name}, '%')</if>
+            <if test="code != null  and code != ''">and code like concat('%', #{code}, '%')</if>
+            <if test="indexType != null">and index_type = #{indexType}</if>
+            <if test="nodeId != null  and nodeId != ''">and node_id = #{nodeId}</if>
+            <if test="indexCategory != null  and indexCategory != ''">and index_category =
+                #{indexCategory}
+            </if>
+        </where>
+        order by ei.order_num
+    </select>
 
-  <select id="selectEnergyIndexById" parameterType="String" resultMap="EnergyIndexResult">
-    <include refid="selectEnergyIndexVo"/>
-    where index_id = #{indexId}
-    order by order_num
-  </select>
+    <select id="selectEnergyIndexById" parameterType="String" resultMap="EnergyIndexResult">
+        <include refid="selectEnergyIndexVo"/>
+        where index_id = #{indexId}
+        order by order_num
+    </select>
 
-  <select id="selectEnergyIndexByIds" resultType="com.zhitan.model.domain.EnergyIndex">
-    <include refid="selectEnergyIndexVo"/>
-    where
+    <select id="selectEnergyIndexByIds" resultType="com.zhitan.model.domain.EnergyIndex">
+        <include refid="selectEnergyIndexVo"/>
+        where
         index_id IN
-        <foreach collection="list" item="indexId" open="(" separator="," close=")">
-          #{indexId}
+        <foreach collection="indexIds" item="indexId" open="(" separator="," close=")">
+            #{indexId}
         </foreach>
-  </select>
+    </select>
 
-  <select id="energyIndexHasExist" resultType="java.lang.Integer">
-    select count(*)
-    from energy_index
-    where code = #{code};
-  </select>
-  <select id="energyIndexHasExistWhenUpdate" resultType="java.lang.Integer">
-    select count(*)
-    from energy_index
-    where code = #{code}
-      AND index_id != #{indexId};
-  </select>
-  <select id="getMeterIndex" resultMap="EnergyIndexResult">
-    <include refid="selectEnergyIndexVo"/>
-    where meter_id = #{meterId}
-    order by order_num
-  </select>
-  <select id="modelHasConfig" resultType="java.lang.Integer">
-    select count(*)
-    from model_node
-    where model_code = #{modelCode};
-  </select>
-  <select id="selectCollectIndex" resultMap="EnergyIndexResult">
-    <include refid="selectEnergyIndexVo"/>
-    where meter_id = #{deviceId}
-    order by order_num
-  </select>
-  <select id="getEnergyIndexByIds" resultMap="EnergyIndexResult">
-    <include refid="selectEnergyIndexVo"/>
-    where index_id in
-    <foreach item="indexId" collection="list" open="(" separator="," close=")">
-      #{indexId}
-    </foreach>
-    order by order_num
-  </select>
-  <select id="getEnergyIndexByCodes" resultMap="EnergyIndexResult">
-    <include refid="selectEnergyIndexVo"/>
-    where code in
-    <foreach item="indexCode" collection="list" open="(" separator="," close=")">
-      #{indexCode}
-    </foreach>
-    order by order_num
-  </select>
-  <select id="getIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult">
-    select ei.*
-    from energy_index ei
-           left join node_index ni on ei.index_id = ni.index_id
-    where ni.node_id in (select node_id
-                         from model_node
-                         where address like (select address
-                                             from model_node
-                                             where node_id = #{nodeId}) || '%')
-    order by ei.order_num
-  </select>
-  <select id="searchIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult">
-    select ei.*
-    from energy_index ei
-           left join node_index ni on ei.index_id = ni.index_id
-    where ni.node_id in (select node_id
-                         from model_node
-                         where address like (select address
-                                             from model_node
-                                             where node_id = #{nodeId}) || '%')
-      and (ei.code like concat('%', #{filter}, '%') or ei.name like concat('%', #{filter}, '%'))
-    order by ei.order_num
-  </select>
-  <select id="selectEnergyIndex" resultMap="EnergyIndexResult">
-    select ni.index_id, name, code, index_type, remark, unit_id, index_category
-    from energy_index ei left join node_index ni on ei.index_id = ni.index_id
-    <where>
-      <if test="codeOrName != null  and codeOrName != ''">and (name like concat('%', #{codeOrName},
-        '%') or code like concat('%', #{codeOrName}, '%'))
-      </if>
-      <if test="nodeId != null  and nodeId != ''">and node_id = #{nodeId}</if>
-      <if test="indexType != null">and index_type = #{indexType}</if>
-      <if test="indexCategory != null  and indexCategory != ''">and index_category =
-        #{indexCategory}
-      </if>
-    </where>
-    order by ei.order_num
-  </select>
+    <select id="energyIndexHasExist" resultType="java.lang.Integer">
+        select count(*)
+        from energy_index
+        where code = #{code};
+    </select>
+    <select id="energyIndexHasExistWhenUpdate" resultType="java.lang.Integer">
+        select count(*)
+        from energy_index
+        where code = #{code}
+          AND index_id != #{indexId};
+    </select>
+    <select id="getMeterIndex" resultMap="EnergyIndexResult">
+        <include refid="selectEnergyIndexVo"/>
+        where meter_id = #{meterId}
+        order by order_num
+    </select>
+    <select id="modelHasConfig" resultType="java.lang.Integer">
+        select count(*)
+        from model_node
+        where model_code = #{modelCode};
+    </select>
+    <select id="selectCollectIndex" resultMap="EnergyIndexResult">
+        <include refid="selectEnergyIndexVo"/>
+        where meter_id = #{deviceId}
+        order by order_num
+    </select>
+    <select id="getEnergyIndexByIds" resultMap="EnergyIndexResult">
+        <include refid="selectEnergyIndexVo"/>
+        where index_id in
+        <foreach item="indexId" collection="list" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>
+        order by order_num
+    </select>
+    <select id="getEnergyIndexByCodes" resultMap="EnergyIndexResult">
+        <include refid="selectEnergyIndexVo"/>
+        where code in
+        <foreach item="indexCode" collection="list" open="(" separator="," close=")">
+            #{indexCode}
+        </foreach>
+        order by order_num
+    </select>
+    <select id="getIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult">
+        select ei.*
+        from energy_index ei
+                 left join node_index ni on ei.index_id = ni.index_id
+        where ni.node_id in (select node_id
+                             from model_node
+                             where address like (select address
+                                                 from model_node
+                                                 where node_id = #{nodeId}) || '%')
+        order by ei.order_num
+    </select>
+    <select id="searchIndexByNodeAndChildrenNode" resultMap="EnergyIndexResult">
+        select ei.*
+        from energy_index ei
+                 left join node_index ni on ei.index_id = ni.index_id
+        where ni.node_id in (select node_id
+                             from model_node
+                             where address like (select address
+                                                 from model_node
+                                                 where node_id = #{nodeId}) || '%')
+          and (ei.code like concat('%', #{filter}, '%') or ei.name like concat('%', #{filter}, '%'))
+        order by ei.order_num
+    </select>
+    <select id="selectEnergyIndex" resultMap="EnergyIndexResult">
+        select ni.index_id, name, code, index_type, remark, unit_id, index_category
+        from energy_index ei left join node_index ni on ei.index_id = ni.index_id
+        <where>
+            <if test="codeOrName != null  and codeOrName != ''">and (name like concat('%', #{codeOrName},
+                '%') or code like concat('%', #{codeOrName}, '%'))
+            </if>
+            <if test="nodeId != null  and nodeId != ''">and node_id = #{nodeId}</if>
+            <if test="indexType != null">and index_type = #{indexType}</if>
+            <if test="indexCategory != null  and indexCategory != ''">and index_category =
+                #{indexCategory}
+            </if>
+        </where>
+        order by ei.order_num
+    </select>
 
-  <insert id="insertEnergyIndex" parameterType="EnergyIndex">
-    insert into energy_index
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="indexId != null  and indexId != ''">index_id,</if>
-      <if test="name != null  and name != ''">name,</if>
-      <if test="code != null  and code != ''">code,</if>
-      <if test="indexType != null">index_type,</if>
-      <if test="indexCategory != null  and indexCategory != ''">
-        index_category,
-      </if>
-      <if test="remark != null  and remark != ''">remark,</if>
-      <if test="unitId != null  and unitId != ''">unit_id,</if>
-      <if test="orderNum != null">order_num,</if>
-      <if test="equipment != null">equipment,</if>
-      <if test="energyId != null">energy_id,</if>
-    </trim>
-    <trim prefix="values (" suffix=");" suffixOverrides=",">
-      <if test="indexId != null  and indexId != ''">
-        #{indexId},
-      </if>
-      <if test="name != null  and name != ''">#{name},</if>
-      <if test="code != null  and code != ''">#{code},</if>
-      <if test="indexType != null">
-        #{indexType},
-      </if>
-      <if test="indexCategory != null  and indexCategory != ''">
-        #{indexCategory},
-      </if>
-      <if test="remark != null  and remark != ''">#{remark},
-      </if>
-      <if test="unitId != null  and unitId != ''">#{unitId},
-      </if>
-      <if test="orderNum != null">#{orderNum},
-      </if>
-      <if test="equipment != null">#{equipment},
-      </if>
-      <if test="energyId != null">#{energyId},
-      </if>
-    </trim>
+    <insert id="insertEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex">
+        insert into energy_index
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="indexId != null  and indexId != ''">index_id,</if>
+            <if test="name != null  and name != ''">name,</if>
+            <if test="code != null  and code != ''">code,</if>
+            <if test="indexType != null">index_type,</if>
+            <if test="indexCategory != null  and indexCategory != ''">
+                index_category,
+            </if>
+            <if test="remark != null  and remark != ''">remark,</if>
+            <if test="unitId != null  and unitId != ''">unit_id,</if>
+            <if test="orderNum != null">order_num,</if>
+            <if test="equipment != null">equipment,</if>
+            <if test="energyId != null">energy_id,</if>
+        </trim>
+        <trim prefix="values (" suffix=");" suffixOverrides=",">
+            <if test="indexId != null  and indexId != ''">
+                #{indexId},
+            </if>
+            <if test="name != null  and name != ''">#{name},</if>
+            <if test="code != null  and code != ''">#{code},</if>
+            <if test="indexType != null">
+                #{indexType},
+            </if>
+            <if test="indexCategory != null  and indexCategory != ''">
+                #{indexCategory},
+            </if>
+            <if test="remark != null  and remark != ''">#{remark},
+            </if>
+            <if test="unitId != null  and unitId != ''">#{unitId},
+            </if>
+            <if test="orderNum != null">#{orderNum},
+            </if>
+            <if test="equipment != null">#{equipment},
+            </if>
+            <if test="energyId != null">#{energyId},
+            </if>
+        </trim>
 
-  </insert>
-  <insert id="insertNodeIndex">
-    insert into node_index (node_id, index_id) values (#{nodeId}, #{indexId});
-  </insert>
-  <insert id="insertEnergyIndices">
-    <foreach collection="energyIndices" item="energyIndex" separator=";">
-      insert into energy_index
-      <trim prefix="(" suffix=")" suffixOverrides=",">
-        <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">index_id,</if>
-        <if test="energyIndex.name != null  and energyIndex.name != ''">name,</if>
-        <if test="energyIndex.code != null  and energyIndex.code != ''">code,</if>
-        <if test="energyIndex.indexType != null">index_type,</if>
-        <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
-          index_category,
-        </if>
-        <if test="energyIndex.remark != null  and energyIndex.remark != ''">remark,</if>
-        <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">unit_id,</if>
-        <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">meter_id,</if>
-        <if test="energyIndex.orderNum != null">order_num,</if>
-      </trim>
-      <trim prefix="values (" suffix=")" suffixOverrides=",">
-        <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">
-          #{energyIndex.indexId},
-        </if>
-        <if test="energyIndex.name != null  and energyIndex.name != ''">#{energyIndex.name},</if>
-        <if test="energyIndex.code != null  and energyIndex.code != ''">#{energyIndex.code},</if>
-        <if test="energyIndex.indexType != null">
-          #{energyIndex.indexType},
-        </if>
-        <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
-          #{energyIndex.indexCategory},
-        </if>
-        <if test="energyIndex.remark != null  and energyIndex.remark != ''">#{energyIndex.remark},
-        </if>
-        <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">#{energyIndex.unitId},
-        </if>
-        <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">
-          #{energyIndex.meterId},
-        </if>
-        <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if>
-      </trim>
-    </foreach>
-  </insert>
-  <insert id="saveEnergyIndex">
-    <foreach collection="list" item="energyIndex" separator=";">
-      insert into energy_index
-      <trim prefix="(" suffix=")" suffixOverrides=",">
-        <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">index_id,</if>
-        <if test="energyIndex.name != null  and energyIndex.name != ''">name,</if>
-        <if test="energyIndex.code != null  and energyIndex.code != ''">code,</if>
-        <if test="energyIndex.indexType != null">index_type,</if>
-        <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
-          index_category,
-        </if>
-        <if test="energyIndex.remark != null  and energyIndex.remark != ''">remark,</if>
-        <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">unit_id,</if>
-        <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">meter_id,</if>
-        <if test="energyIndex.orderNum != null">order_num,</if>
-      </trim>
-      <trim prefix="values (" suffix=")" suffixOverrides=",">
-        <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">
-          #{energyIndex.indexId},
-        </if>
-        <if test="energyIndex.name != null  and energyIndex.name != ''">#{energyIndex.name},</if>
-        <if test="energyIndex.code != null  and energyIndex.code != ''">#{energyIndex.code},</if>
-        <if test="energyIndex.indexType != null">
-          #{energyIndex.indexType},
-        </if>
-        <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
-          #{energyIndex.indexCategory},
-        </if>
-        <if test="energyIndex.remark != null  and energyIndex.remark != ''">#{energyIndex.remark},
-        </if>
-        <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">#{energyIndex.unitId},
-        </if>
-        <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">
-          #{energyIndex.meterId},
-        </if>
-        <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if>
-      </trim>
-      ;
-      insert into node_index (node_id, index_id) values (#{energyIndex.nodeId},
-      #{energyIndex.indexId});
-    </foreach>
-  </insert>
+    </insert>
+    <insert id="insertNodeIndex">
+        insert into node_index (node_id, index_id)
+        values (#{nodeId}, #{indexId});
+    </insert>
+    <insert id="insertEnergyIndices">
+        <foreach collection="energyIndices" item="energyIndex" separator=";">
+            insert into energy_index
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">index_id,</if>
+                <if test="energyIndex.name != null  and energyIndex.name != ''">name,</if>
+                <if test="energyIndex.code != null  and energyIndex.code != ''">code,</if>
+                <if test="energyIndex.indexType != null">index_type,</if>
+                <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
+                    index_category,
+                </if>
+                <if test="energyIndex.remark != null  and energyIndex.remark != ''">remark,</if>
+                <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">unit_id,</if>
+                <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">meter_id,</if>
+                <if test="energyIndex.orderNum != null">order_num,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">
+                    #{energyIndex.indexId},
+                </if>
+                <if test="energyIndex.name != null  and energyIndex.name != ''">#{energyIndex.name},</if>
+                <if test="energyIndex.code != null  and energyIndex.code != ''">#{energyIndex.code},</if>
+                <if test="energyIndex.indexType != null">
+                    #{energyIndex.indexType},
+                </if>
+                <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
+                    #{energyIndex.indexCategory},
+                </if>
+                <if test="energyIndex.remark != null  and energyIndex.remark != ''">#{energyIndex.remark},
+                </if>
+                <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">#{energyIndex.unitId},
+                </if>
+                <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">
+                    #{energyIndex.meterId},
+                </if>
+                <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if>
+            </trim>
+        </foreach>
+    </insert>
+    <insert id="saveEnergyIndex">
+        <foreach collection="list" item="energyIndex" separator=";">
+            insert into energy_index
+            <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">index_id,</if>
+                <if test="energyIndex.name != null  and energyIndex.name != ''">name,</if>
+                <if test="energyIndex.code != null  and energyIndex.code != ''">code,</if>
+                <if test="energyIndex.indexType != null">index_type,</if>
+                <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
+                    index_category,
+                </if>
+                <if test="energyIndex.remark != null  and energyIndex.remark != ''">remark,</if>
+                <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">unit_id,</if>
+                <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">meter_id,</if>
+                <if test="energyIndex.orderNum != null">order_num,</if>
+            </trim>
+            <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="energyIndex.indexId != null  and energyIndex.indexId != ''">
+                    #{energyIndex.indexId},
+                </if>
+                <if test="energyIndex.name != null  and energyIndex.name != ''">#{energyIndex.name},</if>
+                <if test="energyIndex.code != null  and energyIndex.code != ''">#{energyIndex.code},</if>
+                <if test="energyIndex.indexType != null">
+                    #{energyIndex.indexType},
+                </if>
+                <if test="energyIndex.indexCategory != null  and energyIndex.indexCategory != ''">
+                    #{energyIndex.indexCategory},
+                </if>
+                <if test="energyIndex.remark != null  and energyIndex.remark != ''">#{energyIndex.remark},
+                </if>
+                <if test="energyIndex.unitId != null  and energyIndex.unitId != ''">#{energyIndex.unitId},
+                </if>
+                <if test="energyIndex.meterId != null  and energyIndex.meterId != ''">
+                    #{energyIndex.meterId},
+                </if>
+                <if test="energyIndex.orderNum != null">#{energyIndex.orderNum},</if>
+            </trim>
+            ;
+            insert into node_index (node_id, index_id) values (#{energyIndex.nodeId},
+            #{energyIndex.indexId});
+        </foreach>
+    </insert>
 
-  <update id="updateEnergyIndex" parameterType="EnergyIndex">
-    update energy_index
-    <trim prefix="SET" suffixOverrides=",">
-      <if test="name != null  and name != ''">name = #{name},</if>
-      <if test="code != null  and code != ''">code = #{code},</if>
-      <if test="indexType != null">index_type = #{indexType},</if>
-      <if test="indexCategory != null  and indexCategory != ''">index_category = #{indexCategory},
-      </if>
-      <if test="remark != null  and remark != ''">remark = #{remark},</if>
-      <if test="unitId != null  and unitId != ''">unit_id = #{unitId},</if>
-      <if test="orderNum != null">order_num = #{orderNum},</if>
-      <if test="equipment != null">equipment = #{equipment},</if>
-      <if test="energyId != null">energy_id=#{energyId},</if>
-    </trim>
-    where index_id = #{indexId}
-  </update>
+    <update id="updateEnergyIndex" parameterType="com.zhitan.model.domain.EnergyIndex">
+        update energy_index
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="name != null  and name != ''">name = #{name},</if>
+            <if test="code != null  and code != ''">code = #{code},</if>
+            <if test="indexType != null">index_type = #{indexType},</if>
+            <if test="indexCategory != null  and indexCategory != ''">index_category = #{indexCategory},
+            </if>
+            <if test="remark != null  and remark != ''">remark = #{remark},</if>
+            <if test="unitId != null  and unitId != ''">unit_id = #{unitId},</if>
+            <if test="orderNum != null">order_num = #{orderNum},</if>
+            <if test="equipment != null">equipment = #{equipment},</if>
+            <if test="energyId != null">energy_id=#{energyId},</if>
+        </trim>
+        where index_id = #{indexId}
+    </update>
 
-  <delete id="deleteEnergyIndexByIds" parameterType="String">
-    delete from energy_index where index_id in
-    <foreach item="indexId" collection="indexIds" open="(" separator="," close=")">
-      #{indexId}
-    </foreach>;
-    delete from node_index where node_id = #{nodeId} and index_id in
-    <foreach item="indexId" collection="indexIds" open="(" separator="," close=")">
-      #{indexId}
-    </foreach>;
-  </delete>
-  <delete id="deleteIndexByMeterId">
-    delete
-    from energy_index
-    where meter_id = #{meterId}
-  </delete>
-  <delete id="removeEnergyIndex">
-    delete from energy_index where index_id in
-    <foreach collection="indexIds" item="indexId" open="(" separator="," close=")">
-      #{indexId}
-    </foreach>
-  </delete>
+    <delete id="deleteEnergyIndexByIds" parameterType="String">
+        delete from energy_index where index_id in
+        <foreach item="indexId" collection="indexIds" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>;
+        delete from node_index where node_id = #{nodeId} and index_id in
+        <foreach item="indexId" collection="indexIds" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>;
+    </delete>
+    <delete id="deleteIndexByMeterId">
+        delete
+        from energy_index
+        where meter_id = #{meterId}
+    </delete>
+    <delete id="removeEnergyIndex">
+        delete from energy_index where index_id in
+        <foreach collection="indexIds" item="indexId" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>
+    </delete>
 
-  <select id="getEnergyIndexMeterByCodes" resultMap="EnergyIndexResult">
-    select ei.index_id,
+    <select id="getEnergyIndexMeterByCodes" resultMap="EnergyIndexResult">
+        select ei.index_id,
         ei.name,
         ei.code,
         ei.index_type,
@@ -324,100 +326,101 @@
         ei.energy_id,
         meter_name
         from energy_index as ei,meter_implement as me
-    where ei.code in
-    <foreach item="indexCode" collection="list" open="(" separator="," close=")">
-      #{indexCode}
-    </foreach>
-    and ei.meter_id = me.id
-    order by ei.order_num
-  </select>
-
-  <select id="selectEnergyIndexPage" resultMap="EnergyIndexResult">
-    select ni.index_id, name, code, index_type, remark, unit_id, index_category
-    from energy_index ei left join node_index ni on ei.index_id = ni.index_id
-    <where>
-      <if test="query.codeOrName != null  and query.codeOrName != ''">and (name like concat('%', #{query.codeOrName},
-        '%') or code like concat('%', #{query.codeOrName}, '%'))
-      </if>
-      <if test="query.indexType != null">and index_type = #{query.indexType}</if>
-      <if test="query.nodeId != null  and query.nodeId != ''">and ni.node_id = #{query.nodeId}</if>
-      <if test="query.indexCategory != null  and query.indexCategory != ''">and index_category =
-        #{query.indexCategory}
-      </if>
-    </where>
-    order by ei.order_num
-
-  </select>
-    <select id="listIndexByMeterIds" resultType="com.zhitan.model.domain.EnergyIndex">
-      select ei.index_id,
-      name,
-      code,
-      index_type,
-      index_category,
-      remark,
-      unit_id,
-      meter_id,
-      order_num,
-      equipment,
-      energy_id
-      from energy_index ei
-      left join node_index ni on ei.index_id = ni.index_id
-      <where>
-
-        <if test="nodeId != null  and nodeId != ''">and ni.node_id = #{nodeId}</if>
-        <if test="meterIds != null">
-          and ei.meter_id in
-          <foreach collection="meterIds" item="meterId" open="(" separator="," close=")">
-            #{meterId}
-          </foreach>
-        </if>
-      </where>
+        where ei.code in
+        <foreach item="indexCode" collection="list" open="(" separator="," close=")">
+            #{indexCode}
+        </foreach>
+        and ei.meter_id = me.id
+        order by ei.order_num
     </select>
-  <select id="getiEnergyIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex">
-    <include refid="selectEnergyIndexVo"/>
-    where code = #{cdoe}
-  </select>
-  <select id="getIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex">
-    SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
-    LEFT JOIN node_device nd on ei.meter_id =  nd.device_id
-    LEFT JOIN meter_implement  mi on mi."id" = nd.device_id
-    <where>
-        <if test="nodeId != null  and nodeId != ''">and nd.node_id  = #{nodeId}</if>
-        <if test="code != null  and code != ''">
-          and (mi.meter_name like concat('%', #{code}, '%')
-          or ei.code like concat('%', #{code}, '%')
-          or ei.name like concat('%', #{code}, '%')
-          )
-        </if>
-    </where>
-  </select>
-  <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex">
-    SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
-    LEFT JOIN node_device nd on ei.meter_id =  nd.device_id
-    LEFT JOIN meter_implement  mi on mi."id" = nd.device_id
-    <where>
-        <if test="nodeId != null  and nodeId != ''">and nd.node_id  = #{nodeId}</if>
-        <if test="indexCode != null  and indexCode != ''">
-          and (mi.meter_name like concat('%', #{indexCode}, '%')
-          or ei.code like concat('%', #{indexCode}, '%')
-          or ei.name like concat('%', #{indexCode}, '%')
-          )
-        </if>
-        <if test="meterId != null  and meterId != ''">
-          and ei.meter_id = #{meterId}
-        </if>
-    </where>
-  </select>
+
+    <select id="selectEnergyIndexPage" resultMap="EnergyIndexResult">
+        select ni.index_id, name, code, index_type, remark, unit_id, index_category
+        from energy_index ei left join node_index ni on ei.index_id = ni.index_id
+        <where>
+            <if test="query.codeOrName != null  and query.codeOrName != ''">and (name like concat('%',
+                #{query.codeOrName},
+                '%') or code like concat('%', #{query.codeOrName}, '%'))
+            </if>
+            <if test="query.indexType != null">and index_type = #{query.indexType}</if>
+            <if test="query.nodeId != null  and query.nodeId != ''">and ni.node_id = #{query.nodeId}</if>
+            <if test="query.indexCategory != null  and query.indexCategory != ''">and index_category =
+                #{query.indexCategory}
+            </if>
+        </where>
+        order by ei.order_num
+
+    </select>
+    <select id="listIndexByMeterIds" resultType="com.zhitan.model.domain.EnergyIndex">
+        select ei.index_id,
+        name,
+        code,
+        index_type,
+        index_category,
+        remark,
+        unit_id,
+        meter_id,
+        order_num,
+        equipment,
+        energy_id
+        from energy_index ei
+        left join node_index ni on ei.index_id = ni.index_id
+        <where>
+
+            <if test="nodeId != null  and nodeId != ''">and ni.node_id = #{nodeId}</if>
+            <if test="meterIds != null">
+                and ei.meter_id in
+                <foreach collection="meterIds" item="meterId" open="(" separator="," close=")">
+                    #{meterId}
+                </foreach>
+            </if>
+        </where>
+    </select>
+    <select id="getiEnergyIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex">
+        <include refid="selectEnergyIndexVo"/>
+        where code = #{cdoe}
+    </select>
+    <select id="getIndexByCode" resultType="com.zhitan.model.domain.EnergyIndex">
+        SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
+        LEFT JOIN node_device nd on ei.meter_id = nd.device_id
+        LEFT JOIN meter_implement mi on mi."id" = nd.device_id
+        <where>
+            <if test="nodeId != null  and nodeId != ''">and nd.node_id = #{nodeId}</if>
+            <if test="code != null  and code != ''">
+                and (mi.meter_name like concat('%', #{code}, '%')
+                or ei.code like concat('%', #{code}, '%')
+                or ei.name like concat('%', #{code}, '%')
+                )
+            </if>
+        </where>
+    </select>
+    <select id="getIndexByMeterIdIndexCode" resultType="com.zhitan.model.domain.EnergyIndex">
+        SELECT ei.code,mi.meter_name||'_'||ei.name as name from energy_index ei
+        LEFT JOIN node_device nd on ei.meter_id = nd.device_id
+        LEFT JOIN meter_implement mi on mi."id" = nd.device_id
+        <where>
+            <if test="nodeId != null  and nodeId != ''">and nd.node_id = #{nodeId}</if>
+            <if test="indexCode != null  and indexCode != ''">
+                and (mi.meter_name like concat('%', #{indexCode}, '%')
+                or ei.code like concat('%', #{indexCode}, '%')
+                or ei.name like concat('%', #{indexCode}, '%')
+                )
+            </if>
+            <if test="meterId != null  and meterId != ''">
+                and ei.meter_id = #{meterId}
+            </if>
+        </where>
+    </select>
     <select id="getModelNodeIndexInfoListByIndexIds"
             resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfo">
-        SELECT 	mi.model_name modelName,
-          mi.model_code,
-          mn."name" "name",
-          ei.index_id,
-          ei.code indexCode,
-          ei."name" indexName,
-          ei.energy_id,
-          ei.energy_id
+        SELECT mi.model_name modelName,
+        mi.model_code,
+        mn."name" "name",
+        ei.index_id,
+        ei.code indexCode,
+        ei."name" indexName,
+        ei.energy_id,
+        ei.energy_id
         FROM node_index ni
         INNER JOIN energy_index ei ON ni.index_id = ei.index_id
         LEFT JOIN model_node mn ON ni.node_id = mn.node_id
@@ -427,4 +430,16 @@
             #{indexId}
         </foreach>
     </select>
+
+    <select id="selectEnergyTypeByIndex" resultType="com.zhitan.basicdata.domain.vo.MeterImplementModel">
+        select ex.index_id indexId,
+               mi.id meterId,
+               mi.energy_type energyType
+        from energy_index ex
+                 left join meter_implement mi on ex.meter_id = mi.id
+        where ex.index_id in
+        <foreach collection="indexIds" item="indexId" open="(" separator="," close=")">
+            #{indexId}
+        </foreach>
+    </select>
 </mapper>
diff --git a/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml b/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml
index eb7fbde..d8486ec 100644
--- a/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml
+++ b/zhitan-system/src/main/resources/mapper/model/ModelNodeMapper.xml
@@ -466,4 +466,22 @@
           AND di.data_time >= #{dateTimeMap.startTime}
           AND di.data_time &lt;= #{dateTimeMap.endTime}
     </select>
+    <select id="getAllModelNodeIndexByAddress" resultType="com.zhitan.model.domain.vo.ModelNodeIndexInfo">
+        SELECT
+            mn.node_id nodeId,
+            mn.code nodeCode,
+            mn."name" nodeName,
+            ni.index_id indexId,
+            ei."name" indexName,
+            ei.index_type indexType,
+            mi.energy_type
+        FROM
+            "model_node" mn
+                LEFT JOIN "node_index" ni ON mn.node_id = ni.node_id
+                LEFT JOIN energy_index ei ON ni.index_id = ei.index_id
+                LEFT JOIN meter_implement mi ON mi."id" = ei.meter_id
+        WHERE
+            mn.model_code = #{modelCode}
+          AND mn.address LIKE concat( #{address} , '%' )
+    </select>
 </mapper>
diff --git a/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue b/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue
index 1ff3b79..57a7400 100644
--- a/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue
+++ b/zhitan-vue/src/views/alarmmanage/alarmrecord/alarmRecord.vue
@@ -70,7 +70,7 @@
                 show-overflow-tooltip
                 :formatter="(row, column) => formatterLabel(energyTypeList, row.energyId)"
               />
-              <el-table-column label="棰勮鍊�" prop="energyType" align="center" show-overflow-tooltip />
+              <el-table-column label="棰勮鍊�" prop="limitingValue" align="center" show-overflow-tooltip />
               <el-table-column label="鎶ヨ鍊�" prop="alarmValue" align="center" show-overflow-tooltip />
               <el-table-column label="鎶ヨ鏃堕棿" prop="alarmBeginTime" align="center" show-overflow-tooltip />
             </el-table>
diff --git a/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue b/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue
index cbd3852..d831208 100644
--- a/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue
+++ b/zhitan-vue/src/views/alarmmanage/measuremen/measuremen.vue
@@ -97,10 +97,13 @@
   timeType: null,
   dataTime: null,
   nodeId: null,
+  modelCode: ''
 })
 
 import { getByNodeId, getCountInfo } from "@/api/alarmManage/alarmManage"
 import { el } from "element-plus/es/locales.mjs"
+import { useRoute } from "vue-router"
+const route = useRoute()
 let form = ref({})
 let currentNode = ref()
 
@@ -114,6 +117,7 @@
   handleTimeType(period.value[0].value)
 
   getByNodeIdFun()
+  getCountInfoFun()
 }
 
 function getByNodeIdFun() {
@@ -155,10 +159,12 @@
 // getByNodeIdFun()
 function handleQuery() {
   getByNodeIdFun()
+  getCountInfoFun()
 }
 function resetQuery() {
   handleTimeType("YEAR")
   getByNodeIdFun()
+  getCountInfoFun()
 }
 let dataArray = ref({
   indexCount: 0,
@@ -166,14 +172,16 @@
   monthCount: 0,
 })
 function getCountInfoFun() {
-  getCountInfo(queryParams.value).then((res) => {
+  getCountInfo({
+    ...queryParams.value,
+    modelCode: route.query.modelCode,
+  }).then((res) => {
     if (res.code == 200) {
       dataArray.value = res.data
     }
   })
 }
 
-getCountInfoFun()
 function pieChart(Id, data, name) {
   console.log(data)
   let total = 0
@@ -274,11 +282,11 @@
       axisPointer: {
         type: "shadow",
       },
-      axisTick: {
-        show: false,
-        alignWithLabel: true,
-        length: 5,
-      },
+      // axisTick: {
+      //   show: false,
+      //   alignWithLabel: true,
+      //   length: 5,
+      // },
       // 鍧愭爣杞村埢搴︾嚎鏍峰紡
       axisTick: {
         show: false,
@@ -313,11 +321,11 @@
         padding: [0, 0, 5, 0],
       },
       // 鍧愭爣杞村埢搴�
-      axisTick: {
-        show: false,
-        alignWithLabel: true,
-        length: 5,
-      },
+      // axisTick: {
+      //   show: false,
+      //   alignWithLabel: true,
+      //   length: 5,
+      // },
       // 鍧愭爣杞村埢搴︾嚎鏍峰紡
       axisTick: {
         show: false,

--
Gitblit v1.9.3