Kaynağa Gözat

历史数据查手动导出——未完

LLL 9 ay önce
ebeveyn
işleme
a895ca9cc3

+ 7 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/convert/InterlockSummaryHistoryConvert.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.history.convert;
 
 import org.jeecg.modules.detail.entity.InterlockDetail;
+import org.jeecg.modules.history.dto.InterlockHistoryQueryDTO;
 import org.jeecg.modules.history.entity.InterlockDetailHistory;
 import org.jeecg.modules.history.entity.InterlockSummaryHistory;
 import org.jeecg.modules.summary.entity.InterlockSummary;
@@ -23,4 +24,10 @@ public interface InterlockSummaryHistoryConvert {
     @Mapping(target = "id", ignore = true)
     InterlockSummaryHistory toHistory(InterlockSummary interlockSummary);
 
+    @Mapping(target = "interlockStatus", source = "interlockStatus")
+    InterlockHistoryQueryDTO toInterlockStatus(InterlockHistoryQueryDTO dto,String interlockStatus);
+
+    @Mapping(target = "loopHealthLevel", source = "loopHealthLevel")
+    InterlockHistoryQueryDTO toLoopHealthLevel(InterlockHistoryQueryDTO dto,String loopHealthLevel);
+
 }

+ 7 - 1
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/mapper/InterlockSummaryHistoryMapper.java

@@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.history.dto.InterlockHistoryQueryDTO;
 import org.jeecg.modules.history.entity.InterlockSummaryHistory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.history.vo.InterlockHistoryDistinctZZXTVO;
 import org.jeecg.modules.summary.entity.InterlockSummary;
 import org.jeecg.modules.summary.vo.InterlockSummaryVO;
 
@@ -20,6 +21,11 @@ public interface InterlockSummaryHistoryMapper extends BaseMapper<InterlockSumma
     /**
      * 根据查询条件查所有不重复的系统及其所属装置
      */
-    List<InterlockSummaryHistory> getDistinctZZXTSummaryList(InterlockHistoryQueryDTO dto);
+    List<InterlockHistoryDistinctZZXTVO> getDistinctZZXTSummaryList(InterlockHistoryQueryDTO dto);
+
+    /**
+     * 根据查询条件查联锁状态为“投用”或者“未投用“的数量
+     * */
+    Integer cocuntTYOrHL(InterlockHistoryQueryDTO dto);
 
 }

+ 12 - 4
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/mapper/xml/InterlockDetailHistoryMapper.xml

@@ -31,8 +31,12 @@
             <if test="dto.controlSystemStatus != null and dto.controlSystemStatus != ''"> and d.control_system_status = #{dto.controlSystemStatus}</if>
             <if test="dto.interlockStatus != null and dto.interlockStatus != ''"> and s.interlock_status = #{dto.interlockStatus}</if>
             <if test="dto.loopHealthLevel != null and dto.loopHealthLevel != ''"> and s.loop_health_level = #{dto.loopHealthLevel}</if>
-            <if test="dto.beginTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &gt; #{dto.beginTime} </if>
-            <if test="dto.endTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &lt; #{dto.endTime} </if>
+            <if test="dto.beginTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') > #{dto.beginTime} ]]>
+            </if>
+            <if test="dto.endTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') < #{dto.endTime} ]]>
+            </if>
         </where>
         order by s.create_time desc
     </select>
@@ -53,8 +57,12 @@
             <if test="controlSystemStatus != null and controlSystemStatus != ''"> and d.control_system_status = #{controlSystemStatus}</if>
             <if test="interlockStatus != null and interlockStatus != ''"> and s.interlock_status = #{interlockStatus}</if>
             <if test="loopHealthLevel != null and loopHealthLevel != ''"> and s.loop_health_level = #{loopHealthLevel}</if>
-            <if test="beginTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &gt; #{beginTime} </if>
-            <if test="endTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &lt; #{endTime} </if>
+            <if test="beginTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') > #{beginTime} ]]>
+            </if>
+            <if test="endTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') < #{endTime} ]]>
+            </if>
         </where>
         order by s.create_time desc
     </select>

+ 33 - 5
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/mapper/xml/InterlockSummaryHistoryMapper.xml

@@ -3,9 +3,15 @@
 <mapper namespace="org.jeecg.modules.history.mapper.InterlockSummaryHistoryMapper">
 
     <!--    根据查询条件查所有不重复的系统及其所属装置      -->
