Commit 8c19f16b LN

增加设备上线离线消息

1 个父辈 ba3edcd9
...@@ -3,6 +3,7 @@ package com.neotel.smfcore.common.init; ...@@ -3,6 +3,7 @@ package com.neotel.smfcore.common.init;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager; import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
...@@ -58,6 +59,9 @@ public class MainTimer { ...@@ -58,6 +59,9 @@ public class MainTimer {
private void timerTask(){ private void timerTask(){
try{ try{
liteOrderCache.runTimer(); liteOrderCache.runTimer();
//设备状态判断
DevicesStatusUtil.runTimer();
}catch (Exception e){ }catch (Exception e){
log.error("定时器执行出错",e); log.error("定时器执行出错",e);
}finally { }finally {
......
...@@ -98,6 +98,11 @@ public class StatusBean { ...@@ -98,6 +98,11 @@ public class StatusBean {
private long lastSaveTime = System.currentTimeMillis(); private long lastSaveTime = System.currentTimeMillis();
/** /**
* 离线时间,用于判断是否已经处理过离线
*/
private long offlineTime=-1;
/**
* 获取已经结束(缓存中存在,但新的报警列表不存在)的报警列表,同时将新的报警加入到缓存中 * 获取已经结束(缓存中存在,但新的报警列表不存在)的报警列表,同时将新的报警加入到缓存中
*/ */
public List<AlarmInfo> getEndAlarmList(String storageName, List<AlarmInfo> newAlarmList){ public List<AlarmInfo> getEndAlarmList(String storageName, List<AlarmInfo> newAlarmList){
......
...@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.device.enums.OP; ...@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.handler.IDeviceHandler; import com.neotel.smfcore.core.device.handler.IDeviceHandler;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR; import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.service.po.LiteOrder; import com.neotel.smfcore.core.order.service.po.LiteOrder;
...@@ -706,14 +707,25 @@ public class BaseDeviceHandler implements IDeviceHandler { ...@@ -706,14 +707,25 @@ public class BaseDeviceHandler implements IDeviceHandler {
*/ */
protected void handleMsg(StatusBean statusBean) { protected void handleMsg(StatusBean statusBean) {
try { try {
//判断是否刚刚上线
StatusBean bean = DevicesStatusUtil.getStatusBean(statusBean.getCid());
if (bean == null || bean.getBoxStatus() == null) {
DeviceMessageUtil.addOnlineMessage(statusBean.getCid(), "",statusBean.getClientIp());
DevicesStatusUtil.updateClientMsg(statusBean.getCid(), "", "", "", null);
} else if (bean.timeOut() && (bean.getOfflineTime() > -1)) {
DeviceMessageUtil.addOnlineMessage(statusBean.getCid(), "",statusBean.getClientIp());
DevicesStatusUtil.updateClientMsg(statusBean.getCid(), "", "", "", null);
}
//展示到界面 //展示到界面
String msg = statusBean.getMsg(); String msg = statusBean.getMsg();
String msgEn = statusBean.getMsgEn(); String msgEn = statusBean.getMsgEn();
String msgCode=statusBean.getMsgCode(); String msgCode = statusBean.getMsgCode();
if(ObjectUtil.isNotEmpty(msg)||ObjectUtil.isNotEmpty(msgCode)){ // if(ObjectUtil.isNotEmpty(msg)||ObjectUtil.isNotEmpty(msgCode)){
DevicesStatusUtil.updateClientMsg(statusBean.getCid(),msgCode, msg, msgEn,statusBean.getMsgParam()); DevicesStatusUtil.updateClientMsg(statusBean.getCid(), msgCode, msg, msgEn, statusBean.getMsgParam());
} // }
} catch (Exception e) { } catch (Exception e) {
log.error("客户端故障消息处理出错", e); log.error("客户端故障消息处理出错", e);
} }
......
...@@ -69,18 +69,18 @@ public class LanguageMsgService { ...@@ -69,18 +69,18 @@ public class LanguageMsgService {
return resourceMap; return resourceMap;
} }
public String getResourcesPath() { // public String getResourcesPath() {
String filePath = System.getProperty("user.dir"); // String filePath = System.getProperty("user.dir");
log.info("user.dir=" + filePath); // log.info("user.dir=" + filePath);
// "\\WEB-INF\\classes\\META-INF\\resources"; // // "\\WEB-INF\\classes\\META-INF\\resources";
// user.dir=C:\Program Files\Apache Software Foundation\Tomcat 9.0 //// user.dir=C:\Program Files\Apache Software Foundation\Tomcat 9.0
// C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\smf-core\WEB-INF\classes\META-INF\resources //// C:\Program Files\Apache Software Foundation\Tomcat 9.0\webapps\smf-core\WEB-INF\classes\META-INF\resources
if(filePath.toLowerCase().contains("tomcat")){ // if(filePath.toLowerCase().contains("tomcat")){
return filePath+"\\webapps\\smf-core\\WEB-INF\\classes\\META-INF\\resources"; // return filePath+"\\webapps\\smf-core\\WEB-INF\\classes\\META-INF\\resources";
}else{ // }else{
return filePath + "\\src\\main\\resources"; // return filePath + "\\src\\main\\resources";
} // }
} // }
public void autoImportCsvFile(){ public void autoImportCsvFile(){
// String filePath = getResourcesPath(); // String filePath = getResourcesPath();
......
...@@ -3,9 +3,10 @@ package com.neotel.smfcore.core.system.util; ...@@ -3,9 +3,10 @@ package com.neotel.smfcore.core.system.util;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.neotel.smfcore.core.device.bean.StatusBean; import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.message.util.DeviceMessageUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -59,6 +60,21 @@ public class DevicesStatusUtil { ...@@ -59,6 +60,21 @@ public class DevicesStatusUtil {
clientMsg = ""; clientMsg = "";
clientMsgEn = ""; clientMsgEn = "";
} }
//判断消息是否有内容
if(ObjectUtil.isNotEmpty(msgCode)||ObjectUtil.isNotEmpty(clientMsg)){
boolean newMsg=true;
//和上个消息是否一样
StatusBean msgBean=clientMsgs.get(cid);
if(msgBean!=null){
if(msgBean.getMsgCode().equals(msgCode)||msgBean.getMsg().equals(clientMsg)){
newMsg=false;
}
}
if(newMsg){
DeviceMessageUtil.addErrorMessage(cid,"",msgCode,clientMsg,msgParam);
}
}
StatusBean statusBean = new StatusBean(); StatusBean statusBean = new StatusBean();
statusBean.setMsg(clientMsg); statusBean.setMsg(clientMsg);
statusBean.setMsgEn(clientMsgEn); statusBean.setMsgEn(clientMsgEn);
...@@ -135,4 +151,24 @@ public class DevicesStatusUtil { ...@@ -135,4 +151,24 @@ public class DevicesStatusUtil {
} }
public static void runTimer() {
try {
if(statusMap==null){
return;
}
List<String> cids = new ArrayList<>(statusMap.keySet());
for (String cid :
cids) {
StatusBean bean = getStatusBean(cid);
if (bean != null) {
if (bean.getOfflineTime() == -1 && bean.timeOut()) {
bean.setOfflineTime(System.currentTimeMillis());
DeviceMessageUtil.addOfflineMessage(bean.getCid(), "");
}
}
}
} catch (Exception ex) {
log.error("设备状态定时器执行出错:", ex);
}
}
} }
...@@ -210,3 +210,16 @@ smfcore.user.createDate=\u521B\u5EFA\u65E5\u671F ...@@ -210,3 +210,16 @@ smfcore.user.createDate=\u521B\u5EFA\u65E5\u671F
smfcore.user.code=\u542F\u7528\u7801 smfcore.user.code=\u542F\u7528\u7801
smfcore.enable=\u542F\u7528 smfcore.enable=\u542F\u7528
smfcore.disabled=\u7981\u7528 smfcore.disabled=\u7981\u7528
smfcore.messages.online=\u4E0A\u7EBF
smfcore.messages.offline=\u79BB\u7EBF
smfcore.messages.device=\u8BBE\u5907
smfcore.messages.module=\u6A21\u5757
smfcore.messages.type=\u7C7B\u578B
smfcore.messages.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.messages.msg=\u5185\u5BB9
smfcorre.message.info=\u6D88\u606F
smfcorre.message.warning=\u8B66\u544A
smfcorre.message.error=\u9519\u8BEF
smfcore.messages.serverStart=\u670D\u52A1\u5668\u542F\u52A8
smfcore.message=\u6D88\u606F\u67E5\u8BE2
smfcore.inSuddenStop=\u6536\u5230\u6025\u505C\u4FE1\u53F7\uFF0C\u62A5\u8B66\u6025\u505C
\ No newline at end of file \ No newline at end of file
...@@ -210,3 +210,17 @@ smfcore.user.createDate=Create Time ...@@ -210,3 +210,17 @@ smfcore.user.createDate=Create Time
smfcore.user.code=Enable Code smfcore.user.code=Enable Code
smfcore.enable=Enable smfcore.enable=Enable
smfcore.disabled=Disable smfcore.disabled=Disable
smfcore.messages.online=Go Online
smfcore.messages.offline=Offline
smfcore.messages.device=Equipment
smfcore.messages.module=Modules
smfcore.messages.type=Type
smfcore.messages.createDate=Create Time
smfcore.messages.msg=Content
smfcorre.message.info=\u6D88\u606F
smfcorre.message.warning=Warning
smfcorre.message.error=Error
smfcore.messages.serverStart=Server start-up
smfcore.message=Message Search
smfcore.inSuddenStop=Emergency stop signal received\uFF0Calarm emergency stop
...@@ -210,3 +210,17 @@ smfcore.user.createDate=\u4F5C\u6210\u65E5 ...@@ -210,3 +210,17 @@ smfcore.user.createDate=\u4F5C\u6210\u65E5
smfcore.user.code=\u30A4\u30CD\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9 smfcore.user.code=\u30A4\u30CD\u30FC\u30D6\u30EB\u30B3\u30FC\u30C9
smfcore.enable=\u6709\u52B9\u306B\u3059\u308B smfcore.enable=\u6709\u52B9\u306B\u3059\u308B
smfcore.disabled=\u7121\u52B9\u5316 smfcore.disabled=\u7121\u52B9\u5316
smfcore.messages.online=\u30E9\u30A4\u30D6\u914D\u4FE1
smfcore.messages.offline=\u30AA\u30D5\u30E9\u30A4\u30F3
smfcore.messages.device=\u30C7\u30D0\u30A4\u30B9
smfcore.messages.module=\u30E2\u30B8\u30E5\u30FC\u30EB
smfcore.messages.type=\u30BF\u30A4\u30D7
smfcore.messages.createDate=\u4F5C\u6210\u6642\u9593
smfcore.messages.msg=\u5185\u5BB9
smfcorre.message.info=\u30CB\u30E5\u30FC\u30B9
smfcorre.message.warning=\u8B66\u544A
smfcorre.message.error=\u30A8\u30E9\u30FC
smfcore.messages.serverStart=\u30B5\u30FC\u30D0\u30FC\u306E\u8D77\u52D5
smfcore.message=\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u304A\u554F\u3044\u5408\u308F\u305B
smfcore.inSuddenStop=\u7DCA\u6025\u505C\u6B62\u4FE1\u53F7\u3092\u53D7\u4FE1\u3057\u3001\u7DCA\u6025\u505C\u6B62\u3092\u8B66\u544A\u3057\u307E\u3059
...@@ -209,4 +209,17 @@ smfcore.user.enable=\u72B6\u6001 ...@@ -209,4 +209,17 @@ smfcore.user.enable=\u72B6\u6001
smfcore.user.createDate=\u521B\u5EFA\u65E5\u671F smfcore.user.createDate=\u521B\u5EFA\u65E5\u671F
smfcore.user.code=\u542F\u7528\u7801 smfcore.user.code=\u542F\u7528\u7801
smfcore.enable=\u542F\u7528 smfcore.enable=\u542F\u7528
smfcore.disabled=\u7981\u7528
\ No newline at end of file \ No newline at end of file
smfcore.disabled=\u7981\u7528
smfcore.messages.online=\u8BBE\u5907\u4E0A\u7EBF
smfcore.messages.offline=\u8BBE\u5907\u79BB\u7EBF
smfcore.messages.device=\u8BBE\u5907
smfcore.messages.module=\u6A21\u5757
smfcore.messages.type=\u7C7B\u578B
smfcore.messages.createDate=\u521B\u5EFA\u65F6\u95F4
smfcore.messages.msg=\u5185\u5BB9
smfcorre.message.info=\u6D88\u606F
smfcorre.message.warning=\u8B66\u544A
smfcorre.message.error=\u9519\u8BEF
smfcore.messages.serverStart=\u670D\u52A1\u5668\u542F\u52A8
smfcore.message=\u6D88\u606F\u67E5\u8BE2
smfcore.inSuddenStop=\u6536\u5230\u6025\u505C\u4FE1\u53F7\uFF0C\u62A5\u8B66\u6025\u505C
...@@ -209,4 +209,17 @@ smfcore.user.enable=\u72C0\u614B ...@@ -209,4 +209,17 @@ smfcore.user.enable=\u72C0\u614B
smfcore.user.createDate=\u5275\u5EFA\u65E5\u671F smfcore.user.createDate=\u5275\u5EFA\u65E5\u671F
smfcore.user.code=\u555F\u7528\u55CE smfcore.user.code=\u555F\u7528\u55CE
smfcore.enable=\u555F\u7528 smfcore.enable=\u555F\u7528
smfcore.disabled=\u7981\u7528
\ No newline at end of file \ No newline at end of file
smfcore.disabled=\u7981\u7528
smfcore.messages.online=\u8A2D\u5099\u4E0A\u7DDA
smfcore.messages.offline=\u8A2D\u5099\u96E2\u7DDA
smfcore.messages.device=\u8A2D\u5099
smfcore.messages.module=\u6A21\u584A
smfcore.messages.type=\u985E\u578B
smfcore.messages.createDate=\u5275\u5EFA\u6642\u9593
smfcore.messages.msg=\u5167\u5BB9
smfcorre.message.info=\u6D88\u606F
smfcorre.message.warning=\u8B66\u544A
smfcorre.message.error=\u932F\u8AA4
smfcore.messages.serverStart=\u670D\u52D9\u5668\u555F\u52D5
smfcore.message=\u6D88\u606F\u67E5\u8A62
smfcore.inSuddenStop=\u6536\u5230\u6025\u505C\u4FE1\u865F\uFF0C\u5831\u8B66\u6025\u505C
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!