wangxiaofei hai 2 semanas
pai
achega
d2b27baced

+ 8 - 23
taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java

@@ -1,13 +1,11 @@
 package com.sckj.iron.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.sckj.common.aop.Log;
 import com.sckj.common.aop.NotLogin;
 import com.sckj.common.aop.NotPower;
 import com.sckj.common.core.AjaxResult;
-import com.sckj.common.entity.setting.DictData;
 import com.sckj.common.mapper.setting.DictDataMapper;
 import com.sckj.device.validate.TCameraUpdateDTO;
 import com.sckj.iron.dto.*;
@@ -23,10 +21,10 @@ import com.sckj.l2.dto.TrendRequest;
 import com.sckj.l2.entity.TL2Data;
 import com.sckj.l2.service.impl.TL2DataServiceImpl;
 import com.sckj.opc.service.OPCDataServiceImpl;
-import com.sckj.warn.dto.TExceptionLogDTO;
 import com.sckj.warn.dto.WarnDTO;
 import com.sckj.warn.service.impl.TExceptionLogServiceImpl;
 import com.sckj.warn.validate.TIronExceptionSearchScreenValidate;
+import com.sckj.warn.vo.TExceptionLogBigScreenVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -275,18 +273,11 @@ public class TIronVisualScreenController {
     @NotPower
     @PostMapping("/queryIronExceptionData")
     @ApiOperation(value = "查询告警列表数据")
-    public AjaxResult<TableDataInfo<TExceptionLogDTO>> queryIronExceptionData(@RequestBody TIronExceptionSearchScreenValidate ironDataSearchScreenValidate) {
-        List<DictData> dictDataList = dictDataMapper.selectList((new QueryWrapper<DictData>().lambda().eq(DictData::getTypeId, 12).eq(DictData::getIsDelete, 0)));
-        Map<String,String>  map = dictDataList.stream().collect((Collectors.toMap(
-                DictData::getValue, // 键映射函数
-                DictData::getName, // 键映射函数
-                (existingValue, newValue) -> existingValue  // 合并策略:保留第一个值
-        )));
-
+    public AjaxResult<TableDataInfo<TExceptionLogBigScreenVo>> queryIronExceptionData(@RequestBody TIronExceptionSearchScreenValidate ironDataSearchScreenValidate) {
         PageHelper.startPage(ironDataSearchScreenValidate.getPageNo(), ironDataSearchScreenValidate.getPageSize());
-        List<TExceptionLogDTO> ironDataList = exceptionLogService.queryIronExceptionData(ironDataSearchScreenValidate,map);
+        List<TExceptionLogBigScreenVo> ironDataList = exceptionLogService.queryIronExceptionData(ironDataSearchScreenValidate);
         PageInfo pageInfo = new PageInfo(ironDataList);
-        TableDataInfo<TExceptionLogDTO> tableDataInfo = new TableDataInfo<>();
+        TableDataInfo<TExceptionLogBigScreenVo> tableDataInfo = new TableDataInfo<>();
         BeanUtils.copyProperties(pageInfo, tableDataInfo);
         return AjaxResult.success(tableDataInfo);
     }
@@ -295,23 +286,17 @@ public class TIronVisualScreenController {
     @PostMapping("/exportExceptionData")
     @ApiOperation(value = "导出告警列表数据")
     public void exportIronExceptionData(@RequestBody TIronExceptionSearchScreenValidate ironDataSearchScreenValidate, HttpServletResponse response) throws IOException {
-        List<DictData> dictDataList = dictDataMapper.selectList((new QueryWrapper<DictData>().lambda().eq(DictData::getTypeId, 12).eq(DictData::getIsDelete, 0)));
-        Map<String,String>  map = dictDataList.stream().collect((Collectors.toMap(
-                DictData::getValue, // 键映射函数
-                DictData::getName, // 键映射函数
-                (existingValue, newValue) -> existingValue  // 合并策略:保留第一个值
-        )));
-        exceptionLogService.exportIronExceptionData(ironDataSearchScreenValidate,map, response);
+        exceptionLogService.exportIronExceptionData(ironDataSearchScreenValidate, response);
     }
 
     @NotPower
     @PostMapping("/queryIronTestData")
     @ApiOperation(value = "查询诊断数据")
-    public AjaxResult<TableDataInfo<TIronTestDTO>> queryIronTestData(@RequestBody TIronTestSearchScreenValidate ironDataSearchScreenValidate) {
+    public AjaxResult<TableDataInfo<TIronTest>> queryIronTestData(@RequestBody TIronTestSearchScreenValidate ironDataSearchScreenValidate) {
         PageHelper.startPage(ironDataSearchScreenValidate.getPageNo(), ironDataSearchScreenValidate.getPageSize());
-        List<TIronTestDTO> ironDataList = iTIronTestService.queryIronTestData(ironDataSearchScreenValidate);
+        List<TIronTest> ironDataList = iTIronTestService.queryIronTestData(ironDataSearchScreenValidate);
         PageInfo pageInfo = new PageInfo(ironDataList);
-        TableDataInfo<TIronTestDTO> tableDataInfo = new TableDataInfo<>();
+        TableDataInfo<TIronTest> tableDataInfo = new TableDataInfo<>();
         BeanUtils.copyProperties(pageInfo, tableDataInfo);
         return AjaxResult.success(tableDataInfo);
     }

+ 13 - 12
taphole-iron/src/main/java/com/sckj/iron/entity/TIronTest.java

@@ -41,10 +41,6 @@ public class TIronTest implements Serializable {
     @ExcelIgnore
     private String testStatus;
 
-    @ApiModelProperty(value = "铁口号")
-    @ExcelProperty("铁口号")
-    @ColumnWidth(25)
-    private String tapholeId;
 
     @ApiModelProperty(value = "高炉编号")
     @ExcelIgnore
@@ -54,9 +50,15 @@ public class TIronTest implements Serializable {
     @ExcelIgnore
     private String ironNo;
 
-    @ApiModelProperty(value = "出铁详情")
+    @ApiModelProperty(value = "实时出铁编号")
     @ExcelIgnore
-    private String ironDetail;
+    private String ironDataId;
+
+
+    @ApiModelProperty(value = "铁口号")
+    @ExcelProperty("铁口号")
+    @ColumnWidth(25)
+    private String tapholeId;
 
     @ApiModelProperty(value = "出铁量")
     @ExcelProperty("出铁量(t)")
@@ -78,19 +80,18 @@ public class TIronTest implements Serializable {
     @ColumnWidth(30)
     private String avgSpeed;
 
-
-    @ApiModelProperty(value = "诊断描述")
+    @ApiModelProperty(value = "出铁工作诊断结果")
     @ExcelProperty("出铁工作诊断结果")
-    @ColumnWidth(60)
+    @ColumnWidth(100)
     private String testDesc;
 
-    @ApiModelProperty(value = "创建时间")
+    @ApiModelProperty(value = "诊断时间")
     @ExcelProperty("诊断时间")
     @ColumnWidth(30)
     private String createTime;
 
-    @ApiModelProperty(value = "实时出铁编号")
+    @ApiModelProperty(value = "出铁详情")
     @ExcelIgnore
-    private String ironDataId;
+    private String ironDetail;
 
 }

+ 1 - 0
taphole-iron/src/main/java/com/sckj/iron/mapper/TIronTestMapper.java

@@ -10,4 +10,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface TIronTestMapper extends IBaseMapper<TIronTest> {
+
 }

+ 4 - 13
taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronTestServiceImpl.java

@@ -14,7 +14,6 @@ import com.sckj.common.util.StringUtils;
 import com.sckj.common.validate.commons.PageValidate;
 import com.sckj.iron.constant.ParamsConstants;
 import com.sckj.iron.dto.IronTestItem;
-import com.sckj.iron.dto.TIronTestDTO;
 import com.sckj.iron.entity.TIronParam;
 import com.sckj.iron.entity.TIronTest;
 import com.sckj.iron.mapper.TIronTestMapper;
@@ -179,7 +178,7 @@ public class TIronTestServiceImpl extends ServiceImpl<TIronTestMapper, TIronTest
      * 查询诊断数据
      * @return
      */
-    public List<TIronTestDTO> queryIronTestData(TIronTestSearchScreenValidate tl2Data) {
+    public List<TIronTest> queryIronTestData(TIronTestSearchScreenValidate tl2Data) {
         QueryWrapper<TIronTest> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda()
                 .like(ObjectUtils.isNotEmpty(tl2Data.getTestDesc()), TIronTest::getTestDesc, tl2Data.getTestDesc())
@@ -191,15 +190,7 @@ public class TIronTestServiceImpl extends ServiceImpl<TIronTestMapper, TIronTest
             queryWrapper.lambda().between(TIronTest::getCreateTime, tl2Data.getCreateTimeStart(), tl2Data.getCreateTimeEnd());
         }
 
-        // 使用Java 8 lambda表达式进行数据转换
-        return list(queryWrapper)
-                .stream()
-                .map(item -> {
-                    TIronTestDTO dto = new TIronTestDTO();
-                    BeanUtils.copyProperties(item, dto);
-                    return dto;
-                })
-                .collect(java.util.stream.Collectors.toList());
+        return list(queryWrapper);
     }
 
     /***
@@ -212,8 +203,8 @@ public class TIronTestServiceImpl extends ServiceImpl<TIronTestMapper, TIronTest
         if (ObjectUtils.isEmpty(tl2Data.getCreateTimeStart()) || ObjectUtils.isEmpty(tl2Data.getCreateTimeEnd())) {
             throw new OperateException("导出请选择开始时间和结束时间!");
         }
-        List<TIronTestDTO> tl2DataList = queryIronTestData(tl2Data);
-        ExcelUtils.exportExcel(tl2DataList, TIronTestDTO.class, "诊断列表数据", "诊断列表数据", response);
+        List<TIronTest> tl2DataList = queryIronTestData(tl2Data);
+        ExcelUtils.exportExcel(tl2DataList, TIronTest.class, "诊断列表数据", "诊断列表数据", response);
     }
 
 

+ 7 - 4
taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronVisualScreenServiceImpl.java

@@ -707,7 +707,10 @@ public class TIronVisualScreenServiceImpl {
                 if (!inTappingCycle) {
                     //刚刚开始出铁
                     inTappingCycle = true;
-                    //System.out.println("[出铁周期结束] 开始于: " + time);
+                    log.info("[出铁周期结束] 开始于: " + time);
+                    if(bigDecimal.compareTo(new BigDecimal("70")) > 0){
+                        bigDecimal  = BigDecimal.ZERO;
+                    }
                 }
                 if (bigDecimal.compareTo(BigDecimal.ZERO) == 0) {
                     //复用上次的数据
@@ -722,7 +725,7 @@ public class TIronVisualScreenServiceImpl {
                     BigDecimal prevW = new BigDecimal(weightMap.getOrDefault(xAxis.get(i - 1), 0d).toString());
                     //上一个减去当前的
                     if (prevW.subtract(bigDecimal).compareTo(new BigDecimal("70")) > 0) {
-                        System.out.println("[出铁周期满载情况] 时间: " + xAxis.get(i - 1) + ", 铁水满载值: " + prevW);
+                        log.info("[出铁周期满载情况] 时间: " + xAxis.get(i - 1) + ", 铁水满载值: " + prevW);
                         cycleTotal = cycleTotal.add(prevW);
                     }
                 }
@@ -733,11 +736,11 @@ public class TIronVisualScreenServiceImpl {
                 if (inTappingCycle) {
                     //刚刚从出铁结束切换过来
                     cycleTotal = cycleTotal.add(bigDecimal);
-                    System.out.println("[出铁周期结束] 最后时间点的铁水重量: " + bigDecimal);
+                    log.info("[出铁周期结束] 最后时间点的铁水重量: " + bigDecimal);
                     bigDecimal = BigDecimal.ZERO;
 
                     double value = cycleTotal.setScale(scale, RoundingMode.HALF_UP).doubleValue();
-                    System.out.println("[出铁周期结束] 结束于: " + time + ", 本周期铁水总净重: " + value);
+                    log.info("[出铁周期结束] 结束于: " + time + ", 本周期铁水总净重: " + value);
                     arr.add(java.util.Arrays.asList(time, value));
                     inTappingCycle = false;
                     cycleTotal = BigDecimal.ZERO;

+ 3 - 3
taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java

@@ -1547,7 +1547,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                 List<TL2Data> latestTwoDatas = tl2DataService.getLatestTwoDatas("1");
                 if (ObjectUtils.isNotEmpty(latestTwoDatas) && latestTwoDatas.size() >= 2) {
                     BigDecimal mudWeight1 = BigDecimal.valueOf(latestTwoDatas.get(0).getMudWeight());
-                    BigDecimal mudWeight2 = BigDecimal.valueOf(latestTwoDatas.get(2).getMudWeight());
+                    BigDecimal mudWeight2 = BigDecimal.valueOf(latestTwoDatas.get(1).getMudWeight());
 
                     if (mudWeight1.intValue() == 55 && mudWeight2.intValue() == 55) {
                         // 前2次1号铁口的打泥量    前两次55L,建议本次也是55L
@@ -2339,7 +2339,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                             log.info("   ├─ ⏭️ 未达到满载阈值 (差值 ≤ 130t),跳过累加");
                             log.info("   ├─ 当前差值: {} t ≤ 130 t", diff);
 
-                            getCloseTime(mTotalWeight.add(bigDecimalNew));
+                            getCloseTime(mTotalWeight.add(bigDecimalNew.max(ironWeight2Pre)));
                         }
 
                         // 更新上次流量值
@@ -2372,7 +2372,7 @@ public class DeviceEventListener extends AbstractEventListener { //
                             log.info("   ├─ ⏭️ 未达到满载阈值 (差值 ≤ 130t),跳过累加");
                             log.info("   ├─ 当前差值: {} t ≤ 130 t", diff);
 
-                            getCloseTime(mTotalWeight.add(bigDecimalNew));
+                            getCloseTime(mTotalWeight.add(bigDecimalNew.max(ironWeight1Pre)));
 
                         }
 

+ 7 - 0
taphole-iron/src/main/resources/mapper/IronTestMapper.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.sckj.iron.mapper.TIronTestMapper">
+
+
+
+</mapper>

+ 3 - 0
taphole-warn/src/main/java/com/sckj/warn/mapper/TExceptionLogMapper.java

@@ -3,6 +3,7 @@ package com.sckj.warn.mapper;
 import com.sckj.common.core.basics.IBaseMapper;
 import com.sckj.warn.dto.WarnDTO;
 import com.sckj.warn.entity.TExceptionLog;
+import com.sckj.warn.validate.TIronExceptionSearchScreenValidate;
 import com.sckj.warn.vo.TExceptionLogBigScreenVo;
 import com.sckj.warn.vo.TExceptionLogExportVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -32,4 +33,6 @@ public interface TExceptionLogMapper extends IBaseMapper<TExceptionLog> {
      * @return
      */
     List<TExceptionLogBigScreenVo> getRealTimeExceptionLogList(TExceptionLog exceptionLog);
+
+    List<TExceptionLogBigScreenVo> getExceptionLogList(TIronExceptionSearchScreenValidate exceptionLog);
 }

+ 5 - 27
taphole-warn/src/main/java/com/sckj/warn/service/impl/TExceptionLogServiceImpl.java

@@ -8,9 +8,7 @@ import com.sckj.common.core.AjaxResult;
 import com.sckj.common.core.PageResult;
 import com.sckj.common.exception.OperateException;
 import com.sckj.common.util.ExcelUtils;
-import com.sckj.common.util.StringUtils;
 import com.sckj.common.validate.commons.PageValidate;
-import com.sckj.warn.dto.TExceptionLogDTO;
 import com.sckj.warn.dto.WarnDTO;
 import com.sckj.warn.entity.TExceptionLog;
 import com.sckj.warn.mapper.TExceptionLogMapper;
@@ -40,7 +38,6 @@ import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 异常情况记录实现类
@@ -292,28 +289,9 @@ public class TExceptionLogServiceImpl extends ServiceImpl<TExceptionLogMapper, T
      * 查询出铁数据
      * @return
      */
-    public List<TExceptionLogDTO> queryIronExceptionData(TIronExceptionSearchScreenValidate tl2Data, Map<String, String> map) {
-        QueryWrapper<TExceptionLog> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda()
-                .like(ObjectUtils.isNotEmpty(tl2Data.getExceptionDesc()), TExceptionLog::getExceptionDesc, tl2Data.getExceptionDesc())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getBoilerId()), TExceptionLog::getBoilerId, tl2Data.getBoilerId())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getTapholeId()), TExceptionLog::getTapholeId, tl2Data.getTapholeId())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getExceptionType()), TExceptionLog::getExceptionType, tl2Data.getExceptionType())
-                .orderByDesc(TExceptionLog::getCreateTime);
-        if (StringUtils.isNotBlank(tl2Data.getCreateTimeStart()) && StringUtils.isNotBlank(tl2Data.getCreateTimeEnd())) {
-            queryWrapper.lambda().between(TExceptionLog::getCreateTime, tl2Data.getCreateTimeStart(), tl2Data.getCreateTimeEnd());
-        }
+    public List<TExceptionLogBigScreenVo> queryIronExceptionData(TIronExceptionSearchScreenValidate tl2Data ) {
+        return tExceptionLogMapper.getExceptionLogList(tl2Data);
 
-        // 使用Java 8 lambda表达式进行数据转换
-        return list(queryWrapper)
-                .stream()
-                .map(item -> {
-                    TExceptionLogDTO dto = new TExceptionLogDTO();
-                    BeanUtils.copyProperties(item, dto);
-                    dto.setExceptionType(map.get(item.getExceptionType()));
-                    return dto;
-                })
-                .collect(java.util.stream.Collectors.toList());
     }
 
     /***
@@ -322,13 +300,13 @@ public class TExceptionLogServiceImpl extends ServiceImpl<TExceptionLogMapper, T
      * @param response
      * @throws IOException
      */