-    <select id="getDistinctZZXTSummaryList" parameterType="org.jeecg.modules.history.dto.InterlockHistoryQueryDTO" resultType="org.jeecg.modules.history.entity.InterlockSummaryHistory">
-        select distinct s.interlock_system_id, s.interlock_apparatus_id
-        from interlock_detail_history d left join interlock_summary_history s on d.summaryid = s.id
+    <select id="getDistinctZZXTSummaryList" parameterType="org.jeecg.modules.history.dto.InterlockHistoryQueryDTO" resultType="org.jeecg.modules.history.vo.InterlockHistoryDistinctZZXTVO">
+        select distinct s.interlock_system_id, system_base.interlock_name AS interlockSystemName,
+                        s.interlock_apparatus_id, apparatus_base.interlock_name AS interlockApparatusName
+        from interlock_detail_history d
+            LEFT JOIN interlock_summary_history s on d.summaryid = s.id
+            LEFT JOIN
+            interlock_base system_base ON s.interlock_system_id = system_base.id AND system_base.interlock_type = '1'
+            LEFT JOIN
+            interlock_base apparatus_base ON s.interlock_apparatus_id = apparatus_base.id AND apparatus_base.interlock_type = '0'
         <where>
             <if test="interlockSystemId != null and interlockSystemId != ''"> and s.interlock_system_id =  #{interlockSystemId}</if>
             <if test="interlockApparatusId != null and interlockApparatusId != ''"> and s.interlock_apparatus_id =  #{interlockApparatusId}</if>
@@ -17,11 +23,33 @@
             <if test="controlSystemStatus != null and controlSystemStatus != ''"> and d.control_system_status = #{controlSystemStatus}</if>
             <if test="interlockStatus != null and interlockStatus != ''"> and s.interlock_status = #{interlockStatus}</if>
             <if test="loopHealthLevel != null and loopHealthLevel != ''"> and s.loop_health_level = #{loopHealthLevel}</if>
-            <if test="beginTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &gt; #{beginTime} </if>
-            <if test="endTime != null "> and STR_TO_DATE(s.tag_time, '%Y-%m-%d %H:%i:%s')  &lt; #{endTime} </if>
+            <if test="beginTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') > #{beginTime} ]]>
+            </if>
+            <if test="endTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(s.tag_time, 'YYYY-MM-DD HH24:MI:SS') < #{endTime} ]]>
+            </if>
             and s.interlock_system_id IS NOT NULL
             AND s.interlock_apparatus_id IS NOT NULL
         </where>
         order by s.interlock_apparatus_id
     </select>
