Pārlūkot izejas kodu

1.订阅点完善

wangxiaofei 2 mēneši atpakaļ
vecāks
revīzija
82c50047d1

+ 47 - 0
taphole-common/src/main/java/com/sckj/common/util/TimeUtils.java

@@ -583,5 +583,52 @@ public class TimeUtils {
 
         return result.toString();
     }
+    /***
+     * yyyyMMddHHmmss -> yyyy-MM-dd HH:mm:ss
+     * @param input
+     * @return
+     */
+    public static String formatPartialDateStringExcludeYear(String input) {
+        if (input == null || input.isEmpty()) {
+            return "";
+        }
+
+        StringBuilder result = new StringBuilder();
+        int len = input.length();
+
+        // 年 (yyyy)
+        if (len >= 4) {
+//            result.append(input.substring(0, 4));
+        } else {
+            return input; // 不足4位直接返回原字符串
+        }
+
+        // 月 (MM)
+        if (len >= 6) {
+            result.append(input.substring(4, 6));
+        }
+
+        // 日 (dd)
+        if (len >= 8) {
+            result.append("-").append(input.substring(6, 8));
+        }
+
+        // 时 (HH)
+        if (len >= 10) {
+            result.append(" ").append(input.substring(8, 10));
+        }
+
+        // 分 (mm)
+        if (len >= 12) {
+            result.append(":").append(input.substring(10, 12));
+        }
+
+        // 秒 (ss)
+        if (len >= 14) {
+            result.append(":").append(input.substring(12, 14));
+        }
+
+        return result.toString();
+    }
 
 }

+ 6 - 0
taphole-iron/src/main/java/com/sckj/iron/constant/StepConstans.java