-    public void exportIronExceptionData(TIronExceptionSearchScreenValidate tl2Data, Map<String, String> map, HttpServletResponse response) throws IOException {
+    public void exportIronExceptionData(TIronExceptionSearchScreenValidate tl2Data,  HttpServletResponse response) throws IOException {
         if (ObjectUtils.isEmpty(tl2Data.getCreateTimeStart()) || ObjectUtils.isEmpty(tl2Data.getCreateTimeEnd())) {
             throw new OperateException("导出请选择开始时间和结束时间!");
         }
 
-        List<TExceptionLogDTO> tl2DataList = queryIronExceptionData(tl2Data, map);
-        ExcelUtils.exportExcel(tl2DataList, TExceptionLogDTO.class, "告警列表数据", "告警列表数据", response);
+        List<TExceptionLogBigScreenVo> tl2DataList = queryIronExceptionData(tl2Data);
+        ExcelUtils.exportExcel(tl2DataList, TExceptionLogBigScreenVo.class, "告警列表数据", "告警列表数据", response);
     }
 
 

+ 6 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TIronExceptionSearchScreenValidate.java

@@ -32,6 +32,12 @@ public class TIronExceptionSearchScreenValidate implements Serializable {
     @ApiModelProperty(value = "异常描述")
     private String exceptionDesc;
 
+    @ApiModelProperty(value = "异常等级")
+    private String exceptionLevel;
+
+    @ApiModelProperty(value = "DataId")
+    private String ironDataId;
+
     // 当前分页
     @DecimalMin(value = "1", message = "pageNo参数必须大于0的数字")
     public Integer pageNo = 1;

+ 23 - 4
taphole-warn/src/main/java/com/sckj/warn/vo/TExceptionLogBigScreenVo.java

@@ -1,11 +1,14 @@
 package com.sckj.warn.vo;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.Date;
 
 @Data
 @ApiModel("出铁告警列表")
@@ -14,24 +17,40 @@ public class TExceptionLogBigScreenVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ColumnWidth(25)
-    @ApiModelProperty(value = "告警时间")
-    private String createTime;
-
-    @ColumnWidth(25)
     @ApiModelProperty(value = "告警类型")
+    @ExcelIgnore
     private String exceptionTypeName;
 
     @ColumnWidth(25)
     @ApiModelProperty(value = "高炉编号")
+    @ExcelIgnore
     private String boilerName;
 
     @ColumnWidth(25)
     @ApiModelProperty(value = "铁口区域编号")
+    @ExcelIgnore
     private String tapholeName;
 
+
+    @ApiModelProperty(value = "铁口号")
+    @ExcelProperty("铁口号")
     @ColumnWidth(25)
+    private String tapholeId;
+
+    @ApiModelProperty(value = "告警类型")
+    @ExcelProperty("告警类型")
+    @ColumnWidth(25)
+    private String exceptionType;
+
     @ApiModelProperty(value = "告警明细")
+    @ExcelProperty("告警明细")
+    @ColumnWidth(100)
     private String exceptionDesc;
 
+    @ApiModelProperty(value = "告警时间")
+    @ExcelProperty("告警时间")
+    @ColumnWidth(25)
+    private Date createTime;
+
 
 }

+ 52 - 0
taphole-warn/src/main/resources/mapper/TExceptionLogMapper.xml

@@ -111,4 +111,56 @@
         limit 10
     </select>
 
+    <select id="getExceptionLogList" resultType="com.sckj.warn.vo.TExceptionLogBigScreenVo" parameterType="com.sckj.warn.validate.TIronExceptionSearchScreenValidate" >
+        SELECT
+        DATE_FORMAT(el.create_time, '%Y-%m-%d %H:%i:%s') create_time,
+        el.exception_desc,
+        a2.name AS exception_type_name,
+        a2.name AS exception_type,
+        a4.name AS taphole_name,
+        a5.name AS boiler_name
+        FROM t_exception_log el
+        LEFT JOIN (
+        SELECT b.dict_type, a.name, a.value
+        FROM la_dict_data a
+        INNER JOIN la_dict_type b ON a.type_id = b.id
+        ) a2 ON a2.value = el.exception_type AND a2.dict_type = 'exception_type'
+        LEFT JOIN (
+        SELECT b.dict_type, a.name, a.value
+        FROM la_dict_data a
+        INNER JOIN la_dict_type b ON a.type_id = b.id
+        ) a3 ON a3.value = el.exception_level AND a3.dict_type = 'exception_level'
+        LEFT JOIN (
+        SELECT b.dict_type, a.name, a.value
+        FROM la_dict_data a
+        INNER JOIN la_dict_type b ON a.type_id = b.id
+        ) a4 ON a4.value = el.taphole_id AND a4.dict_type = 'taphole_num'
+        LEFT JOIN (
+        SELECT b.dict_type, a.name, a.value
+        FROM la_dict_data a
+        INNER JOIN la_dict_type b ON a.type_id = b.id
+        ) a5 ON a5.value = el.boiler_id AND a5.dict_type = 'boiler_num'
+        <where>
+            <if test="boilerId != null and boiler_id !=''">
+                and boiler_id = #{boiler_id}
+            </if>
+            <if test="tapholeId != null and tapholeId !=''">
+                and taphole_Id = #{tapholeId}
+            </if>
+            <if test="exceptionType != null and exceptionType !=''">
+                and exception_Type = #{exceptionType}
+            </if>
+            <if test="exceptionLevel != null and exceptionLevel !=''">
+                and exception_Level = #{exceptionLevel}
+            </if>
+            <if test="ironDataId != null and ironDataId !=''">
+                and iron_data_id = #{ironDataId}
+            </if>
+            <if test="createTimeStart != null and createTimeStart !='' and createTimeEnd != null and createTimeEnd !=''">
+                and create_time between #{createTimeStart} and #{createTimeEnd}
+            </if>
+        </where>
+        order by create_time desc
+    </select>
+
 </mapper>