浏览代码

1.添加出铁计时管理
2.完善UA测试连接
3.完善代码,修复问题

wangxiaofei 3 周之前
父节点
当前提交
f200251ef5
共有 27 个文件被更改,包括 926 次插入326 次删除
  1. 4 0
      docker/Dockerfile
  2. 22 9
      docker/docker-compose-prod.yml
  3. 1 1
      taphole-admin/src/main/resources/log4j2-spring.xml
  4. 2 1
      taphole-common/src/main/java/com/sckj/common/enums/RefreshItemEnum.java
  5. 1 1
      taphole-common/src/main/java/com/sckj/common/eventbus/EventBusConfig.java
  6. 22 39
      taphole-iron/src/main/java/com/sckj/iron/constant/ParamsConstants.java
  7. 83 83
      taphole-iron/src/main/java/com/sckj/iron/constant/ScheduledTimeConstants.java
  8. 69 0
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronScheduleController.java
  9. 1 0
      taphole-iron/src/main/java/com/sckj/iron/controller/TIronVisualScreenController.java
  10. 4 0
      taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java
  11. 63 0
      taphole-iron/src/main/java/com/sckj/iron/entity/TIronSchedule.java
  12. 1 1
      taphole-iron/src/main/java/com/sckj/iron/manager/hik/HCNetSDK.java
  13. 13 0
      taphole-iron/src/main/java/com/sckj/iron/mapper/TIronScheduleMapper.java
  14. 4 3
      taphole-iron/src/main/java/com/sckj/iron/service/impl/TCameraServiceImpl.java
  15. 166 0
      taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronScheduleServiceImpl.java
  16. 240 179
      taphole-iron/src/main/java/com/sckj/iron/socketio/DeviceEventListener.java
  17. 41 0
      taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleCreateValidate.java
  18. 36 0
      taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleSearchValidate.java
  19. 48 0
      taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleUpdateValidate.java
  20. 40 0
      taphole-iron/src/main/java/com/sckj/iron/vo/TIronScheduleDetailVo.java
  21. 40 0
      taphole-iron/src/main/java/com/sckj/iron/vo/TIronScheduleListedVo.java
  22. 6 2
      taphole-opc/src/main/java/com/sckj/opc/controller/OPCDAController.java
  23. 6 1
      taphole-opc/src/main/java/com/sckj/opc/controller/OPCUAController.java
  24. 2 0
      taphole-opc/src/main/java/com/sckj/opc/dto/OPCPointDTO.java
  25. 3 3
      taphole-opc/src/main/java/com/sckj/opc/entity/OPCData.java
  26. 4 3
      taphole-opc/src/main/resources/mapper/OPCPointMapper.xml
  27. 4 0
      taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogCreateValidate.java

+ 4 - 0
docker/Dockerfile

@@ -1,6 +1,10 @@
 # 使用官方的 OpenJDK 基础镜像
 FROM openjdk:8-jre
 
+# 设置时区为东八区
+ENV TZ=Asia/Shanghai
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
 # 设置工作目录
 WORKDIR /app
 

+ 22 - 9
docker/docker-compose-prod.yml

@@ -62,28 +62,41 @@ services:
     network_mode: "host"
 
 
-  nginx:
+  nginx-bigscreen:
     image: nginx:latest
-    container_name: taphole-nginx
+    container_name: taphole-nginx-bigscreen
     volumes:
-      - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件目录挂载
-      - ./nginx/conf/default.conf:/etc/nginx/default.conf #配置文件目录挂载
-      - ./nginx/html:/etc/nginx/html #静态资源根目录挂载
-      - ./nginx/logs:/var/log/nginx #日志文件目录挂载
+      - ./nginx_bigscreen/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件目录挂载
+      - ./nginx_bigscreen/conf/default.conf:/etc/nginx/default.conf #配置文件目录挂载
+      - ./nginx_bigscreen/html:/etc/nginx/html #静态资源根目录挂载
+      - ./nginx_bigscreen/logs:/var/log/nginx #日志文件目录挂载
     ports:
       - 15080:80
     networks:
       - taphole
 
+  nginx-mgtsys:
+    image: nginx:latest
+    container_name: taphole-nginx-mgtsys
+    volumes:
+      - ./nginx_mgtsys/conf/nginx.conf:/etc/nginx/nginx.conf #配置文件目录挂载
+      - ./nginx_mgtsys/conf/default.conf:/etc/nginx/default.conf #配置文件目录挂载
+      - ./nginx_mgtsys/html:/etc/nginx/html #静态资源根目录挂载
+      - ./nginx_mgtsys/logs:/var/log/nginx #日志文件目录挂载
+    ports:
+      - 25080:80
+    networks:
+      - taphole
+
   app:
     image: taphole-app:latest
     container_name: taphole-app
     build:
-      context: .
+      context: ./app
       dockerfile: Dockerfile
     volumes:
-      - /home/document/taphole/hcsdk/linux:/home/document/taphole/hcsdk/linux
-      - /home/document/uploads/taphole/:/home/document/uploads/taphole/  #映射资源目录
+      - /home/taphole/hcsdk/linux:/home/taphole/hcsdk/linux
+      - /home/taphole/upload:/home/taphole/upload
       - /home/taphole/app/logs:/app/logs
     ports:
       - "28080:8080"

+ 1 - 1
taphole-admin/src/main/resources/log4j2-spring.xml

@@ -6,7 +6,7 @@
     <!-- 变量配置 -->
     <Properties>
         <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
-        <property name="FILE_PATH" value="./log/admin" />
+        <property name="FILE_PATH" value="./logs/admin" />
         <property name="FILE_NAME" value="admin-log4j2" />
     </Properties>
 

+ 2 - 1
taphole-common/src/main/java/com/sckj/common/enums/RefreshItemEnum.java

