Selaa lähdekoodia

整理模块,抽出L2模块

wangxiaofei 2 kuukautta sitten
vanhempi
commit
13435a74f9
41 muutettua tiedostoa jossa 1016 lisäystä ja 747 poistoa
  1. 8 0
      pom.xml
  2. 4 0
      taphole-admin/src/main/resources/application-dev.yml
  3. 14 4
      taphole-camera/src/main/java/com.sckj.camera/util/LocalDateUtils.java
  4. 1 2
      taphole-common/src/main/java/com/sckj/common/util/RedisUtils.java
  5. 4 0
      taphole-iron/pom.xml
  6. 28 0
      taphole-iron/src/main/java/com/sckj/iron/constant/L1TagConstants.java
  7. 52 0
      taphole-iron/src/main/java/com/sckj/iron/constant/ScheduledTimeConstants.java
  8. 25 0
      taphole-iron/src/main/java/com/sckj/iron/constant/TaskNameConstants.java
  9. 0 1
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronDataController.java
  10. 10 2
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronStepController.java
  11. 21 9
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java
  12. 0 69
      taphole-iron/src/main/java/com/sckj/iron/controller/TL2DataController.java
  13. 13 0
      taphole-iron/src/main/java/com/sckj/iron/dto/IronTimeNoDTO.java
  14. 16 9
      taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java
  15. 0 41
      taphole-iron/src/main/java/com/sckj/iron/mapper/TL2DataMapper.java
  16. 8 1
      taphole-iron/src/main/java/com/sckj/iron/service/impl/TCameraServiceImpl.java
  17. 6 1
      taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronStepServiceImpl.java
  18. 0 261
      taphole-iron/src/main/java/com/sckj/iron/service/impl/TL2DataServiceImpl.java
  19. 215 179
      taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java
  20. 22 80
      taphole-iron/src/main/java/com/sckj/iron/socketio/PushData.java
  21. 56 0
      taphole-l2-start/pom.xml
  22. 13 0
      taphole-l2-start/src/main/java/com/sckj/l2start/TapholeL2StartApplication.java
  23. 36 0
      taphole-l2/pom.xml
  24. 64 0
      taphole-l2/src/main/java/com/sckj/l2/controller/TL2DataController.java
  25. 146 0
      taphole-l2/src/main/java/com/sckj/l2/dto/L2Data.java
  26. 76 0
      taphole-l2/src/main/java/com/sckj/l2/dto/L2Material.java
  27. 1 5
      taphole-l2/src/main/java/com/sckj/l2/dto/TL2DataDTO.java
  28. 3 2
      taphole-l2/src/main/java/com/sckj/l2/dto/TrendDTO.java
  29. 1 1
      taphole-l2/src/main/java/com/sckj/l2/dto/TrendRequest.java
  30. 4 33
      taphole-l2/src/main/java/com/sckj/l2/entity/TL2Data.java
  31. 13 23
      taphole-l2/src/main/java/com/sckj/l2/entity/TL2Material.java
  32. 22 0
      taphole-l2/src/main/java/com/sckj/l2/mapper/TL2DataMapper.java
  33. 3 2
      taphole-l2/src/main/java/com/sckj/l2/mapper/TL2MaterialMapper.java
  34. 5 5
      taphole-l2/src/main/java/com/sckj/l2/service/impl/L2DataServiceImpl.java
  35. 88 0
      taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2DataServiceImpl.java
  36. 3 9
      taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2MaterialServiceImpl.java
  37. 3 3
      taphole-l2/src/main/resources/mapper/TL2DataMapper.xml
  38. 21 2
      taphole-opc/src/main/java/com/sckj/opc/dto/L2Material.java
  39. 6 1
      taphole-opc/src/main/java/com/sckj/opc/opcua/OPCDAServiceImpl.java
  40. 4 1
      taphole-opc/src/main/java/com/sckj/opc/utils/CustomUtil.java
  41. 1 1
      taphole-warn/src/main/java/com/sckj/warn/dto/WarnDTO.java

+ 8 - 0
pom.xml

@@ -19,6 +19,8 @@
         <module>taphole-warn</module>
         <module>taphole-iron</module>
         <module>taphole-opc</module>
+        <module>taphole-l2</module>
+        <module>taphole-l2-start</module>
     </modules>
 
     <!-- 特性信息 -->
@@ -386,6 +388,12 @@
                 <version>${taphole.version}</version>
             </dependency>
 
+            <dependency>
+                <groupId>com.sckj</groupId>
+                <artifactId>taphole-l2</artifactId>
+                <version>${taphole.version}</version>
+            </dependency>
+
 <!--            <dependency>-->
 <!--                <groupId>cn.idev.excel</groupId>-->
 <!--                <artifactId>fastexcel</artifactId>-->

+ 4 - 0
taphole-admin/src/main/resources/application-dev.yml

@@ -52,3 +52,7 @@ socketio:
   upgradeTimeout: 1000000		#协议升级超时时间(毫秒),默认10000。HTTP握手升级为ws协议超时时间
   pingTimeout: 6000000		    #Ping消息超时时间(毫秒),默认60000,这个时间间隔内没有接收到心跳消息就会发送超时事件
   pingInterval: 25000			#Ping消息间隔(毫秒),默认25000。客户端向服务器发送一条心跳消息间隔
+mybatis-plus:
+  global-config:
+    db-config:
+      update-strategy: not_empty

+ 14 - 4
taphole-camera/src/main/java/com.sckj.camera/util/LocalDateUtils.java

@@ -32,6 +32,12 @@ public class LocalDateUtils {
         return localDateTime.format(DATE_TIME_FORMATTER);
     }
 