+
+
+    <!--    根据查询条件查联锁状态为“投用”或者“未投用“的数量     -->
+    <select id="cocuntTYOrHL" parameterType="org.jeecg.modules.history.dto.InterlockHistoryQueryDTO" resultType="java.lang.Integer">
+        select count(*) from interlock_summary_history
+        <where>
+            <if test="interlockSystemId != null and interlockSystemId != ''"> and interlock_system_id =  #{interlockSystemId}</if>
+            <if test="interlockApparatusId != null and interlockApparatusId != ''"> and interlock_apparatus_id =  #{interlockApparatusId}</if>
+            <if test="interlockStatus != null and interlockStatus != ''"> and interlock_status = #{interlockStatus}</if>
+            <if test="loopHealthLevel != null and loopHealthLevel != ''"> and loop_health_level = #{loopHealthLevel}</if>
+            <if test="beginTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(tag_time, 'YYYY-MM-DD HH24:MI:SS') > #{beginTime} ]]>
+            </if>
+            <if test="endTime != null">
+                <![CDATA[ AND TO_TIMESTAMP(tag_time, 'YYYY-MM-DD HH24:MI:SS') < #{endTime} ]]>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 97 - 58
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/service/impl/InterlockDetailHistoryServiceImpl.java

@@ -12,7 +12,10 @@ import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.base.entity.InterlockBase;
+import org.jeecg.modules.base.mapper.InterlockBaseMapper;
 import org.jeecg.modules.detail.dto.InterlockDetailQueryDTO;
+import org.jeecg.modules.history.convert.InterlockSummaryHistoryConvert;
 import org.jeecg.modules.history.dto.InterlockHistoryQueryDTO;
 import org.jeecg.modules.history.entity.InterlockDetailHistory;
 import org.jeecg.modules.history.entity.InterlockSummaryHistory;
@@ -20,6 +23,7 @@ import org.jeecg.modules.history.mapper.InterlockDetailHistoryMapper;
 import org.jeecg.modules.history.mapper.InterlockSummaryHistoryMapper;
 import org.jeecg.modules.history.service.IInterlockDetailHistoryService;
 import org.jeecg.modules.history.vo.InterlockDetailHistoryQueryVO;
+import org.jeecg.modules.history.vo.InterlockHistoryDistinctZZXTVO;
 import org.jeecg.modules.history.vo.InterlockSummaryHistoryVO;
 import org.jeecg.modules.summary.entity.InterlockSummary;
 import org.jeecg.modules.summary.mapper.InterlockSummaryMapper;
@@ -39,7 +43,11 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 联锁详细信息历史数据表
@@ -56,6 +64,9 @@ public class InterlockDetailHistoryServiceImpl extends ServiceImpl<InterlockDeta
     @Autowired
     @SuppressWarnings("all")
     private InterlockSummaryHistoryMapper summaryHistoryMapper;
+    @Autowired
+    @SuppressWarnings("all")
+    private InterlockBaseMapper interlockBaseMapper;
 
     @Value("${jeecg.path.upload}")
     private String upLoadPath;
@@ -74,9 +85,6 @@ public class InterlockDetailHistoryServiceImpl extends ServiceImpl<InterlockDeta
         return interlockDetailHistoryMapper.getPage(page, dto);
     }
 
-
-
-
     /**
      * 联锁历史数据——各种逻辑状态分页查询——用于手动导出
      */
@@ -89,70 +97,101 @@ public class InterlockDetailHistoryServiceImpl extends ServiceImpl<InterlockDeta
      */
     public ModelAndView exportXls1(InterlockHistoryQueryDTO dto, Class<InterlockSummaryHistoryVO> clazz, String title) {
         LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String formattedBeginTime = "";
+        String formattedEndTime = "";
+        if(dto.getBeginTime()!=null)  formattedBeginTime = sdf.format(dto.getBeginTime());
+        if(dto.getEndTime()!=null)  formattedEndTime = sdf.format(dto.getEndTime());
+
+
+        List<Map<String, Object>> list = new ArrayList<>();
+        List<InterlockHistoryDistinctZZXTVO> zzxtvoList = summaryHistoryMapper.getDistinctZZXTSummaryList(dto);
 
-        //按装置、系统分sheet
-        if(dto.getInterlockSystemId()!=null && !"".equals(dto.getInterlockSystemId())){
-            //一个系统
+        for (InterlockHistoryDistinctZZXTVO zzxtvo : zzxtvoList){
+            dto.setInterlockSystemId(zzxtvo.getInterlockSystemId());//系统id
             List<InterlockSummaryHistoryVO> exportList = interlockDetailHistoryMapper.getForExport(dto);
-            ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-            mv.addObject(NormalExcelConstants.FILE_NAME, title);//此处设置的filename无效 ,前端会重更新设置一下
-            mv.addObject(NormalExcelConstants.CLASS, clazz);
-            ExportParams  exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
-            exportParams.setImageBasePath(upLoadPath);
-            mv.addObject(NormalExcelConstants.PARAMS,exportParams);
-            mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
-            return mv;
-        }else if(dto.getInterlockApparatusId()!=null && !"".equals(dto.getInterlockApparatusId())){
-            //一个装置,多个系统
-            List<Map<String, Object>> list = new ArrayList<>();
+            if(exportList!=null){
+                exportList.stream().map(i->{
+                    return zh(i);
+                }).collect(Collectors.toList());
+            }
+
+            String sheetName = zzxtvo.getInterlockApparatusName()+ "-"+zzxtvo.getInterlockSystemName();
+
+            Map<String, Object> map = new HashMap<>();
+            map.put(NormalExcelConstants.CLASS, InterlockSummaryHistoryVO.class);
 
+            // 计算投用率
             InterlockHistoryQueryDTO dto1 = new InterlockHistoryQueryDTO();
-            dto1.setInterlockApparatusId(dto.getInterlockApparatusId());//装置id
-            List<InterlockSummaryHistory> summaryList = summaryHistoryMapper.getDistinctZZXTSummaryList(dto1);
-
-            int i = 1;
-            for (InterlockSummaryHistory summaryHistory : summaryList){
-                dto.setInterlockSystemId(summaryHistory.getInterlockSystemId());//系统id
-                List<InterlockSummaryHistoryVO> exportList = interlockDetailHistoryMapper.getForExport(dto);
-
-                Map<String, Object> map = new HashMap<>();
-                map.put(NormalExcelConstants.CLASS, InterlockSummaryHistoryVO.class);
-                map.put(NormalExcelConstants.PARAMS, new ExportParams(summaryHistory.getInterlockApparatusId()+ "-"+summaryHistory.getInterlockSystemId() , "第"+ i+ "页"));
-                map.put(NormalExcelConstants.DATA_LIST, exportList);
-                list.add(map);
-                i++;
+            dto1 = InterlockSummaryHistoryConvert.INSTANCE.toInterlockStatus(dto,"1"); // 1投用
+            int ty = summaryHistoryMapper.cocuntTYOrHL(dto1);
+            dto1.setInterlockStatus("0"); // 0未投用
+            int wty = summaryHistoryMapper.cocuntTYOrHL(dto1);
+            int total = ty + wty; // 总数量
+            double tyl = (double) ty / total * 100;
+
+            // 总回路数
+            InterlockHistoryQueryDTO dto2 = new InterlockHistoryQueryDTO();
+            dto2 = InterlockSummaryHistoryConvert.INSTANCE.toLoopHealthLevel(dto,"A");
+            int loopHealthLevelA = summaryHistoryMapper.cocuntTYOrHL(dto2);
+            dto2.setLoopHealthLevel("B");
+            int loopHealthLevelB = summaryHistoryMapper.cocuntTYOrHL(dto2);
+            dto2.setLoopHealthLevel("C");
+            int loopHealthLevelC = summaryHistoryMapper.cocuntTYOrHL(dto2);
+            int loopHealthLevel = loopHealthLevelA*3 + loopHealthLevelB*2 + loopHealthLevelC*1;
+
+            String secondTitle = "  投用率:" + tyl + "%"  + "  总回路数:" + loopHealthLevel + "  导出人:" + sysUser.getRealname();
+            if(dto.getBeginTime() !=null && dto.getEndTime() == null){
+                secondTitle = "起始时间:" + formattedBeginTime + secondTitle;
+            }else if(dto.getBeginTime() ==null && dto.getEndTime() != null){
+                secondTitle = "结束时间:" + formattedEndTime + secondTitle;
+            }else if(dto.getBeginTime() !=null && dto.getEndTime() != null){
+                secondTitle = "起始时间:" + formattedBeginTime + "  结束时间:" + formattedEndTime + secondTitle;
             }
+            ExportParams  exportParams=new ExportParams(title + "报表", secondTitle, sheetName);
+            exportParams.setImageBasePath(upLoadPath);
+            map.put(NormalExcelConstants.PARAMS, exportParams);
+            map.put(NormalExcelConstants.DATA_LIST, exportList);
+            list.add(map);
+        }
+
+        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
+        mv.addObject(NormalExcelConstants.FILE_NAME, title);//此处设置的filename无效 ,前端会重更新设置一下
+        mv.addObject(NormalExcelConstants.MAP_LIST, list);
+        return mv;
+    }
 
-            ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-            mv.addObject(NormalExcelConstants.FILE_NAME, title);//此处设置的filename无效 ,前端会重更新设置一下
-            mv.addObject(NormalExcelConstants.MAP_LIST, list);
-            return mv;
-        }else {
-            //多个装置,多个系统
-            List<Map<String, Object>> list = new ArrayList<>();
-
-            List<InterlockSummaryHistory> summaryList = summaryHistoryMapper.getDistinctZZXTSummaryList(new InterlockHistoryQueryDTO());
-
-            int i = 1;
-            for (InterlockSummaryHistory summaryHistory : summaryList){
-                dto.setInterlockSystemId(summaryHistory.getInterlockSystemId());//系统id
-                List<InterlockSummaryHistoryVO> exportList = interlockDetailHistoryMapper.getForExport(dto);
-
-                Map<String, Object> map = new HashMap<>();
-                map.put(NormalExcelConstants.CLASS, InterlockSummaryHistoryVO.class);
-                map.put(NormalExcelConstants.PARAMS, new ExportParams(summaryHistory.getInterlockApparatusId()+ "-"+summaryHistory.getInterlockSystemId() , "第"+ i+ "页"));
-                map.put(NormalExcelConstants.DATA_LIST, exportList);
-                list.add(map);
-                i++;
-            }
 
-            ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
-            mv.addObject(NormalExcelConstants.FILE_NAME, title);//此处设置的filename无效 ,前端会重更新设置一下
-            mv.addObject(NormalExcelConstants.MAP_LIST, list);
-            return mv;
+    private InterlockSummaryHistoryVO zh(InterlockSummaryHistoryVO vo){
+        //仪表状态 0正常1故障
+        if(vo.getInstrumentStatus()!=null){
+            if(vo.getInstrumentStatus().equals("0")) vo.setInstrumentStatus("正常");
+            else if(vo.getInstrumentStatus().equals("1")) vo.setInstrumentStatus("故障");
+        }
+        //控制系统状态 0正常1非正常
+        if(vo.getControlSystemStatus()!=null){
+            if(vo.getControlSystemStatus().equals("0")) vo.setControlSystemStatus("正常");
+            else if(vo.getControlSystemStatus().equals("1")) vo.setControlSystemStatus("非正常");
+        }
+        //联锁状态 0未投用1投用
+        if(vo.getInterlockStatus()!=null){
+            if(vo.getInterlockStatus().equals("0")) vo.setInterlockStatus("未投用");
+            else if(vo.getInterlockStatus().equals("1")) vo.setInterlockStatus("投用");
         }
+        //旁路状态 1是0否
+        if(vo.getBypass()!=null){
+            if(vo.getBypass().equals("0")) vo.setBypass("是");
+            else if(vo.getBypass().equals("1")) vo.setBypass("否");
+        }
+        return vo;
+    }
+
+
+
+
+
+
 
 
-    }
 
 }

+ 33 - 0
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/vo/InterlockHistoryDistinctZZXTVO.java

@@ -0,0 +1,33 @@
+package org.jeecg.modules.history.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * 功能描述
+ *
+ * @author: nn
+ * @date: 2024年06月12日 9:22
+ */
+@Data
+public class InterlockHistoryDistinctZZXTVO {
+
+    /**装置id*/
+    @Excel(name = "装置id", width = 15)
+    @ApiModelProperty(value = "装置id")
+    private java.lang.String interlockApparatusId;
+    /**系统id*/
+    @Excel(name = "系统id", width = 15)
+    @ApiModelProperty(value = "系统id")
+    private java.lang.String interlockSystemId;
+    /**装置名称*/
+    @Excel(name = "装置名称", width = 15)
+    @ApiModelProperty(value = "装置名称")
+    private java.lang.String interlockApparatusName;
+    /**系统名称*/
+    @Excel(name = "系统名称", width = 15)
+    @ApiModelProperty(value = "系统名称")
+    private java.lang.String interlockSystemName;
+
+}

+ 7 - 6
jeecg-module-interlock/src/main/java/org/jeecg/modules/history/vo/InterlockSummaryHistoryVO.java

@@ -21,19 +21,19 @@ public class InterlockSummaryHistoryVO {
     @ApiModelProperty(value = "id")
     private java.lang.String id;
     /**联锁总表id*/
-    @Excel(name = "联锁总表id", width = 15)
+//    @Excel(name = "联锁总表id", width = 15)
     @ApiModelProperty(value = "联锁总表id")
     private java.lang.String summaryid;
     /**联锁名称*/
-    @Excel(name = "联锁名称", width = 15)
+    @Excel(name = "联锁名称", width = 30, mergeVertical = true)
     @ApiModelProperty(value = "联锁名称")
     private java.lang.String interlockname;
     /**联锁条件值*/
-    @Excel(name = "联锁条件值", width = 15)
+//    @Excel(name = "联锁条件值", width = 15)
     @ApiModelProperty(value = "联锁条件值")
     private java.lang.String interlockCondition;
     /**联锁条件点位*/
-    @Excel(name = "联锁条件点位", width = 15)
+    @Excel(name = "联锁条件点位", width = 30)
     @ApiModelProperty(value = "联锁条件点位")
     private java.lang.String interlockConditionTag;
     /**仪表状态*/
@@ -47,12 +47,12 @@ public class InterlockSummaryHistoryVO {
     @Dict(dicCode = "control_system_status")
     private java.lang.String controlSystemStatus;
     /**联锁状态*/
-    @Excel(name = "联锁状态", width = 15)
+    @Excel(name = "联锁状态", width = 15, mergeVertical = true)
     @ApiModelProperty(value = "联锁状态")
     @Dict(dicCode = "interlock_status")
     private java.lang.String interlockStatus;
     /**回路健康级别*/
-    @Excel(name = "回路健康级别", width = 15)
+    @Excel(name = "回路健康级别", width = 15, mergeVertical = true)
     @ApiModelProperty(value = "回路健康级别")
     private java.lang.String loopHealthLevel;
     /**旁路状态*/
@@ -61,6 +61,7 @@ public class InterlockSummaryHistoryVO {
     @ApiModelProperty(value = "旁路状态")
     private java.lang.String bypass;
     /**采集时间*/
+    @Excel(name = "采集时间", width = 30, mergeVertical = true)
     @ApiModelProperty(value = "采集时间")
     private java.lang.String tagTime;