@@ -7,7 +7,8 @@ public enum RefreshItemEnum {
     STEP(1, "流程步骤"),
     PARAM(2, "参数"),
     MODEL(3, "模型"),
-    AUDIO(4, "报警音频");
+    AUDIO(4, "报警音频"),
+    SCHEDULE(4, "定时任务");
     /**
      * 构造方法
      */

+ 1 - 1
taphole-common/src/main/java/com/sckj/common/eventbus/EventBusConfig.java

@@ -21,7 +21,7 @@ public class EventBusConfig {
     @Bean("asyncEventBus")
     @Lazy(value = true)
     public AsyncEventBus createAsyncEventBus(Executor taskExecutor) {
-        log.info("asyncEventBus=============");
+        log.info("AsyncEventBus create");
         return new AsyncEventBus(taskExecutor);
     }
 }

+ 22 - 39
taphole-iron/src/main/java/com/sckj/iron/constant/ParamsConstants.java

@@ -14,45 +14,28 @@ public class ParamsConstants {
     //server_url
     public static final String server_url = "server_url";
 
-    //open_warn_delay
-    public static final String open_warn_delay = "open_warn_delay";
-    //open_warn_period
-    public static final String open_warn_period = "open_warn_period";
-
-    //closure_warn_delay
-    public static final String closure_warn_delay = "closure_warn_delay";
-    //closure_warn_period
-    public static final String closure_warn_period = "closure_warn_period";
-
-    //tapping_warn_delay
-    public static final String tapping_warn_delay = "tapping_warn_delay";
-    //tapping_warn_period
-    public static final String tapping_warn_period = "tapping_warn_period";
-
-    //tapping_timeout_warn_delay
-    public static final String tapping_timeout_warn_delay = "tapping_timeout_warn_delay";
-    //tapping_timeout_warn_period
-    public static final String tapping_timeout_warn_period = "tapping_timeout_warn_period";
-
-    //hit_mud_delay
-    public static final String hit_mud_delay = "hit_mud_delay";
-    //hit_mud_period
-    public static final String hit_mud_period = "hit_mud_period";
-
-    //tapping_consttime_delay
-    public static final String tapping_consttime_delay = "tapping_consttime_delay";
-    //tapping_consttime_period
-    public static final String tapping_consttime_period = "tapping_consttime_period";
-
-    //tapping_test_delay
-    public static final String tapping_test_delay = "tapping_test_delay";
-    //tapping_test_period
-    public static final String tapping_test_period = "tapping_test_period";
-
-    //opcdasubscribe_delay
-    public static final String opcdasubscribe_delay = "opcdasubscribe_delay";
-    //opcdasubscribe_period
-    public static final String opcdasubscribe_period = "opcdasubscribe_period";
+    //开口预警
+    public static final String open_warn = "open_warn";
 
+    //堵口预警
+    public static final String closure_warn = "closure_warn";
+
+    //出铁预警
+    public static final String tapping_warn = "tapping_warn";
+
+    //出铁超时报警
+    public static final String tapping_timeout_warn = "tapping_timeout_warn";
+
+    //打泥量计算
+    public static final String hit_mud = "hit_mud";
+
+    //出铁计时
+    public static final String tapping_consttime = "tapping_consttime";
+
+    //出铁诊断
+    public static final String tapping_test = "tapping_test";
+
+    //OPCDA订阅
+    public static final String opcdasubscribe = "opcdasubscribe";
 
 }

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

@@ -1,83 +1,83 @@
-package com.sckj.iron.constant;
-
-/***
- * 定时任务延迟和定时常量
- * 单位:s
- */
-public class ScheduledTimeConstants {
-    //堵口预警
-    //延迟
-    public static   long OPEN_WARN_DELAY = 0;
-    //定时
-    public static   long OPEN_WARN_PERIOD = 60;
-    //堵口预警
-    //延迟
-    public static   long CLOSURE_WARN_DELAY = 0;
-    //定时
-    public static   long CLOSURE_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;
-
-
-
-    public static String getPrintString() {
-        return "ScheduledTimeConstants{" +
-                "OPEN_WARN_DELAY=" + OPEN_WARN_DELAY +
-                ", OPEN_WARN_PERIOD=" + OPEN_WARN_PERIOD +
-                ", CLOSURE_WARN_DELAY=" + CLOSURE_WARN_DELAY +
-                ", CLOSURE_WARN_PERIOD=" + CLOSURE_WARN_PERIOD +
-                ", TAPPING_WARN_DELAY=" + TAPPING_WARN_DELAY +
-                ", TAPPING_WARN_PERIOD=" + TAPPING_WARN_PERIOD +
-                ", TAPPING_TIMEOUT_WARN_DELAY=" + TAPPING_TIMEOUT_WARN_DELAY +
-                ", TAPPING_TIMEOUT_WARN_PERIOD=" + TAPPING_TIMEOUT_WARN_PERIOD +
-                ", HIT_MUD_DELAY=" + HIT_MUD_DELAY +
-                ", HIT_MUD_PERIOD=" + HIT_MUD_PERIOD +
-                ", TAPPING_CONSTTIME_DELAY=" + TAPPING_CONSTTIME_DELAY +
-                ", TAPPING_CONSTTIME_PERIOD=" + TAPPING_CONSTTIME_PERIOD +
-                ", TAPPING_TEST_DELAY=" + TAPPING_TEST_DELAY +
-                ", TAPPING_TEST_PERIOD=" + TAPPING_TEST_PERIOD +
-                ", OPCDASUBSCRIBE_DELAY=" + OPCDASUBSCRIBE_DELAY +
-                ", OPCDASUBSCRIBE_PERIOD=" + OPCDASUBSCRIBE_PERIOD +
-                '}';
-    }
-
-
-
-}
+//package com.sckj.iron.constant;
+//
+///***
+// * 定时任务延迟和定时常量
+// * 单位:s
+// */
+//public class ScheduledTimeConstants {
+//    //堵口预警
+//    //延迟
+//    public static   long OPEN_WARN_DELAY = 0;
+//    //定时
+//    public static   long OPEN_WARN_PERIOD = 60;
+//    //堵口预警
+//    //延迟
+//    public static   long CLOSURE_WARN_DELAY = 0;
+//    //定时
+//    public static   long CLOSURE_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;
+//
+//
+//
+//    public static String getPrintString() {
+//        return "ScheduledTimeConstants{" +
+//                "OPEN_WARN_DELAY=" + OPEN_WARN_DELAY +
+//                ", OPEN_WARN_PERIOD=" + OPEN_WARN_PERIOD +
+//                ", CLOSURE_WARN_DELAY=" + CLOSURE_WARN_DELAY +
+//                ", CLOSURE_WARN_PERIOD=" + CLOSURE_WARN_PERIOD +
+//                ", TAPPING_WARN_DELAY=" + TAPPING_WARN_DELAY +
+//                ", TAPPING_WARN_PERIOD=" + TAPPING_WARN_PERIOD +
+//                ", TAPPING_TIMEOUT_WARN_DELAY=" + TAPPING_TIMEOUT_WARN_DELAY +
+//                ", TAPPING_TIMEOUT_WARN_PERIOD=" + TAPPING_TIMEOUT_WARN_PERIOD +
+//                ", HIT_MUD_DELAY=" + HIT_MUD_DELAY +
+//                ", HIT_MUD_PERIOD=" + HIT_MUD_PERIOD +
+//                ", TAPPING_CONSTTIME_DELAY=" + TAPPING_CONSTTIME_DELAY +
+//                ", TAPPING_CONSTTIME_PERIOD=" + TAPPING_CONSTTIME_PERIOD +
+//                ", TAPPING_TEST_DELAY=" + TAPPING_TEST_DELAY +
+//                ", TAPPING_TEST_PERIOD=" + TAPPING_TEST_PERIOD +
+//                ", OPCDASUBSCRIBE_DELAY=" + OPCDASUBSCRIBE_DELAY +
+//                ", OPCDASUBSCRIBE_PERIOD=" + OPCDASUBSCRIBE_PERIOD +
+//                '}';
+//    }
+//
+//
+//
+//}

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

@@ -0,0 +1,69 @@
+package com.sckj.iron.controller;
+
+import com.sckj.common.aop.Log;
+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.TIronScheduleServiceImpl;
+import com.sckj.iron.validate.TIronScheduleCreateValidate;
+import com.sckj.iron.validate.TIronScheduleSearchValidate;
+import com.sckj.iron.validate.TIronScheduleUpdateValidate;
+import com.sckj.iron.vo.TIronScheduleDetailVo;
+import com.sckj.iron.vo.TIronScheduleListedVo;
+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/schedule")
+@Api(tags = "定时任务管理")
+public class TIronScheduleController {
+
+    @Resource
+    TIronScheduleServiceImpl iTIronScheduleService;
+
+    @GetMapping("/list")
+    @ApiOperation(value="定时任务列表")
+    public AjaxResult<PageResult<TIronScheduleListedVo>> list(@Validated PageValidate pageValidate,
+                                                              @Validated TIronScheduleSearchValidate searchValidate) {
+        PageResult<TIronScheduleListedVo> list = iTIronScheduleService.list(pageValidate, searchValidate);
+        return AjaxResult.success(list);
+    }
+
+    @GetMapping("/detail")
+    @ApiOperation(value="定时任务详情")
+    public AjaxResult<TIronScheduleDetailVo> detail(@Validated @IDMust() @RequestParam("id") Integer id) {
+        TIronScheduleDetailVo detail = iTIronScheduleService.detail(id);
+        return AjaxResult.success(detail);
+    }
+
+    @Log(title = "定时任务新增")
+    @PostMapping("/add")
+    @ApiOperation(value="定时任务新增")
+    public AjaxResult<Object> add(@Validated @RequestBody TIronScheduleCreateValidate createValidate) {
+        iTIronScheduleService.add(createValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "定时任务编辑")
+    @PostMapping("/edit")
+    @ApiOperation(value="定时任务编辑")
+    public AjaxResult<Object> edit(@Validated @RequestBody TIronScheduleUpdateValidate updateValidate) {
+        iTIronScheduleService.edit(updateValidate);
+        return AjaxResult.success();
+    }
+
+    @Log(title = "定时任务删除")
+    @PostMapping("/del")
+    @ApiOperation(value="定时任务删除")
+    public AjaxResult<Object> del(@Validated @RequestBody IdValidate idValidate) {
+        iTIronScheduleService.del(idValidate.getId());
+        return AjaxResult.success();
+    }
+
+}

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

@@ -250,6 +250,7 @@ public class TIronVisualScreenController {
             return AjaxResult.failed("传入数据为空!");
         }
         iTIronParamService.updateBatchs(ironParamList);
+        iTIronParamService.refreshParams();
         return AjaxResult.success();
     }
 

+ 4 - 0
taphole-iron/src/main/java/com/sckj/iron/dto/WarnData.java

@@ -1,8 +1,10 @@
 package com.sckj.iron.dto;
 
 import com.sckj.iron.constant.TaskNameConstants;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 
 /***
@@ -12,6 +14,8 @@ import lombok.Data;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class WarnData {
 
     //open

+ 63 - 0
taphole-iron/src/main/java/com/sckj/iron/entity/TIronSchedule.java

@@ -0,0 +1,63 @@
+package com.sckj.iron.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@ApiModel("定时任务实体")
+@TableName("t_iron_schedule")
+public class TIronSchedule implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+
+    @TableId(value="id", type= IdType.AUTO)
+    @ApiModelProperty(value = "主键")
+    private Long id;
+
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "锅炉编号")
+    private Long boilerId;
+
+    @ApiModelProperty(value = "铁口区域编号")
+    private Long tapholeId;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+}

+ 1 - 1
taphole-iron/src/main/java/com/sckj/iron/manager/hik/HCNetSDK.java

@@ -42,7 +42,7 @@ public interface HCNetSDK extends  Library {
 	 * @return
 	 */
 	static String getLibPath(){
-		return  isWindows() ? System.getProperty("user.dir") + "\\taphole-iron\\src\\main\\resources\\lib\\win\\HCNetSDK.dll":"/home/xiaofei/taphole/hcsdk/linux/libhcnetsdk.so";
+		return  isWindows() ? System.getProperty("user.dir") + "\\taphole-iron\\src\\main\\resources\\lib\\win\\HCNetSDK.dll":"/home/document/taphole/hcsdk/linux/libhcnetsdk.so";
 	}
 
 	HCNetSDK INSTANCE =  (HCNetSDK)Native.loadLibrary(getLibPath(),HCNetSDK.class);

+ 13 - 0
taphole-iron/src/main/java/com/sckj/iron/mapper/TIronScheduleMapper.java

@@ -0,0 +1,13 @@
+package com.sckj.iron.mapper;
+
+import com.sckj.common.core.basics.IBaseMapper;
+import com.sckj.iron.entity.TIronSchedule;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 定时任务Mapper
+ * @author LikeAdmin
+ */
+@Mapper
+public interface TIronScheduleMapper extends IBaseMapper<TIronSchedule> {
+}

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

@@ -156,7 +156,7 @@ public class TCameraServiceImpl extends ServiceImpl<TCameraMapper, TCamera> {
                 "=:model:str",
         });
 
