|
|
|
@ -142,8 +142,7 @@ public class NettyServer { |
|
|
|
|
|
|
|
//发送消息 |
|
|
|
public void flushMsgToDevice(String uuid, String clientKey, boolean request, String xml) { |
|
|
|
logger.info("clientKey: " + clientKey + ", xml: " + xml); |
|
|
|
logger.info("tcpClientMap.size(): " + tcpClientMap.size() + ", tcpClientMap: " + tcpClientMap); |
|
|
|
logger.info("clientKey: " + clientKey + ", tcpClientMap.size(): " + tcpClientMap.size() + ", tcpClientMap: " + tcpClientMap); |
|
|
|
|
|
|
|
if (tcpClientMap.containsKey(clientKey) && !StringUtil.isNullOrEmpty(xml)) { |
|
|
|
ByteBuf byteBuf = Unpooled.copiedBuffer(xml, CharsetUtil.UTF_8); |
|
|
|
@ -242,12 +241,12 @@ public class NettyServer { |
|
|
|
resetSendMsg(binaryModel.receiveIndex, sendCode); |
|
|
|
return; |
|
|
|
} else if (code.equals(ResponseType.succeed)) { |
|
|
|
logger.info("######## 响应结果为成功, 客户: {}, 命令: {}, 消息体 ########\n{}", binaryModel.id, command, xml); |
|
|
|
logger.info("######## 响应结果为成功, 客户: {}, 命令: {}, 消息体 ########\n{}", sendCode, command, xml); |
|
|
|
} else if (code.equals(ResponseType.fault)) { |
|
|
|
logger.warn("######## 响应结果为失败, 客户: {}, 命令: {}, 消息体 ########\n{}", binaryModel.id, command, xml); |
|
|
|
logger.warn("######## 响应结果为失败, 客户: {}, 命令: {}, 消息体 ########\n{}", sendCode, command, xml); |
|
|
|
return; |
|
|
|
} else if (code.equals(ResponseType.reject)) { |
|
|
|
logger.warn("######## 响应结果为拒绝, 客户: {}, 命令: {}, 消息体 ########\n{}", binaryModel.id, command, xml); |
|
|
|
logger.warn("######## 响应结果为拒绝, 客户: {}, 命令: {}, 消息体 ########\n{}", sendCode, command, xml); |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -259,12 +258,12 @@ public class NettyServer { |
|
|
|
switch (command) { |
|
|
|
case SystemType.register_request: |
|
|
|
// 收到接入侧注册信息 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端注册信息 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端注册信息 ########", binaryModel.uuid, sendCode); |
|
|
|
dealRegister(binaryModel.uuid, xml); |
|
|
|
break; |
|
|
|
case SystemType.heart_request: |
|
|
|
// 处理心跳请求响应 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端心跳 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端心跳 ########", binaryModel.uuid, sendCode); |
|
|
|
sendHeartBeat(binaryModel.uuid, xml); |
|
|
|
break; |
|
|
|
case SystemType.has_response: |
|
|
|
@ -273,7 +272,7 @@ public class NettyServer { |
|
|
|
// 处理设备上报的模型同步响应 |
|
|
|
if (null != root.element("Items").element("Item").attribute("device_file_path")) { |
|
|
|
// 收到接入侧模型同步数据 |
|
|
|
logger.info(Color.YELLOW + "######## 会话: {}, 客户: {}, 客户端模型同步数据 ########" + Color.END, binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info(Color.YELLOW + "######## 会话: {}, 客户: {}, 客户端模型同步数据 ########" + Color.END, binaryModel.uuid, sendCode); |
|
|
|
// json = downXml2Json.ModelControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, ModelControl.class); |
|
|
|
JSONObject jsonObject = JSONObject.parseObject(json); |
|
|
|
@ -284,7 +283,7 @@ public class NettyServer { |
|
|
|
// 任务控制响应任务执行ID |
|
|
|
if (null != root.element("Items").element("Item").attribute("task_patrolled_id")) { |
|
|
|
// 收到接入侧任务下发或控制回复数据 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 设备端任务下发或控制回复数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 设备端任务下发或控制回复数据 ########", binaryModel.uuid, sendCode); |
|
|
|
// json = downXml2Json.ModelControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, ModelControl.class); |
|
|
|
JSONObject jsonObject = JSONObject.parseObject(json); |
|
|
|
@ -298,66 +297,66 @@ public class NettyServer { |
|
|
|
break; |
|
|
|
default: |
|
|
|
// 接收到的系统类信息报文中,command:{},不在处理范围内,不予处理 |
|
|
|
logger.warn("######## 非法的消息不予处理, 客户: {}, 命令: {}, 消息体 ########\n{}", binaryModel.id, command, xml); |
|
|
|
logger.warn("######## 非法的消息不予处理, 客户: {}, 命令: {}, 消息体 ########\n{}", sendCode, command, xml); |
|
|
|
} |
|
|
|
break; |
|
|
|
case PushType.patrolDeviceState:// insert into basedata_mont_patdevstadata |
|
|
|
// json = downXml2Json.PatrolDeviceStateControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, PatrolDeviceStateControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备状态数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备状态数据 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.patrolDeviceRunning:// insert into basedata_mont_patdevrundata |
|
|
|
// json = downXml2Json.PatrolDeviceRunningControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, PatrolDeviceRunningControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备运行数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备运行数据 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.nestState:// insert into basedata_mont_neststadata |
|
|
|
// json = downXml2Json.NestStateControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, NestStateControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端机巢状态数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端机巢状态数据 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.nestRunning:// insert into basedata_mont_nestrundata |
|
|
|
// json = downXml2Json.NestRunningControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, NestRunningControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端机巢运行数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端机巢运行数据 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.location:// insert into basedata_mont_patdevcoord |
|
|
|
// json = downXml2Json.LocationControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, LocationControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备坐标 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备坐标 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.route:// insert into basedata_mont_patdevpatroute |
|
|
|
// json = downXml2Json.RouteControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, RouteControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备路线 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备路线 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.alarm:// insert into basedata_mont_patdevalmabn |
|
|
|
// json = down.AlarmControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, AlarmControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备异常告警 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备异常告警 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.environment:// insert into basedata_mont_evndata |
|
|
|
// json = downXml2Json.EnvironmentControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, EnvironmentControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备上报环境数据 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备上报环境数据 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.taskState:// insert into basedata_mont_taskstadata and patrol_task_status |
|
|
|
// json = downXml2Json.TaskStateControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, TaskStateControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备任务状态 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端设备任务状态 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
case PushType.result:// insert into basedata_mont_taskresult and patrol_task_result_main |
|
|
|
// json = downXml2Json.TaskResultControlXml2Json(xml); |
|
|
|
json = downXml2Json.DownStreamJson2Xml(binaryModel.uuid, binaryModel.id, xml, TaskResultControl.class); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端巡视结果 ########", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 客户端巡视结果 ########", binaryModel.uuid, sendCode); |
|
|
|
break; |
|
|
|
default: |
|
|
|
// server-handle-接收到的type:{},不在处理范围内,不予处理 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 非法的消息不予处理, 类型{}, 消息体 ########\n{}", binaryModel.uuid, binaryModel.id, type, xml); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 非法的消息不予处理, 类型{}, 消息体 ########\n{}", binaryModel.uuid, sendCode, type, xml); |
|
|
|
} |
|
|
|
if (type != SystemType.system && !StringUtil.isNullOrEmpty(json)) { |
|
|
|
if ((type == NestCtlType.courseReversal && command == 3)) { // 处理用SSCOM模拟的数据, 向无人机发送控制指令 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 向设备透传200001控制指令", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 向设备透传200001控制指令", binaryModel.uuid, sendCode); |
|
|
|
flushMsgToDeviceBroadcast(binaryModel.uuid, receiveCode, false, xml); |
|
|
|
} else { |
|
|
|
//rabbitmq推送到消息队列中基于springboot_xggd |
|
|
|
@ -367,7 +366,7 @@ public class NettyServer { |
|
|
|
// send to BasedataMontDataMqAcceptHandle |
|
|
|
rabbitTemplate.convertAndSend(Constant.EX_CHANGE_NAME, Constant.ROUTING_KEY_NAME, json); |
|
|
|
boolean isHost = json.contains(aliasHost); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, isHost: {}", binaryModel.uuid, binaryModel.id, isHost); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, isHost: {}", binaryModel.uuid, sendCode, isHost); |
|
|
|
sendResponseToDevice(binaryModel.uuid, receiveCode, sendCode, isHost); |
|
|
|
} |
|
|
|
} else { |
|
|
|
@ -375,7 +374,7 @@ public class NettyServer { |
|
|
|
|| (type == NestCtlType.ptzPitch && command == 6) |
|
|
|
|| (type == NestCtlType.picModelSet && command == 1) |
|
|
|
|| (type == NestCtlType.nestSuddenStop && command == 2)) {// 处理用SSCOM模拟的数据, 向无人机发送控制指令 |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 向设备透传200002~20005控制指令", binaryModel.uuid, binaryModel.id); |
|
|
|
logger.info("######## 会话: {}, 客户: {}, 向设备透传200002~20005控制指令", binaryModel.uuid, sendCode); |
|
|
|
flushMsgToDeviceBroadcast(binaryModel.uuid, receiveCode, false, xml); |
|
|
|
} |
|
|
|
} |
|
|
|
|