@@ -13,6 +13,12 @@ public class StepConstans {
     //铁量差
     public static final String STEP_TLC = "tlc";
 
+    //高炉压差
+    public static final String STEP_GLYC = "glyc";
+
+    //料速
+    public static final String STEP_LS = "ls";
+
     //上次铁量差
     public static final String sctlc = "sctlc";
 

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

@@ -35,5 +35,7 @@ public class TaskNameConstants {
 
     public static final String TASKNAME_IRON_LEGEND = "iron_legend";
 
+    //L2定时拉取
+    public static final String TASKNAME_IRON_L2 = "iron_l2";
 
 }

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

@@ -279,12 +279,12 @@ public class TIronVisualScreenServiceImpl {
                 List<List<Map<String, Object>>> collect = tl2DataList.stream().map(item -> {
                     List<Map<String, Object>> mapList = new ArrayList<>();
                     Map<String, Object> map = new HashMap<>();
-                    map.put("name", String.format("第%s次出铁(%s号铁口)%s分钟", item.getIronNo(), item.getTapholeId(), item.getIronCosttime()));
-                    map.put("xAxis", TimeUtils.formatPartialDateString(item.getIronStarttime()));
+                    map.put("name", String.format("第%s次出铁\n(%s号铁口)%s分钟", item.getIronNo(), item.getTapholeId(), item.getIronCosttime()));
+                    map.put("xAxis", TimeUtils.formatPartialDateStringExcludeYear(item.getIronStarttime()));
                     mapList.add(map);
 
                     map = new HashMap<>();
-                    map.put("xAxis", TimeUtils.formatPartialDateString(item.getIronEndtime()));
+                    map.put("xAxis", TimeUtils.formatPartialDateStringExcludeYear(item.getIronEndtime()));
                     mapList.add(map);
 
                     return mapList;
@@ -315,7 +315,7 @@ public class TIronVisualScreenServiceImpl {
      */
     public Map<String, Object> getIronChart(TrendRequest queryDateType) {
         // 1. 计算起止时间
-        int hours = Objects.isNull(queryDateType.getQueryHourBefore()) ? 8 : queryDateType.getQueryHourBefore();
+        int hours = Objects.isNull(queryDateType.getQueryHourBefore()) ? 24 : queryDateType.getQueryHourBefore();
         //给固定时间,24小时之内
         java.util.Date endTime = new java.util.Date();
         java.util.Calendar cal = java.util.Calendar.getInstance();

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

@@ -296,31 +296,6 @@ public class DeviceEventListener extends AbstractEventListener { //
                 });
             }
 
-            //预警列表
-            TIronSchedule getExceptionList = scheduleMap.get(TaskNameConstants.TASKNAME_EXCEPTION_LIST);
-            if (getExceptionList != null && "1".equals(getExceptionList.getStatus())) {
-                scheduledTaskManager.addTask(getExceptionList.getName(), getExceptionList.getDelay(), getExceptionList.getPeriod(), TimeUnit.SECONDS, () -> {
-                    getExceptionList();
-                });
-            }
-
-            //折线图数据
-            TIronSchedule getIronChart = scheduleMap.get(TaskNameConstants.TASKNAME_IRON_CHART);
-            if (getIronChart != null && "1".equals(getIronChart.getStatus())) {
-                scheduledTaskManager.addTask(getIronChart.getName(), getIronChart.getDelay(), getIronChart.getPeriod(), TimeUnit.SECONDS, () -> {
-                    PushData.send2Chart(tIronVisualScreenService.getIronChart(new TrendRequest()));
-                });
-
-            }
-
-            //图例数据
-            TIronSchedule getIronLegend = scheduleMap.get(TaskNameConstants.TASKNAME_IRON_LEGEND);
-            if (getIronLegend != null && "1".equals(getIronLegend.getStatus())) {
-                scheduledTaskManager.addTask(getIronLegend.getName(), getIronLegend.getDelay(), getIronLegend.getPeriod(), TimeUnit.SECONDS, () -> {
-                    mRealtimeLegend.put("ironCosttime", RealtimeData.builder().desc("出铁时间").value(getIronElapsedMinute()).unit("min").build());
-                    PushData.send2Legend(tIronVisualScreenService.getIronLegend(mRealtimeLegend));
-                });
-            }
 
         });
 
@@ -501,21 +476,22 @@ public class DeviceEventListener extends AbstractEventListener { //
 
     /***
      * 显示"铁量差在合理范围内"
-     * @param latest2DataList
+     * @param
      */
-    private void getTheoryWeight(List<TL2Data> latest2DataList) {
+    private void getTheoryWeight() {
         taskExecutor.submit(() -> {
             for (IronStepVO stepDTO : mSteps) {
                 if (NODE.equalsIgnoreCase(stepDTO.getNodeType())) {
                     //处理子项
                     for (IronStepVO child : stepDTO.getChilds()) {
-                        if ("glyc".equals(child.getIdentifier())) {
+                        if (StepConstans.STEP_GLYC.equals(child.getIdentifier())) {
                             for (IronStepVO grandChild : child.getChilds()) {
-                                if ("ls".equals(grandChild.getIdentifier())) {
-                                    mContext.setVariable("ls", RedisUtils.getFixedLatestElement("materialSpeed"));
+                                if (StepConstans.STEP_LS.equals(grandChild.getIdentifier())) {
+                                    grandChild.setData(RedisUtils.getFixedLatestElement("materialSpeed"));
                                 }
                             }
                         } else if (StepConstans.STEP_TLC.equals(child.getIdentifier())) {
+                            List<TL2Data> latest2DataList = tl2DataService.getTappedLatest2Datas();
                             if (latest2DataList.size() >= 2) {
                                 //铁量差 = 理论出铁量 - 实际出铁量
                                 TL2Data tl2Data1Last = latest2DataList.get(0);
@@ -1388,16 +1364,11 @@ public class DeviceEventListener extends AbstractEventListener { //
 
         for (IronStepVO stepDTO : mSteps) {
             if (StepConstans.STEP_LQSQCT.equals(stepDTO.getIdentifier()) && stepDTO.getPassResult() == 1) {
-                //
-                List<TL2Data> tl2DataList = tl2DataService.getTappedLatest2Datas();
-                getTheoryWeight(tl2DataList);
+                getTheoryWeight();
             } else if (StepConstans.STEP_LNCT.equals(stepDTO.getIdentifier()) && stepDTO.getPassResult() == 1) {
-
                 //炉前出铁操作,10分钟内打开铁口,未打开系统告警并记录
                 if ("1".equals(scheduleMap.get(TaskNameConstants.TASKNAME_OPEN_WARN).getStatus())) {
-
                     LocalDateTime ldtStartTime = LocalDateTime.now();
-
                     scheduledTaskManager.addTask(scheduleMap.get(TaskNameConstants.TASKNAME_OPEN_WARN).getName(), StandardConstans.STANDARD_OPEN_HOUR * 60, scheduleMap.get(TaskNameConstants.TASKNAME_OPEN_WARN).getPeriod(), TimeUnit.SECONDS, () -> {
                         LocalDateTime ldtEndTime = LocalDateTime.now();
                         long minutesBetween = Duration.between(ldtStartTime, ldtEndTime).toMinutes();
@@ -1487,6 +1458,42 @@ public class DeviceEventListener extends AbstractEventListener { //
         getIronTimeNo();
         //获取打泥量
         PushData.send2IronHitMud(mCalcHitMud);
+
+
+        //异常列表
+        //预警列表
+        TIronSchedule getExceptionList = scheduleMap.get(TaskNameConstants.TASKNAME_EXCEPTION_LIST);
+        if (getExceptionList != null && "1".equals(getExceptionList.getStatus())) {
+            scheduledTaskManager.addTask(getExceptionList.getName(), getExceptionList.getDelay(), getExceptionList.getPeriod(), TimeUnit.SECONDS, () -> {
+                getExceptionList();
+            });
+        }
+
+        //折线图数据
+        TIronSchedule getIronChart = scheduleMap.get(TaskNameConstants.TASKNAME_IRON_CHART);
+        if (getIronChart != null && "1".equals(getIronChart.getStatus())) {
+            scheduledTaskManager.addTask(getIronChart.getName(), getIronChart.getDelay(), getIronChart.getPeriod(), TimeUnit.SECONDS, () -> {
+                PushData.send2Chart(tIronVisualScreenService.getIronChart(new TrendRequest()));
+            });
+
+        }
+
+        //图例数据
+        TIronSchedule getIronLegend = scheduleMap.get(TaskNameConstants.TASKNAME_IRON_LEGEND);
+        if (getIronLegend != null && "1".equals(getIronLegend.getStatus())) {
+            scheduledTaskManager.addTask(getIronLegend.getName(), getIronLegend.getDelay(), getIronLegend.getPeriod(), TimeUnit.SECONDS, () -> {
+                mRealtimeLegend.put("ironCosttime", RealtimeData.builder().desc("出铁时间").value(getIronElapsedMinute()).unit("min").build());
+                PushData.send2Legend(tIronVisualScreenService.getIronLegend(mRealtimeLegend));
+            });
+        }
+
+        //L2定时拉取
+        TIronSchedule schedule = scheduleMap.get(TaskNameConstants.TASKNAME_IRON_L2);
+        if (schedule != null && "1".equals(schedule.getStatus())) {
+            scheduledTaskManager.addTask(schedule.getName(), schedule.getDelay(), schedule.getPeriod(), TimeUnit.SECONDS, () -> {
+                getTheoryWeight();
+            });
+        }
     }
 
 

+ 12 - 0
taphole-opc/src/main/java/com/sckj/opc/service/OPCPointServiceImpl.java

@@ -65,6 +65,8 @@ public class OPCPointServiceImpl extends ServiceImpl<OPCPointMapper, OPCPoint> {
                 "like:pointDesc@point_desc:str",
                 "=:opcProtocol@opc_protocol:str",
                 "=:remark:str",
+                "=:allowDuplicate@allow_duplicate:str",
+                "=:saveDb@save_db:str",
         });
 
         IPage<OPCPoint> iPage = tOpcPointMapper.selectPage(new Page<>(page, limit), queryWrapper);
@@ -119,6 +121,11 @@ public class OPCPointServiceImpl extends ServiceImpl<OPCPointMapper, OPCPoint> {
         model.setPointDesc(createValidate.getPointDesc());
         model.setOpcProtocol(createValidate.getOpcProtocol());
         model.setRemark(createValidate.getRemark());
+        model.setDigits(createValidate.getDigits());
+        model.setAllowDuplicate(createValidate.getAllowDuplicate());
+        model.setIdentifier(createValidate.getIdentifier());
+        model.setDataRangeExp(createValidate.getDataRangeExp());
+        model.setSaveDb(createValidate.getSaveDb());
         tOpcPointMapper.insert(model);
     }
 
@@ -147,6 +154,11 @@ public class OPCPointServiceImpl extends ServiceImpl<OPCPointMapper, OPCPoint> {
         model.setPointDesc(updateValidate.getPointDesc());
         model.setOpcProtocol(updateValidate.getOpcProtocol());
         model.setRemark(updateValidate.getRemark());
+        model.setDigits(updateValidate.getDigits());
+        model.setAllowDuplicate(updateValidate.getAllowDuplicate());
+        model.setIdentifier(updateValidate.getIdentifier());
+        model.setDataRangeExp(updateValidate.getDataRangeExp());
+        model.setSaveDb(updateValidate.getSaveDb());
         tOpcPointMapper.updateById(model);
     }
 

+ 17 - 3
taphole-opc/src/main/java/com/sckj/opc/validate/TOpcPointCreateValidate.java

@@ -3,10 +3,9 @@ package com.sckj.opc.validate;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
-import java.util.Date;
-import java.util.Date;
-import javax.validation.constraints.*;
 
 @Data
 @ApiModel("OPC订阅点创建参数")
@@ -50,4 +49,19 @@ public class TOpcPointCreateValidate implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "小数位")
+    private Integer digits;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String identifier;
+
+    @ApiModelProperty(value = "是否允许推送重复数据(0-否,1-是)")
+    private String allowDuplicate;
+
+    @ApiModelProperty(value = "数据有效性范围(支持区间:10-100,枚举:A,B,C,比较符号:>10,<100,>=5,<=20,!=0,正则:regex:^[A-Z]{2}\\d+$,复杂逻辑:val>10&&val<100||val==200 等格式)")
+    private String dataRangeExp;
+
+    @ApiModelProperty(value = "是否入库(0-否,1-是)")
+    private String saveDb;
+
 }

+ 16 - 2
taphole-opc/src/main/java/com/sckj/opc/validate/TOpcPointSearchValidate.java

@@ -3,9 +3,8 @@ package com.sckj.opc.validate;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+
 import java.io.Serializable;
-import java.util.Date;
-import java.util.Date;
 
 @Data
 @ApiModel("OPC订阅点搜素参数")
@@ -40,4 +39,19 @@ public class TOpcPointSearchValidate implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "小数位")
+    private Integer digits;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String identifier;
+
+    @ApiModelProperty(value = "是否允许推送重复数据(0-否,1-是)")
+    private String allowDuplicate;
+
+    @ApiModelProperty(value = "数据有效性范围(支持区间:10-100,枚举:A,B,C,比较符号:>10,<100,>=5,<=20,!=0,正则:regex:^[A-Z]{2}\\d+$,复杂逻辑:val>10&&val<100||val==200 等格式)")
+    private String dataRangeExp;
+
+    @ApiModelProperty(value = "是否入库(0-否,1-是)")
+    private String saveDb;
+
 }

+ 15 - 1
taphole-opc/src/main/java/com/sckj/opc/validate/TOpcPointUpdateValidate.java

@@ -1,6 +1,5 @@
 package com.sckj.opc.validate;
 
-import com.sckj.common.validator.annotation.IDMust;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -57,4 +56,19 @@ public class TOpcPointUpdateValidate implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "小数位")
+    private Integer digits;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String identifier;
+
+    @ApiModelProperty(value = "是否允许推送重复数据(0-否,1-是)")
+    private String allowDuplicate;
+
+    @ApiModelProperty(value = "数据有效性范围(支持区间:10-100,枚举:A,B,C,比较符号:>10,<100,>=5,<=20,!=0,正则:regex:^[A-Z]{2}\\d+$,复杂逻辑:val>10&&val<100||val==200 等格式)")
+    private String dataRangeExp;
+
+    @ApiModelProperty(value = "是否入库(0-否,1-是)")
+    private String saveDb;
+
 }

+ 15 - 2
taphole-opc/src/main/java/com/sckj/opc/vo/TOpcPointDetailVo.java

@@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
-import java.util.Date;
 
 @Data
 @ApiModel("OPC订阅点详情Vo")
@@ -44,5 +42,20 @@ public class TOpcPointDetailVo implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "小数位")
+    private Integer digits;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String identifier;
+
+    @ApiModelProperty(value = "是否允许推送重复数据(0-否,1-是)")
+    private String allowDuplicate;
+
+    @ApiModelProperty(value = "数据有效性范围(支持区间:10-100,枚举:A,B,C,比较符号:>10,<100,>=5,<=20,!=0,正则:regex:^[A-Z]{2}\\d+$,复杂逻辑:val>10&&val<100||val==200 等格式)")
+    private String dataRangeExp;
+
+    @ApiModelProperty(value = "是否入库(0-否,1-是)")
+    private String saveDb;
+
 
 }

+ 15 - 2
taphole-opc/src/main/java/com/sckj/opc/vo/TOpcPointListedVo.java

@@ -5,8 +5,6 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.Date;
-import java.util.Date;
 
 @Data
 @ApiModel("OPC订阅点列表Vo")
@@ -44,5 +42,20 @@ public class TOpcPointListedVo implements Serializable {
     @ApiModelProperty(value = "备注")
     private String remark;
 
+    @ApiModelProperty(value = "小数位")
+    private Integer digits;
+
+    @ApiModelProperty(value = "唯一名称")
+    private String identifier;
+
+    @ApiModelProperty(value = "是否允许推送重复数据(0-否,1-是)")
+    private String allowDuplicate;
+
+    @ApiModelProperty(value = "数据有效性范围(支持区间:10-100,枚举:A,B,C,比较符号:>10,<100,>=5,<=20,!=0,正则:regex:^[A-Z]{2}\\d+$,复杂逻辑:val>10&&val<100||val==200 等格式)")
+    private String dataRangeExp;
+
+    @ApiModelProperty(value = "是否入库(0-否,1-是)")
+    private String saveDb;
+
 
 }