-        IPage<TCamera> iPage = tCameraMapper.selectPage(new Page<>(page, limit), queryWrapper.eq("type", "1"));
+        IPage<TCamera> iPage = tCameraMapper.selectPage(new Page<>(page, limit), queryWrapper.in("type", "1"));
 
         List<TCameraListedVo> list = new LinkedList<>();
 
@@ -180,14 +180,15 @@ public class TCameraServiceImpl extends ServiceImpl<TCameraMapper, TCamera> {
                             DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
                             String name = dtf.format(LocalDateTime.now()) + ".jpg";
                             String path = "/catchpic/" + item.getIp().replace(".", "") + "/";
-                            String filePath = YmlUtils.get("like.upload-directory") + path;
+                            String filePath = YmlUtils.get("like.upload-directory") + path + name;
                             try {
                                 FileUtils.createParentDirectories(new File(filePath));
                             } catch (IOException e) {
                                 throw new RuntimeException(e);
                             }
                             if (ObjectUtils.isNotEmpty(hcNetTools.getChannelNumber())) {
-                                boolean dvrPic = hcNetTools.getDVRPic(HikCameraUtils.analyzeChannel(hcNetTools.getChannelNumber().get(0)), filePath + name);
+                                log.info("getCameras:{}", filePath);
+                                boolean dvrPic = hcNetTools.getDVRPic(HikCameraUtils.analyzeChannel(hcNetTools.getChannelNumber().get(0)), filePath);
                                 if (dvrPic) {
                                     vo.setCatchPicUrl(absoluteUrl + path + name);
                                     vo.setWebrtcUrl(webrtc.getParamValue());

+ 166 - 0
taphole-iron/src/main/java/com/sckj/iron/service/impl/TIronScheduleServiceImpl.java

@@ -0,0 +1,166 @@
+package com.sckj.iron.service.impl;
+
+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.google.common.eventbus.AsyncEventBus;
+import com.sckj.common.core.PageResult;
+import com.sckj.common.enums.RefreshItemEnum;
+import com.sckj.common.validate.commons.PageValidate;
+import com.sckj.iron.entity.TIronSchedule;
+import com.sckj.iron.mapper.TIronScheduleMapper;
+import com.sckj.iron.validate.TIronScheduleCreateValidate;
+import com.sckj.iron.validate.TIronScheduleSearchValidate;
+import com.sckj.iron.validate.TIronScheduleUpdateValidate;
+import com.sckj.iron.vo.TIronScheduleDetailVo;
+import com.sckj.iron.vo.TIronScheduleListedVo;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
+import org.springframework.util.Assert;
+
+import javax.annotation.Resource;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * 定时任务实现类
+ * @author LikeAdmin
+ */
+@Service
+public class TIronScheduleServiceImpl  extends ServiceImpl<TIronScheduleMapper, TIronSchedule> {
+        
+    @Resource
+    TIronScheduleMapper tIronScheduleMapper;
+
+    @Resource
+    private AsyncEventBus asyncEventBus;
+
+    /**
+     * 定时任务列表
+     *
+     * @author LikeAdmin
+     * @param pageValidate 分页参数
+     * @param searchValidate 搜索参数
+     * @return PageResult<TIronScheduleListedVo>
+     */
+    public PageResult<TIronScheduleListedVo> list(PageValidate pageValidate, TIronScheduleSearchValidate searchValidate) {
+        Integer page  = pageValidate.getPageNo();
+        Integer limit = pageValidate.getPageSize();
+
+        QueryWrapper<TIronSchedule> queryWrapper = new QueryWrapper<>();
+        queryWrapper.orderByDesc(Arrays.asList("sort", "id"));
+
+        tIronScheduleMapper.setSearch(queryWrapper, searchValidate, new String[]{
+            "like:name:str",
+            "like:descr:str",
+            "=:status:str",
+            "like:delay:long",
+            "like:period:long",
+            "=:sort:long",
+            "like:remark:str",
+        });
+
+        IPage<TIronSchedule> iPage = tIronScheduleMapper.selectPage(new Page<>(page, limit), queryWrapper);
+
+        List<TIronScheduleListedVo> list = new LinkedList<>();
+        for(TIronSchedule item : iPage.getRecords()) {
+            TIronScheduleListedVo vo = new TIronScheduleListedVo();
+            BeanUtils.copyProperties(item, vo);
+            list.add(vo);
+        }
+
+        return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
+    }
+
+    /**
+     * 定时任务详情
+     *
+     * @author LikeAdmin
+     * @param id 主键参数
+     * @return TIronSchedule
+     */
+    public TIronScheduleDetailVo detail(Integer id) {
+        TIronSchedule model = tIronScheduleMapper.selectOne(
+                new QueryWrapper<TIronSchedule>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在");
+
+        TIronScheduleDetailVo vo = new TIronScheduleDetailVo();
+        BeanUtils.copyProperties(model, vo);
+        return vo;
+    }
+
+    /**
+     * 定时任务新增
+     *
+     * @author LikeAdmin
+     * @param createValidate 参数
+     */
+    public void add(TIronScheduleCreateValidate createValidate) {
+        TIronSchedule model = new TIronSchedule();
+        model.setName(createValidate.getName());
+        model.setStatus(createValidate.getStatus());
+        model.setDelay(createValidate.getDelay());
+        model.setPeriod(createValidate.getPeriod());
+        model.setSort(createValidate.getSort());
+        model.setRemark(createValidate.getRemark());
+        model.setDescr(createValidate.getDescr());
+        tIronScheduleMapper.insert(model);
+        refreshParams();
+    }
+
+    /**
+     * 定时任务编辑
+     *
+     * @author LikeAdmin
+     * @param updateValidate 参数
+     */
+    public void edit(TIronScheduleUpdateValidate updateValidate) {
+        TIronSchedule model = tIronScheduleMapper.selectOne(
+                new QueryWrapper<TIronSchedule>()
+                    .eq("id",  updateValidate.getId())
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        model.setId(updateValidate.getId());
+        model.setName(updateValidate.getName());
+        model.setStatus(updateValidate.getStatus());
+        model.setDelay(updateValidate.getDelay());
+        model.setPeriod(updateValidate.getPeriod());
+        model.setSort(updateValidate.getSort());
+        model.setRemark(updateValidate.getRemark());
+        model.setDescr(updateValidate.getDescr());
+        tIronScheduleMapper.updateById(model);
+        refreshParams();
+    }
+
+    /**
+     * 定时任务删除
+     *
+     * @author LikeAdmin
+     * @param id 主键ID
+     */
+    public void del(Integer id) {
+        TIronSchedule model = tIronScheduleMapper.selectOne(
+                new QueryWrapper<TIronSchedule>()
+                    .eq("id", id)
+                    .last("limit 1"));
+
+        Assert.notNull(model, "数据不存在!");
+
+        tIronScheduleMapper.delete(new QueryWrapper<TIronSchedule>().eq("id", id));
+        refreshParams();
+    }
+
+    public void refreshParams() {
+        asyncEventBus.post(RefreshItemEnum.SCHEDULE);
+    }
+
+
+
+}

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

@@ -12,7 +12,6 @@ import com.sckj.common.socketio.SocketUtil;
 import com.sckj.common.util.RedisUtils;
 import com.sckj.iron.constant.L1TagConstants;
 import com.sckj.iron.constant.ParamsConstants;
-import com.sckj.iron.constant.ScheduledTimeConstants;
 import com.sckj.iron.constant.TaskNameConstants;
 import com.sckj.iron.dto.IronStepDTO;
 import com.sckj.iron.dto.IronTimeNoDTO;
@@ -20,6 +19,7 @@ import com.sckj.iron.dto.RealtimeData;
 import com.sckj.iron.dto.WarnData;
 import com.sckj.iron.entity.TIronModel;
 import com.sckj.iron.entity.TIronParam;
+import com.sckj.iron.entity.TIronSchedule;
 import com.sckj.iron.entity.TIronStepLog;
 import com.sckj.iron.service.impl.*;
 import com.sckj.iron.util.LocalDateUtils;
@@ -121,6 +121,9 @@ public class DeviceEventListener extends EventListener { //
     @Resource
     TIronStepLogServiceImpl ironStepLogService;
 
+    @Resource
+    TIronScheduleServiceImpl iTIronScheduleService;
+
     //炉前申请出铁
     private static final String STEP_LQSQCT = "lqsqct";
 
@@ -232,17 +235,17 @@ public class DeviceEventListener extends EventListener { //
 
     @PostConstruct
     public void init() {
-        //程序启动后隔断时间启动订阅
-        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_OPCDASUBSCRIBE, ScheduledTimeConstants.OPCDASUBSCRIBE_DELAY, ScheduledTimeConstants.OPCDASUBSCRIBE_PERIOD, TimeUnit.SECONDS, () -> {
-            log.info("opcdaService subscribe available");
-//            opcdaService.subscribeAvailable();
-            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPCDASUBSCRIBE);
-        });
         taskExecutor.submit(() -> {
             mSteps = ironStepService.getTreeSteps();
         });
         taskExecutor.submit(() -> {
             getIronParams();
+
+            if (ObjectUtils.isNotEmpty(SERVER_URL)) {
+                taskExecutor.submit(() -> {
+                    getAudios();
+                });
+            }
         });
         taskExecutor.submit(() -> {
             getModels();
@@ -250,6 +253,17 @@ public class DeviceEventListener extends EventListener { //
         taskExecutor.submit(() -> {
             getIronTimeNo();
         });
+        taskExecutor.submit(() -> {
+            getSchedules();
+            if ("1".equals(scheduleOpcdasubscribe.getStatus())) {
+                //程序启动后隔断时间启动订阅
+                scheduledTaskManager.addTask(scheduleOpcdasubscribe.getName(), scheduleOpcdasubscribe.getDelay(), scheduleOpcdasubscribe.getPeriod(), TimeUnit.SECONDS, () -> {
+                    log.info("opcdaService subscribe available");
+                    opcdaService.subscribeAvailable();
+                    scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPCDASUBSCRIBE);
+                });
+            }
+        });
     }
 
 
@@ -270,18 +284,18 @@ public class DeviceEventListener extends EventListener { //
 //                if (Objects.equals(tAudio.getExceptionType(), TaskNameConstants.TASKNAME_OPEN_WARN)) {
 //                    alarmUrlOpen = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
 //                } else
-                if (Objects.equals(tAudio.getExceptionType(), TaskNameConstants.TASKNAME_CLOSURE_WARN)) {
+                if (Objects.equals(tAudio.getExceptionType(), "100")) {
                     closureAlarmUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                } else if (Objects.equals(tAudio.getExceptionType(), TaskNameConstants.TASKNAME_TAPPING_WARN)) {
+                } else if (Objects.equals(tAudio.getExceptionType(), "200")) {
                     tappingAlramUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
-                } else if (Objects.equals(tAudio.getExceptionType(), TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN)) {
+                } else if (Objects.equals(tAudio.getExceptionType(), "300")) {
                     tappingTimeoutAlramUrl = SERVER_URL + "/" + GlobalConfig.publicPrefix + File.separator + tAudio.getPath();
                 }
             }
-            log.info("alarmUrlOpen: " + openAlarmUrl);
-            log.info("alarmUrlClose: " + closureAlarmUrl);
-            log.info("alramUrlTapping: " + tappingAlramUrl);
-            log.info("alramUrlTappingTimeout: " + tappingTimeoutAlramUrl);
+            log.info("openAlarmUrl: " + openAlarmUrl);
+            log.info("closureAlarmUrl: " + closureAlarmUrl);
+            log.info("tappingAlramUrl: " + tappingAlramUrl);
+            log.info("tappingTimeoutAlramUrl: " + tappingTimeoutAlramUrl);
         }
     }
 
@@ -301,48 +315,56 @@ public class DeviceEventListener extends EventListener { //
                     IRON_TIME = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
                 } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.server_url)) {
                     SERVER_URL = mIronParam.getParamValue();
-                    if (ObjectUtils.isNotEmpty(SERVER_URL)) {
-                        taskExecutor.submit(() -> {
-                            getAudios();
-                        });
-                    }
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.open_warn_delay)) {
-                    ScheduledTimeConstants.OPEN_WARN_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.open_warn_period)) {
-                    ScheduledTimeConstants.OPEN_WARN_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.closure_warn_delay)) {
-                    ScheduledTimeConstants.CLOSURE_WARN_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.closure_warn_period)) {
-                    ScheduledTimeConstants.CLOSURE_WARN_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_warn_delay)) {
-                    ScheduledTimeConstants.TAPPING_WARN_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_warn_period)) {
-                    ScheduledTimeConstants.TAPPING_WARN_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_timeout_warn_delay)) {
-                    ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_timeout_warn_period)) {
-                    ScheduledTimeConstants.TAPPING_TIMEOUT_WARN_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.hit_mud_delay)) {
-                    ScheduledTimeConstants.HIT_MUD_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.hit_mud_period)) {
-                    ScheduledTimeConstants.HIT_MUD_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_consttime_delay)) {
-                    ScheduledTimeConstants.TAPPING_CONSTTIME_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_consttime_period)) {
-                    ScheduledTimeConstants.TAPPING_CONSTTIME_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_test_delay)) {
-                    ScheduledTimeConstants.TAPPING_TEST_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.tapping_test_period)) {
-                    ScheduledTimeConstants.TAPPING_TEST_PERIOD = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.opcdasubscribe_delay)) {
-                    ScheduledTimeConstants.OPCDASUBSCRIBE_DELAY = Long.parseLong(mIronParam.getParamValue());
-                } else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.opcdasubscribe_period)) {
-                    ScheduledTimeConstants.OPCDASUBSCRIBE_PERIOD = Long.parseLong(mIronParam.getParamValue());
                 }
             }
             log.info("STANDARD_SPEED: {},PRESSURE_DIFF_VALUE:{}", STANDARD_SPEED, PRESSURE_DIFF_VALUE);
             log.info("IRON_TIME: {},SERVER_URL:{}", IRON_TIME, SERVER_URL);
