|
@@ -42,7 +42,7 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
private static ExecutorService executorService = Executors.newSingleThreadExecutor();
|
|
|
|
|
|
private static final Long INTERVAL_TIME = 300000L; // 开关时间
|
|
|
- private static final Long URGENT_OUT_TIME = 5000L; // 超时时间
|
|
|
+ private static final Long URGENT_OUT_TIME = 120000L; // 超时时间120S
|
|
|
/**
|
|
|
* 省电模式开关
|
|
|
*/
|
|
@@ -68,14 +68,23 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
try {
|
|
|
String factory = msg.substring(0, 2);// 工厂
|
|
|
String type = msg.substring(2, 6);// 标记
|
|
|
-
|
|
|
- WorkModel workModel = modelMap.get(deviceId);//已登录
|
|
|
Long time = System.currentTimeMillis();
|
|
|
- if (workModel != null && (time - workModel.getUrgentTime() > URGENT_OUT_TIME)) {
|
|
|
- workModel.setUrgentTime(time);
|
|
|
- workModel.setUrgentCount(0);
|
|
|
- modelMap.put(deviceId, workModel);
|
|
|
- normalReplyModel(factory, deviceId, channel, 3);
|
|
|
+ WorkModel workModel = null;
|
|
|
+ SwitchWorkModel swm = null;
|
|
|
+ if (deviceId != null) {
|
|
|
+ workModel = modelMap.get(deviceId);//已登录
|
|
|
+ swm = switchMap.get(deviceId);// 开关
|
|
|
+ if (workModel != null && workModel.getUrgentType() == 2
|
|
|
+ && (time - workModel.getUrgentTime() > URGENT_OUT_TIME)) {
|
|
|
+ workModel.setUrgentTime(time);
|
|
|
+ workModel.setUrgentType(2);
|
|
|
+ modelMap.put(deviceId, workModel);
|
|
|
+ normalReplyModel(factory, deviceId, channel, 3);
|
|
|
+ logger.warn("超过指定时间没有收到回复》》》 重新设置");
|
|
|
+ // 更新开关切换时间
|
|
|
+ swm.setSwitchTime(time);
|
|
|
+ switchMap.put(deviceId,swm);
|
|
|
+ }
|
|
|
}
|
|
|
switch (type) {
|
|
|
case "AP00": // 初始化登录
|
|
@@ -92,15 +101,23 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
normalReply(factory, channel, "BP01");
|
|
|
break;
|
|
|
case "AP33": // 设置模式回复
|
|
|
- if (workModel != null && workModel.getUrgentCount() < 2) {
|
|
|
- // 只设置一次 在设置一次
|
|
|
- if (time - workModel.getUrgentTime() < URGENT_OUT_TIME) {
|
|
|
- normalReplyModel(factory, deviceId, channel, 3);
|
|
|
- workModel.setUrgentCount(workModel.getUrgentCount() + 1);
|
|
|
+ //IWAP33,080835,1#
|
|
|
+ if (deviceId != null) {
|
|
|
+ Integer moderType = getInteger(msg.substring(14, 16));// 收到回复状态
|
|
|
+ if (swm.getWorkType() == 3) {// 当前设置的模式
|
|
|
+ if (workModel != null && moderType == 3) {
|
|
|
+ workModel.setUrgentType(3);
|
|
|
+ logger.warn("紧急模式设置成功!>>>>>>>>>>>>>>" +msg);
|
|
|
+ } else {
|
|
|
+ logger.warn("紧急模式重新设置!>>>>>>>>>>>>>>" );
|
|
|
+ normalReplyModel(factory, deviceId, channel, 3);
|
|
|
+ workModel.setUrgentType(2);
|
|
|
+ // 更新开关时间
|
|
|
+ swm.setSwitchTime(time);
|
|
|
+ switchMap.put(deviceId,swm);
|
|
|
+ }
|
|
|
modelMap.put(deviceId, workModel);
|
|
|
}
|
|
|
- } else {
|
|
|
- logger.warn("已设置紧急模式两次成功");
|
|
|
}
|
|
|
break;
|
|
|
default: // 其他
|
|
@@ -139,12 +156,14 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
switchMap.put(deviceId, swm);
|
|
|
logger.warn("心跳检测是下发模式:工作状态" + JSON.toJSONString(swm));
|
|
|
normalReplyModel(factory, deviceId, channel, workType);
|
|
|
- if (workType == 3) {// 设置紧急模式 则更新
|
|
|
+ if (workType == 3) {// 设置紧急模式 则更新紧急模式设置状态
|
|
|
WorkModel wm = new WorkModel();
|
|
|
- wm.setUrgentCount(0);// 设置紧急模式次数
|
|
|
+ wm.setUrgentType(2);//
|
|
|
wm.setUrgentTime(nowTime);// 设置紧急模式时间
|
|
|
modelMap.put(deviceId, wm);
|
|
|
}
|
|
|
+ }else{
|
|
|
+ logger.warn("心跳检测是下发模式:工作不更改状态");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -227,8 +246,8 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
}
|
|
|
normalReplyModel(factory, deviceId, channel, 3);
|
|
|
WorkModel wm = new WorkModel();
|
|
|
- wm.setUrgentCount(0);// 设置紧急模式次数
|
|
|
wm.setUrgentTime(currentTime.getTime());// 设置紧急模式时间
|
|
|
+ wm.setUrgentType(2);// 默认指令模式为正常模式
|
|
|
modelMap.put(deviceId, wm);
|
|
|
} catch (InterruptedException e) {
|
|
|
logger.error(e.getMessage());
|
|
@@ -331,10 +350,11 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
* 设置紧急模式时间
|
|
|
*/
|
|
|
private Long urgentTime;
|
|
|
+
|
|
|
/**
|
|
|
- * 设置紧急模式测试
|
|
|
+ * 设置紧急模式状态
|
|
|
*/
|
|
|
- private Integer urgentCount;
|
|
|
+ private Integer urgentType;
|
|
|
|
|
|
public Long getUrgentTime() {
|
|
|
return urgentTime;
|
|
@@ -344,12 +364,12 @@ public class WatchJWServerHandler extends HexBinaryAcceptanceHandlerAdapter {
|
|
|
this.urgentTime = urgentTime;
|
|
|
}
|
|
|
|
|
|
- public Integer getUrgentCount() {
|
|
|
- return urgentCount;
|
|
|
+ public Integer getUrgentType() {
|
|
|
+ return urgentType;
|
|
|
}
|
|
|
|
|
|
- public void setUrgentCount(Integer urgentCount) {
|
|
|
- this.urgentCount = urgentCount;
|
|
|
+ public void setUrgentType(Integer urgentType) {
|
|
|
+ this.urgentType = urgentType;
|
|
|
}
|
|
|
}
|
|
|
|