|
@@ -17,6 +17,7 @@ import com.sckj.iron.dto.*;
|
|
|
import com.sckj.iron.entity.*;
|
|
|
import com.sckj.iron.service.impl.*;
|
|
|
import com.sckj.iron.util.LocalDateUtils;
|
|
|
+import com.sckj.iron.util.RangeUtils;
|
|
|
import com.sckj.iron.vo.IronStepVO;
|
|
|
import com.sckj.l2.entity.TL2Data;
|
|
|
import com.sckj.l2.service.impl.TL2DataServiceImpl;
|
|
@@ -130,13 +131,17 @@ public class DeviceEventListener extends EventListener { //
|
|
|
private static final String IRON_STATUS = "ironStatus";
|
|
|
|
|
|
//鱼雷罐车
|
|
|
- private static final String CAR_STATUS = "ylgc";
|
|
|
- //拔炮
|
|
|
- private static final String GUN_STATUS = "npkkj";
|
|
|
+ private static final String YLGC_STATUS = "ylgc";
|
|
|
+ //泥炮机
|
|
|
+ private static final String NPJ_STATUS = "npj";
|
|
|
+ //开口机状态
|
|
|
+ private static final String KKJ_STATUS = "kkj";
|
|
|
//摆动溜咀
|
|
|
- private static final String MOUTH_STATUS = "bdlz";
|
|
|
+ private static final String BDLZ_STATUS = "bdlz";
|
|
|
//冲渣状态
|
|
|
- private static final String FLUSH_STATUS = "flushStatus";
|
|
|
+ private static final String CHONGZ_STATUS = "chongz";
|
|
|
+ //出渣状态
|
|
|
+ private static final String CHUZ_STATUS = "chuz";
|
|
|
|
|
|
// 1.创建表达式解析器
|
|
|
private static final SpelExpressionParser mParser = new SpelExpressionParser();
|
|
@@ -180,38 +185,39 @@ public class DeviceEventListener extends EventListener { //
|
|
|
private static final String NODE = "node";
|
|
|
|
|
|
//实时数据
|
|
|
- Map<String, Object> mRealtimeData = new ConcurrentHashMap<>();
|
|
|
+ private Map<String, Object> mRealtimeData = new ConcurrentHashMap<>();
|
|
|
|
|
|
//实时状态
|
|
|
- Map<String, Object> mRealtimeStatus = new ConcurrentHashMap<>();
|
|
|
+ private Map<String, Object> mRealtimeStatus = new ConcurrentHashMap<>();
|
|
|
|
|
|
private AtomicDouble speed1 = new AtomicDouble(0);
|
|
|
|
|
|
private AtomicDouble speed2 = new AtomicDouble(0);
|
|
|
|
|
|
//标准流速
|
|
|
- private AtomicDouble STANDARD_SPEED = new AtomicDouble(0);
|
|
|
+ private String STANDARD_SPEED = "";
|
|
|
|
|
|
//标准压差阈值
|
|
|
private AtomicDouble STANDARD_PRESSURE_DIFF = new AtomicDouble(0);
|
|
|
|
|
|
//标准出铁时间
|
|
|
- private AtomicDouble STANDARD_IRON_TIME = new AtomicDouble(0);
|
|
|
+ private String STANDARD_IRON_TIME = "";
|
|
|
|
|
|
//标准温差阈值
|
|
|
- private AtomicInteger STANDARD_TEMP_DIFF = new AtomicInteger(0);
|
|
|
+ private String STANDARD_TEMP = "";
|
|
|
|
|
|
//标准开口耗时
|
|
|
private AtomicDouble STANDARD_OPEN_HOUR = new AtomicDouble(0);
|
|
|
|
|
|
- private AtomicDouble STANDARD_IRON_WEIGHT = new AtomicDouble(0);
|
|
|
+ //标注出铁量
|
|
|
+ private String STANDARD_IRON_WEIGHT = "";
|
|
|
|
|
|
|
|
|
//实时温度最大值
|
|
|
- private AtomicDouble tempMax = new AtomicDouble(0);
|
|
|
+ private AtomicDouble rtTempMax = new AtomicDouble(0);
|
|
|
|
|
|
//实时温度最小值
|
|
|
- private AtomicDouble tempMin = new AtomicDouble(0);
|
|
|
+ private AtomicDouble rtTempMin = new AtomicDouble(0);
|
|
|
|
|
|
private String SERVER_URL = "";
|
|
|
|
|
@@ -339,28 +345,35 @@ public class DeviceEventListener extends EventListener { //
|
|
|
if (ObjectUtils.isNotEmpty(mIronParams)) {
|
|
|
for (TIronParam mIronParam : mIronParams) {
|
|
|
if (Objects.equals(mIronParam.getParamName(), ParamsConstants.iron_speed)) {
|
|
|
- STANDARD_SPEED = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
|
|
|
+ STANDARD_SPEED = mIronParam.getParamValue();
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.pressure_diff_value)) {
|
|
|
STANDARD_PRESSURE_DIFF = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.iron_time)) {
|
|
|
- STANDARD_IRON_TIME = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
|
|
|
+ STANDARD_IRON_TIME = mIronParam.getParamValue();
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.server_url)) {
|
|
|
SERVER_URL = mIronParam.getParamValue();
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.ironwater_temp)) {
|
|
|
- STANDARD_TEMP_DIFF = new AtomicInteger(Integer.parseInt(mIronParam.getParamValue()));
|
|
|
+ STANDARD_TEMP = mIronParam.getParamValue();
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.open_hour)) {
|
|
|
STANDARD_OPEN_HOUR = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
|
|
|
} else if (Objects.equals(mIronParam.getParamName(), ParamsConstants.iron_weight)) {
|
|
|
- STANDARD_IRON_WEIGHT = new AtomicDouble(Double.parseDouble(mIronParam.getParamValue()));
|
|
|
+ STANDARD_IRON_WEIGHT = mIronParam.getParamValue();
|
|
|
}
|
|
|
-
|
|
|
- mContext.setVariable(ExpressionConstants.stdSpeed, STANDARD_SPEED.get());
|
|
|
+// mContext.setVariable(ExpressionConstants.stdSpeed, STANDARD_SPEED.get());
|
|
|
+ mContext.setVariable(ExpressionConstants.stdSpeedMin, Double.parseDouble(STANDARD_SPEED.split("-")[0]));
|
|
|
+ mContext.setVariable(ExpressionConstants.stdSpeedMax, Double.parseDouble(STANDARD_SPEED.split("-")[1]));
|
|
|
mContext.setVariable(ExpressionConstants.stdPressureDiff, STANDARD_PRESSURE_DIFF.get());
|
|
|
- mContext.setVariable(ExpressionConstants.stdIronTime, STANDARD_IRON_TIME.get());
|
|
|
+// mContext.setVariable(ExpressionConstants.stdIronTime, STANDARD_IRON_TIME.get());
|
|
|
+ mContext.setVariable(ExpressionConstants.stdIronTimeMin, Double.parseDouble(STANDARD_IRON_TIME.split("-")[0]));
|
|
|
+ mContext.setVariable(ExpressionConstants.stdIronTimeMax, Double.parseDouble(STANDARD_IRON_TIME.split("-")[1]));
|
|
|
mContext.setVariable(ExpressionConstants.stdServerUrl, SERVER_URL);
|
|
|
- mContext.setVariable(ExpressionConstants.stdTempDiff, STANDARD_TEMP_DIFF);
|
|
|
+// mContext.setVariable(ExpressionConstants.stdTemp, STANDARD_TEMP_DIFF);
|
|
|
+ mContext.setVariable(ExpressionConstants.stdTempMin, Double.parseDouble(STANDARD_TEMP.split("-")[0]));
|
|
|
+ mContext.setVariable(ExpressionConstants.stdTempMax, Double.parseDouble(STANDARD_TEMP.split("-")[1]));
|
|
|
mContext.setVariable(ExpressionConstants.stdOpenHour, STANDARD_OPEN_HOUR);
|
|
|
- mContext.setVariable(ExpressionConstants.stdIronWeight, STANDARD_IRON_WEIGHT);
|
|
|
+// mContext.setVariable(ExpressionConstants.stdIronWeight, STANDARD_IRON_WEIGHT);
|
|
|
+ mContext.setVariable(ExpressionConstants.stdIronWeightMin, Double.parseDouble(STANDARD_IRON_WEIGHT.split("-")[0]));
|
|
|
+ mContext.setVariable(ExpressionConstants.stdIronWeightMax, Double.parseDouble(STANDARD_IRON_WEIGHT.split("-")[1]));
|
|
|
}
|
|
|
log.info("STANDARD_SPEED: {},PRESSURE_DIFF_VALUE:{}", STANDARD_SPEED, STANDARD_PRESSURE_DIFF);
|
|
|
log.info("IRON_TIME: {},SERVER_URL:{}", STANDARD_IRON_TIME, SERVER_URL);
|
|
@@ -422,11 +435,38 @@ public class DeviceEventListener extends EventListener { //
|
|
|
|
|
|
//异步保存OPC数据
|
|
|
taskExecutor.submit(() -> {
|
|
|
- if (ObjectUtils.isNotEmpty(mTIronData)) {
|
|
|
- //关联实时出铁信息
|
|
|
- opcData.setIronDataId(mTIronData.getId());
|
|
|
+ if (opcData.getPointName().contains(SubscribeTagConstants.TAG_TAPHOLE1_STATUS(opcData.getServerType()))) {
|
|
|
+ double currentVal = Double.parseDouble(opcData.getData().toString());
|
|
|
+ if (currentVal > 0) {
|
|
|
+ //开始出铁
|
|
|
+ mTIronData = new TIronData();
|
|
|
+ mTIronData.setId(ToolUtils.makeUUID());
|
|
|
+ mTIronData.setIronStarttime(LocalDateUtils.formatDate(opcData.getSourceTime()));
|
|
|
+ ironDataService.saveOrUpdate(mTIronData);
|
|
|
+ opcData.setIronDataId(mTIronData.getId());
|
|
|
+ opcDataService.save(opcData);
|
|
|
+ } else if (currentVal <= 0) {
|
|
|
+ //结束出铁
|
|
|
+ if (null != mTIronData) {
|
|
|
+ mTIronData.setIronCosttime(getIronElapsedMinute());
|
|
|
+ mTIronData.setIronWeight(mTotalWeight.doubleValue());
|
|
|
+ mTIronData.setIronEndtime(LocalDateUtils.formatDate(opcData.getSourceTime()));
|
|
|
+ ironDataService.saveOrUpdate(mTIronData);
|
|
|
+ opcData.setIronDataId(mTIronData.getId());
|
|
|
+ opcDataService.save(opcData);
|
|
|
+ //置空,防止和录入的数据干扰到出铁周期内数据
|
|
|
+ mTIronData = null;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (ObjectUtils.isNotEmpty(mTIronData)) {
|
|
|
+ //关联实时出铁信息
|
|
|
+ opcData.setIronDataId(mTIronData.getId());
|
|
|
+ }
|
|
|
+ opcDataService.save(opcData);
|
|
|
}
|
|
|
- opcDataService.save(opcData);
|
|
|
+
|
|
|
+
|
|
|
});
|
|
|
//出铁操作
|
|
|
taskExecutor.submit(() -> operate(opcData));
|
|
@@ -560,10 +600,10 @@ public class DeviceEventListener extends EventListener { //
|
|
|
* 3. 清空出铁总量
|
|
|
*/
|
|
|
private void taphole1Start() {
|
|
|
- mTIronData = new TIronData();
|
|
|
- mTIronData.setId(ToolUtils.makeUUID());
|
|
|
- mTIronData.setIronStarttime(LocalDateUtils.formatDate(new Date()));
|
|
|
- ironDataService.saveOrUpdate(mTIronData);
|
|
|
+// mTIronData = new TIronData();
|
|
|
+// mTIronData.setId(ToolUtils.makeUUID());
|
|
|
+// mTIronData.setIronStarttime(LocalDateUtils.formatDate(new Date()));
|
|
|
+// ironDataService.saveOrUpdate(mTIronData);
|
|
|
|
|
|
synchronized (scheduledTaskManager) {
|
|
|
//清空出铁总量
|
|
@@ -603,14 +643,14 @@ public class DeviceEventListener extends EventListener { //
|
|
|
|
|
|
log.info("1号车受铁速度:{}", speed1.get());
|
|
|
log.info("2号车受铁速度:{}", speed2.get());
|
|
|
- log.info("标准受铁速度:{},", STANDARD_SPEED.get());
|
|
|
+ log.info("标准受铁速度:{},", STANDARD_SPEED);
|
|
|
log.info("1号铁口出铁状态:{}", ironLoading1.get());
|
|
|
log.info("2号铁口出铁状态:{}", ironLoading2.get());
|
|
|
log.info("3号铁口出铁状态:{}", ironLoading3.get());
|
|
|
log.info("4号铁口出铁状态:{}", ironLoading4.get());
|
|
|
|
|
|
if (result1) {
|
|
|
- //流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
|
|
|
+ //1.流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
|
|
|
PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口", closureAlarmUrl));
|
|
|
taskExecutor.submit(() -> {
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过快,请将当前铁口堵口").build());
|
|
@@ -622,7 +662,7 @@ public class DeviceEventListener extends EventListener { //
|
|
|
Expression expression2 = mParser.parseExpression(modelExpression2);
|
|
|
boolean result2 = expression2.getValue(context, Boolean.class);
|
|
|
if (result2) {
|
|
|
- //若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
|
|
|
+ //2.若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
|
|
|
PushData.send2Warn(WarnData.warnClose("流速过小,请将当前铁口堵口", closureAlarmUrl));
|
|
|
taskExecutor.submit(() -> {
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过小,请将当前铁口堵口").build());
|
|
@@ -635,6 +675,7 @@ public class DeviceEventListener extends EventListener { //
|
|
|
boolean result3 = expression3.getValue(context, Boolean.class);
|
|
|
|
|
|
if (result3) {
|
|
|
+ //3.流速过小且其他铁口均未出铁,请先将其它铁口打开,再进行堵口
|
|
|
PushData.send2Warn(WarnData.warnClose("流速过小且其他铁口均未出铁,请先将其它铁口打开,再进行堵口", closureAlarmUrl));
|
|
|
taskExecutor.submit(() -> {
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("4").exceptionDesc("流速过小且其他铁口均未出铁,请先将其它铁口打开,再进行堵口").build());
|
|
@@ -681,7 +722,7 @@ public class DeviceEventListener extends EventListener { //
|
|
|
if ("1".equals(scheduleTappingTimeoutWarn.getStatus())) {
|
|
|
scheduledTaskManager.addTask(scheduleTappingTimeoutWarn.getName(), scheduleTappingTimeoutWarn.getDelay(), scheduleTappingTimeoutWarn.getPeriod(), TimeUnit.SECONDS, () -> {
|
|
|
// log.info("已出铁时间(秒):{},标准出铁时间(秒):{}", seconds, STANDARD_IRON_TIME.get());
|
|
|
- if (getIronElapsedMinute() > STANDARD_IRON_TIME.get()) {
|
|
|
+ if (!RangeUtils.isInRange(STANDARD_IRON_TIME, getIronElapsedMinute())) {
|
|
|
PushData.send2Warn(WarnData.warnTappingTimeout("出铁时间超时", tappingTimeoutAlramUrl));
|
|
|
taskExecutor.submit(() -> {
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType("2").exceptionDesc("出铁时间超过设定时间").build());
|
|
@@ -735,6 +776,8 @@ public class DeviceEventListener extends EventListener { //
|
|
|
mTIronData.setIronWeight(mTotalWeight.doubleValue());
|
|
|
mTIronData.setIronEndtime(LocalDateUtils.formatDate(new Date()));
|
|
|
ironDataService.saveOrUpdate(mTIronData);
|
|
|
+ //置空,防止和录入的数据干扰到周期出铁数据
|
|
|
+ mTIronData = null;
|
|
|
}
|
|
|
|
|
|
synchronized (scheduledTaskManager) {
|
|
@@ -879,16 +922,16 @@ public class DeviceEventListener extends EventListener { //
|
|
|
|
|
|
double tempNow = Double.parseDouble(opcData.getData().toString());
|
|
|
|
|
|
- if (tempMax.get() <= 0 || tempNow > tempMax.get()) {
|
|
|
- tempMax.set(tempNow);
|
|
|
+ if (rtTempMax.get() <= 0 || tempNow > rtTempMax.get()) {
|
|
|
+ rtTempMax.set(tempNow);
|
|
|
}
|
|
|
|
|
|
- if (tempMin.get() <= 0 || tempNow < tempMin.get()) {
|
|
|
- tempMin.set(tempNow);
|
|
|
+ if (rtTempMin.get() <= 0 || tempNow < rtTempMin.get()) {
|
|
|
+ rtTempMin.set(tempNow);
|
|
|
}
|
|
|
|
|
|
mContext.setVariable(ExpressionConstants.rtIronTemp, opcData.getData());
|
|
|
- mContext.setVariable(ExpressionConstants.rtIronTempDiff, tempMax.get() - tempMin.get());
|
|
|
+ mContext.setVariable(ExpressionConstants.rtIronTempDiff, rtTempMax.get() - rtTempMin.get());
|
|
|
|
|
|
} else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_CAR11(opcData.getServerType())) || opcData.getPointName().contains(SubscribeTagConstants.TAG_CAR12(opcData.getServerType()))) {
|
|
|
//1TH-1号车受铁速度
|
|
@@ -972,7 +1015,7 @@ public class DeviceEventListener extends EventListener { //
|
|
|
log.info("准备调用taphole1End()");
|
|
|
taphole1End();
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
mContext.setVariable(ExpressionConstants.rtIron01State, currentVal);
|
|
|
} else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_TAPHOLE2_STATUS(opcData.getServerType()))) {
|
|
|
ironLoading2.set(Double.parseDouble(opcData.getData().toString()));
|
|
@@ -1010,11 +1053,19 @@ public class DeviceEventListener extends EventListener { //
|
|
|
ironWeight12Max = BigDecimal.ZERO;
|
|
|
ironWeight12Current = BigDecimal.ZERO;
|
|
|
}
|
|
|
- } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_FLUSH_STATUS(opcData.getServerType()))) {
|
|
|
+ } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_CHUZ_STATUS(opcData.getServerType()))) {
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
|
realtimeData.setValue(opcData.getData());
|
|
|
+ realtimeData.setDesc("出渣状态");
|
|
|
+ mRealtimeStatus.put(CHUZ_STATUS, realtimeData);
|
|
|
+ } else if (opcData.getPointName().contains(SubscribeTagConstants.TAG_SZB_STATUS(opcData.getServerType()))
|
|
|
+ || opcData.getPointName().contains(SubscribeTagConstants.TAG_CZF_STATUS(opcData.getServerType()))
|
|
|
+ ) {
|
|
|
+ RealtimeData realtimeData = new RealtimeData();
|
|
|
+ Boolean value = mParser.parseExpression("#szxt999 > 0 and #szb999 > 0").getValue(mContext, Boolean.class);
|
|
|
+ realtimeData.setValue(Boolean.TRUE.equals(value) ?"1":"0");
|
|
|
realtimeData.setDesc("冲渣状态");
|
|
|
- mRealtimeStatus.put(FLUSH_STATUS, realtimeData);
|
|
|
+ mRealtimeStatus.put(CHONGZ_STATUS, realtimeData);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -1067,8 +1118,6 @@ public class DeviceEventListener extends EventListener { //
|
|
|
mRealtimeData.put(IRON_WEIGHT, ironWeight);
|
|
|
mContext.setVariable(ExpressionConstants.rtIronWeight, mTotalWeight.doubleValue());
|
|
|
|
|
|
- //log.info("实时数据:{}", mRealtimeData);
|
|
|
- //log.info("实时状态:{}", mRealtimeStatus);
|
|
|
//推送实时数据
|
|
|
PushData.send2RealtimeData(mRealtimeData);
|
|
|
//推送实时状态
|
|
@@ -1282,25 +1331,25 @@ public class DeviceEventListener extends EventListener { //
|
|
|
}
|
|
|
|
|
|
for (IronStepVO child : stepDTO.getChilds()) {
|
|
|
- if (Objects.equals(child.getIdentifier(), CAR_STATUS)) {
|
|
|
+ if (Objects.equals(child.getIdentifier(), YLGC_STATUS)) {
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
|
realtimeData.setValue(child.getPassResult());
|
|
|
realtimeData.setDesc("鱼雷罐车到位状态");
|
|
|
- mRealtimeStatus.put(CAR_STATUS, realtimeData);
|
|
|
+ mRealtimeStatus.put(YLGC_STATUS, realtimeData);
|
|
|
}
|
|
|
|
|
|
- if (Objects.equals(child.getIdentifier(), GUN_STATUS)) {
|
|
|
- RealtimeData realtimeData = new RealtimeData();
|
|
|
- realtimeData.setValue(child.getPassResult());
|
|
|
- realtimeData.setDesc("拔炮状态");
|
|
|
- mRealtimeStatus.put(GUN_STATUS, realtimeData);
|
|
|
- }
|
|
|
- if (Objects.equals(child.getIdentifier(), MOUTH_STATUS)) {
|
|
|
- RealtimeData realtimeData = new RealtimeData();
|
|
|
- realtimeData.setValue(child.getPassResult());
|
|
|
- realtimeData.setDesc("摆动溜嘴状态");
|
|
|
- mRealtimeStatus.put(MOUTH_STATUS, realtimeData);
|
|
|
- }
|
|
|
+// if (Objects.equals(child.getIdentifier(), NPJ_STATUS)) {
|
|
|
+// RealtimeData realtimeData = new RealtimeData();
|
|
|
+// realtimeData.setValue(child.getPassResult());
|
|
|
+// realtimeData.setDesc("拔炮状态");
|
|
|
+// mRealtimeStatus.put(NPJ_STATUS, realtimeData);
|
|
|
+// }
|
|
|
+// if (Objects.equals(child.getIdentifier(), BDLZ_STATUS)) {
|
|
|
+// RealtimeData realtimeData = new RealtimeData();
|
|
|
+// realtimeData.setValue(child.getPassResult());
|
|
|
+// realtimeData.setDesc("摆动溜嘴状态");
|
|
|
+// mRealtimeStatus.put(BDLZ_STATUS, realtimeData);
|
|
|
+// }
|
|
|
PushData.send2RealtimeStatus(mRealtimeStatus);
|
|
|
}
|
|
|
}
|