-            log.info("{}", ScheduledTimeConstants.getPrintString());
+        }
+    }
+
+    private TIronSchedule scheduleClosureWarn;
+    private TIronSchedule scheduleOpenWarn;
+    private TIronSchedule scheduleTappingWarn;
+    private TIronSchedule scheduleTappingTimeoutWarn;
+    private TIronSchedule scheduleHitMud;
+    private TIronSchedule scheduleTappingConsttime;
+    private TIronSchedule scheduleTappingTest;
+    private TIronSchedule scheduleOpcdasubscribe;
+
+    /***
+     * 定时任务
+     */
+    private void getSchedules() {
+        List<TIronSchedule> list = iTIronScheduleService.lambdaQuery().list();
+        if (ObjectUtils.isNotEmpty(list)) {
+            for (TIronSchedule ironSchedule : list) {
+                switch (ironSchedule.getName()) {
+                    case ParamsConstants.open_warn:
+                        scheduleOpenWarn = ironSchedule;
+                        break;
+                    case ParamsConstants.closure_warn:
+                        scheduleClosureWarn = ironSchedule;
+                        break;
+                    case ParamsConstants.tapping_warn:
+                        scheduleTappingWarn = ironSchedule;
+                        break;
+                    case ParamsConstants.tapping_timeout_warn:
+                        scheduleTappingTimeoutWarn = ironSchedule;
+                        break;
+                    case ParamsConstants.hit_mud:
+                        scheduleHitMud = ironSchedule;
+                        break;
+                    case ParamsConstants.tapping_consttime:
+                        scheduleTappingConsttime = ironSchedule;
+                        break;
+                    case ParamsConstants.tapping_test:
+                        scheduleTappingTest = ironSchedule;
+                        break;
+                    case ParamsConstants.opcdasubscribe:
+                        scheduleOpcdasubscribe = ironSchedule;
+                        break;
+                }
+            }
         }
     }
 
