|
@@ -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;
|