+    public static String formatDate(Date date, DateTimeFormatter formatter) {
+        Instant instant = date.toInstant();
+        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
+        return localDateTime.format(formatter);
+    }
+
     /**
      * Date 转 LocalDateTime
      *
@@ -94,9 +100,10 @@ public class LocalDateUtils {
 
     /**
      * 获取两个日期的差  field参数为ChronoUnit.*
+     *
      * @param startTime
      * @param endTime
-     * @param field  单位(年月日时分秒)
+     * @param field     单位(年月日时分秒)
      * @return
      */
     public static long betweenTwoTime(LocalDateTime startTime, LocalDateTime endTime, ChronoUnit field) {
@@ -111,6 +118,7 @@ public class LocalDateUtils {
 
     /**
      * 日期加上一个数,根据field不同加不同值,field为ChronoUnit.*
+     *
      * @param time
      * @param number
      * @param field
@@ -123,18 +131,20 @@ public class LocalDateUtils {
 
     /**
      * 日期减去一个数,根据field不同减不同值,field参数为ChronoUnit.*
+     *
      * @param time
      * @param number
      * @param field
      * @return
      */
-    public static LocalDateTime minu(LocalDateTime time, long number, TemporalUnit field){
-        return time.minus(number,field);
+    public static LocalDateTime minu(LocalDateTime time, long number, TemporalUnit field) {
+        return time.minus(number, field);
     }
 
     /**
      * 比较第一个日期是否大于第二个日期
-     * @param firstDate 第一个日期
+     *
+     * @param firstDate  第一个日期
      * @param secondDate 第二个日期
      * @return true-大于;false-不大于
      */

+ 1 - 2
taphole-common/src/main/java/com/sckj/common/util/RedisUtils.java

@@ -684,7 +684,7 @@ public class RedisUtils {
     public static List getFixedElement(String key, int size) {
         // 获取列表中的所有元素
         if (size <= 0) {
-            size = -1;
+            size = 0;
         }
         return redisTemplate.opsForList().range(key, 0, size - 1);
     }
@@ -697,7 +697,6 @@ public class RedisUtils {
     public static Object getFixedLatestElement(String key) {
         // 获取列表中的所有元素
         // 获取列表第一个元素(索引0)
-
         List<Object> result = redisTemplate.opsForList().range(key, 0, 0);
         return ObjectUtils.isEmpty(result) ? null : result.get(0);
     }

+ 4 - 0
taphole-iron/pom.xml

@@ -38,6 +38,10 @@
             <groupId>com.sckj</groupId>
             <artifactId>taphole-device</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.sckj</groupId>
+            <artifactId>taphole-l2</artifactId>
+        </dependency>
     </dependencies>
 
 </project>

+ 28 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/L1TagConstants.java

@@ -0,0 +1,28 @@
+package com.sckj.iron.constant;
+
+/***
+ * L2的标签
+ */
+public class L1TagConstants {
+    //1号出铁状态标记
+    public static final String TAG_TAPHOLE1_STATUS = "AOD25606.PV";
+    //2号出铁状态标记
+    public static final String TAG_TAPHOLE2_STATUS = "AOD25622.PV";
+    //3号出铁状态标记
+    public static final String TAG_TAPHOLE3_STATUS = "AOD25706.PV";
+    //4号出铁状态标记
+    public static final String TAG_TAPHOLE4_STATUS = "AOD25722.PV";
+    //铁水温度
+    public static final String TAG_IRON_TEMP = "CL510104.CPV";
+    //1TH-1号车受铁速度
+    public static final String TAG_CAR11 = "WZ540101.PV";
+    //1TH-2号车受铁速度
+    public static final String TAG_CAR12 = "WZ540201.PV";
+    //1TH-1号车总重
+    public static final String TAG_IRON_WEIGHT11 = "WI5401.PV";
+    //1TH-2号车TPC总重
+    public static final String TAG_IRON_WEIGHT12 = "WI5402.PV";
+    //冲渣状态
+    public static final String TAG_FLUSH_STATUS = "AOD25607.PV";
+
+}

+ 52 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/ScheduledTimeConstants.java

@@ -0,0 +1,52 @@
+package com.sckj.iron.constant;
+
+/***
+ * 定时任务延迟和定时常量
+ * 单位:s
+ */
+public class ScheduledTimeConstants {
+    //堵口预警
+    //延迟
+    public static   long CLOSE_WARN_DELAY = 0;
+    //定时
+    public static   long CLOSE_WARN_PERIOD = 60;
+
+    //出铁预警
+    //延时
+    public static   long TAPPING_WARN_DELAY = 0;
+    //定时
+    public static   long TAPPING_WARN_PERIOD = 0;
+
+    //出铁超时报警
+    //延迟
+    public static   long TAPPING_TIMEOUT_WARN_DELAY = 0;
+    //定时
+    public static   long TAPPING_TIMEOUT_WARN_PERIOD = 0;
+
+
+    //打泥量计算
+    //延迟
+    public static   long HIT_MUD_DELAY = 0;
+    //定时
+    public static   long HIT_MUD_PERIOD = 0;
+
+
+    //出铁计时(这个固定不变,按秒改变)
+    //延迟
+    public static   long TAPPING_CONSTTIME_DELAY = 0;
+    //定时
+    public static   long TAPPING_CONSTTIME_PERIOD = 1;
+
+
+    //出铁诊断
+    //延迟
+    public static   long TAPPING_TEST_DELAY = 0;
+    //定时
+    public static   long TAPPING_TEST_PERIOD = 1;
+
+    //L1订阅
+    //延迟
+    public static   long OPCDASUBSCRIBE_DELAY = 0;
+    //定时
+    public static   long OPCDASUBSCRIBE_PERIOD = 15;
+}

+ 25 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/TaskNameConstants.java

@@ -0,0 +1,25 @@
+package com.sckj.iron.constant;
+
+/***
+ * 定时任务名称
+ */
+public class TaskNameConstants {
+    //开口预警
+    public static final String TASKNAME_OPEN_WARN = "open_warn";
+    //堵口预警,出铁xxx分钟开始
+    public static final String TASKNAME_CLOSE_WARN = "close_warn";
+    //出铁预警
+    public static final String TASKNAME_TAPPING_WARN = "tapping_warn";
+    //出铁超时报警
+    public static final String TASKNAME_TAPPING_TIMEOUT_WARN = "tapping_timeout_warn";
+
+    //出铁诊断,出铁结束后xxx分钟开始
+    public static final String TASKNAME_TAPPING_TEST = "tapping_test";
+    //打泥量预计
+    public static final String TASKNAME_HIT_MUD = "hit_mud";
+    //出铁计时
+    public static final String TASKNAME_TAPPING_CONSTTIME = "tapping_consttime";
+    //L1订阅
+    public static final String TASKNAME_OPCDASUBSCRIBE = "opcdasubscribe";
+
+}

+ 0 - 1
taphole-iron/src/main/java/com/sckj/iron/controller/TIronDataController.java

@@ -7,7 +7,6 @@ import com.sckj.common.validate.commons.IdValidate;
 import com.sckj.common.validate.commons.PageValidate;
 import com.sckj.common.validator.annotation.IDMust;
 import com.sckj.iron.service.impl.TIronDataServiceImpl;
-import com.sckj.iron.service.impl.TL2DataServiceImpl;
 import com.sckj.iron.validate.TIronDataSearchValidate;
 import com.sckj.iron.vo.TIronDataDetailVo;
 import com.sckj.iron.vo.TIronDataListedVo;

+ 10 - 2
taphole-iron/src/main/java/com/sckj/iron/controller/TIronStepController.java

@@ -3,6 +3,7 @@ package com.sckj.iron.controller;
 
 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.iron.entity.TIronStep;
 import com.sckj.iron.service.impl.TIronStepServiceImpl;
@@ -24,7 +25,6 @@ public class TIronStepController {
 
     @GetMapping("/getTreeSteps")
     @ApiOperation(value = "获取步骤")
-    @NotLogin
     public AjaxResult getTreeSteps() {
         return AjaxResult.success(iTIronStepService.getTreeSteps());
     }
@@ -37,14 +37,22 @@ public class TIronStepController {
 //    }
 
 
+    @NotPower
     @GetMapping("/refreshTreeSteps")
     @ApiOperation(value = "刷新步骤")
-    @NotLogin
     public AjaxResult refreshTreeSteps() {
         iTIronStepService.refreshTreeSteps();
         return AjaxResult.success(LocalDateTime.now());
     }
 
+    @NotPower
+    @GetMapping("/refreshParams")
+    @ApiOperation(value = "刷新参数")
+    public AjaxResult refreshParams() {
+        iTIronStepService.refreshParams();
+        return AjaxResult.success(LocalDateTime.now());
+    }
+
     @Log(title = "新增或者更新")
     @PostMapping("/saveOrUpdate")
     @ApiOperation(value = "新增或者更新")

+ 21 - 9
taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java

@@ -11,12 +11,15 @@ import com.sckj.device.validate.TCameraUpdateDTO;
 import com.sckj.iron.dto.*;
 import com.sckj.iron.entity.TIronData;
 import com.sckj.iron.entity.TIronParam;
-import com.sckj.iron.entity.TL2Data;
 import com.sckj.iron.service.impl.*;
 import com.sckj.iron.socketio.DeviceEventListener;
 import com.sckj.iron.validate.IronLoginValidate;
 import com.sckj.iron.validate.TIronDataSearchScreenValidate;
 import com.sckj.iron.vo.IronLoginVo;
+import com.sckj.l2.dto.TL2DataDTO;
+import com.sckj.l2.dto.TrendDTO;
+import com.sckj.l2.dto.TrendRequest;
+import com.sckj.l2.service.impl.TL2DataServiceImpl;
 import com.sckj.opc.dto.L2Data;
 import com.sckj.opc.service.OPCDataServiceImpl;
 import com.sckj.warn.dto.WarnDTO;
@@ -96,7 +99,7 @@ public class TIronVisualScreenController {
      * 从L2获取铁水成分数据
      * @return
      */
-    @NotLogin
+    @NotPower
     @PostMapping("/getIronElement")
     @ApiOperation(value = "获取铁水成分数据")
     public AjaxResult<TrendDTO> getIronElement(@RequestBody TrendRequest queryDateType) {
@@ -111,6 +114,7 @@ public class TIronVisualScreenController {
      * 获取铁水流速数据
      * @return
      */
+    @NotPower
     @PostMapping("/getIronSpeed")
     @ApiOperation(value = "获取铁水流速数据")
     public AjaxResult<TrendDTO> getIronSpeed(@RequestBody TrendRequest queryDateType) {
@@ -118,6 +122,7 @@ public class TIronVisualScreenController {
         TrendDTO trendDTO = new TrendDTO();
         trendDTO.setList(tl2DataList);
         trendDTO.setUnitName("t/min");
+        trendDTO.setUnitDesc("出铁流速");
         return AjaxResult.success(trendDTO);
     }
 
@@ -125,6 +130,7 @@ public class TIronVisualScreenController {
      * 获取铁流量数据
      * @return
      */
+    @NotPower
     @PostMapping("/getIronWeight")
     @ApiOperation(value = "获取铁流量数据")
     public AjaxResult<TrendDTO> getIronWeight(@RequestBody TrendRequest queryDateType) {
@@ -132,6 +138,7 @@ public class TIronVisualScreenController {
         TrendDTO trendDTO = new TrendDTO();
         trendDTO.setList(tl2DataList);
         trendDTO.setUnitName("t");
+        trendDTO.setUnitDesc("出铁量");
         return AjaxResult.success(trendDTO);
     }
 
@@ -139,6 +146,7 @@ public class TIronVisualScreenController {
      * 获取铁水温度数据
      * @return
      */
+    @NotPower
     @PostMapping("/getIronTemp")
     @ApiOperation(value = "获取铁水温度数据")
     public AjaxResult<TrendDTO> getIronTemp(@RequestBody TrendRequest queryDateType) {
@@ -146,10 +154,11 @@ public class TIronVisualScreenController {
         TrendDTO trendDTO = new TrendDTO();
         trendDTO.setList(tl2DataList);
         trendDTO.setUnitName("℃");
+        trendDTO.setUnitDesc("铁水温度");
         return AjaxResult.success(trendDTO);
     }
 
-
+    @NotPower
     @PostMapping("/getIronData")
     @ApiOperation(value = "查询出铁数据")
     public AjaxResult<TableDataInfo<TIronData>> queryIronData(@RequestBody TIronDataSearchScreenValidate ironDataSearchScreenValidate) {
@@ -164,7 +173,7 @@ public class TIronVisualScreenController {
         return AjaxResult.success(tableDataInfo);
     }
 
-
+    @NotPower
     @PostMapping("/exportIronData")
     @ApiOperation(value = "导出出铁数据")
     @Log(title = "更新出铁参数设置")
@@ -180,6 +189,7 @@ public class TIronVisualScreenController {
      *
      * @return
      */
+    @NotPower
     @ApiOperation("获取摄像头播放信息")
     @PostMapping("/getCameraInfo")
     public AjaxResult<CameraInfo> getCameraInfo() {
@@ -191,6 +201,7 @@ public class TIronVisualScreenController {
      *
      * @return
      */
+    @NotPower
     @ApiOperation("获取摄像头参数信息")
     @PostMapping("/getCameraParamInfo")
     public AjaxResult<CameraParamInfo> getCameraParamInfo() {
@@ -207,7 +218,7 @@ public class TIronVisualScreenController {
      *
      * @return
      */
-
+    @NotPower
     @ApiOperation("更新摄像头轮播状态、顺序")
     @PostMapping("/updateCamera")
     @Log(title = "更新摄像头轮播状态、顺序")
@@ -219,6 +230,7 @@ public class TIronVisualScreenController {
         return AjaxResult.success();
     }
 
+    @NotPower
     @PostMapping("/getIronParams")
     @ApiOperation(value = "获取出铁参数设置:paramType=>[(出铁诊断模型参数:iron_judge),(摄像头轮播时长参数:camera_param),(趋势图轮播项:iron_trend]")
     public AjaxResult<List<IronParamDTO>> getIronParam(@RequestBody IronParamDTO paramType) {
@@ -232,7 +244,7 @@ public class TIronVisualScreenController {
         return AjaxResult.success(collect);
     }
 
-
+    @NotPower
     @Log(title = "更新出铁参数设置")
     @PostMapping("/updateIronParams")
     @ApiOperation(value = "更新出铁参数设置")
@@ -244,7 +256,7 @@ public class TIronVisualScreenController {
         return AjaxResult.success();
     }
 
-
+    @NotPower
     @PostMapping("/getWarnList")
     @ApiOperation(value = "获取报警统计")
     public AjaxResult<List<WarnDTO>> getWarnList() {
@@ -252,10 +264,10 @@ public class TIronVisualScreenController {
         return AjaxResult.success(mapList);
     }
 
-
+    @NotPower
     @PostMapping("/getDictData")
     @ApiOperation(value = "获取字典数据(趋势下拉数据传:3)")
-    public AjaxResult<List<DictDTO>> getDictData(@RequestBody  DictDataDTO dictDataDTO) {
+    public AjaxResult<List<DictDTO>> getDictData(@RequestBody DictDataDTO dictDataDTO) {
         List<DictDTO> mapList = ironDictService.getDictDataByType(dictDataDTO.getTypeId());
         return AjaxResult.success(mapList);
     }

+ 0 - 69
taphole-iron/src/main/java/com/sckj/iron/controller/TL2DataController.java

@@ -1,69 +0,0 @@
-package com.sckj.iron.controller;
-
-
-import com.sckj.common.core.AjaxResult;
-import com.sckj.common.core.PageResult;
-import com.sckj.common.validate.commons.IdValidate;
-import com.sckj.common.validate.commons.PageValidate;
-import com.sckj.common.validator.annotation.IDMust;
-import com.sckj.iron.service.impl.TL2DataServiceImpl;
-import com.sckj.iron.validate.TL2DataCreateValidate;
-import com.sckj.iron.validate.TL2DataSearchValidate;
-import com.sckj.iron.validate.TL2DataUpdateValidate;
-import com.sckj.iron.vo.TL2DataDetailVo;
-import com.sckj.iron.vo.TL2DataListedVo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-
-@RestController
-@RequestMapping("api/l2")
-@Api(tags = "出铁数据管理")
-public class TL2DataController {
-
-    @Resource
-    TL2DataServiceImpl iTL2DataService;
-
-    @GetMapping("/list")
-    @ApiOperation(value="出铁数据列表")
-    public AjaxResult<PageResult<TL2DataListedVo>> list(@Validated PageValidate pageValidate,
-                                                        @Validated TL2DataSearchValidate searchValidate) {
-        PageResult<TL2DataListedVo> list = iTL2DataService.list(pageValidate, searchValidate);
-        return AjaxResult.success(list);
-    }
-
-    @GetMapping("/detail")
-    @ApiOperation(value="出铁数据详情")
-    public AjaxResult<TL2DataDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
-        TL2DataDetailVo detail = iTL2DataService.detail(id);
-        return AjaxResult.success(detail);
-    }
-
-
-    @PostMapping("/add")
-    @ApiOperation(value="出铁数据新增")
-    public AjaxResult<Object> add(@Validated @RequestBody TL2DataCreateValidate createValidate) {
-        iTL2DataService.add(createValidate);
-        return AjaxResult.success();
-    }
-
-
-    @PostMapping("/edit")
-    @ApiOperation(value="出铁数据编辑")
-    public AjaxResult<Object> edit(@Validated @RequestBody TL2DataUpdateValidate updateValidate) {
-        iTL2DataService.edit(updateValidate);
-        return AjaxResult.success();
-    }
-
-
-    @PostMapping("/del")
-    @ApiOperation(value="出铁数据删除")
-    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
-        iTL2DataService.del(idValidate.getId());
-        return AjaxResult.success();
-    }
-
-}

+ 13 - 0
taphole-iron/src/main/java/com/sckj/iron/dto/IronTimeNoDTO.java

@@ -0,0 +1,13 @@
+package com.sckj.iron.dto;
+
+import lombok.Data;
+
+/***
+ * 出铁日期和出铁次数
+ */
+@Data
+public class IronTimeNoDTO {
+    private String date;
+    private String ironNo;
+    private String desc;
+}

+ 16 - 9
taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java

@@ -1,10 +1,9 @@
 package com.sckj.iron.dto;
 
+import com.sckj.iron.constant.TaskNameConstants;
 import lombok.Builder;
 import lombok.Data;
 
-import static com.sckj.iron.socketio.DeviceEventListener.*;
-
 
 /***
  * 实时数据
@@ -20,27 +19,35 @@ public class WarnData {
     //
     private String type;
 
+    //类型名称
+    private String typeName;
+
     private String desc;
 
     private String alarmUrl;
 
-    public static WarnData of(String type, String desc,String alarmUrl) {
+    public static WarnData of(String type, String desc, String alarmUrl) {
         return WarnData.builder().type(type).desc(desc).build();
     }
 
     //开口预警
-    public static WarnData warnOpen(String desc,String alarmUrl) {
-        return WarnData.builder().type(TASKNAME_OPEN_WARN).desc(desc).build();
+    public static WarnData warnOpen(String desc, String alarmUrl) {
+        return WarnData.builder().type(TaskNameConstants.TASKNAME_OPEN_WARN).typeName("").desc(desc).build();
     }
 
     //出铁预警
-    public static WarnData warnTapping(String desc,String alarmUrl) {
-        return WarnData.builder().type(TASKNAME_TAPPING_WARN).desc(desc).build();
+    public static WarnData warnTapping(String desc, String alarmUrl) {
+        return WarnData.builder().type(TaskNameConstants.TASKNAME_TAPPING_WARN).typeName("急需出铁报警").desc(desc).build();
     }
 
     //堵口预警
-    public static WarnData warnClose(String desc,String alarmUrl) {
-        return WarnData.builder().type(TASKNAME_CLOSE_WARN).desc(desc).build();
+    public static WarnData warnClose(String desc, String alarmUrl) {
+        return WarnData.builder().type(TaskNameConstants.TASKNAME_CLOSE_WARN).typeName("急需堵口报警").desc(desc).build();
+    }
+
+    //炉前出铁超时报警
+    public static WarnData warnTappingTimeout(String desc, String alarmUrl) {
+        return WarnData.builder().type(TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN).typeName("炉前出铁超时报警").desc(desc).build();
     }
 
 }

+ 0 - 41
taphole-iron/src/main/java/com/sckj/iron/mapper/TL2DataMapper.java

@@ -1,41 +0,0 @@
-package com.sckj.iron.mapper;
-
-import com.sckj.common.core.basics.IBaseMapper;
-import com.sckj.iron.dto.TL2DataDTO;
-import com.sckj.iron.entity.TIronAfter;
-import com.sckj.iron.entity.TL2Data;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Select;
-
-import java.util.List;
-
-/**
- * 出铁后Mapper
- *
- * @author zhanghao
- */
-@Mapper
-public interface TL2DataMapper extends IBaseMapper<TL2Data> {
-
-//    //昨天
-//    @Select("select * from t_l2_data where DATE(create_time) = CURDATE() - INTERVAL 1 DAY")
-//    List<TL2Data> getTrendDataByYesterday();
-//
-//    //今天
-//    @Select("select * from t_l2_data where DATE(create_time) = CURDATE()")
-//    List<TL2Data> getTrendDataByToday();
-//
-//    //7日内
-//    @Select("select * from t_l2_data where create_time BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE() + INTERVAL 1 DAY")
-//    List<TL2Data> getTrendDataByWeek();
-//
-//    //30日内
-//    @Select("select * from t_l2_data where create_time BETWEEN CURDATE() - INTERVAL 29 DAY AND CURDATE() + INTERVAL 1 DAY")
-//    List<TL2Data> getTrendDataByMonth();
-
-    //diff日内
-    List<TL2DataDTO> getTrendDataByDiffDay(Integer diffDay);
-
-    List<TL2DataDTO> getTrendDataByDiffDays(Integer diffDays);
-
-}

+ 8 - 1
taphole-iron/src/main/java/com/sckj/iron/service/impl/TCameraServiceImpl.java

@@ -21,6 +21,7 @@ import com.sckj.device.vo.TCameraListedVo;
 import com.sckj.iron.dto.CameraInfo;
 import com.sckj.iron.dto.CameraParamInfo;
 import com.sckj.iron.entity.TCamera;
+import com.sckj.iron.entity.TIronParam;
 import com.sckj.iron.mapper.TCameraMapper;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
@@ -217,6 +218,9 @@ public class TCameraServiceImpl extends ServiceImpl<TCameraMapper, TCamera> {
     @Resource
     private CameraProperties cameraProperties;
 
+    @Resource
+    TIronParamServiceImpl ironParamService;
+
 
     public CameraInfo getCameraInfo() {
         List<TCamera> cameraList = lambdaQuery().eq(TCamera::getType, "1").in(TCamera::getStatus, "1", "2").orderByAsc(TCamera::getSort).list();
@@ -238,7 +242,10 @@ public class TCameraServiceImpl extends ServiceImpl<TCameraMapper, TCamera> {
             }
         }
         cameraParamInfo.setBannerList(bannerList);
-        cameraParamInfo.setRtcUrl("http://" + cameraProperties.getRtmp().getWebrtchost());
+        List<TIronParam> mIronParams = ironParamService.lambdaQuery().eq(TIronParam::getStatus, "1").in(TIronParam::getParamName, "webrtc_url").orderByAsc(TIronParam::getSort).list();
+        if (ObjectUtils.isNotEmpty(mIronParams)) {
+            cameraParamInfo.setRtcUrl(mIronParams.get(0).getParamValue());
+        }
         return cameraParamInfo;
     }
 

+ 6 - 1
taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronStepServiceImpl.java

@@ -116,7 +116,12 @@ public class TIronStepServiceImpl extends ServiceImpl<TIronStepMapper, TIronStep
 
 
     public void refreshTreeSteps() {
-        asyncEventBus.post(Boolean.TRUE);
+        asyncEventBus.post("1");
+    }
+
+
+    public void refreshParams() {
+        asyncEventBus.post("2");
     }
 
 

+ 0 - 261
taphole-iron/src/main/java/com/sckj/iron/service/impl/TL2DataServiceImpl.java

@@ -1,261 +0,0 @@
-package com.sckj.iron.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.sckj.common.core.PageResult;
-import com.sckj.common.util.ExcelUtils;
-import com.sckj.common.util.TimeUtils;
-import com.sckj.common.validate.commons.PageValidate;
-import com.sckj.iron.dto.TL2DataDTO;
-import com.sckj.iron.dto.TrendRequest;
-import com.sckj.iron.entity.TL2Data;
-import com.sckj.iron.mapper.TL2DataMapper;
-import com.sckj.iron.validate.TL2DataCreateValidate;
-import com.sckj.iron.validate.TL2DataSearchValidate;
-import com.sckj.iron.validate.TL2DataUpdateValidate;
-import com.sckj.iron.vo.TL2DataDetailVo;
-import com.sckj.iron.vo.TL2DataListedVo;
-import org.apache.commons.lang3.ObjectUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.util.Assert;
-import springfox.documentation.spi.service.contexts.Defaults;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * L2数据
- *
- * @author zhnaghao
- */
-@Service
-public class TL2DataServiceImpl extends ServiceImpl<TL2DataMapper, TL2Data> {
-
-    @Resource
-    TL2DataMapper tL2DataMapper;
-    @Autowired
-    private Defaults defaults;
-
-    /**
-     * 出铁数据列表
-     *
-     * @param pageValidate   分页参数
-     * @param searchValidate 搜索参数
-     * @return PageResult<TL2DataListedVo>
-     * @author LikeAdmin
-     */
-
-    public PageResult<TL2DataListedVo> list(PageValidate pageValidate, TL2DataSearchValidate searchValidate) {
-        Integer page = pageValidate.getPageNo();
-        Integer limit = pageValidate.getPageSize();
-
-        QueryWrapper<TL2Data> queryWrapper = new QueryWrapper<>();
-        queryWrapper.orderByDesc("id");
-
-        tL2DataMapper.setSearch(queryWrapper, searchValidate, new String[]{
-                "=:boilerId@boiler_id:long",
-                "=:tapholeId@taphole_id:long",
-                "=:ironNo@iron_no:str",
-                "=:ironCosttime@iron_costtime:str",
-                "=:ironWeight@iron_weight:str",
-                "=:slagWeight@slag_weight:str",
-                "=:avgTemp@avg_temp:str",
-                "=:mudWeight@mud_weight:str",
-                "=:pollMm@poll_mm:str",
-                "=:openDepth@open_depth:str",
-                "=:totalDry@total_dry:str",
-                "=:ironStarttime@iron_starttime:str",
-                "=:ironEndtime@iron_endtime:str",
-                "=:elementC@element_c:str",
-                "=:elementSi@element_si:str",
-                "=:elementMn@element_mn:str",
-                "=:elementP@element_p:str",
-                "=:elementS@element_s:str",
-                "=:elementTi@element_ti:str",
-        });
-
-        IPage<TL2Data> iPage = tL2DataMapper.selectPage(new Page<>(page, limit), queryWrapper);
-
-        List<TL2DataListedVo> list = new LinkedList<>();
-        for (TL2Data item : iPage.getRecords()) {
-            TL2DataListedVo vo = new TL2DataListedVo();
-            BeanUtils.copyProperties(item, vo);
-            list.add(vo);
-        }
-
-        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
-    }
-
-    /**
-     * 出铁数据详情
-     *
-     * @param id 主键参数
-     * @return TL2Data
-     * @author LikeAdmin
-     */
-
-    public TL2DataDetailVo detail(Integer id) {
-        TL2Data model = tL2DataMapper.selectOne(
-                new QueryWrapper<TL2Data>()
-                        .eq("id", id)
-                        .last("limit 1"));
-
-        Assert.notNull(model, "数据不存在");
-
-        TL2DataDetailVo vo = new TL2DataDetailVo();
-        BeanUtils.copyProperties(model, vo);
-        return vo;
-    }
-
-    /**
-     * 出铁数据新增
-     *
-     * @param createValidate 参数
-     * @author LikeAdmin
-     */
-
-    public void add(TL2DataCreateValidate createValidate) {
-        TL2Data model = new TL2Data();
-        model.setCreateTime(new Date(System.currentTimeMillis()));
-        model.setBoilerId(createValidate.getBoilerId());
-        model.setTapholeId(createValidate.getTapholeId());
-        model.setIronNo(createValidate.getIronNo());
-        model.setIronCosttime(createValidate.getIronCosttime());
-        model.setIronWeight(Double.valueOf(createValidate.getIronWeight()));
-        model.setSlagWeight(createValidate.getSlagWeight());
-        model.setAvgTemp(createValidate.getAvgTemp());
-        model.setMudWeight(createValidate.getMudWeight());
-        model.setPollMm(createValidate.getPollMm());
-        model.setOpenDepth(createValidate.getOpenDepth());
-        model.setTotalDry(Double.valueOf(createValidate.getTotalDry()));
-        model.setIronStarttime(createValidate.getIronStarttime());
-        model.setIronEndtime(createValidate.getIronEndtime());
-        model.setElementC(createValidate.getElementC());
-        model.setElementSi(createValidate.getElementSi());
-        model.setElementMn(createValidate.getElementMn());
-        model.setElementP(createValidate.getElementP());
-        model.setElementS(createValidate.getElementS());
-        model.setElementTi(createValidate.getElementTi());
-        tL2DataMapper.insert(model);
-    }
-
-    /**
-     * 出铁数据编辑
-     *
-     * @param updateValidate 参数
-     * @author LikeAdmin
-     */
-
-    public void edit(TL2DataUpdateValidate updateValidate) {
-        TL2Data model = tL2DataMapper.selectOne(
-                new QueryWrapper<TL2Data>()
-                        .eq("id", updateValidate.getId())
-                        .last("limit 1"));
-
-        Assert.notNull(model, "数据不存在!");
-
-        model.setId(updateValidate.getId());
-        model.setBoilerId(updateValidate.getBoilerId());
-        model.setTapholeId(updateValidate.getTapholeId());
-        model.setIronNo(updateValidate.getIronNo());
-        model.setIronCosttime(updateValidate.getIronCosttime());
-        model.setIronWeight(Double.valueOf(updateValidate.getIronWeight()));
-        model.setSlagWeight(updateValidate.getSlagWeight());
-        model.setAvgTemp(updateValidate.getAvgTemp());
-        model.setMudWeight(updateValidate.getMudWeight());
-        model.setPollMm(updateValidate.getPollMm());
-        model.setOpenDepth(updateValidate.getOpenDepth());
-        model.setTotalDry(Double.valueOf(updateValidate.getTotalDry()));
-        model.setIronStarttime(updateValidate.getIronStarttime());
-        model.setIronEndtime(updateValidate.getIronEndtime());
-        model.setElementC(updateValidate.getElementC());
-        model.setElementSi(updateValidate.getElementSi());
-        model.setElementMn(updateValidate.getElementMn());
-        model.setElementP(updateValidate.getElementP());
-        model.setElementS(updateValidate.getElementS());
-        model.setElementTi(updateValidate.getElementTi());
-        tL2DataMapper.updateById(model);
-    }
-
-    /**
-     * 出铁数据删除
-     *
-     * @param id 主键ID
-     * @author LikeAdmin
-     */
-
-    public void del(Integer id) {
-        TL2Data model = tL2DataMapper.selectOne(
-                new QueryWrapper<TL2Data>()
-                        .eq("id", id)
-                        .last("limit 1"));
-
-        Assert.notNull(model, "数据不存在!");
-
-        tL2DataMapper.delete(new QueryWrapper<TL2Data>().eq("id", id));
-    }
-
-    /***
-     * 获取最新2条数据
-     * @return
-     */
-    public List<TL2Data> getLatest2Data() {
-        LambdaQueryWrapper<TL2Data> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.isNotNull(TL2Data::getIronEndtime).orderByDesc(TL2Data::getIronNo).last("limit 2");
-        List<TL2Data> list = list(queryWrapper);
-        return list;
-    }
-
-    /***
-     * 获取最新6条数据
-     * @return
-     */
-    public List<TL2Data> queryIronData(TL2Data tl2Data) {
-        QueryWrapper<TL2Data> queryWrapper = new QueryWrapper<>();
-        queryWrapper.lambda()
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getSlagWeight()), TL2Data::getSlagWeight, tl2Data.getSlagWeight())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronWeight()), TL2Data::getIronWeight, tl2Data.getIronWeight())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronCosttime()), TL2Data::getIronCosttime, tl2Data.getIronCosttime())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronNo()), TL2Data::getIronNo, tl2Data.getIronNo())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronStarttime()), TL2Data::getIronStarttime, tl2Data.getIronStarttime())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronEndtime()), TL2Data::getIronEndtime, tl2Data.getIronEndtime())
-                .eq(ObjectUtils.isNotEmpty(tl2Data.getTapholeId()), TL2Data::getTapholeId, tl2Data.getTapholeId())
-        ;
-        return list(queryWrapper);
-    }
-
-    /***
-     * 导出数据
-     * @param tl2Data
-     * @param response
-     * @throws IOException
-     */
-    public void exportIronData(TL2Data tl2Data, HttpServletResponse response) throws IOException {
-        List<TL2Data> tl2DataList = queryIronData(tl2Data);
-        ExcelUtils.exportExcel(tl2DataList, TL2Data.class, "出铁数据", "出铁数据", response);
-    }
-
-
-    public List<TL2DataDTO> getTrendDataByDiffDays(TrendRequest diffDays) {
-        switch (diffDays.getQueryDateType()) {
-            case -1:
-            case 0:
-                List<TL2DataDTO> trendDataByDiffDayList = tL2DataMapper.getTrendDataByDiffDay(diffDays.getQueryDateType());
-                return trendDataByDiffDayList;
-            default:
-                List<TL2DataDTO> trendDataByDiffDays = tL2DataMapper.getTrendDataByDiffDays(diffDays.getQueryDateType());
-                return trendDataByDiffDays;
-        }
-    }
-
-
-}

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

@@ -4,23 +4,31 @@ import com.corundumstudio.socketio.SocketIOClient;
 import com.corundumstudio.socketio.annotation.OnEvent;
 import com.google.common.eventbus.Subscribe;
 import com.sckj.camera.util.LocalDateUtils;
+import com.sckj.common.config.GlobalConfig;
 import com.sckj.common.eventbus.EventListener;
 import com.sckj.common.manager.ScheduledTaskManager;
 import com.sckj.common.socketio.SocketUtil;
 import com.sckj.common.util.RedisUtils;
+import com.sckj.iron.constant.L1TagConstants;
+import com.sckj.iron.constant.ScheduledTimeConstants;
+import com.sckj.iron.constant.TaskNameConstants;
 import com.sckj.iron.dto.IronStepDTO;
+import com.sckj.iron.dto.IronTimeNoDTO;
 import com.sckj.iron.dto.RealtimeData;
 import com.sckj.iron.dto.WarnData;
 import com.sckj.iron.entity.TIronData;
 import com.sckj.iron.entity.TIronParam;
-import com.sckj.iron.entity.TL2Data;
-import com.sckj.iron.entity.TL2Material;
 import com.sckj.iron.service.impl.*;
 import com.sckj.iron.vo.IronStepVO;
+import com.sckj.l2.entity.TL2Data;
+import com.sckj.l2.entity.TL2Material;
+import com.sckj.l2.service.impl.L2DataServiceImpl;
+import com.sckj.l2.service.impl.TL2DataServiceImpl;
+import com.sckj.l2.service.impl.TL2MaterialServiceImpl;
 import com.sckj.opc.dto.L2Data;
 import com.sckj.opc.dto.L2Material;
 import com.sckj.opc.entity.OPCData;
-import com.sckj.opc.opcua.L2DataServiceImpl;
+import com.sckj.opc.opcua.OPCDAServiceImpl;
 import com.sckj.opc.service.OPCDataServiceImpl;
 import com.sckj.opc.utils.CustomUtil;
 import com.sckj.warn.entity.TAudio;
@@ -30,7 +38,10 @@ import com.sckj.warn.validate.TExceptionLogCreateValidate;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.web.ServerProperties;
+import org.springframework.boot.context.event.ApplicationStartedEvent;
+import org.springframework.context.ApplicationListener;
 import org.springframework.expression.spel.standard.SpelExpressionParser;
 import org.springframework.expression.spel.support.StandardEvaluationContext;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -39,7 +50,9 @@ import org.springframework.stereotype.Component;
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.net.InetAddress;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.TimeUnit;
@@ -54,7 +67,7 @@ import java.util.stream.Collectors;
  */
 @Component
 @Slf4j
-public class DeviceEventListener extends EventListener { // implements ApplicationListener<ApplicationStartedEvent>
+public class DeviceEventListener extends EventListener implements ApplicationListener<ApplicationStartedEvent> { //
 
     //步骤数据
     @Resource
@@ -96,24 +109,9 @@ public class DeviceEventListener extends EventListener { // implements Applicati
     @Resource
     TAudioServiceImpl audioService;
 
-    //1号出铁状态标记
-    private static final String TAG_TAPHOLE1_STATUS = "AOD25606.PV";
-    //2号出铁状态标记
-    private static final String TAG_TAPHOLE2_STATUS = "AOD25622.PV";
-    //3号出铁状态标记
-    private static final String TAG_TAPHOLE3_STATUS = "AOD25706.PV";
-    //4号出铁状态标记
-    private static final String TAG_TAPHOLE4_STATUS = "AOD25722.PV";
-    //铁水温度
-    private static final String TAG_IRON_TEMP = "CL510104.CPV";
-    //1TH-1号车受铁速度
-    private static final String TAG_CAR11 = "WZ540101.PV";
-    //1TH-2号车受铁速度
-    private static final String TAG_CAR12 = "WZ540201.PV";
-    //1TH-1号车总重
-    private static final String TAG_IRON_WEIGHT11 = "WI5401.PV";
-    //1TH-2号车TPC总重
-    private static final String TAG_IRON_WEIGHT12 = "WI5402.PV";
+    @Resource
+    OPCDAServiceImpl opcdaService;
+
 
     //预判和确认出铁
     private static final String STEP_YPQRCT = "lnct";
@@ -141,7 +139,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
     //摆动溜咀
     private static final String MOUTH_STATUS = "bdlz";
     //冲渣状态
-    private static final String FLUSH_STATUS = "AOD25607.PV";
+    private static final String FLUSH_STATUS = "flushStatus";
 
     // 1.创建表达式解析器
     private SpelExpressionParser parser = new SpelExpressionParser();
@@ -157,18 +155,8 @@ public class DeviceEventListener extends EventListener { // implements Applicati
     @Resource(name = "taskExecutor")
     ThreadPoolTaskExecutor taskExecutor;
 
-    //开口预警
-    public static final String TASKNAME_OPEN_WARN = "open_warn";
-    //堵口预警,出铁xxx分钟开始
-    public static final String TASKNAME_CLOSE_WARN = "close_warn";
-    //出铁预警
-    public static final String TASKNAME_TAPPING_WARN = "tapping_warn";
-    //出铁诊断,出铁结束后xxx分钟开始
-    private static final String TASKNAME_TAPPING_TEST = "tapping_test";
-    //打泥量预计
-    private static final String TASKNAME_HIT_MUD = "hit_mud";
-    //出铁计时
-    private static final String TASKNAME_TAPPING_CONSTTIME = "tapping_consttime";
+    @Value("${spring.profiles.active}")
+    protected String activeProfiles;
 
     //铁口出铁状态
     //1 出铁中    0 出铁结束
@@ -204,7 +192,6 @@ public class DeviceEventListener extends EventListener { // implements Applicati
     //实时状态
     Map<String, Object> mRealtimeStatus = new ConcurrentHashMap<>();
 
-
     //最近任一铁口出铁结束时间
     private Date mIronEndTimeRecently;
 
@@ -238,74 +225,86 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         return "http";
     }
 
-//    @Override
-//    public void onApplicationEvent(ApplicationStartedEvent event) {
-//        try {
-//            // 获取服务器IP地址
-//            InetAddress localhost = InetAddress.getLocalHost();
-//            String ip = localhost.getHostAddress();
-//
-//            String host = localhost.getHostName();
-//
-//            // 获取服务器端口号
-//            int port = serverProperties.getPort() != null ? serverProperties.getPort() : 8080;
-//
-//            // 获取 schema
-//            String schema = getSchema();
-//            // 获取服务器端口号
+    @Override
+    public void onApplicationEvent(ApplicationStartedEvent event) {
+        try {
+            // 获取服务器IP地址
+            InetAddress localhost = InetAddress.getLocalHost();
+
+            String ip = localhost.getHostAddress();
+
+            String host = localhost.getHostName();
+
+            // 获取服务器端口号
+            int port = serverProperties.getPort() != null ? serverProperties.getPort() : 8080;
+
+            // 获取 schema
+            String schema = getSchema();
+            // 获取服务器端口号
+
+            System.out.println("Server IP: " + ip);
+            System.out.println("Server Port: " + port);
+            System.out.println("Server Schema: " + schema);
+
+            String uploadUrl = GlobalConfig.publicPrefix;
+
+            uploadUrl = schema + "://" + host + ":" + port + "/" + uploadUrl + "/";
+
+            log.info("uploadUrl:{}", uploadUrl);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 
-    /// /            int port = event.getApplicationContext()
-    /// /                    .getEnvironment()
-    /// /                    .getProperty("server.port", Integer.class, 8080);
-//
-//            System.out.println("Server IP: " + ip);
-//            System.out.println("Server Port: " + port);
-//            System.out.println("Server Schema: " + schema);
-//
-//            //预警的铃声
-//            List<TAudio> audioList = audioService.lambdaQuery().eq(TAudio::getDelFlag, "1").eq(TAudio::getStatus, "1").list();
-//            if (ObjectUtils.isNotEmpty(audioList)) {
-//                mIronAlarmMap = audioList.stream()
-//                        .collect(Collectors.toMap(TAudio::getExceptionType, ironAudio -> ironAudio, (existing, replacement) -> existing));
-//
-//                String uploadUrl = GlobalConfig.publicPrefix;
-//
-//                uploadUrl = schema + "://" + host + ":" + port + "/" + uploadUrl + "/";
-//
-//                log.info("uploadUrl:{}", uploadUrl);
-//
-//                alarmUrlOpen = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_OPEN_WARN).getPath());
-//                alarmUrlClose = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_CLOSE_WARN).getPath());
-//                alramUrlTapping = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_TAPPING_WARN).getPath());
-//
-//                log.info("alarmUrlOpen:{}", alarmUrlOpen);
-//                log.info("alarmUrlClose:{}", alarmUrlClose);
-//                log.info("alramUrlTapping:{}", alramUrlTapping);
-//            }
-//        } catch (Exception e) {
-//            e.printStackTrace();
-//        }
-//    }
     @PostConstruct
     public void init() {
         //程序启动后隔断时间启动订阅
-        scheduledTaskManager.addTask("opcsubscribe", 0, 15, TimeUnit.SECONDS, () -> {
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_OPCDASUBSCRIBE, ScheduledTimeConstants.OPCDASUBSCRIBE_DELAY, ScheduledTimeConstants.OPCDASUBSCRIBE_PERIOD, TimeUnit.SECONDS, () -> {
             log.info("opcdaService subscribe available");
 //            opcdaService.subscribeAvailable();
-            scheduledTaskManager.cancelTask("opcsubscribe");
+            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPCDASUBSCRIBE);
         });
-
         mSteps = ironStepService.getTreeSteps();
-        List<TIronParam> mIronParams = ironParamService.lambdaQuery().eq(TIronParam::getStatus, "1").in(TIronParam::getParamType, "iron_judge", "iron_judge2").orderByAsc(TIronParam::getSort).list();
+        updateParams();
+    }
+
+    /***
+     * 更新参数
+     */
+    private void updateParams() {
+        List<TIronParam> mIronParams = ironParamService.lambdaQuery().eq(TIronParam::getStatus, "1").in(TIronParam::getParamType, "iron_judge", "iron_judge2", "scheduledtime").orderByAsc(TIronParam::getSort).list();
         if (ObjectUtils.isNotEmpty(mIronParams)) {
             mIronParamMap = mIronParams.stream()
                     .collect(Collectors.toMap(TIronParam::getParamName, ironParam -> ironParam, (existing, replacement) -> existing));
             STANDARD_SPEED = new BigDecimal(mIronParamMap.get("iron_speed").getParamValue());
             PRESSURE_DIFF_VALUE = new BigDecimal(mIronParamMap.get("pressure_diff_value").getParamValue());
             log.info("STANDARD_SPEED: {},PRESSURE_DIFF_VALUE:{}", STANDARD_SPEED, PRESSURE_DIFF_VALUE);
-        }
 
+            ScheduledTimeConstants.CLOSE_WARN_DELAY = Long.parseLong(mIronParamMap.get("close_warn_delay").getParamValue());
+            ScheduledTimeConstants.CLOSE_WARN_PERIOD = Long.parseLong(mIronParamMap.get("close_warn_period").getParamValue());
+
+            ScheduledTimeConstants.TAPPING_WARN_DELAY = Long.parseLong(mIronParamMap.get("tapping_warn_delay").getParamValue());
+            ScheduledTimeConstants.TAPPING_WARN_PERIOD = Long.parseLong(mIronParamMap.get("tapping_warn_period").getParamValue());
+
+            ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_DELAY = Long.parseLong(mIronParamMap.get("tapping_timeout_warn_delay").getParamValue());
+            ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_PERIOD = Long.parseLong(mIronParamMap.get("tapping_timeout_warn_period").getParamValue());
+
+            ScheduledTimeConstants.HIT_MUD_DELAY = Long.parseLong(mIronParamMap.get("hit_mud_delay").getParamValue());
+            ScheduledTimeConstants.HIT_MUD_PERIOD = Long.parseLong(mIronParamMap.get("hit_mud_period").getParamValue());
+
+            ScheduledTimeConstants.TAPPING_CONSTTIME_DELAY = Long.parseLong(mIronParamMap.get("tapping_consttime_delay").getParamValue());
+            ScheduledTimeConstants.TAPPING_CONSTTIME_PERIOD = Long.parseLong(mIronParamMap.get("tapping_consttime_period").getParamValue());
 
+            ScheduledTimeConstants.TAPPING_TEST_DELAY = Long.parseLong(mIronParamMap.get("tapping_test_delay").getParamValue());
+            ScheduledTimeConstants.TAPPING_TEST_PERIOD = Long.parseLong(mIronParamMap.get("tapping_test_period").getParamValue());
+
+            ScheduledTimeConstants.OPCDASUBSCRIBE_DELAY = Long.parseLong(mIronParamMap.get("opcdasubscribe_delay").getParamValue());
+            ScheduledTimeConstants.OPCDASUBSCRIBE_PERIOD = Long.parseLong(mIronParamMap.get("opcdasubscribe_period").getParamValue());
+
+            log.info(">>>{}", mIronParamMap);
+
+        }
     }
 
     /***
@@ -323,17 +322,32 @@ public class DeviceEventListener extends EventListener { // implements Applicati
 
         //实时数据
         taskExecutor.submit(() -> {
-            setRealtimeDataAndStatus(opcData, null);
-        });
 
+        });
+        setRealtimeDataAndStatus(opcData, null);
     }
 
+    //出铁次数编号
+    private String mIronNo;
+
     /***
      * L2数据项
      * @param l2Data
      */
     @Subscribe
     public void onL2DataMessageEvent(L2Data l2Data) {
+        if (ObjectUtils.isNotEmpty(l2Data.getIronNo())) {
+            //只要是新的出铁次数编号,后续都一直用这个编号,直到有新的出铁编号
+            mIronNo = l2Data.getIronNo();
+        }
+        //记录出铁日期和次数,并返回给前端
+        IronTimeNoDTO ironTimeNoDTO = new IronTimeNoDTO();
+        String dateString = LocalDateUtils.formatDate(new Date(), DateTimeFormatter.ofPattern("MM月dd日"));
+        ironTimeNoDTO.setDate(dateString);
+        ironTimeNoDTO.setIronNo(mIronNo);
+        ironTimeNoDTO.setDesc(String.format("%s第%s次出铁", dateString, ironTimeNoDTO.getIronNo()));
+        PushData.send2IronTimeNo(ironTimeNoDTO);
+
         TL2Data tl2Data = new TL2Data();
         //出铁操作
         BeanUtils.copyProperties(l2Data, tl2Data);
@@ -345,15 +359,14 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         //将L2实时数据保存到Redis
         taskExecutor.submit(() -> {
             RedisUtils.addFixedElement(IRON_ELEMENT, l2Data, MAX_REDIS_COUNT);
-            PushData.send2TrendIronElement(RedisUtils.getFixedElement(IRON_ELEMENT, MAX_REDIS_COUNT));
         });
 
+        //推送实时数据
         taskExecutor.submit(() -> {
             setRealtimeDataAndStatus(null, l2Data);
         });
 
         taskExecutor.submit(() -> {
-
             for (IronStepVO stepDTO : mSteps) {
                 if (NODE.equalsIgnoreCase(stepDTO.getNodeType())) {
                     //处理子项
@@ -386,20 +399,19 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                                 final String scsj = "scsj";
                                 final String sscsj = "sscsj";
 
-                                //child.setPassResult(1);
-                                for (IronStepVO childChild : child.getChilds()) {
-                                    if (sctlc.equals(childChild.getIdentifier())) {
-                                        childChild.setData(tlcLast);
-                                    } else if (ssctlc.equals(childChild.getIdentifier())) {
-                                        childChild.setData(tlcLastLast);
-                                    } else if (scll.equals(childChild.getIdentifier())) {
-                                        childChild.setData(llLast);
-                                    } else if (sscll.equals(childChild.getIdentifier())) {
-                                        childChild.setData(llLastLast);
-                                    } else if (scsj.equals(childChild.getIdentifier())) {
-                                        childChild.setData(ironWeightLast);
-                                    } else if (sscsj.equals(childChild.getIdentifier())) {
-                                        childChild.setData(ironWeightLastLast);
+                                for (IronStepVO grandChild : child.getChilds()) {
+                                    if (sctlc.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(tlcLast);
+                                    } else if (ssctlc.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(tlcLastLast);
+                                    } else if (scll.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(llLast);
+                                    } else if (sscll.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(llLastLast);
+                                    } else if (scsj.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(ironWeightLast);
+                                    } else if (sscsj.equals(grandChild.getIdentifier())) {
+                                        grandChild.setData(ironWeightLastLast);
                                     }
                                 }
                             }
@@ -415,23 +427,23 @@ public class DeviceEventListener extends EventListener { // implements Applicati
 
 
     @Subscribe
-    public void onL2MaterialMessageEvent(L2Material l2Material) {
+    public void onL2MaterialMessageEvent(L2Material material) {
         TL2Material tl2Material = new TL2Material();
+        tl2Material.setIronNo(mIronNo);
         //出铁操作
-        BeanUtils.copyProperties(l2Material, tl2Material);
+        BeanUtils.copyProperties(material, tl2Material);
         //将L2上料实时数据保存到数据库
         taskExecutor.submit(() -> {
-            tl2MaterialService.saveOrUpdate(tl2Material);
+            tl2MaterialService.save(tl2Material);
         });
 
         if (ironLoading1.get()) {
-            BigDecimal bigDecimalNew = new BigDecimal(l2Material.getDryWeight());
+            BigDecimal bigDecimalNew = new BigDecimal(material.getDryWeight());
             mTotalDry = mTotalDry.add(bigDecimalNew);
         } else {
             mTotalDry = BigDecimal.ZERO;
         }
 
-
     }
 
     //1号铁口正在出铁的操作项目
@@ -478,10 +490,21 @@ public class DeviceEventListener extends EventListener { // implements Applicati
 //            log.info("理论出铁时间:{}min", plainString);
 //        }
 
+        //出铁超时报警
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN, ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_DELAY, ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_PERIOD, TimeUnit.SECONDS, () -> {
+            log.info("堵口预警:{}", TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN);
+
+            System.out.println("倒计时结束!10分钟已到。");
+            // 出铁预警,打开系统告警并记录
+            PushData.send2Warn("请立即打开铁口");
+            log.info("准备出铁但是未及时出铁口,此处数据库记录");
+            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN); // 终止定时器
+        });
+
         //堵口预警
-        scheduledTaskManager.addTask(TASKNAME_CLOSE_WARN, 0, 1, TimeUnit.MINUTES, () -> {
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_CLOSE_WARN, ScheduledTimeConstants.CLOSE_WARN_DELAY, ScheduledTimeConstants.CLOSE_WARN_PERIOD, TimeUnit.SECONDS, () -> {
             //堵口预警
-            log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TASKNAME_CLOSE_WARN);
+            log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TaskNameConstants.TASKNAME_CLOSE_WARN);
             if (speed1.compareTo(STANDARD_SPEED) > 0 || speed2.compareTo(STANDARD_SPEED) > 0) {
                 //流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
                 PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口", alarmUrlClose));
@@ -500,57 +523,60 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         //xxx分钟出铁后开始计算打泥量,通过打泥量公式
         //打泥量公式关联因素:铁口深度、钻杆直径、
         //调用打泥量模型,计算预计使用多少打泥量进行堵口
-        scheduledTaskManager.addTask(TASKNAME_HIT_MUD, 0, 30, TimeUnit.SECONDS, () -> {
-            log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TASKNAME_HIT_MUD);
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_HIT_MUD, ScheduledTimeConstants.HIT_MUD_DELAY, ScheduledTimeConstants.HIT_MUD_PERIOD, TimeUnit.SECONDS, () -> {
+            log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TaskNameConstants.TASKNAME_HIT_MUD);
 
             //计算打泥量
             //计算理论铁量= 矿批 × 综合品位 × 1.06,其中矿批是指L2中的干量
-            scheduledTaskManager.cancelTask(TASKNAME_HIT_MUD);
+            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_HIT_MUD);
         });
 
         //出铁计时
-        scheduledTaskManager.addTask(TASKNAME_TAPPING_CONSTTIME, 0, 1, TimeUnit.SECONDS, () -> {
-            int totalSeconds = mSecondsElapsed.get();
-            int hours = totalSeconds / 3600;
-            int minutes = (totalSeconds % 3600) / 60;
-            int seconds = totalSeconds % 60;
-            String elapsedTime = String.format("%02d:%02d:%02d", hours, minutes, seconds);
-            log.info("elapsedTime:{}", elapsedTime);
-            RedisUtils.addFixedElement(TASKNAME_TAPPING_CONSTTIME, elapsedTime, MAX_REDIS_COUNT);
-
-
-            RealtimeData realtimeData = new RealtimeData();
-            realtimeData.setValue(elapsedTime);
-            realtimeData.setDesc("出铁计时");
-
-
-            PushData.send2CostTime(realtimeData);
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_CONSTTIME, ScheduledTimeConstants.TAPPING_CONSTTIME_DELAY, ScheduledTimeConstants.TAPPING_CONSTTIME_PERIOD, TimeUnit.SECONDS, () -> {
+            pushIronTime();
             mSecondsElapsed.incrementAndGet();
         });
+    }
+
+    private void pushIronTime() {
+        int totalSeconds = mSecondsElapsed.get();
+        int hours = totalSeconds / 3600;
+        int minutes = (totalSeconds % 3600) / 60;
+        int seconds = totalSeconds % 60;
+        String elapsedTime = String.format("%02d:%02d:%02d", hours, minutes, seconds);
+        log.info("elapsedTime:{}", elapsedTime);
+        RedisUtils.addFixedElement(TaskNameConstants.TASKNAME_TAPPING_CONSTTIME, elapsedTime, MAX_REDIS_COUNT);
 
+        RealtimeData realtimeData = new RealtimeData();
+        realtimeData.setValue(elapsedTime);
+        realtimeData.setDesc("出铁计时");
+
+        PushData.send2CostTime(realtimeData);
     }
 
+
     //1号铁口结束出铁的操作项目
     private void taphole1End() {
         //由 1-> 0 表明1号铁口结束出铁
         mTotalWeight = BigDecimal.ZERO;
         mTotalDry = BigDecimal.ZERO;
-        scheduledTaskManager.cancelTask(TASKNAME_OPEN_WARN);
-        scheduledTaskManager.cancelTask(TASKNAME_CLOSE_WARN);
-        scheduledTaskManager.cancelTask(TASKNAME_TAPPING_WARN);
-        scheduledTaskManager.cancelTask(TASKNAME_HIT_MUD);
-        scheduledTaskManager.cancelTask(TASKNAME_TAPPING_CONSTTIME);
+        scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPEN_WARN);
+        scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_CLOSE_WARN);
+        scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
+        scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_HIT_MUD);
+        scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_CONSTTIME);
         mSecondsElapsed.set(0);
+        pushIronTime();
 
-        recordAfter();
-        recordBlock();
+//        recordAfter();
+//        recordBlock();
 
         //开始出铁诊断
         //获取开口耗时、出铁时间、实际出铁量、平均铁水流速、平均铁水温度等数据,进行阈值判定,诊断出铁是否正常
         //xxx分钟延迟
-        scheduledTaskManager.addTask(TASKNAME_TAPPING_TEST, 0, 3, TimeUnit.SECONDS, () -> {
+        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_TEST, ScheduledTimeConstants.TAPPING_TEST_DELAY, ScheduledTimeConstants.TAPPING_TEST_PERIOD, TimeUnit.SECONDS, () -> {
             //堵口预警
-            log.info("定时任务:{},出铁诊断", TASKNAME_TAPPING_TEST);
+            log.info("定时任务:{},出铁诊断", TaskNameConstants.TASKNAME_TAPPING_TEST);
             L2Data fixedLatestElement = (L2Data) RedisUtils.getFixedLatestElement(IRON_ELEMENT);
             //平均温度
             String mudWeight = fixedLatestElement.getAvgTemp();
@@ -564,7 +590,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
 
             ironDataService.save(ironData);
 
-            scheduledTaskManager.cancelTask(TASKNAME_TAPPING_TEST);
+            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_TEST);
         });
 
     }
@@ -590,7 +616,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         //WI5401.PV  1TH-1号车总重
         //WI5402.PV  1TH-2号车TPC总重
         if (ObjectUtils.isNotEmpty(opcData)) {
-            if (opcData.getPointName().contains(TAG_IRON_TEMP)) {
+            if (opcData.getPointName().contains(L1TagConstants.TAG_IRON_TEMP)) {
                 RealtimeData realtimeData = new RealtimeData();
                 realtimeData.setValue(opcData.getData());
                 realtimeData.setUnit("℃");
@@ -598,7 +624,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                 realtimeData.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
                 mRealtimeData.put(IRON_TEMP, realtimeData);
 
-            } else if (opcData.getPointName().contains(TAG_CAR11) || opcData.getPointName().contains(TAG_CAR12)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_CAR11) || opcData.getPointName().contains(L1TagConstants.TAG_CAR12)) {
 //            1TH-1号车受铁速度
                 RealtimeData realtimeData = new RealtimeData();
                 realtimeData.setValue(opcData.getData());
@@ -616,7 +642,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                     speeds = (RealtimeData[]) ironSpeed.getValue();
                 }
 
-                if (opcData.getPointName().contains(TAG_CAR11)) {
+                if (opcData.getPointName().contains(L1TagConstants.TAG_CAR11)) {
                     realtimeData.setDesc("1号车");
                     speeds[0] = realtimeData;
                     speed1 = new BigDecimal(opcData.getData().toString());
@@ -634,7 +660,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                     ironSpeed.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
 
                 }
-            } else if (opcData.getPointName().contains(TAG_TAPHOLE1_STATUS)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_TAPHOLE1_STATUS)) {
                 RealtimeData realtimeData = new RealtimeData();
                 realtimeData.setValue(opcData.getData());
                 realtimeData.setDesc("出铁状态");
@@ -648,22 +674,22 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                     taphole1End();
                 }
 
-            } else if (opcData.getPointName().contains(TAG_TAPHOLE2_STATUS)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_TAPHOLE2_STATUS)) {
                 ironLoading2.set("1".equals(opcData.getData().toString()));
                 if (ironLoading2.get()) {
                     mIronEndTimeRecently = opcData.getServerTime();
                 }
-            } else if (opcData.getPointName().contains(TAG_TAPHOLE3_STATUS)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_TAPHOLE3_STATUS)) {
                 ironLoading3.set("1".equals(opcData.getData().toString()));
                 if (ironLoading3.get()) {
                     mIronEndTimeRecently = opcData.getServerTime();
                 }
-            } else if (opcData.getPointName().contains(TAG_TAPHOLE4_STATUS)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_TAPHOLE4_STATUS)) {
                 ironLoading4.set("1".equals(opcData.getData().toString()));
                 if (!ironLoading4.get()) {
                     mIronEndTimeRecently = opcData.getServerTime();
                 }
-            } else if (opcData.getPointName().contains(TAG_IRON_WEIGHT11) || opcData.getPointName().contains(TAG_IRON_WEIGHT12)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_IRON_WEIGHT11) || opcData.getPointName().contains(L1TagConstants.TAG_IRON_WEIGHT12)) {
                 //铁水流量
                 RealtimeData ironWeight = new RealtimeData();
                 ironWeight.setDesc("铁水流量");
@@ -677,7 +703,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                 ironWeight.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
 
 
-            } else if (opcData.getPointName().contains(FLUSH_STATUS)) {
+            } else if (opcData.getPointName().contains(L1TagConstants.TAG_FLUSH_STATUS)) {
                 RealtimeData realtimeData = new RealtimeData();
                 realtimeData.setValue(opcData.getData());
                 realtimeData.setDesc("冲渣状态");
@@ -688,14 +714,14 @@ public class DeviceEventListener extends EventListener { // implements Applicati
             BigDecimal yc = new BigDecimal(ObjectUtils.defaultIfNull(mContext.lookupVariable("yc"), "0").toString());
             if (PRESSURE_DIFF_VALUE.compareTo(yc) < 0) {
                 //xxx分钟延迟
-                scheduledTaskManager.addTask(TASKNAME_TAPPING_WARN, 0, 3, TimeUnit.SECONDS, () -> {
+                scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_WARN, 0, 3, TimeUnit.SECONDS, () -> {
                     //堵口预警
-                    log.info("出铁预警:{}", TASKNAME_TAPPING_WARN);
+                    log.info("出铁预警:{}", TaskNameConstants.TASKNAME_TAPPING_WARN);
                     PushData.send2Warn(WarnData.warnTapping("压差超过阈值,请出铁", alramUrlTapping));
                     exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType(4).exceptionDesc("压差超过阈值,请出铁").build());
                 });
             } else {
-                scheduledTaskManager.cancelTask(TASKNAME_TAPPING_WARN);
+                scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
             }
 
 
@@ -753,7 +779,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                         if (ObjectUtils.isEmpty(newPointName)) {
                             continue;
                         }
-                        newPointName = CustomUtil.createNewPointName(newPointName);
+                        newPointName = CustomUtil.createNewPointName(newPointName, activeProfiles);
                         if (Objects.equals(newPointName, pointName)) {
                             //3.创建变量上下文,设置变量
                             childchild.setData(data);
@@ -763,7 +789,7 @@ public class DeviceEventListener extends EventListener { // implements Applicati
                     if (ObjectUtils.isEmpty(newPointName)) {
                         continue;
                     }
-                    newPointName = CustomUtil.createNewPointName(newPointName);
+                    newPointName = CustomUtil.createNewPointName(newPointName, activeProfiles);
                     if (Objects.equals(newPointName, pointName)) {
                         child.setData(data);
                     }
@@ -785,16 +811,15 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         //发现第一个pass是false,后续都为false,包括父项和子项
         for (IronStepVO stepDTO : mSteps) {
             for (IronStepVO child : stepDTO.getChilds()) {
-                for (IronStepVO childChild : child.getChilds()) {
-                    //子项的子项 验证是否通过
-                    validateStepPass(childChild);
-
-                    if (!foundFalsePass && 0 == childChild.getPassResult()) {
+                for (IronStepVO grandchild : child.getChilds()) {
+                    //孙子项 验证是否通过
+                    validateStepPass(grandchild);
+                    if (!foundFalsePass && 0 == grandchild.getPassResult()) {
                         foundFalsePass = true;
                     }
 
                     if (foundFalsePass) {
-                        childChild.setPassResult(0);
+                        grandchild.setPassResult(0);
                     }
                 }
 
@@ -810,6 +835,9 @@ public class DeviceEventListener extends EventListener { // implements Applicati
             }
             //父项
             validateStepPass(stepDTO);
+            if (!foundFalsePass && 0 == stepDTO.getPassResult()) {
+                foundFalsePass = true;
+            }
             //父项
             if (foundFalsePass) {
                 stepDTO.setPassResult(0);
@@ -828,8 +856,10 @@ public class DeviceEventListener extends EventListener { // implements Applicati
         String flowName = "";
         try {
             if ("calc".equalsIgnoreCase(stepVO.getNodeType())) {
+                //公式计算
                 flowName = parser.parseExpression(stepVO.getStepNameExpression()).getValue(mContext, String.class);
             } else {
+                //纯文字
                 flowName = parser.parseExpression("'" + stepVO.getStepName() + "'").getValue(mContext, String.class);
             }
             stepVO.setStepName(flowName);
@@ -935,31 +965,37 @@ public class DeviceEventListener extends EventListener { // implements Applicati
     @OnEvent(value = PushData.IRON_CANCEL_WARN)
     public void cancelWarn(SocketIOClient client, WarnData message) {
         if (ObjectUtils.isNotEmpty(message)) {
-            switch (message.getType()) {
-                case TASKNAME_OPEN_WARN:
-                    scheduledTaskManager.cancelTask(TASKNAME_OPEN_WARN);
-                    break;
-                case TASKNAME_TAPPING_WARN:
-                    scheduledTaskManager.cancelTask(TASKNAME_TAPPING_WARN);
-                    break;
-                case TASKNAME_CLOSE_WARN:
-                    scheduledTaskManager.cancelTask(TASKNAME_CLOSE_WARN);
-                    break;
-                default:
-                    break;
-            }
+            scheduledTaskManager.cancelTask(message.getType());
         }
     }
 
+    /***
+     * 用户端连接后进行开始
+     * @param client
+     * @param message
+     */
+    @OnEvent(value = PushData.IRON_START)
+    public void ironStart(SocketIOClient client, IronStepDTO message) {
+        setStepResult(mSteps);
+        PushData.send2Operation(mSteps, ironLoading1.get());
+    }
+
 
     /***
      * 数据库更改后调用接口刷新步骤
      */
     @Subscribe
-    public void onIronStep(Boolean refresh) {
-        if (ObjectUtils.isNotEmpty(refresh) && refresh) {
-            mSteps = ironStepService.getTreeSteps();
-            log.info("流程步骤数据刷新:{}", LocalDateTime.now());
+    public void onIronStep(String refresh) {
+        switch (refresh) {
+            case "1":
+                mSteps = ironStepService.getTreeSteps();
+                log.info("流程步骤数据刷新:{}", LocalDateTime.now());
+                break;
+            case "2":
+                updateParams();
+                break;
+            default:
+                break;
         }
     }
 

+ 22 - 80
taphole-iron/src/main/java/com/sckj/iron/socketio/PushData.java

@@ -23,24 +23,10 @@ public class PushData {
     public static final String IRON_OPERATION = "IRON_OPERATION";
 
     /**
-     * 趋势数据
+     * 开始
      **/
-    public static final String TrendIronWeight = "TrendIronWeight";
+    public static final String IRON_START = "IRON_START";
 
-    /**
-     * 趋势数据
-     **/
-    public static final String TrendIronTemp = "TrendIronTemp";
-
-    /**
-     * 趋势数据
-     **/
-    public static final String TrendIronSpeed = "TrendIronSpeed";
-
-    /**
-     * 趋势数据
-     **/
-    public static final String TrendIronElement = "TrendIronElement";
 
     /**
      * 实时数据
@@ -77,6 +63,11 @@ public class PushData {
     public static final String IRON_CANCEL_WARN = "IRON_CANCEL_WARN";
 
 
+    /***
+     * 出铁日期和次数
+     */
+    public static final String IRON_TIME_NO = "IRON_TIME_NO";
+
     /**
      * 出铁操作
      *
@@ -123,7 +114,7 @@ public class PushData {
      * @param isStopSendMsg  是否停止发送信息
      */
     public static void send2Operation(Object message, boolean isStopSendMsg) {
-        if (SocketUtil.connectMap.isEmpty() || isStopSendMsg) {
+        if (SocketUtil.connectMap.isEmpty() ) {//|| isStopSendMsg
             return;
         }
         //
@@ -134,66 +125,18 @@ public class PushData {
 
 
     /**
-     * 趋势-铁水流量
-     *
-     * @return
-     * @Param
-     **/
-    public static void send2TrendIronWeight(Object message) {
-        if (SocketUtil.connectMap.isEmpty()) {
-            return;
-        }
-        //
-        for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.TrendIronWeight, AjaxResult.success(message));
-        }
-    }
-
-    /**
-     * 趋势-铁水温度
-     *
-     * @return
-     * @Param
-     **/
-    public static void send2TrendIronTemp(Object message) {
-        if (SocketUtil.connectMap.isEmpty()) {
-            return;
-        }
-        //
-        for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.TrendIronTemp, AjaxResult.success(message));
-        }
-    }
-
-    /**
-     * 趋势-
-     *
-     * @return
-     * @Param
-     **/
-    public static void send2TrendIronSpeed(Object message) {
-        if (SocketUtil.connectMap.isEmpty()) {
-            return;
-        }
-        //
-        for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.TrendIronSpeed, AjaxResult.success(message));
-        }
-    }
-
-    /**
-     * 趋势
+     * 实时数据
      *
      * @return
      * @Param
      **/
-    public static void send2TrendIronElement(Object message) {
+    public static void send2RealtimeData(Object message) {
         if (SocketUtil.connectMap.isEmpty()) {
             return;
         }
         //
         for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.TrendIronElement, AjaxResult.success(message));
+            entry.getValue().sendEvent(PushData.IRON_REALTIME_DATA, AjaxResult.success(message));
         }
     }
 
@@ -203,61 +146,60 @@ public class PushData {
      * @return
      * @Param
      **/
-    public static void send2RealtimeData(Object message) {
+    public static void send2RealtimeStatus(Object message) {
         if (SocketUtil.connectMap.isEmpty()) {
             return;
         }
         //
         for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.IRON_REALTIME_DATA, AjaxResult.success(message));
+            entry.getValue().sendEvent(PushData.IRON_REALTIME_STATUS, AjaxResult.success(message));
         }
     }
 
     /**
-     * 实时数据
+     * 发出预警
      *
      * @return
      * @Param
      **/
-    public static void send2RealtimeStatus(Object message) {
+    public static void send2Warn(Object message) {
         if (SocketUtil.connectMap.isEmpty()) {
             return;
         }
         //
         for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.IRON_REALTIME_STATUS, AjaxResult.success(message));
+            entry.getValue().sendEvent(PushData.IRON_WARN, AjaxResult.success(message));
         }
     }
 
     /**
-     * 发出预警
+     * 开始出铁计时
      *
      * @return
      * @Param
      **/
-    public static void send2Warn(Object message) {
+    public static void send2CostTime(Object message) {
         if (SocketUtil.connectMap.isEmpty()) {
             return;
         }
         //
         for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.IRON_WARN, AjaxResult.success(message));
+            entry.getValue().sendEvent(PushData.IRON_COSTTIME, AjaxResult.success(message));
         }
     }
-
     /**
-     * 开始出铁
+     * 出铁时间和次数
      *
      * @return
      * @Param
      **/
-    public static void send2CostTime(Object message) {
+    public static void send2IronTimeNo(Object message) {
         if (SocketUtil.connectMap.isEmpty()) {
             return;
         }
         //
         for (Map.Entry<String, SocketIOClient> entry : SocketUtil.connectMap.entrySet()) {
-            entry.getValue().sendEvent(PushData.IRON_COSTTIME, AjaxResult.success(message));
+            entry.getValue().sendEvent(PushData.IRON_TIME_NO, AjaxResult.success(message));
         }
     }
 

+ 56 - 0
taphole-l2-start/pom.xml

@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <!-- 父工程 -->
+    <parent>
+        <artifactId>taphole-java</artifactId>
+        <groupId>com.sckj</groupId>
+        <version>1.0.0</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>taphole-l2-start</artifactId>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>com.sckj</groupId>
+            <artifactId>taphole-l2</artifactId>
+        </dependency>
+    </dependencies>
+
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <version>2.6.4</version>
+                <configuration>
+                    <mainClass>com.sckj.l2start.TapholeL2StartApplication</mainClass>
+                    <skip>true</skip>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>repackage</id>
+                        <goals>
+                            <goal>repackage</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.8.1</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                    <encoding>UTF-8</encoding>
+                </configuration>
+            </plugin>
+
+        </plugins>
+    </build>
+
+</project>

+ 13 - 0
taphole-l2-start/src/main/java/com/sckj/l2start/TapholeL2StartApplication.java

@@ -0,0 +1,13 @@
+package com.sckj.l2start;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class TapholeL2StartApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(TapholeL2StartApplication.class, args);
+    }
+
+}

+ 36 - 0
taphole-l2/pom.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!-- 父工程 -->
+    <parent>
+        <artifactId>taphole-java</artifactId>
+        <groupId>com.sckj</groupId>
+        <version>1.0.0</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>taphole-l2</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+
+        <dependency>
+            <groupId>com.sckj</groupId>
+            <artifactId>taphole-common</artifactId>
+        </dependency>
+
+    </dependencies>
+
+
+</project>

+ 64 - 0
taphole-l2/src/main/java/com/sckj/l2/controller/TL2DataController.java

@@ -0,0 +1,64 @@
+package com.sckj.l2.controller;
+
+
+import com.sckj.common.core.AjaxResult;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.validate.commons.IdValidate;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.common.validator.annotation.IDMust;
+import com.sckj.l2.service.impl.TL2DataServiceImpl;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("api/l2")
+@Api(tags = "出铁数据管理")
+public class TL2DataController {
+
+    @Resource
+    TL2DataServiceImpl iTL2DataService;
+
+//    @GetMapping("/list")
+//    @ApiOperation(value="出铁数据列表")
+//    public AjaxResult<PageResult<TL2DataListedVo>> list(@Validated PageValidate pageValidate,
+//                                                        @Validated TL2DataSearchValidate searchValidate) {
+//        PageResult<TL2DataListedVo> list = iTL2DataService.list(pageValidate, searchValidate);
+//        return AjaxResult.success(list);
+//    }
+//
+//    @GetMapping("/detail")
+//    @ApiOperation(value="出铁数据详情")
+//    public AjaxResult<TL2DataDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
+//        TL2DataDetailVo detail = iTL2DataService.detail(id);
+//        return AjaxResult.success(detail);
+//    }
+//
+//
+//    @PostMapping("/add")
+//    @ApiOperation(value="出铁数据新增")
+//    public AjaxResult<Object> add(@Validated @RequestBody TL2DataCreateValidate createValidate) {
+//        iTL2DataService.add(createValidate);
+//        return AjaxResult.success();
+//    }
+//
+//
+//    @PostMapping("/edit")
+//    @ApiOperation(value="出铁数据编辑")
+//    public AjaxResult<Object> edit(@Validated @RequestBody TL2DataUpdateValidate updateValidate) {
+//        iTL2DataService.edit(updateValidate);
+//        return AjaxResult.success();
+//    }
+//
+//
+//    @PostMapping("/del")
+//    @ApiOperation(value="出铁数据删除")
+//    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
+//        iTL2DataService.del(idValidate.getId());
+//        return AjaxResult.success();
+//    }
+
+}

+ 146 - 0
taphole-l2/src/main/java/com/sckj/l2/dto/L2Data.java

@@ -0,0 +1,146 @@
+package com.sckj.l2.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.Serializable;
+
+/**
+ * @Author feng
+ * @Date 2024-12-18 上午 09:47
+ * @Description TODO
+ */
+@Data
+public class L2Data implements Serializable {
+
+    @ApiModelProperty(value = "铁口区域编号")
+    private String tapholeId;
+
+    @ApiModelProperty(value = "出铁次数编号")
+    private String ironNo;
+
+    @ApiModelProperty(value = "出铁时间")
+    private String ironCosttime;
+
+    @ApiModelProperty(value = "实际出铁量")
+    private String ironWeight;
+
+    @ApiModelProperty(value = "实际渣量")
+    private String slagWeight;
+
+    @ApiModelProperty(value = "铁水平均温度")
+    private String avgTemp;
+
+    @ApiModelProperty(value = "泥炮量")
+    private String mudWeight;
+
+    @ApiModelProperty(value = "钻杆直径")
+    private String pollMm;
+
+    @ApiModelProperty(value = "开口深度")
+    private String openDepth;
+
+    @ApiModelProperty(value = "上料总干量")
+    private String totalDry;
+
+    @ApiModelProperty(value = "开始时间")
+    private String ironStarttime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String ironEndtime;
+
+    //铁水成分 碳
+    @ApiModelProperty(value = "碳")
+    private String elementC;
+
+    //铁水成分 硅
+    @ApiModelProperty(value = "硅")
+    private String elementSi;
+
+    //铁水成分 锰
+    @ApiModelProperty(value = "锰")
+    private String elementMn;
+
+    //铁水成分 磷
+    @ApiModelProperty(value = "磷")
+    private String elementP;
+
+    //铁水成分 硫
+    @ApiModelProperty(value = "硫")
+    private String elementS;
+
+    //铁水成分 钛
+    @ApiModelProperty(value = "钛")
+    private String elementTi;
+
+
+    public void toDataStream(DataOutputStream dos) throws Exception {
+        dos.writeUTF(tapholeId);
+        dos.writeUTF(ironNo);
+        dos.writeUTF(ironCosttime);
+        dos.writeUTF(ironWeight);
+        dos.writeUTF(slagWeight);
+        dos.writeUTF(avgTemp);
+        dos.writeUTF(mudWeight);
+        dos.writeUTF(pollMm);
+        dos.writeUTF(openDepth);
+        dos.writeUTF(totalDry);
+        dos.writeUTF(ironStarttime);
+        dos.writeUTF(ironEndtime);
+        dos.writeUTF(elementC);
+        dos.writeUTF(elementSi);
+        dos.writeUTF(elementMn);
+        dos.writeUTF(elementP);
+        dos.writeUTF(elementS);
+        dos.writeUTF(elementTi);
+    }
+
+    public static L2Data fromDataStream(DataInputStream dis) throws Exception {
+        L2Data data = new L2Data();
+        data.tapholeId = dis.readUTF();
+        data.ironNo = dis.readUTF();
+        data.ironCosttime = dis.readUTF();
+        data.ironWeight = dis.readUTF();
+        data.slagWeight = dis.readUTF();
+        data.avgTemp = dis.readUTF();
+        data.mudWeight = dis.readUTF();
+        data.pollMm = dis.readUTF();
+        data.openDepth = dis.readUTF();
+        data.totalDry = dis.readUTF();
+        data.ironStarttime = dis.readUTF();
+        data.ironEndtime = dis.readUTF();
+        data.elementC = dis.readUTF();
+        data.elementSi = dis.readUTF();
+        data.elementMn = dis.readUTF();
+        data.elementP = dis.readUTF();
+        data.elementS = dis.readUTF();
+        data.elementTi = dis.readUTF();
+        return data;
+    }
+
+    @Override
+    public String toString() {
+        return "L2Data{" +
+                "tapholeId='" + tapholeId + '\'' +
+                ", ironNo='" + ironNo + '\'' +
+                ", ironCosttime='" + ironCosttime + '\'' +
+                ", ironWeight='" + ironWeight + '\'' +
+                ", slagWeight='" + slagWeight + '\'' +
+                ", avgTemp='" + avgTemp + '\'' +
+                ", mudWeight='" + mudWeight + '\'' +
+                ", pollMm='" + pollMm + '\'' +
+                ", openDepth='" + openDepth + '\'' +
+                ", totalDry='" + totalDry + '\'' +
+                ", ironStarttime='" + ironStarttime + '\'' +
+                ", ironEndtime='" + ironEndtime + '\'' +
+                ", elementC='" + elementC + '\'' +
+                ", elementSi='" + elementSi + '\'' +
+                ", elementMn='" + elementMn + '\'' +
+                ", elementP='" + elementP + '\'' +
+                ", elementS='" + elementS + '\'' +
+                ", elementTi='" + elementTi + '\'' +
+                '}';
+    }
+}

+ 76 - 0
taphole-l2/src/main/java/com/sckj/l2/dto/L2Material.java

@@ -0,0 +1,76 @@
+package com.sckj.l2.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class L2Material implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    @ApiModelProperty(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "锅炉编号")
+    private Long boilerId;
+
+    @ApiModelProperty(value = "铁口区域编号")
+    private Long tapholeId;
+
+    @ApiModelProperty(value = "L1发过来的charge号")
+    private String chargeNo;
+
+    @ApiModelProperty(value = "下料时间点")
+    private String downTime;
+
+    @ApiModelProperty(value = "干量")
+    private String dryWeight;
+
+    @ApiModelProperty(value = "矿石装入量")
+    private String oreWeight;
+
+    @ApiModelProperty(value = "焦炭装入量")
+    private String cokeWeight;
+
+    @ApiModelProperty(value = "副原料装入量")
+    private String asstmaterialWeight;
+
+    @ApiModelProperty(value = "综合品味")
+    private String compositeTaste;
+
+
+    public void toDataStream(DataOutputStream dos) throws Exception {
+        dos.writeUTF(chargeNo);
+        dos.writeUTF(downTime);
+        dos.writeUTF(dryWeight);
+        dos.writeUTF(oreWeight);
+        dos.writeUTF(cokeWeight);
+        dos.writeUTF(asstmaterialWeight);
+        dos.writeUTF(compositeTaste);
+    }
+
+    public static L2Material fromDataStream(DataInputStream dis) throws Exception {
+        L2Material data = new L2Material();
+        data.chargeNo = dis.readUTF();
+        data.downTime = dis.readUTF();
+        data.dryWeight = dis.readUTF();
+        data.oreWeight = dis.readUTF();
+        data.cokeWeight = dis.readUTF();
+        data.asstmaterialWeight = dis.readUTF();
+        data.compositeTaste = dis.readUTF();
+        return data;
+    }
+
+
+}

+ 1 - 5
taphole-iron/src/main/java/com/sckj/iron/dto/TL2DataDTO.java → taphole-l2/src/main/java/com/sckj/l2/dto/TL2DataDTO.java

@@ -1,13 +1,9 @@
-package com.sckj.iron.dto;
+package com.sckj.l2.dto;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.util.Date;
-
 @Data
 public class TL2DataDTO {
     private static final long serialVersionUID = 1L;

+ 3 - 2
taphole-iron/src/main/java/com/sckj/iron/dto/TrendDTO.java → taphole-l2/src/main/java/com/sckj/l2/dto/TrendDTO.java

@@ -1,9 +1,8 @@
-package com.sckj.iron.dto;
+package com.sckj.l2.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.Data;
-import org.springframework.stereotype.Component;
 
 import java.util.List;
 
@@ -22,5 +21,7 @@ public class TrendDTO {
     @ApiModelProperty(value = "单位名称",required = true)
     private String unitName;
 
+    @ApiModelProperty(value = "单位描述",required = true)
+    private String unitDesc;
 
 }

+ 1 - 1
taphole-iron/src/main/java/com/sckj/iron/dto/TrendRequest.java → taphole-l2/src/main/java/com/sckj/l2/dto/TrendRequest.java

@@ -1,4 +1,4 @@
-package com.sckj.iron.dto;
+package com.sckj.l2.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;

+ 4 - 33
taphole-iron/src/main/java/com/sckj/iron/entity/TL2Data.java → taphole-l2/src/main/java/com/sckj/l2/entity/TL2Data.java

@@ -1,4 +1,4 @@
-package com.sckj.iron.entity;
+package com.sckj.l2.entity;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -17,9 +17,7 @@ import lombok.Data;
 import java.io.Serializable;
 import java.util.Date;
 
-@HeadStyle(fillPatternType = FillPatternTypeEnum.NO_FILL,fillForegroundColor = -1)
-@HeadFontStyle(fontHeightInPoints = 16)
-@HeadRowHeight(40)
+
 @Data
 @ApiModel("L2数据")
 @TableName("t_l2_data")
@@ -28,95 +26,68 @@ public class TL2Data implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "创建时间")
-    @ExcelIgnore
     private Date createTime;
 
-    @TableId(value="id", type= IdType.AUTO)
+
     @ApiModelProperty(value = "id")
-    @ExcelIgnore
     private Long id;
 
     @ApiModelProperty(value = "锅炉编号")
-    @ExcelIgnore
     private Long boilerId;
 
     @ApiModelProperty(value = "铁口区域编号")
-    @ExcelProperty("铁口区域编号")
-    @ColumnWidth(25)
     private Long tapholeId;
 
+    @TableId(value="id", type= IdType.INPUT)
     @ApiModelProperty(value = "出铁次数编号")
-    @ExcelProperty("出铁次数编号")
-    @ColumnWidth(25)
     private String ironNo;
 
     @ApiModelProperty(value = "出铁时间")
-    @ExcelProperty("出铁时间")
-    @ColumnWidth(25)
     private String ironCosttime;
 
     @ApiModelProperty(value = "实际出铁量")
-    @ExcelProperty("实际出铁量")
-    @ColumnWidth(25)
     private Double ironWeight;
 
     @ApiModelProperty(value = "实际渣量")
-    @ExcelProperty("实际渣量")
-    @ColumnWidth(25)
     private String slagWeight;
 
     @ApiModelProperty(value = "铁水平均温度")
-    @ExcelIgnore
     private String avgTemp;
 
     @ApiModelProperty(value = "泥炮量")
-    @ExcelIgnore
     private String mudWeight;
 
     @ApiModelProperty(value = "钻杆直径")
-    @ExcelIgnore
     private String pollMm;
 
     @ApiModelProperty(value = "开口深度")
-    @ExcelIgnore
     private String openDepth;
 
     @ApiModelProperty(value = "上料总干量")
-    @ExcelIgnore
     private Double totalDry;
 
     @ApiModelProperty(value = "开始时间")
-    @ExcelProperty("开始时间")
-    @ColumnWidth(25)
     private String ironStarttime;
 
     @ExcelProperty("结束时间")
-    @ColumnWidth(25)
-    @ApiModelProperty(value = "结束时间")
     private String ironEndtime;
 
     @ApiModelProperty(value = "碳")
-    @ExcelIgnore
     private String elementC;
 
     @ExcelIgnore
-    @ApiModelProperty(value = "硅")
     private String elementSi;
 
     @ExcelIgnore
-    @ApiModelProperty(value = "锰")
     private String elementMn;
 
     @ExcelIgnore
-    @ApiModelProperty(value = "磷")
     private String elementP;
 
     @ExcelIgnore
-    @ApiModelProperty(value = "硫")
     private String elementS;
 
     @ExcelIgnore
-    @ApiModelProperty(value = "钛")
     private String elementTi;
 
 

+ 13 - 23
taphole-iron/src/main/java/com/sckj/iron/entity/TL2Material.java → taphole-l2/src/main/java/com/sckj/l2/entity/TL2Material.java

@@ -1,4 +1,4 @@
-package com.sckj.iron.entity;
+package com.sckj.l2.entity;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
@@ -19,9 +19,7 @@ import java.io.DataOutputStream;
 import java.io.Serializable;
 import java.util.Date;
 
-@HeadStyle(fillPatternType = FillPatternTypeEnum.NO_FILL, fillForegroundColor = -1)
-@HeadFontStyle(fontHeightInPoints = 16)
-@HeadRowHeight(40)
+
 @Data
 @ApiModel("L2上料")
 @TableName("t_l2_material")
@@ -30,56 +28,40 @@ public class TL2Material implements Serializable {
     private static final long serialVersionUID = 1L;
 
     @ApiModelProperty(value = "创建时间")
-    @ExcelIgnore
     private Date createTime;
 
     @TableId(value = "id", type = IdType.AUTO)
     @ApiModelProperty(value = "id")
-    @ExcelIgnore
     private Long id;
 
     @ApiModelProperty(value = "锅炉编号")
-    @ExcelIgnore
     private Long boilerId;
 
     @ApiModelProperty(value = "铁口区域编号")
-    @ExcelProperty("铁口区域编号")
-    @ColumnWidth(25)
     private Long tapholeId;
 
+    @ApiModelProperty(value = "出铁次数编号")
+    private String ironNo;
+
     @ApiModelProperty(value = "L1发过来的charge号")
-    @ExcelProperty("L1发过来的charge号")
-    @ColumnWidth(25)
     private String chargeNo;
 
     @ApiModelProperty(value = "下料时间点")
-    @ExcelProperty("下料时间点")
-    @ColumnWidth(25)
     private String downTime;
 
     @ApiModelProperty(value = "干量")
-    @ExcelProperty("干量")
-    @ColumnWidth(25)
     private String dryWeight;
 
     @ApiModelProperty(value = "矿石装入量")
-    @ExcelProperty("矿石装入量")
-    @ColumnWidth(25)
     private String oreWeight;
 
     @ApiModelProperty(value = "焦炭装入量")
-    @ExcelProperty("焦炭装入量")
-    @ColumnWidth(25)
     private String cokeWeight;
 
     @ApiModelProperty(value = "副原料装入量")
-    @ExcelProperty("副原料装入量")
-    @ColumnWidth(25)
     private String asstmaterialWeight;
 
     @ApiModelProperty(value = "综合品味")
-    @ExcelProperty("综合品味")
-    @ColumnWidth(25)
     private String compositeTaste;
 
 
@@ -89,6 +71,10 @@ public class TL2Material implements Serializable {
         dos.writeUTF(chargeNo);
         dos.writeUTF(downTime);
         dos.writeUTF(dryWeight);
+        dos.writeUTF(oreWeight);
+        dos.writeUTF(cokeWeight);
+        dos.writeUTF(asstmaterialWeight);
+        dos.writeUTF(compositeTaste);
     }
 
     public static TL2Material fromDataStream(DataInputStream dis) throws Exception {
@@ -98,6 +84,10 @@ public class TL2Material implements Serializable {
         data.chargeNo = dis.readUTF();
         data.downTime = dis.readUTF();
         data.dryWeight = dis.readUTF();
+        data.oreWeight = dis.readUTF();
+        data.cokeWeight = dis.readUTF();
+        data.asstmaterialWeight = dis.readUTF();
+        data.compositeTaste = dis.readUTF();
         return data;
     }
 

+ 22 - 0
taphole-l2/src/main/java/com/sckj/l2/mapper/TL2DataMapper.java

@@ -0,0 +1,22 @@
+package com.sckj.l2.mapper;
+
+import com.sckj.common.core.basics.IBaseMapper;
+import com.sckj.l2.dto.TL2DataDTO;
+import com.sckj.l2.entity.TL2Data;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 出铁后Mapper
+ *
+ * @author zhanghao
+ */
+@Mapper
+public interface TL2DataMapper extends IBaseMapper<TL2Data> {
+    //diff日内
+    List<TL2DataDTO> getTrendDataByDiffDay(Integer diffDay);
+
+    List<TL2DataDTO> getTrendDataByDiffDays(Integer diffDays);
+
+}

+ 3 - 2
taphole-iron/src/main/java/com/sckj/iron/mapper/TL2MaterialMapper.java → taphole-l2/src/main/java/com/sckj/l2/mapper/TL2MaterialMapper.java

@@ -1,7 +1,7 @@
-package com.sckj.iron.mapper;
+package com.sckj.l2.mapper;
 
 import com.sckj.common.core.basics.IBaseMapper;
-import com.sckj.iron.entity.TL2Material;
+import com.sckj.l2.entity.TL2Material;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -10,4 +10,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface TL2MaterialMapper extends IBaseMapper<TL2Material> {
+
 }

+ 5 - 5
taphole-opc/src/main/java/com/sckj/opc/opcua/L2DataServiceImpl.java → taphole-l2/src/main/java/com/sckj/l2/service/impl/L2DataServiceImpl.java

@@ -1,8 +1,8 @@
-package com.sckj.opc.opcua;
+package com.sckj.l2.service.impl;
 
 import com.google.common.eventbus.AsyncEventBus;
-import com.sckj.opc.dto.L2Data;
-import com.sckj.opc.dto.L2Material;
+import com.sckj.l2.dto.L2Data;
+import com.sckj.l2.dto.L2Material;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
@@ -43,7 +43,7 @@ public class L2DataServiceImpl {
     private void initTCP() {
         System.out.println("TCP start");
 
-        final String serverIP = "127.0.0.1"; // 服务端IP地址
+        final String serverIP = "192.168.110.65"; // 服务端IP地址
         final int serverPort = 8888; // 服务端端口号
         final int maxRetries = 10; // 最大重试次数
         final long retryInterval = 5000; // 重试间隔时间(毫秒)
@@ -94,7 +94,7 @@ public class L2DataServiceImpl {
                     } else if ("L2Material".equals(dataType)) {
                         L2Material receivedMaterial = L2Material.fromDataStream(dis);
                         // 新增材料处理逻辑,例如:
-                         asyncEventBus.post(receivedMaterial);
+                        asyncEventBus.post(receivedMaterial);
 //                        System.out.println("Received L2Material from server: \n" + receivedMaterial);
                     }
                 } catch (IOException e) {

+ 88 - 0
taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2DataServiceImpl.java

@@ -0,0 +1,88 @@
+package com.sckj.l2.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.sckj.common.util.ExcelUtils;
+import com.sckj.l2.dto.TL2DataDTO;
+import com.sckj.l2.dto.TrendRequest;
+import com.sckj.l2.entity.TL2Data;
+import com.sckj.l2.mapper.TL2DataMapper;
+import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import springfox.documentation.spi.service.contexts.Defaults;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * L2数据
+ *
+ * @author zhnaghao
+ */
+@Service
+public class TL2DataServiceImpl extends ServiceImpl<TL2DataMapper, TL2Data> {
+
+    @Resource
+    TL2DataMapper tL2DataMapper;
+
+
+
+    /***
+     * 获取最新2条数据
+     * @return
+     */
+    public List<TL2Data> getLatest2Data() {
+        LambdaQueryWrapper<TL2Data> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.isNotNull(TL2Data::getIronEndtime).orderByDesc(TL2Data::getIronNo).last("limit 2");
+        List<TL2Data> list = list(queryWrapper);
+        return list;
+    }
+
+    /***
+     * 获取最新6条数据
+     * @return
+     */
+    public List<TL2Data> queryIronData(TL2Data tl2Data) {
+        QueryWrapper<TL2Data> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getSlagWeight()), TL2Data::getSlagWeight, tl2Data.getSlagWeight())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronWeight()), TL2Data::getIronWeight, tl2Data.getIronWeight())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronCosttime()), TL2Data::getIronCosttime, tl2Data.getIronCosttime())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronNo()), TL2Data::getIronNo, tl2Data.getIronNo())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronStarttime()), TL2Data::getIronStarttime, tl2Data.getIronStarttime())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getIronEndtime()), TL2Data::getIronEndtime, tl2Data.getIronEndtime())
+                .eq(ObjectUtils.isNotEmpty(tl2Data.getTapholeId()), TL2Data::getTapholeId, tl2Data.getTapholeId())
+        ;
+        return list(queryWrapper);
+    }
+
+    /***
+     * 导出数据
+     * @param tl2Data
+     * @param response
+     * @throws IOException
+     */
+    public void exportIronData(TL2Data tl2Data, HttpServletResponse response) throws IOException {
+        List<TL2Data> tl2DataList = queryIronData(tl2Data);
+        ExcelUtils.exportExcel(tl2DataList, TL2Data.class, "出铁数据", "出铁数据", response);
+    }
+
+
+    public List<TL2DataDTO> getTrendDataByDiffDays(TrendRequest diffDays) {
+        switch (diffDays.getQueryDateType()) {
+            case -1:
+            case 0:
+                List<TL2DataDTO> trendDataByDiffDayList = tL2DataMapper.getTrendDataByDiffDay(diffDays.getQueryDateType());
+                return trendDataByDiffDayList;
+            default:
+                List<TL2DataDTO> trendDataByDiffDays = tL2DataMapper.getTrendDataByDiffDays(diffDays.getQueryDateType());
+                return trendDataByDiffDays;
+        }
+    }
+
+
+}

+ 3 - 9
taphole-iron/src/main/java/com/sckj/iron/service/impl/TL2MaterialServiceImpl.java → taphole-l2/src/main/java/com/sckj/l2/service/impl/TL2MaterialServiceImpl.java

@@ -1,17 +1,11 @@
-package com.sckj.iron.service.impl;
+package com.sckj.l2.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.sckj.common.util.ExcelUtils;
-import com.sckj.iron.entity.TL2Data;
-import com.sckj.iron.entity.TL2Material;
-import com.sckj.iron.mapper.TL2MaterialMapper;
-import org.apache.commons.lang3.ObjectUtils;
+import com.sckj.l2.entity.TL2Material;
+import com.sckj.l2.mapper.TL2MaterialMapper;
 import org.springframework.stereotype.Service;
 
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
 import java.util.List;
 
 /**

+ 3 - 3
taphole-iron/src/main/resources/mapper/TL2DataMapper.xml → taphole-l2/src/main/resources/mapper/TL2DataMapper.xml

@@ -1,11 +1,11 @@
 <?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.TL2DataMapper">
+<mapper namespace="com.sckj.l2.mapper.TL2DataMapper">
 
 
 
 
-    <select id="getTrendDataByDiffDay" resultType="com.sckj.iron.dto.TL2DataDTO">
+    <select id="getTrendDataByDiffDay" resultType="com.sckj.l2.dto.TL2DataDTO">
         select
         create_time createTime,
         avg_temp avgTemp,
@@ -29,7 +29,7 @@
         order by create_time asc
     </select>
 
-    <select id="getTrendDataByDiffDays" resultType="com.sckj.iron.dto.TL2DataDTO">
+    <select id="getTrendDataByDiffDays" resultType="com.sckj.l2.dto.TL2DataDTO">
         SELECT
             DATE(create_time) createTime,
             ROUND(AVG(avg_temp),0) avgTemp,

+ 21 - 2
taphole-opc/src/main/java/com/sckj/opc/dto/L2Material.java

@@ -18,7 +18,7 @@ public class L2Material implements Serializable {
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
-    @TableId(value="id", type= IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     @ApiModelProperty(value = "id")
     private Long id;
 
@@ -37,11 +37,27 @@ public class L2Material implements Serializable {
     @ApiModelProperty(value = "干量")
     private String dryWeight;
 
+    @ApiModelProperty(value = "矿石装入量")
+    private String oreWeight;
+
+    @ApiModelProperty(value = "焦炭装入量")
+    private String cokeWeight;
+
+    @ApiModelProperty(value = "副原料装入量")
+    private String asstmaterialWeight;
+
+    @ApiModelProperty(value = "综合品味")
+    private String compositeTaste;
+
 
     public void toDataStream(DataOutputStream dos) throws Exception {
         dos.writeUTF(chargeNo);
         dos.writeUTF(downTime);
         dos.writeUTF(dryWeight);
+        dos.writeUTF(oreWeight);
+        dos.writeUTF(cokeWeight);
+        dos.writeUTF(asstmaterialWeight);
+        dos.writeUTF(compositeTaste);
     }
 
     public static L2Material fromDataStream(DataInputStream dis) throws Exception {
@@ -49,9 +65,12 @@ public class L2Material implements Serializable {
         data.chargeNo = dis.readUTF();
         data.downTime = dis.readUTF();
         data.dryWeight = dis.readUTF();
+        data.oreWeight = dis.readUTF();
+        data.cokeWeight = dis.readUTF();
+        data.asstmaterialWeight = dis.readUTF();
+        data.compositeTaste = dis.readUTF();
         return data;
     }
 
 
-
 }

+ 6 - 1
taphole-opc/src/main/java/com/sckj/opc/opcua/OPCDAServiceImpl.java

@@ -17,6 +17,7 @@ import org.jinterop.dcom.common.JIException;
 import org.openscada.opc.lib.common.ConnectionInformation;
 import org.openscada.opc.lib.da.*;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
 
@@ -50,6 +51,10 @@ public class OPCDAServiceImpl {
     @Resource(name = "taskExecutor")
     ThreadPoolTaskExecutor taskExecutor;
 
+
+    @Value("${spring.profiles.active}")
+    protected String activeProfiles;
+
     private ConcurrentHashMap<Long, Server> mOPCDaClientMap = new ConcurrentHashMap<>();
     private ConcurrentHashMap<String, OPCData> mOPCDaPointsMap = new ConcurrentHashMap<>();
 
@@ -96,7 +101,7 @@ public class OPCDAServiceImpl {
                             return null;
                         }
 
-                        newPointName =  CustomUtil.createNewPointName(newPointName);
+                        newPointName =  CustomUtil.createNewPointName(newPointName,activeProfiles);
 
                         log.info("{} start subscribe", newPointName);
 

+ 4 - 1
taphole-opc/src/main/java/com/sckj/opc/utils/CustomUtil.java

@@ -75,7 +75,10 @@ public class CustomUtil {
     }
 
 
-    public static String createNewPointName(String pointName) {
+    public static String createNewPointName(String pointName, String activeProfiles) {
+        if ("prod".equals(activeProfiles)) {
+            return pointName;
+        }
         if (pointName.contains(".")) {
             if (StringUtils.countMatches(pointName, ".") == 1) {
                 pointName = "channel." + pointName;

+ 1 - 1
taphole-warn/src/main/java/com/sckj/warn/dto/WarnDTO.java

@@ -16,5 +16,5 @@ public class WarnDTO  implements Serializable {
     private String warnDate;
 
     @ApiModelProperty("报警次数")
-    private String warnCount;
+    private Integer warnCount;
 }