@@ -399,7 +421,7 @@ public class DeviceEventListener extends EventListener { //
         String dateString = LocalDateUtils.formatDate(new Date(), DateTimeFormatter.ofPattern("MM月dd日"));
         ironTimeNoDTO.setDate(dateString);
         TL2Data latestData = tl2DataService.getLatestData();
-        if(ObjectUtils.isNotEmpty(latestData)) {
+        if (ObjectUtils.isNotEmpty(latestData)) {
             ironTimeNoDTO.setIronNo(latestData.getIronNo());
         }
         ironTimeNoDTO.setDesc(String.format("%s第%s次出铁", dateString, ironTimeNoDTO.getIronNo()));
@@ -504,7 +526,7 @@ public class DeviceEventListener extends EventListener { //
         int minutes = (totalSeconds % 3600) / 60;
         int seconds = totalSeconds % 60;
         String elapsedTime = String.format("%02d:%02d:%02d", hours, minutes, seconds);
-        log.info("elapsedTime:{}", elapsedTime);
+//        log.info("elapsedTime:{}", elapsedTime);
         RedisUtils.addFixedElement(TaskNameConstants.TASKNAME_TAPPING_CONSTTIME, elapsedTime, MAX_REDIS_COUNT);
 
         RealtimeData realtimeData = new RealtimeData();
@@ -513,17 +535,6 @@ public class DeviceEventListener extends EventListener { //
 
         PushData.send2CostTime(realtimeData);
 
-        if ((totalSeconds / 60) > IRON_TIME.get()) {
-            //出铁超时报警
-            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);
-
-                PushData.send2Warn(WarnData.warnTappingTimeout("出铁时间超时", tappingAlramUrl));
-                taskExecutor.submit(() -> {
-                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("2").exceptionDesc("出铁时间超过设定时间").build());
-                });
-            });
-        }
     }
 
     //1号铁口正在出铁的操作项目
@@ -534,76 +545,108 @@ public class DeviceEventListener extends EventListener { //
         scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
         scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_TIMEOUT_WARN);
 
-        //出铁计时
-        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_CONSTTIME, ScheduledTimeConstants.TAPPING_CONSTTIME_DELAY, ScheduledTimeConstants.TAPPING_CONSTTIME_PERIOD, TimeUnit.SECONDS, () -> {
-            getIronTime();
-            mSecondsElapsed.incrementAndGet();
-        });
+        if ("1".equals(scheduleTappingConsttime.getStatus())) {
+            //出铁计时
+            scheduledTaskManager.addTask(scheduleTappingConsttime.getName(), scheduleTappingConsttime.getDelay(), scheduleTappingConsttime.getPeriod(), TimeUnit.SECONDS, () -> {
+                getIronTime();
+                mSecondsElapsed.incrementAndGet();
+            });
 
+        }
 
