|
|
@ -5,7 +5,6 @@ import com.docus.core.util.Func;
|
|
|
|
import com.docus.core.util.json.JSON;
|
|
|
|
import com.docus.core.util.json.JSON;
|
|
|
|
import com.docus.server.api.scheduling.management.SchCollectRecordApi;
|
|
|
|
import com.docus.server.api.scheduling.management.SchCollectRecordApi;
|
|
|
|
import com.docus.server.common.CommMsg;
|
|
|
|
import com.docus.server.common.CommMsg;
|
|
|
|
import com.docus.server.common.MsgConstants;
|
|
|
|
|
|
|
|
import com.docus.server.common.netty.server.CollectorChannelCacheMap;
|
|
|
|
import com.docus.server.common.netty.server.CollectorChannelCacheMap;
|
|
|
|
import com.docus.server.common.netty.state.DeviceStateContext;
|
|
|
|
import com.docus.server.common.netty.state.DeviceStateContext;
|
|
|
|
import com.docus.server.dto.scheduling.management.schcollectrecord.EditSchCollectRecordDTO;
|
|
|
|
import com.docus.server.dto.scheduling.management.schcollectrecord.EditSchCollectRecordDTO;
|
|
|
@ -25,6 +24,8 @@ import java.io.Serializable;
|
|
|
|
import java.net.InetSocketAddress;
|
|
|
|
import java.net.InetSocketAddress;
|
|
|
|
import java.util.Date;
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static com.docus.server.common.MsgConstants.*;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 业务消息处理
|
|
|
|
* 业务消息处理
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -50,28 +51,70 @@ public class NettyBusinessHandler extends SimpleChannelInboundHandler<CommMsg<Se
|
|
|
|
|
|
|
|
|
|
|
|
log.info("======== 【终端服务端-收到采集器消息】, 消息时间={}, 消息类型={}, 消息内容={}", messageTime, messageType, messageContent + " ======== ");
|
|
|
|
log.info("======== 【终端服务端-收到采集器消息】, 消息时间={}, 消息类型={}, 消息内容={}", messageTime, messageType, messageContent + " ======== ");
|
|
|
|
|
|
|
|
|
|
|
|
if (messageType.equals(MsgConstants.ONLINE_REGISTER)) {
|
|
|
|
switch (messageType) {
|
|
|
|
//===========login ok,切换到已登录状态===============messageContent=collectorId=========
|
|
|
|
case ONLINE_REGISTER:
|
|
|
|
deviceStateContext.onLoginSucc(messageContent, System.currentTimeMillis(), 10, "采集器认证通过");
|
|
|
|
onlineRegister(deviceStateContext, ctx, messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case HEARTBEAT_REQUEST:
|
|
|
|
|
|
|
|
heartbeatRequest(deviceStateContext, ctx, messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case TERMINATOR_RESTART:
|
|
|
|
|
|
|
|
terminatorRestart(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case COLLECTOR_RESTART:
|
|
|
|
|
|
|
|
collectorRestart(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case VIRTUAL_RESTART:
|
|
|
|
|
|
|
|
virtualRestart(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case UPDATE_COLLECTOR_FILE:
|
|
|
|
|
|
|
|
updateCollectorFile(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case UPDATE_COLLECTOR_CONFIG:
|
|
|
|
|
|
|
|
updateCollectorConfig(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SCH_DISTRIBUTE_TASKS:
|
|
|
|
|
|
|
|
schDistributeTasks(commMsg, messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case REV_COLLECTOR_TASK:
|
|
|
|
|
|
|
|
revCollectorTask(messageContent);
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CommMsg<Serializable> authMsg = CommMsg.builder()
|
|
|
|
private void revCollectorTask(String messageContent) {
|
|
|
|
.messageTime(DateUtil.formatDateTime(new Date()))
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集器上报的任务状态,内容{}", messageContent);
|
|
|
|
.content("采集器认证通过")
|
|
|
|
EditSchCollectRecordDTO editSchCollectRecordDTO = JSON.fromJSON(messageContent, EditSchCollectRecordDTO.class);
|
|
|
|
.messageType("response")
|
|
|
|
schCollectRecordApi.edit(editSchCollectRecordDTO);
|
|
|
|
.build();
|
|
|
|
}
|
|
|
|
ctx.writeAndFlush(authMsg);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void schDistributeTasks(CommMsg commMsg, String messageContent) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集调度器下发任务命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Channel channel = collectorChannelCacheMap.get(messageContent);
|
|
|
|
private void updateCollectorConfig(String messageContent) {
|
|
|
|
if (channel != null && channel.isOpen()) {
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到更新采集器配置命令,内容{}", messageContent);
|
|
|
|
channel.close();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (Func.isNotBlank(messageContent)) {
|
|
|
|
|
|
|
|
collectorChannelCacheMap.put(messageContent, ctx.channel());
|
|
|
|
private void updateCollectorFile(String messageContent) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到更新采集器文件命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void virtualRestart(String messageContent) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到虚拟机重启命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void collectorRestart(String messageContent) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集器重启命令,内容{}", messageContent);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.HEARTBEAT_REQUEST)) {
|
|
|
|
private void terminatorRestart(String messageContent) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】接受到终端重启命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void heartbeatRequest(DeviceStateContext deviceStateContext, ChannelHandlerContext ctx, String messageContent) {
|
|
|
|
//============状态为上行数据=============
|
|
|
|
//============状态为上行数据=============
|
|
|
|
deviceStateContext.onHeartbeat(System.currentTimeMillis(), "采集器上行了数据");
|
|
|
|
deviceStateContext.onHeartbeat(System.currentTimeMillis(), "采集器上行了数据");
|
|
|
|
|
|
|
|
|
|
|
@ -84,40 +127,34 @@ public class NettyBusinessHandler extends SimpleChannelInboundHandler<CommMsg<Se
|
|
|
|
ctx.writeAndFlush(resp);
|
|
|
|
ctx.writeAndFlush(resp);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
log.info("接受到【终端服务端-接收采集器消息】客户端的心跳消息:消息类型={},消息时间={},消息内容={}", messageType, messageTime, messageContent);
|
|
|
|
log.info("接受到【终端服务端-接收采集器消息】客户端的心跳消息:消息内容={}", messageContent);
|
|
|
|
|
|
|
|
|
|
|
|
InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
|
|
|
|
InetSocketAddress ipSocket = (InetSocketAddress) ctx.channel().remoteAddress();
|
|
|
|
String clientIp = ipSocket.getAddress().getHostAddress();
|
|
|
|
String clientIp = ipSocket.getAddress().getHostAddress();
|
|
|
|
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】:{},连接上线,IP地址信息:{}", clientIp, clientIp);
|
|
|
|
log.info("【终端服务端-接收采集器消息】:{},连接上线,IP地址信息:{}", clientIp, clientIp);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.TERMINATOR_RESTART)) {
|
|
|
|
private void onlineRegister(DeviceStateContext deviceStateContext, ChannelHandlerContext ctx, String messageContent) {
|
|
|
|
log.info("【终端服务端-接收采集器消息】接受到终端重启命令,内容{}", messageContent);
|
|
|
|
//===========login ok,切换到已登录状态===============messageContent=collectorId=========
|
|
|
|
|
|
|
|
deviceStateContext.onLoginSucc(messageContent, System.currentTimeMillis(), 10, "采集器认证通过");
|
|
|
|
} else if (messageType.equals(MsgConstants.COLLECTOR_RESTART)) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集器重启命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.VIRTUAL_RESTART)) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到虚拟机重启命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.UPDATE_COLLECTOR_FILE)) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到更新采集器文件命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.UPDATE_COLLECTOR_CONFIG)) {
|
|
|
|
CommMsg<Serializable> authMsg = CommMsg.builder()
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到更新采集器配置命令,内容{}", messageContent);
|
|
|
|
.messageTime(DateUtil.formatDateTime(new Date()))
|
|
|
|
|
|
|
|
.content("采集器认证通过")
|
|
|
|
|
|
|
|
.messageType("response")
|
|
|
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
ctx.writeAndFlush(authMsg);
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.SCH_DISTRIBUTE_TASKS)) {
|
|
|
|
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集调度器下发任务命令,内容{}", messageContent);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else if (messageType.equals(MsgConstants.REV_COLLECTOR_TASK)) {
|
|
|
|
Channel channel = collectorChannelCacheMap.get(messageContent);
|
|
|
|
log.info("【终端服务端-接收采集器消息】收到采集器上报的任务状态,内容{}", messageContent);
|
|
|
|
if (channel != null && channel.isOpen()) {
|
|
|
|
EditSchCollectRecordDTO editSchCollectRecordDTO = JSON.fromJSON(messageContent, EditSchCollectRecordDTO.class);
|
|
|
|
channel.close();
|
|
|
|
schCollectRecordApi.edit(editSchCollectRecordDTO);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Func.isNotBlank(messageContent)) {
|
|
|
|
|
|
|
|
collectorChannelCacheMap.put(messageContent, ctx.channel());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
System.out.println("channelRead0:" + deviceStateContext.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|