|
@@ -23,11 +23,14 @@ import com.sckj.opc.entity.OPCData;
|
|
|
import com.sckj.opc.opcua.L2DataServiceImpl;
|
|
|
import com.sckj.opc.service.OPCDataServiceImpl;
|
|
|
import com.sckj.opc.utils.CustomUtil;
|
|
|
+import com.sckj.warn.entity.TAudio;
|
|
|
import com.sckj.warn.service.ITExceptionLogService;
|
|
|
+import com.sckj.warn.service.impl.TAudioServiceImpl;
|
|
|
import com.sckj.warn.validate.TExceptionLogCreateValidate;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.boot.autoconfigure.web.ServerProperties;
|
|
|
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
|
|
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
|
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
|
|
@@ -51,7 +54,7 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Component
|
|
|
@Slf4j
|
|
|
-public class DeviceEventListener extends EventListener {
|
|
|
+public class DeviceEventListener extends EventListener { // implements ApplicationListener<ApplicationStartedEvent>
|
|
|
|
|
|
//步骤数据
|
|
|
@Resource
|
|
@@ -90,6 +93,9 @@ public class DeviceEventListener extends EventListener {
|
|
|
@Resource
|
|
|
ITExceptionLogService exceptionLogService;
|
|
|
|
|
|
+ @Resource
|
|
|
+ TAudioServiceImpl audioService;
|
|
|
+
|
|
|
//1号出铁状态标记
|
|
|
private static final String TAG_TAPHOLE1_STATUS = "AOD25606.PV";
|
|
|
//2号出铁状态标记
|
|
@@ -180,6 +186,15 @@ public class DeviceEventListener extends EventListener {
|
|
|
//出铁参数
|
|
|
private Map<String, TIronParam> mIronParamMap;
|
|
|
|
|
|
+ //出铁参数
|
|
|
+ private Map<String, TAudio> mIronAlarmMap;
|
|
|
+
|
|
|
+ private String alarmUrlOpen;
|
|
|
+
|
|
|
+ private String alarmUrlClose;
|
|
|
+
|
|
|
+ private String alramUrlTapping;
|
|
|
+
|
|
|
//节点标记
|
|
|
private static final String NODE = "node";
|
|
|
|
|
@@ -213,6 +228,64 @@ public class DeviceEventListener extends EventListener {
|
|
|
//redis保存最多数量数据
|
|
|
private static final int MAX_REDIS_COUNT = 50;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private ServerProperties serverProperties;
|
|
|
+
|
|
|
+ private String getSchema() {
|
|
|
+ if (serverProperties.getSsl() != null && serverProperties.getSsl().isEnabled()) {
|
|
|
+ return "https";
|
|
|
+ }
|
|
|
+ return "http";
|
|
|
+ }
|
|
|
+
|
|
|
+// @Override
|
|
|
+// public void onApplicationEvent(ApplicationStartedEvent event) {
|
|
|
+// try {
|
|
|
+// // 获取服务器IP地址
|
|
|
+// InetAddress localhost = InetAddress.getLocalHost();
|
|
|
+// String ip = localhost.getHostAddress();
|
|
|
+//
|
|
|
+// String host = localhost.getHostName();
|
|
|
+//
|
|
|
+// // 获取服务器端口号
|
|
|
+// int port = serverProperties.getPort() != null ? serverProperties.getPort() : 8080;
|
|
|
+//
|
|
|
+// // 获取 schema
|
|
|
+// String schema = getSchema();
|
|
|
+// // 获取服务器端口号
|
|
|
+
|
|
|
+ /// / int port = event.getApplicationContext()
|
|
|
+ /// / .getEnvironment()
|
|
|
+ /// / .getProperty("server.port", Integer.class, 8080);
|
|
|
+//
|
|
|
+// System.out.println("Server IP: " + ip);
|
|
|
+// System.out.println("Server Port: " + port);
|
|
|
+// System.out.println("Server Schema: " + schema);
|
|
|
+//
|
|
|
+// //预警的铃声
|
|
|
+// List<TAudio> audioList = audioService.lambdaQuery().eq(TAudio::getDelFlag, "1").eq(TAudio::getStatus, "1").list();
|
|
|
+// if (ObjectUtils.isNotEmpty(audioList)) {
|
|
|
+// mIronAlarmMap = audioList.stream()
|
|
|
+// .collect(Collectors.toMap(TAudio::getExceptionType, ironAudio -> ironAudio, (existing, replacement) -> existing));
|
|
|
+//
|
|
|
+// String uploadUrl = GlobalConfig.publicPrefix;
|
|
|
+//
|
|
|
+// uploadUrl = schema + "://" + host + ":" + port + "/" + uploadUrl + "/";
|
|
|
+//
|
|
|
+// log.info("uploadUrl:{}", uploadUrl);
|
|
|
+//
|
|
|
+// alarmUrlOpen = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_OPEN_WARN).getPath());
|
|
|
+// alarmUrlClose = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_CLOSE_WARN).getPath());
|
|
|
+// alramUrlTapping = UrlUtils.toAbsoluteUrl(mIronAlarmMap.get(TASKNAME_TAPPING_WARN).getPath());
|
|
|
+//
|
|
|
+// log.info("alarmUrlOpen:{}", alarmUrlOpen);
|
|
|
+// log.info("alarmUrlClose:{}", alarmUrlClose);
|
|
|
+// log.info("alramUrlTapping:{}", alramUrlTapping);
|
|
|
+// }
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
@PostConstruct
|
|
|
public void init() {
|
|
|
//程序启动后隔断时间启动订阅
|
|
@@ -223,14 +296,16 @@ public class DeviceEventListener extends EventListener {
|
|
|
});
|
|
|
|
|
|
mSteps = ironStepService.getTreeSteps();
|
|
|
- List<TIronParam> mIronParams = ironParamService.lambdaQuery().eq(TIronParam::getStatus, "1").eq(TIronParam::getParamType, "iron_judge").orderByAsc(TIronParam::getSort).list();
|
|
|
+ List<TIronParam> mIronParams = ironParamService.lambdaQuery().eq(TIronParam::getStatus, "1").in(TIronParam::getParamType, "iron_judge", "iron_judge2").orderByAsc(TIronParam::getSort).list();
|
|
|
if (ObjectUtils.isNotEmpty(mIronParams)) {
|
|
|
mIronParamMap = mIronParams.stream()
|
|
|
.collect(Collectors.toMap(TIronParam::getParamName, ironParam -> ironParam, (existing, replacement) -> existing));
|
|
|
STANDARD_SPEED = new BigDecimal(mIronParamMap.get("iron_speed").getParamValue());
|
|
|
PRESSURE_DIFF_VALUE = new BigDecimal(mIronParamMap.get("pressure_diff_value").getParamValue());
|
|
|
+ log.info("STANDARD_SPEED: {},PRESSURE_DIFF_VALUE:{}", STANDARD_SPEED, PRESSURE_DIFF_VALUE);
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/***
|
|
@@ -266,6 +341,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
taskExecutor.submit(() -> {
|
|
|
tl2DataService.saveOrUpdate(tl2Data);
|
|
|
});
|
|
|
+
|
|
|
//将L2实时数据保存到Redis
|
|
|
taskExecutor.submit(() -> {
|
|
|
RedisUtils.addFixedElement(IRON_ELEMENT, l2Data, MAX_REDIS_COUNT);
|
|
@@ -355,7 +431,6 @@ public class DeviceEventListener extends EventListener {
|
|
|
mTotalDry = BigDecimal.ZERO;
|
|
|
}
|
|
|
|
|
|
- RedisUtils.addFixedElement(IRON_TOTAL_DRY, mTotalDry, MAX_REDIS_COUNT);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -409,15 +484,15 @@ public class DeviceEventListener extends EventListener {
|
|
|
log.info("堵口预警:{},speed1:{},speed2:{},STANDARD_SPEED:{}", speed1, speed2, TASKNAME_CLOSE_WARN);
|
|
|
if (speed1.compareTo(STANDARD_SPEED) > 0 || speed2.compareTo(STANDARD_SPEED) > 0) {
|
|
|
//流速过大可能是由于铁口深度不足或发生跑大流问题,则提示将当前铁口堵口
|
|
|
- PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口"));
|
|
|
+ PushData.send2Warn(WarnData.warnClose("流速过快,请将当前铁口堵口", alarmUrlClose));
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType(4).exceptionDesc("流速过快,请将当前铁口堵口").build());
|
|
|
} else if ((speed1.compareTo(STANDARD_SPEED) < 0 || speed2.compareTo(STANDARD_SPEED) < 0) && (ironLoading2.get() || ironLoading3.get() || ironLoading4.get())) {
|
|
|
//若流速过小,但其它铁口正在出铁,则提示将当前铁口堵口
|
|
|
- PushData.send2Warn(WarnData.warnClose("流速过小,请将当前铁口堵口"));
|
|
|
+ PushData.send2Warn(WarnData.warnClose("流速过小,请将当前铁口堵口", alarmUrlClose));
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType(4).exceptionDesc("流速过小,请将当前铁口堵口").build());
|
|
|
} else if ((speed1.compareTo(STANDARD_SPEED) < 0 || speed2.compareTo(STANDARD_SPEED) < 0) && (!ironLoading2.get() && !ironLoading3.get() && !ironLoading4.get())) {
|
|
|
//若流速过小且其他铁口均未出铁,则提示先将其它铁口打开,再进行堵口
|
|
|
- PushData.send2Warn(WarnData.warnClose("请先打开其它铁口,再堵口"));
|
|
|
+ PushData.send2Warn(WarnData.warnClose("请先打开其它铁口,再堵口", alarmUrlClose));
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType(4).exceptionDesc("请先打开其它铁口,再堵口").build());
|
|
|
}
|
|
|
});
|
|
@@ -442,7 +517,14 @@ public class DeviceEventListener extends EventListener {
|
|
|
String elapsedTime = String.format("%02d:%02d:%02d", hours, minutes, seconds);
|
|
|
log.info("elapsedTime:{}", elapsedTime);
|
|
|
RedisUtils.addFixedElement(TASKNAME_TAPPING_CONSTTIME, elapsedTime, MAX_REDIS_COUNT);
|
|
|
- PushData.send2CostTime(elapsedTime);
|
|
|
+
|
|
|
+
|
|
|
+ RealtimeData realtimeData = new RealtimeData();
|
|
|
+ realtimeData.setValue(elapsedTime);
|
|
|
+ realtimeData.setDesc("出铁计时");
|
|
|
+
|
|
|
+
|
|
|
+ PushData.send2CostTime(realtimeData);
|
|
|
mSecondsElapsed.incrementAndGet();
|
|
|
});
|
|
|
|
|
@@ -473,7 +555,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
//平均温度
|
|
|
String mudWeight = fixedLatestElement.getAvgTemp();
|
|
|
//出铁时间
|
|
|
- String ironCosttime = fixedLatestElement.getIronCosttime();
|
|
|
+ //String ironCosttime = fixedLatestElement.getI
|
|
|
//实际出铁量
|
|
|
String ironWeight = fixedLatestElement.getIronWeight();
|
|
|
|
|
@@ -515,9 +597,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
realtimeData.setDesc("铁水温度");
|
|
|
realtimeData.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
|
|
|
mRealtimeData.put(IRON_TEMP, realtimeData);
|
|
|
- //redis添加数据
|
|
|
- RedisUtils.addFixedElement(IRON_TEMP, realtimeData, MAX_REDIS_COUNT);
|
|
|
- PushData.send2TrendIronTemp(RedisUtils.getFixedElement(IRON_TEMP, MAX_REDIS_COUNT));
|
|
|
+
|
|
|
} else if (opcData.getPointName().contains(TAG_CAR11) || opcData.getPointName().contains(TAG_CAR12)) {
|
|
|
// 1TH-1号车受铁速度
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
@@ -552,8 +632,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
&& ObjectUtils.isNotEmpty(speeds[1]) && ObjectUtils.isNotEmpty(speeds[1].getValue())
|
|
|
) {
|
|
|
ironSpeed.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
|
|
|
- RedisUtils.addFixedElement(IRON_SPEED, ironSpeed, MAX_REDIS_COUNT);
|
|
|
- PushData.send2TrendIronSpeed(RedisUtils.getFixedElement(IRON_SPEED, MAX_REDIS_COUNT));
|
|
|
+
|
|
|
}
|
|
|
} else if (opcData.getPointName().contains(TAG_TAPHOLE1_STATUS)) {
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
@@ -596,8 +675,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
// log.info(">>>>>>>>>>>>>{}:{},total:{}", opcData.getPointName(), opcData.getData(), totalWeight.toPlainString());
|
|
|
|
|
|
ironWeight.setTime(LocalDateUtils.formatDate(opcData.getServerTime()));
|
|
|
- RedisUtils.addFixedElement(IRON_WEIGHT, ironWeight, MAX_REDIS_COUNT);
|
|
|
- PushData.send2TrendIronWeight(RedisUtils.getFixedElement(IRON_WEIGHT, MAX_REDIS_COUNT));
|
|
|
+
|
|
|
|
|
|
} else if (opcData.getPointName().contains(FLUSH_STATUS)) {
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
@@ -613,7 +691,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
scheduledTaskManager.addTask(TASKNAME_TAPPING_WARN, 0, 3, TimeUnit.SECONDS, () -> {
|
|
|
//堵口预警
|
|
|
log.info("出铁预警:{}", TASKNAME_TAPPING_WARN);
|
|
|
- PushData.send2Warn(WarnData.warnTapping("压差超过阈值,请出铁"));
|
|
|
+ PushData.send2Warn(WarnData.warnTapping("压差超过阈值,请出铁", alramUrlTapping));
|
|
|
exceptionLogService.add(TExceptionLogCreateValidate.builder().exceptionType(4).exceptionDesc("压差超过阈值,请出铁").build());
|
|
|
});
|
|
|
} else {
|
|
@@ -623,11 +701,13 @@ public class DeviceEventListener extends EventListener {
|
|
|
|
|
|
}
|
|
|
|
|
|
- if (ObjectUtils.isNotEmpty(l2Data)) {
|
|
|
+ L2Data fixedLatestElement = (L2Data) RedisUtils.getFixedLatestElement(IRON_ELEMENT);
|
|
|
+
|
|
|
+ if (ObjectUtils.isNotEmpty(fixedLatestElement)) {
|
|
|
//铁水成分
|
|
|
//预计出铁结束时间
|
|
|
- String elementSi = l2Data.getElementSi();
|
|
|
- String elementS = l2Data.getElementS();
|
|
|
+ String elementSi = fixedLatestElement.getElementSi();
|
|
|
+ String elementS = fixedLatestElement.getElementS();
|
|
|
|
|
|
RealtimeData realtimeData = new RealtimeData();
|
|
|
realtimeData.setValue(elementSi);
|
|
@@ -796,7 +876,6 @@ public class DeviceEventListener extends EventListener {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
log.info("--->userId : {}", userId);
|
|
|
for (IronStepVO stepDTO : mSteps) {
|
|
|
for (IronStepVO child : stepDTO.getChilds()) {
|
|
@@ -840,7 +919,7 @@ public class DeviceEventListener extends EventListener {
|
|
|
stepDTO.setData(message.getData());
|
|
|
|
|
|
//这里手动记录时间
|
|
|
- log.info("userId:{},stepId:{},identifier:{},data:{},pass:{}", userId, message.getStepId(), message.getIdentifier(), message.getData(), message.isPass());
|
|
|
+ log.info("userId:{},stepId:{},identifier:{},data:{},pass:{}", userId, message.getStepId(), message.getIdentifier(), message.getData());
|
|
|
|
|
|
return true;
|
|
|
}
|