-        //堵口预警
-        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_CLOSURE_WARN, ScheduledTimeConstants.CLOSURE_WARN_DELAY, ScheduledTimeConstants.CLOSURE_WARN_PERIOD, TimeUnit.SECONDS, () -> {
+        if ("1".equals(scheduleClosureWarn.getStatus())) {
             //堵口预警
-            log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1.get(), speed2.get(), TaskNameConstants.TASKNAME_CLOSURE_WARN);
-            if (speed1.get() > STANDARD_SPEED.get() || speed2.get() > STANDARD_SPEED.get()) {
-                //流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
-                PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口", closureAlarmUrl));
-                taskExecutor.submit(() -> {
-                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过快,请将当前铁口堵口").build());
-                });
-            } else if ((speed1.get() < STANDARD_SPEED.get() || speed2.get() < STANDARD_SPEED.get()) && (ironLoading2.get() || ironLoading3.get() || ironLoading4.get())) {
-                //若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
-                PushData.send2Warn(WarnData.warnClose("流速过小,请将当前铁口堵口", closureAlarmUrl));
-                taskExecutor.submit(() -> {
-                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过小,请将当前铁口堵口").build());
-                });
-            } else if ((speed1.get() < STANDARD_SPEED.get() || speed2.get() < STANDARD_SPEED.get()) && (!ironLoading2.get() && !ironLoading3.get() && !ironLoading4.get())) {
-                //若流速过小且其他铁口均未出铁,则提示先将其它铁口打开,再进行堵口
-                PushData.send2Warn(WarnData.warnClose("请先打开其它铁口,再堵口", closureAlarmUrl));
-                taskExecutor.submit(() -> {
-                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("请先打开其它铁口,再堵口").build());
-                });
-            }
-        });
+            scheduledTaskManager.addTask(scheduleClosureWarn.getName(), scheduleClosureWarn.getDelay(), scheduleClosureWarn.getPeriod(), TimeUnit.SECONDS, () -> {
+                //堵口预警
+
+                if (speed1.get() > STANDARD_SPEED.get() || speed2.get() > STANDARD_SPEED.get()) {
+                    log.info("堵口预警:【speed1】:{},【speed2】:{},【standard_speed】:{},", speed1.get(), speed2.get(), STANDARD_SPEED.get());
+
+                    //流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
+                    PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口", closureAlarmUrl));
+                    taskExecutor.submit(() -> {
+                        exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过快,请将当前铁口堵口").build());
+                    });
+                } else if ((speed1.get() < STANDARD_SPEED.get() || speed2.get() < STANDARD_SPEED.get()) && (ironLoading2.get() || ironLoading3.get() || ironLoading4.get())) {
+                    log.info("堵口预警一:【speed1】:{},【speed2】:{},【standard_speed】:{},", speed1.get(), speed2.get(), STANDARD_SPEED.get());
+                    log.info("堵口预警一:【ironLoading1】:{},【ironLoading2】:{},【ironLoading3】:{},【ironLoading4】:{}", ironLoading1.get(), ironLoading2.get(), ironLoading3.get(), ironLoading4.get());
+
+
+                    //若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
+                    PushData.send2Warn(WarnData.warnClose("流速过小,请将当前铁口堵口", closureAlarmUrl));
+                    taskExecutor.submit(() -> {
+                        exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过小,请将当前铁口堵口").build());
+                    });
+                } else if ((speed1.get() < STANDARD_SPEED.get() || speed2.get() < STANDARD_SPEED.get()) && (!ironLoading2.get() && !ironLoading3.get() && !ironLoading4.get())) {
+                    log.info("堵口预警二:【speed1】:{},【speed2】:{},【standard_speed】:{},", speed1.get(), speed2.get(), STANDARD_SPEED.get());
+                    log.info("堵口预警二:【ironLoading1】:{},【ironLoading2】:{},【ironLoading3】:{},【ironLoading4】:{}", ironLoading1.get(), ironLoading2.get(), ironLoading3.get(), ironLoading4.get());
+
+
+                    //若流速过小且其他铁口均未出铁,则提示先将其它铁口打开,再进行堵口
+                    PushData.send2Warn(WarnData.warnClose("请先打开其它铁口,再堵口", closureAlarmUrl));
+                    taskExecutor.submit(() -> {
+                        exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("请先打开其它铁口,再堵口").build());
+                    });
+                }
+            });
+        }
+
+
+        if ("1".equals(scheduleHitMud.getStatus())) {
+            //xxx分钟出铁后开始计算打泥量,通过打泥量公式
+            //打泥量公式关联因素:铁口深度、钻杆直径、
+            //调用打泥量模型,计算预计使用多少打泥量进行堵口
+            scheduledTaskManager.addTask(scheduleHitMud.getName(), scheduleHitMud.getDelay(), scheduleHitMud.getPeriod(), TimeUnit.SECONDS, () -> {
+                log.info("打泥量预计:{}", modelHitMud);
+                TL2Data tappingData = tl2DataService.getTappingData();
+                if (ObjectUtils.isNotEmpty(tappingData) && ObjectUtils.isNotEmpty(modelHitMud)) {
+                    log.info("开口深度openDepth(mm):{}", tappingData.getOpenDepth());
+                    log.info("Tap对应铁水估计铁量ironWeight(t): {}", tappingData.getTheoryWeight());
+                    log.info("出铁时间ironCosttime(min): {}", mSecondsElapsed.get() / 60);
+                    log.info("平均流速ironSpeed(t/s): {}", speed1.get() > speed2.get() ? speed1.get() : speed2.get());
 
-        //xxx分钟出铁后开始计算打泥量,通过打泥量公式
-        //打泥量公式关联因素:铁口深度、钻杆直径、
-        //调用打泥量模型,计算预计使用多少打泥量进行堵口
-        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_HIT_MUD, ScheduledTimeConstants.HIT_MUD_DELAY, ScheduledTimeConstants.HIT_MUD_PERIOD, TimeUnit.SECONDS, () -> {
-            log.info("堵口预警:speed1:{},speed2:{},", speed1.get(), speed2.get());
-
-            TL2Data tappingData = tl2DataService.getTappingData();
-            if (ObjectUtils.isNotEmpty(tappingData) && ObjectUtils.isNotEmpty(modelHitMud)) {
-                log.info("开口深度openDepth(mm):{}", tappingData.getOpenDepth());
-                log.info("Tap对应铁水估计铁量ironWeight(t): {}", tappingData.getTheoryWeight());
-                log.info("出铁时间ironCosttime(min): {}", mSecondsElapsed.get() / 60);
-                log.info("平均流速ironSpeed(t/s): {}", speed1.get() > speed2.get() ? speed1.get() : speed2.get());
-
-                try {
-                    String modelExpression = modelHitMud.getModelExpression();
-                    log.info("打泥量计算公式:{}", modelExpression);
-                    SpelExpressionParser parser = new SpelExpressionParser();
-                    Expression expression = parser.parseExpression(modelExpression);
-                    StandardEvaluationContext context = new StandardEvaluationContext();
-                    // 设置占位符对应的值
-                    context.setVariable("openDepth", tappingData.getOpenDepth());
-                    context.setVariable("ironWeight", tappingData.getTheoryWeight());
-                    context.setVariable("ironCosttime", mSecondsElapsed.get() / 60);
-                    context.setVariable("ironSpeed", speed1.get() > speed2.get() ? speed1.get() : speed2.get());
-                    int result = (int) ((double) expression.getValue(context));
-                    // 使用 DecimalFormat 保留两位小数
+                    try {
+                        String modelExpression = modelHitMud.getModelExpression();
+                        log.info("打泥量计算公式:{}", modelExpression);
+                        SpelExpressionParser parser = new SpelExpressionParser();
+                        Expression expression = parser.parseExpression(modelExpression);
+                        StandardEvaluationContext context = new StandardEvaluationContext();
+                        // 设置占位符对应的值
+                        context.setVariable("openDepth", tappingData.getOpenDepth());
+                        context.setVariable("ironWeight", tappingData.getTheoryWeight());
+                        context.setVariable("ironCosttime", mSecondsElapsed.get() / 60);
+                        context.setVariable("ironSpeed", speed1.get() > speed2.get() ? speed1.get() : speed2.get());
+                        //计算打泥量
+                        //计算理论铁量= 矿批 × 综合品位 × 1.06,其中矿批是指L2中的干量
+                        int result = (int) ((double) expression.getValue(context));
+                        // 使用 DecimalFormat 保留两位小数
 //                    DecimalFormat decimalFormat = new DecimalFormat("#.00");
 //                    String formattedResult = decimalFormat.format(result);
-                    log.info("计算结果: {}", result);
-                } catch (Exception e) {
-                    e.printStackTrace();
+                        log.info("计算结果: {}", result);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
                 }
-            }
 
-            //计算打泥量
-            //计算理论铁量= 矿批 × 综合品位 × 1.06,其中矿批是指L2中的干量
-            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_HIT_MUD);
-        });
+
+                scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_HIT_MUD);
+            });
+        }
+
+
+        if ("1".equals(scheduleTappingTimeoutWarn.getStatus())) {
+            //出铁超时报警
+            scheduledTaskManager.addTask(scheduleTappingTimeoutWarn.getName(), scheduleTappingTimeoutWarn.getDelay(), scheduleTappingTimeoutWarn.getPeriod(), TimeUnit.SECONDS, () -> {
+                int seconds = mSecondsElapsed.get();
+                log.info("已出铁时间min:{},标准出铁时间IRON_TIME:{}", seconds, IRON_TIME.get());
+                if (seconds > IRON_TIME.get() * 60) {
+                    PushData.send2Warn(WarnData.warnTappingTimeout("出铁时间超时", tappingTimeoutAlramUrl));
+                    taskExecutor.submit(() -> {
+                        exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("2").exceptionDesc("出铁时间超过设定时间").build());
+                    });
+                }
+            });
+        }
 
 
     }
@@ -627,34 +670,54 @@ public class DeviceEventListener extends EventListener { //
         //开口
 //        PushData.send2CancelWarn(WarnData.warnOpen("", ""));
         //堵口
-        PushData.send2CancelWarn(WarnData.warnClose("", ""));
+        PushData.send2CancelWarn(WarnData.warnClose("出铁结束", ""));
         //出铁预警
-        PushData.send2CancelWarn(WarnData.warnTapping("", ""));
+        PushData.send2CancelWarn(WarnData.warnTapping("出铁结束", ""));
 
 //        recordAfter();
 //        recordBlock();
 
-        //开始出铁诊断
-        //获取开口耗时、出铁时间、实际出铁量、平均铁水流速、平均铁水温度等数据,进行阈值判定,诊断出铁是否正常
-        //xxx分钟延迟
-        scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_TEST, ScheduledTimeConstants.TAPPING_TEST_DELAY, ScheduledTimeConstants.TAPPING_TEST_PERIOD, TimeUnit.SECONDS, () -> {
-            //堵口预警
-            log.info("出铁结束,定时任务:{},出铁诊断", TaskNameConstants.TASKNAME_TAPPING_TEST);
-            L2Data fixedLatestElement = (L2Data) RedisUtils.getFixedLatestElement(IRON_ELEMENT);
-            //平均温度
-            String mudWeight = fixedLatestElement.getAvgTemp();
-            //出铁时间
-            //String ironCosttime = fixedLatestElement.getI
-            //实际出铁量
-            Double ironWeight = fixedLatestElement.getIronWeight();
+        if ("1".equals(scheduleTappingTest.getStatus())) {
+            //开始出铁诊断
+            //获取开口耗时、出铁时间、实际出铁量、平均铁水流速、平均铁水温度等数据,进行阈值判定,诊断出铁是否正常
+            //xxx分钟延迟
+            scheduledTaskManager.addTask(scheduleTappingTest.getName(), scheduleTappingTest.getDelay(), scheduleTappingTest.getPeriod(), TimeUnit.SECONDS, () -> {
+                //堵口预警
+                log.info("出铁结束,定时任务:{},出铁诊断", TaskNameConstants.TASKNAME_TAPPING_TEST);
+                L2Data fixedLatestElement = (L2Data) RedisUtils.getFixedLatestElement(IRON_ELEMENT);
+                //平均温度
+                String mudWeight = fixedLatestElement.getAvgTemp();
+                //出铁时间
+                //String ironCosttime = fixedLatestElement.getI
+                //实际出铁量
+                Double ironWeight = fixedLatestElement.getIronWeight();
 
 //            TIronData ironData = new TIronData();
 //            BeanUtils.copyProperties(ironData, fixedLatestElement);
 //
 //            ironDataService.save(ironData);
 
-            scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_TEST);
-        });
+                scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_TEST);
+            });
+        }
+
+
+        if ("1".equals(scheduleTappingWarn.getStatus())) {
+            scheduledTaskManager.addTask(scheduleTappingWarn.getName(), scheduleTappingWarn.getDelay(), scheduleTappingWarn.getPeriod(), TimeUnit.SECONDS, () -> {
+                double sfyl = Double.parseDouble(ObjectUtils.defaultIfNull(mContext.lookupVariable("sfyl"), "0").toString());
+                double ldyl = Double.parseDouble(ObjectUtils.defaultIfNull(mContext.lookupVariable("ldyl"), "0").toString());
+                double yc = sfyl - ldyl;
+                log.info("出铁预警:压差:{},标准压差:{},L1出铁状态:{}", yc, PRESSURE_DIFF_VALUE.get(), ironLoading1.get());
+                if (PRESSURE_DIFF_VALUE.get() < yc && !ironLoading1.get()) {
+                    PushData.send2Warn(WarnData.warnTapping("压差超过阈值,请出铁", tappingAlramUrl));
+                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("压差超过阈值,请出铁").build());
+                } else {
+//                scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
+                    PushData.send2CancelWarn(WarnData.warnTapping("压差正常", ""));
+                }
+            });
+        }
+
 
     }
 
@@ -767,20 +830,6 @@ public class DeviceEventListener extends EventListener { //
                 mRealtimeStatus.put(FLUSH_STATUS, realtimeData);
             }
 
-
-            double yc = Double.parseDouble(ObjectUtils.defaultIfNull(mContext.lookupVariable("yc"), "0").toString());
-            if (PRESSURE_DIFF_VALUE.get() < yc && !ironLoading1.get()) {
-                //xxx分钟延迟
-                scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_TAPPING_WARN, ScheduledTimeConstants.TAPPING_WARN_DELAY, ScheduledTimeConstants.TAPPING_WARN_PERIOD, TimeUnit.SECONDS, () -> {
-                    log.info("出铁预警:{}", TaskNameConstants.TASKNAME_TAPPING_WARN);
-                    PushData.send2Warn(WarnData.warnTapping("压差超过阈值,请出铁", tappingAlramUrl));
-                    exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("压差超过阈值,请出铁").build());
-                });
-            } else {
-                scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_TAPPING_WARN);
-                PushData.send2CancelWarn(WarnData.warnTapping("压差正常", tappingAlramUrl));
-            }
-
         }
 
         L2Data fixedLatestElement = (L2Data) RedisUtils.getFixedLatestElement(IRON_ELEMENT);
@@ -848,7 +897,6 @@ public class DeviceEventListener extends EventListener { //
                     if (Objects.equals(newPointName, pointName)) {
                         child.setData(data);
                     }
-
                 }
             }
         }
@@ -891,6 +939,11 @@ public class DeviceEventListener extends EventListener { //
         if (!foundFalsePass && 0 == stepDTO.getPassResult()) {
             foundFalsePass = true;
         }
+//        if(Objects.equals(stepDTO.getIdentifier(),"yc")){
+//            double sfyl = Double.parseDouble(ObjectUtils.defaultIfNull(mContext.lookupVariable("sfyl"), "0").toString());
+//            double ldyl = Double.parseDouble(ObjectUtils.defaultIfNull(mContext.lookupVariable("ldyl"), "0").toString());
+//            stepDTO.setData(sfyl-ldyl);
+//        }
         //父项
         if (foundFalsePass) {
             stepDTO.setPassResult(0);
@@ -902,7 +955,7 @@ public class DeviceEventListener extends EventListener { //
         taskExecutor.execute(() -> {
             //记录每个步骤
             if (ObjectUtils.isNotEmpty(stepLogId)) {
-                synchronized (stepLogId){
+                synchronized (stepLogId) {
                     try {
                         TIronStepLog stepLog = new TIronStepLog();
                         stepLog.setStepLogId(stepLogId);
@@ -928,7 +981,7 @@ public class DeviceEventListener extends EventListener { //
         String flowName = "";
         try {
             if ("calc".equalsIgnoreCase(stepVO.getNodeType())) {
-                //公式计算
+                //含有表达式文字
                 flowName = parser.parseExpression(stepVO.getStepNameExpression()).getValue(mContext, String.class);
             } else {
                 //纯文字
@@ -963,7 +1016,7 @@ public class DeviceEventListener extends EventListener { //
      * @param client
      * @return 如果在线返回当前客户ID
      */
-    private String validateClientOnline(SocketIOClient client){
+    private String validateClientOnline(SocketIOClient client) {
         String userId;
         if (ObjectUtils.isEmpty(client) || ObjectUtils.isEmpty(userId = SocketUtil.clientUserIds.get(client))) {
             log.info("该客户已下线");
@@ -982,7 +1035,7 @@ public class DeviceEventListener extends EventListener { //
     @OnEvent(value = PushData.IRON_CONFIRM)
     public void confirmIron(SocketIOClient client, IronStepDTO message) {
         String userId = validateClientOnline(client);
-        if(null == userId){
+        if (null == userId) {
             return;
         }
 
@@ -1010,16 +1063,20 @@ public class DeviceEventListener extends EventListener { //
                 getTheoryWeight(tl2DataList);
             } else if (STEP_YPQRCT.equals(stepDTO.getIdentifier()) && stepDTO.getPassResult() == 1) {
                 //炉前在接受到炉内出铁要求后,10分钟内打开铁口,未打开系统告警并记录
-//                scheduledTaskManager.addTask(TaskNameConstants.TASKNAME_OPEN_WARN, ScheduledTimeConstants.OPEN_WARN_DELAY, ScheduledTimeConstants.OPEN_WARN_PERIOD, TimeUnit.SECONDS, () -> {
-//                    log.info("开口预警:{}", TaskNameConstants.TASKNAME_OPEN_WARN);
+
+                if ("1".equals(scheduleOpenWarn.getStatus())) {
+//                    scheduledTaskManager.addTask(scheduleOpenWarn.getName(), scheduleOpenWarn.getDelay(), scheduleOpenWarn.getPeriod(), TimeUnit.SECONDS, () -> {
+//                        log.info("开口预警");
 //
-//                    // 出铁预警,打开系统告警并记录
-//                    PushData.send2Warn(WarnData.warnOpen("请立即打开铁口", alarmUrlOpen));
-//                    taskExecutor.submit(() -> {
-//                        exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("1").exceptionDesc("打开铁口超时").build());
+//                        // 出铁预警,打开系统告警并记录
+//                        PushData.send2Warn(WarnData.warnOpen("请立即打开铁口", alarmUrlOpen));
+//                        taskExecutor.submit(() -> {
+//                            exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("1").exceptionDesc("打开铁口超时").build());
+//                        });
 //                    });
-////                    scheduledTaskManager.cancelTask(TaskNameConstants.TASKNAME_OPEN_WARN); // 终止定时器
-//                });
+                }
+
+
             }
 
             for (IronStepVO child : stepDTO.getChilds()) {
@@ -1077,7 +1134,7 @@ public class DeviceEventListener extends EventListener { //
      */
     @OnEvent(value = PushData.IRON_CANCEL_WARN)
     public void cancelWarn(SocketIOClient client, WarnData message) {
-        if(null == validateClientOnline(client)){
+        if (null == validateClientOnline(client)) {
             return;
         }
         if (ObjectUtils.isNotEmpty(message)) {
@@ -1090,8 +1147,8 @@ public class DeviceEventListener extends EventListener { //
      * @param client
      */
     @OnEvent(value = PushData.IRON_TIME_NO)
-    public void pushIronTimeNo(SocketIOClient client,String flag) {
-        if(null == validateClientOnline(client)){
+    public void pushIronTimeNo(SocketIOClient client, String flag) {
+        if (null == validateClientOnline(client)) {
             return;
         }
         getIronTimeNo();
@@ -1104,7 +1161,7 @@ public class DeviceEventListener extends EventListener { //
      */
     @OnEvent(value = PushData.IRON_START)
     public void ironStart(SocketIOClient client, IronStepDTO message) {
-        if(null == validateClientOnline(client)){
+        if (null == validateClientOnline(client)) {
             return;
         }
         setStepResult(mSteps);
@@ -1120,20 +1177,24 @@ public class DeviceEventListener extends EventListener { //
         switch (refreshItemEnum) {
             case STEP:
                 mSteps = ironStepService.getTreeSteps();
-                log.info("流程步骤数据刷新:{}", LocalDateTime.now());
+                log.info("流程步骤刷新:{}", LocalDateTime.now());
                 PushData.send2Operation(mSteps, ironLoading1.get());
                 break;
             case PARAM:
                 getIronParams();
-                log.info("参数数据刷新:{}", LocalDateTime.now());
+                log.info("参数刷新:{}", LocalDateTime.now());
                 break;
             case MODEL:
                 getModels();
-                log.info("模型数据刷新:{}", LocalDateTime.now());
+                log.info("模型刷新:{}", LocalDateTime.now());
                 break;
             case AUDIO:
                 getAudios();
-                log.info("音频数据刷新:{}", LocalDateTime.now());
+                log.info("音频刷新:{}", LocalDateTime.now());
+                break;
+            case SCHEDULE:
+                getSchedules();
+                log.info("定时任务刷新:{}", LocalDateTime.now());
                 break;
             default:
                 break;

+ 41 - 0
taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleCreateValidate.java

@@ -0,0 +1,41 @@
+package com.sckj.iron.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+@Data
+@ApiModel("定时任务创建参数")
+public class TIronScheduleCreateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @NotNull(message = "name参数缺失")
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @NotNull(message = "descr参数缺失")
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @NotNull(message = "delay参数缺失")
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @NotNull(message = "period参数缺失")
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+}

+ 36 - 0
taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleSearchValidate.java

@@ -0,0 +1,36 @@
+package com.sckj.iron.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("定时任务搜素参数")
+public class TIronScheduleSearchValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+}

+ 48 - 0
taphole-iron/src/main/java/com/sckj/iron/validate/TIronScheduleUpdateValidate.java

@@ -0,0 +1,48 @@
+package com.sckj.iron.validate;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * 定时任务参数
+ * @author LikeAdmin
+ */
+@Data
+@ApiModel("定时任务更新参数")
+public class TIronScheduleUpdateValidate implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @NotNull(message = "name参数缺失")
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @NotNull(message = "descr参数缺失")
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @NotNull(message = "delay参数缺失")
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @NotNull(message = "period参数缺失")
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+}

+ 40 - 0
taphole-iron/src/main/java/com/sckj/iron/vo/TIronScheduleDetailVo.java

@@ -0,0 +1,40 @@
+package com.sckj.iron.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("定时任务详情Vo")
+public class TIronScheduleDetailVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+
+}

+ 40 - 0
taphole-iron/src/main/java/com/sckj/iron/vo/TIronScheduleListedVo.java

@@ -0,0 +1,40 @@
+package com.sckj.iron.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("定时任务列表Vo")
+public class TIronScheduleListedVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "")
+    private Long id;
+
+    @ApiModelProperty(value = "任务名称")
+    private String name;
+
+    @ApiModelProperty(value = "任务描述")
+    private String descr;
+
+    @ApiModelProperty(value = "状态(1正常 0停用)")
+    private String status;
+
+    @ApiModelProperty(value = "延迟执行时间(秒)")
+    private Long delay;
+
+    @ApiModelProperty(value = "定时执行时间(秒)")
+    private Long period;
+
+    @ApiModelProperty(value = "排序")
+    private Long sort;
+
+    @ApiModelProperty(value = "备注信息")
+    private String remark;
+
+
+}

+ 6 - 2
taphole-opc/src/main/java/com/sckj/opc/controller/OPCDAController.java

@@ -41,6 +41,7 @@ public class OPCDAController {
             opcuaService.createServer(opcServer);
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success("连接成功");
     }
@@ -61,6 +62,7 @@ public class OPCDAController {
             opcuaService.subscribeAvailable();
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -79,6 +81,7 @@ public class OPCDAController {
             opcuaService.unsubscribeAvailable();
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -98,8 +101,8 @@ public class OPCDAController {
             return  AjaxResult.success(opcuaService.subscribe(opcPoint));
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
-        return AjaxResult.success();
     }
 
     /**
@@ -116,6 +119,7 @@ public class OPCDAController {
             opcuaService.unsubscribe(opcPoint);
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -135,8 +139,8 @@ public class OPCDAController {
             return AjaxResult.success(ErrorEnum.SUCCESS.getCode(), ErrorEnum.SUCCESS.getMsg(), opcuaService.readNodeValue(opcPoint));
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
-        return AjaxResult.success();
     }
 
 

+ 6 - 1
taphole-opc/src/main/java/com/sckj/opc/controller/OPCUAController.java

@@ -40,6 +40,7 @@ public class OPCUAController {
             opcuaService.createClient(opcServer);
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -58,6 +59,7 @@ public class OPCUAController {
             opcuaService.subscribeAvailable();
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -76,6 +78,7 @@ public class OPCUAController {
             opcuaService.unsubscribeAvailable();
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -95,6 +98,7 @@ public class OPCUAController {
             opcuaService.subscribe(opcPoint);
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -113,6 +117,7 @@ public class OPCUAController {
             opcuaService.unsubscribe(opcPoint);
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
         return AjaxResult.success();
     }
@@ -132,8 +137,8 @@ public class OPCUAController {
             return AjaxResult.success(opcuaService.readNodeValue(opcPoint));
         } catch (Exception e) {
             e.printStackTrace();
+            return AjaxResult.failed(e.getMessage());
         }
-        return AjaxResult.success();
     }
 
 

+ 2 - 0
taphole-opc/src/main/java/com/sckj/opc/dto/OPCPointDTO.java

@@ -14,6 +14,8 @@ import lombok.NoArgsConstructor;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class OPCPointDTO extends OPCPoint {
     @ApiModelProperty(value = "OPC UA地址")
     private String endpointUrl;

+ 3 - 3
taphole-opc/src/main/java/com/sckj/opc/entity/OPCData.java

@@ -5,9 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.Builder;
-import lombok.Data;
-import lombok.ToString;
+import lombok.*;
 
 import java.util.Date;
 
@@ -21,6 +19,8 @@ import java.util.Date;
 @TableName(value = "t_opc_data")
 @ApiModel("OPC数据")
 @ToString
+@NoArgsConstructor
+@AllArgsConstructor
 public class OPCData {
 
     @ApiModelProperty(value = "主键ID")

+ 4 - 3
taphole-opc/src/main/resources/mapper/OPCPointMapper.xml

@@ -4,8 +4,8 @@
 
 
     <select id="selectInfoWithServer" resultType="com.sckj.opc.dto.OPCPointDTO">
-        select a.*,b.application_name,b.application_uri,b.endpoint_url,b.ip,b.clsid,b.username,b.password from
-        t_opc_point a left join t_opc_server b on a.opc_server_id=b.id
+        select a.*,b.application_name,b.application_uri,b.endpoint_url ,b.ip ip,b.clsid,b.username,b.password,b.security_policy,b.cert_path
+        from t_opc_point a left join t_opc_server b on a.opc_server_id=b.id
         <where>
             <if test="id != null">
                 a.id = #{id}
@@ -15,7 +15,8 @@
     </select>
 
     <select id="getAvailablePoints" resultType="com.sckj.opc.dto.OPCPointDTO">
-        select a.*,b.application_name,b.application_uri,b.endpoint_url,b.ip,b.clsid,b.username,b.password from t_opc_point a
+        select a.*,b.application_name,b.application_uri,b.endpoint_url ,b.ip ip,b.clsid,b.username,b.password,b.security_policy ,b.cert_path
+        from t_opc_point a
           inner join (select * from t_opc_server where status='1') b on a.opc_server_id=b.id
         where a.status = '1'
     </select>

+ 4 - 0
taphole-warn/src/main/java/com/sckj/warn/validate/TExceptionLogCreateValidate.java

@@ -2,8 +2,10 @@ package com.sckj.warn.validate;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
@@ -12,6 +14,8 @@ import java.util.Date;
 @Data
 @ApiModel("异常情况记录创建参数")
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 public class TExceptionLogCreateValidate implements Serializable {
 
     private static final long serialVersionUID = 1L;