diff --git a/logs/iip-gateway/error.log b/logs/iip-gateway/error.log
new file mode 100644
index 0000000..e69de29
diff --git a/logs/iip-gateway/info.log b/logs/iip-gateway/info.log
new file mode 100644
index 0000000..f7089aa
--- /dev/null
+++ b/logs/iip-gateway/info.log
@@ -0,0 +1,3 @@
+13:57:53.617 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 2140 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+13:57:53.620 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+13:57:57.360 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.041 seconds (JVM running for 4.967)
diff --git a/logs/inspect-tcpserver/error.log b/logs/inspect-tcpserver/error.log
new file mode 100644
index 0000000..e69de29
diff --git a/logs/inspect-tcpserver/info.log b/logs/inspect-tcpserver/info.log
new file mode 100644
index 0000000..3038c55
--- /dev/null
+++ b/logs/inspect-tcpserver/info.log
@@ -0,0 +1,51 @@
+14:07:47.223 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 44988 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+14:07:47.226 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+14:07:50.452 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.521 seconds (JVM running for 4.496)
+14:21:28.473 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 43668 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+14:21:28.476 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+14:21:31.658 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.476 seconds (JVM running for 4.462)
+14:54:40.471 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 4160 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+14:54:40.475 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+14:54:43.898 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.78 seconds (JVM running for 4.971)
+15:10:12.709 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 39584 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:10:12.712 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:10:16.432 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.106 seconds (JVM running for 5.02)
+15:12:52.484 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 18096 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:12:52.488 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:12:55.936 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.778 seconds (JVM running for 4.741)
+15:21:59.362 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 43776 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:21:59.366 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:22:03.533 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.521 seconds (JVM running for 5.758)
+15:25:43.817 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 15604 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:25:43.822 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:25:48.717 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 5.4 seconds (JVM running for 7.058)
+15:28:49.230 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 3180 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:28:49.234 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:28:53.952 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 5.112 seconds (JVM running for 6.697)
+15:31:39.383 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 33092 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:31:39.385 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:31:42.851 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.791 seconds (JVM running for 4.825)
+15:32:01.620 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 13500 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:32:01.624 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:32:06.081 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.888 seconds (JVM running for 6.111)
+15:42:28.742 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 10380 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:42:28.747 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:42:35.180 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 6.927 seconds (JVM running for 8.27)
+15:48:15.418 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 42420 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:48:15.422 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:48:21.236 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 6.264 seconds (JVM running for 7.924)
+15:56:06.655 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 37500 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+15:56:06.659 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+15:56:10.828 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.545 seconds (JVM running for 5.615)
+16:14:34.247 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 10652 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+16:14:34.253 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+16:14:42.923 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 9.132 seconds (JVM running for 11.39)
+16:22:08.116 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 29764 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+16:22:08.121 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+16:22:11.592 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 3.829 seconds (JVM running for 5.018)
+16:57:01.092 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 308 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+16:57:01.097 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+16:57:04.736 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.005 seconds (JVM running for 5.04)
+17:35:29.960 [main] INFO c.i.t.TcpserverApplicationTests - [logStarting,55] - Starting TcpserverApplicationTests on QYL-HP-ZHAN66 with PID 37836 (started by gabri in E:\qinyl\intellij\src\inspect-tcpserver)
+17:35:29.963 [main] INFO c.i.t.TcpserverApplicationTests - [logStartupProfileInfo,651] - No active profile set, falling back to default profiles: default
+17:35:34.024 [main] INFO c.i.t.TcpserverApplicationTests - [logStarted,61] - Started TcpserverApplicationTests in 4.386 seconds (JVM running for 5.495)
diff --git a/pom.xml b/pom.xml
index aaf79eb..3468200 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.dliip
+ com.inspect
inspect-tcpserver
1.0.0
inspect-tcpserver
@@ -41,7 +41,7 @@
com.thoughtworks.xstream
xstream
- 1.4.19
+ 1.4.21
com.alibaba
diff --git a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java
index e4ea035..de15211 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/DownXml2Json.java
@@ -5,21 +5,48 @@ import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
import com.thoughtworks.xstream.security.AnyTypePermission;
+import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DownXml2Json {
- private Logger logger = LoggerFactory.getLogger(DownXml2Json.class);
+ private final Logger logger = LoggerFactory.getLogger(DownXml2Json.class);
/**
* 默认为对上级的客户端的别名
*/
private String alias;
+ private String deviceAlias = "PatrolDevice";
+
public DownXml2Json(String alias) {
this.alias = alias;
}
+ public String DownStreamJson2Xml(String json, Class clazz) {
+ try {
+ XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
+ xStream.autodetectAnnotations(true);
+ xStream.alias(alias, clazz);
+ T obj = JSON.parseObject(json, clazz);
+ return xStream.toXML(obj);
+ } catch (com.thoughtworks.xstream.XStreamException e) {
+ logger.error("################ DOWN解析失败[PatrolHost] ################");
+ logger.error("################ DOWN异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e));
+ try {
+ XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
+ xStream.autodetectAnnotations(true);
+ xStream.alias(deviceAlias, clazz);
+
+ T obj = JSON.parseObject(json, clazz);
+ return xStream.toXML(obj);
+ } catch (com.thoughtworks.xstream.XStreamException ex) {
+ logger.error("################ DOWN解析失败[PatrolDevice] ################");
+ logger.error("################ DOWN异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(ex));
+ return null;
+ }
+ }
+ }
//任务下发
public String TaskSendControlXml2Json(String xml) {
@@ -34,7 +61,7 @@ public class DownXml2Json {
}
//联动任务下发
- public String LendonTaskControlXml2Json(String xml) {
+ public String LinkageTaskControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, LendonTaskControl.class);
xStream.autodetectAnnotations(true);
@@ -130,7 +157,7 @@ public class DownXml2Json {
}
//巡检设备运行数据
- public String PatrolDeviceRuningControlXml2Json(String xml) {
+ public String PatrolDeviceRunningControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, PatrolDeviceRuningControl.class);
xStream.autodetectAnnotations(true);
@@ -154,7 +181,7 @@ public class DownXml2Json {
}
//机巢运行数据
- public String NestRuningControlXml2Json(String xml) {
+ public String NestRunningControlXml2Json(String xml) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.alias(alias, NestRuningControl.class);
xStream.autodetectAnnotations(true);
diff --git a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java
index 9df8e95..583d55e 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/MyDecoder.java
@@ -28,7 +28,7 @@ public class MyDecoder extends ByteToMessageDecoder {
}
ByteBuf forPrint = in.copy();
- log.info("[NETTY] FULL MSG: [{}]", ByteBufUtil.hexDump(forPrint));
+ log.info("################ 上行原始报文 ################ \n {}", ByteBufUtil.hexDump(forPrint));
int index;
String flag;
diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java
index 29c091a..629f657 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/NettyClient.java
@@ -53,8 +53,8 @@ public class NettyClient {
private long receiveIndex = 0;
private String sendCode;
private String receiveCode;
- private UpJson2Xml up;
- private DownXml2Json down;
+ private UpJson2Xml upJson2Xml;
+ private DownXml2Json downXml2Json;
private NettyClientHandler client;
private ScheduledExecutorService scheduledExecutor = Executors.newScheduledThreadPool(4);
private ExecutorService executorService = new ThreadPoolExecutor(1, 5, 5L, TimeUnit.SECONDS, new ArrayBlockingQueue(4), Executors.defaultThreadFactory());
@@ -84,8 +84,8 @@ public class NettyClient {
private String deviceAlias = "PatrolDevice";
public NettyClient() {
- up = new UpJson2Xml(alias);
- down = new DownXml2Json(alias);
+ upJson2Xml = new UpJson2Xml(alias);
+ downXml2Json = new DownXml2Json(alias);
}
//释放资源
@@ -230,32 +230,32 @@ public class NettyClient {
case RobotType.robotFz:
case RobotType.robotIr:
case RobotType.robotPtz:
- json = down.RobotControlXml2Json(xml);
+ json = downXml2Json.RobotControlXml2Json(xml);
break;
case UAVType.uav:
case UAVType.uavXj:
case UAVType.uavKz:
case UAVType.uavYt:
case UAVType.nest:
- json = down.UavControlXml2Json(xml);
+ json = downXml2Json.UavControlXml2Json(xml);
break;
case TaskType.taskControl:
- json = down.BaseControlXml2Json(xml);
+ json = downXml2Json.BaseControlXml2Json(xml);
break;
case TaskType.taskSend:
- json = down.TaskSendControlXml2Json(xml);
+ json = downXml2Json.TaskSendControlXml2Json(xml);
break;
case TaskType.lendonTask:
- json = down.LendonTaskControlXml2Json(xml);
+ json = downXml2Json.LinkageTaskControlXml2Json(xml);
break;
case TaskType.taskArea:
- json = down.AreaControlXml2Json(xml);
+ json = downXml2Json.AreaControlXml2Json(xml);
break;
case ModelType.modelSync:
- json = down.BaseControlXml2Json(xml);
+ json = downXml2Json.BaseControlXml2Json(xml);
break;
case QueryType.queryResult:
- json = down.ResultControlXml2Json(xml);
+ json = downXml2Json.ResultControlXml2Json(xml);
break;
default:
logger.warn("client-handle-接收到的type:{},不在处理范围内,不予处理", type);
@@ -295,7 +295,7 @@ public class NettyClient {
}
// 将xml消息转为json格式字符串
- String msg = up.ModelJson2Xml(response);
+ String msg = upJson2Xml.ModelJson2Xml(response);
// 上报上级系统,会话类型为响应
SendMsg(false, msg);
@@ -462,63 +462,63 @@ public class NettyClient {
String xml = null;
switch (type) {
case PushType.environment:
- xml = up.EnvironmentControlJson2Xml(json);
+ xml = upJson2Xml.EnvironmentControlJson2Xml(json);
logger.info("向上级系统发送环境数据。{}", xml);
break;
case PushType.alarm:
- xml = up.AlarmControlJson2Xml(json);
+ xml = upJson2Xml.AlarmControlJson2Xml(json);
logger.info("向上级系统发送巡视设备异常告警数据。{}", xml);
break;
case PushType.analysisAlarm:
- xml = up.AnalysisControlJson2Xml(json);
+ xml = upJson2Xml.AnalysisControlJson2Xml(json);
logger.info("向上级系统发送告警数据。{}", xml);
break;
case PushType.location:
- xml = up.LocationControlJson2Xml(json);
+ xml = upJson2Xml.LocationControlJson2Xml(json);
logger.info("向上级系统发送巡视设备坐标。{}", xml);
break;
case PushType.monitor:
- xml = up.MonitorControlJson2Xml(json);
+ xml = upJson2Xml.MonitorControlJson2Xml(json);
logger.info("向上级系统发送静默监视告警数据。{}", xml);
break;
case PushType.nestRunning:
- xml = up.NestRuningJson2Xml(json);
+ xml = upJson2Xml.NestRunningJson2Xml(json);
logger.info("向上级系统发送无人机机巢运行数据。{}", xml);
break;
case PushType.nestState:
- xml = up.NestStateJson2Xml(json);
+ xml = upJson2Xml.NestStateJson2Xml(json);
logger.info("向上级系统发送无人机机巢状态数据。{}", xml);
break;
case PushType.patrolDeviceState:
- xml = up.PatrolDeviceStateControlJson2Xml(json);
+ xml = upJson2Xml.PatrolDeviceStateControlJson2Xml(json);
logger.info("向上级系统发送巡视设备状态数据。{}", xml);
break;
case PushType.patrolDeviceRunning:
- xml = up.PatrolDeviceRuningControlJson2Xml(json);
+ xml = upJson2Xml.PatrolDeviceRunningControlJson2Xml(json);
logger.info("向上级系统发送巡视设备运行数据。{}", xml);
break;
case PushType.result:
- xml = up.TaskResultControlJson2Xml(json);
+ xml = upJson2Xml.TaskResultControlJson2Xml(json);
logger.info("向上级系统发送巡视结果。{}", xml);
break;
case PushType.taskState:
- xml = up.TaskStateControlJson2Xml(json);
+ xml = upJson2Xml.TaskStateControlJson2Xml(json);
logger.info("向上级系统发送任务状态数据。{}", xml);
break;
case PushType.total:
- xml = up.ReportControlJson2Xml(json);
+ xml = upJson2Xml.ReportControlJson2Xml(json);
logger.info("向上级系统发送巡视设备统计信息上报。{}", xml);
break;
case PushType.route:
- xml = up.RouteControlJson2Xml(json);
+ xml = upJson2Xml.RouteControlJson2Xml(json);
logger.info("向上级系统发送巡视路线。{}", xml);
break;
case SystemType.system:
- xml = up.ModelJson2Xml(json);
+ xml = upJson2Xml.ModelJson2Xml(json);
logger.info("向上级系统发送系统数据。{}", xml);
break;
case ModelType.modelUpdate:
- xml = up.UpdateModelJson2Xml(json);
+ xml = upJson2Xml.UpdateModelJson2Xml(json);
//xml = up.ModelJson2Xml(json, UpdateModelControl.class);
logger.info("向上级系统发送模型更新上报指令。{}", xml);
break;
diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java
index 835c44e..41a55e6 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServer.java
@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
import com.inspect.tcpserver.constant.Constant;
import com.inspect.tcpserver.controller.ClientController;
import com.inspect.tcpserver.domain.DeviceServerProperties;
-import com.inspect.tcpserver.util.HexUtils;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
@@ -19,6 +18,7 @@ import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.util.CharsetUtil;
import io.netty.util.internal.StringUtil;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
@@ -42,24 +42,24 @@ import java.util.concurrent.*;
@Component
public class NettyServer {
- private Logger logger = LoggerFactory.getLogger(NettyServer.class);
+ private final Logger logger = LoggerFactory.getLogger(NettyServer.class);
/**
* 接收/发送报文xml外层别名
*/
- private String alias = "PatrolHost";
+ private final String aliasHost = "PatrolHost";
+
+ private final String aliasDevice = "PatrolDevice";
@Resource
ClientController clientController;
-
-
private EventLoopGroup bossGroup;
private EventLoopGroup workGroup;
- private Map clients = new HashMap<>(); //机器人id,通道id
+ private Map tcpClientMap = new HashMap<>(); //机器人id,通道id
private long sendIndex = 0; //若重启系统后还要延续之前的序列号则需要把序列号存入redis中
private long receiveIndex = 0;
- private DownXml2Json down = new DownXml2Json(alias);
- private UpJson2Xml up = new UpJson2Xml(alias);
+ private DownXml2Json downXml2Json = new DownXml2Json(aliasHost);
+ private UpJson2Xml upJson2Xml = new UpJson2Xml(aliasHost);
private NettyServerHandler nettyServerHandler;
private ExecutorService executorService = new ThreadPoolExecutor(1, 10, 5L, TimeUnit.SECONDS, new ArrayBlockingQueue(4), Executors.defaultThreadFactory());
@@ -87,8 +87,8 @@ public class NettyServer {
public void init() {
this.serverIP = deviceServerProperties.ip;
this.serverPort = deviceServerProperties.port;
- up = new UpJson2Xml(alias);
- down = new DownXml2Json(alias);
+ upJson2Xml = new UpJson2Xml(aliasHost);
+ downXml2Json = new DownXml2Json(aliasHost);
}
@Async
@@ -119,7 +119,7 @@ public class NettyServer {
//绑定端口,开始接收进来的连接
try {
ChannelFuture future = bootstrap.bind(serverPort).sync();
- logger.info("nettyServer启动");
+ logger.info("################ TCP服务器启动 ################");
future.channel().closeFuture().sync();
} catch (InterruptedException e) {
e.printStackTrace();
@@ -140,8 +140,7 @@ public class NettyServer {
//发送消息
public void sendMsg(String client, boolean request, String xml) {
- logger.info("[NETTY] Client: {} online: {}, xml: \n {}", client, clients.containsKey(client), xml);
- if (clients.containsKey(client) && !StringUtil.isNullOrEmpty(xml)) {
+ if (tcpClientMap.containsKey(client) && !StringUtil.isNullOrEmpty(xml)) {
ByteBuf byteBuf = Unpooled.copiedBuffer(xml, CharsetUtil.UTF_8);
int length = byteBuf.readableBytes();
ByteBuf allBuf = Unpooled.buffer(length + ConfigType.dataLength);
@@ -155,11 +154,11 @@ public class NettyServer {
allBuf.writeByte(0xEB);
allBuf.writeByte(0x90);
redisTemplate.opsForValue().set(String.valueOf(sendIndex), allBuf.toString(CharsetUtil.US_ASCII), 60L, TimeUnit.SECONDS);
- nettyServerHandler.SendMsg(clients.get(client), allBuf);
- logger.info("[NETTY] 向设备端机器人发送消息会话序列号: [{}], 接收端序列号: [{}]", sendIndex, receiveIndex);
+ nettyServerHandler.sendMsg(tcpClientMap.get(client), allBuf);
+ logger.info("################ 向设备端机器人发送消息会话序列号: {}, 接收端序列号: {}, 消息体: ################ \n {}", sendIndex, receiveIndex, xml);
sendIndex++;
} else {
- logger.warn("[NETTY] 设备端机器人: [{}] 离线!!!", client);
+ logger.warn("################ 设备端机器人: [{}] 离线!!! ################", client);
}
}
@@ -169,7 +168,7 @@ public class NettyServer {
try {
dealMsgInThreadPool(binaryModel);
} catch (Exception e) {
- e.printStackTrace();
+ logger.error(ExceptionUtils.getStackTrace(e));
}
});
}
@@ -187,13 +186,12 @@ public class NettyServer {
//处理接收消息
private void dealMsgInThreadPool(BinaryModel binaryModel) throws DocumentException {
String xml = binaryModel.dataBuf.toString(CharsetUtil.UTF_8);
- logger.info("[NETTY] 设备端机器人会话序列号: [{}], 接收端序列号: [{}]", binaryModel.sendIndex, binaryModel.receiveIndex);
receiveIndex = binaryModel.sendIndex;
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)));
Element root = document.getRootElement();
String sendCode = root.element("SendCode").getText();
- clients.put(sendCode, binaryModel.id);
+ tcpClientMap.put(sendCode, binaryModel.id);
int type = 0;
if (null != root.element("Type") && !StringUtil.isNullOrEmpty(root.element("Type").getText())) {
type = Integer.parseInt(root.element("Type").getText());
@@ -203,8 +201,7 @@ public class NettyServer {
command = Integer.parseInt(root.element("Command").getText());
}
- logger.info("[NETTY] MESSAGE Type: {}, Data: [{}], Hex: [{}]", type, xml, HexUtils.ascii2hex(xml));
-
+ logger.info("################ 消息类型: {} ################", type);
//判断是否重发
if (type == SystemType.system) {
if (command == SystemType.has_response || command == SystemType.no_response) {
@@ -221,13 +218,12 @@ public class NettyServer {
switch (command) {
case SystemType.register_request:
// 收到接入侧注册信息
- logger.info("[NETTY] 设备端注册信息: {}", xml);
+ logger.info("################ 客户端注册信息 ################ \n {} ", xml);
dealRegister(xml);
- logger.info("[NETTY] 设备端注册信息2: {}", xml);
break;
case SystemType.heart_request:
// 处理心跳请求响应
- logger.info("[NETTY] 设备端心跳: {}", xml);
+ logger.info("################ 客户端心跳 ################ \n {} ", xml);
sendHeartBeat(xml);
break;
case SystemType.has_response:
@@ -236,8 +232,8 @@ public class NettyServer {
// 处理设备上报的模型同步响应
if (null != root.element("Items").element("Item").attribute("device_file_path")) {
// 收到接入侧模型同步数据
- logger.info("[NETTY] 设备端模型同步数据: {}", xml);
- json = down.ModelControlXml2Json(xml);
+ logger.info("################ 客户端模型同步数据 ################ \n {} ", xml);
+ json = downXml2Json.ModelControlXml2Json(xml);
JSONObject jsonObject = JSONObject.parseObject(json);
jsonObject.put("Type", Constant.MODEL_UP_TYPE);
rabbitTemplate.convertAndSend(Constant.EX_CHANGE_NAME, Constant.ROUTING_KEY_NAME, jsonObject.toJSONString());
@@ -246,7 +242,7 @@ public class NettyServer {
if (null != root.element("Items").element("Item").attribute("task_patrolled_id")) {
// 收到接入侧任务下发或控制回复数据
logger.info("[NETTY] 设备端任务下发或控制回复数据: {}", xml);
- json = down.ModelControlXml2Json(xml);
+ json = downXml2Json.ModelControlXml2Json(xml);
JSONObject jsonObject = JSONObject.parseObject(json);
jsonObject.put("SendCode", "");
clientController.sendMsg(jsonObject.toJSONString());
@@ -262,49 +258,50 @@ public class NettyServer {
}
break;
case PushType.patrolDeviceState:
- json = down.PatrolDeviceStateControlXml2Json(xml);
-
- logger.info("[NETTY] 客户端设备状态数据: {}", xml);
+ json = downXml2Json.PatrolDeviceStateControlXml2Json(xml);
+ logger.info("################ 客户端设备状态数据 ################ \n{}", json);
break;
case PushType.patrolDeviceRunning:
- json = down.PatrolDeviceRuningControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备运行数据: {}", xml);
+ json = downXml2Json.PatrolDeviceRunningControlXml2Json(xml);
+ logger.info("################ 客户端设备运行数据 ################ \n{}", json);
break;
case PushType.nestState:
- json = down.NestStateControlXml2Json(xml);
- logger.info("[NETTY] 客户端机巢状态数据: {}", xml);
+ json = downXml2Json.NestStateControlXml2Json(xml);
+ logger.info("################ 客户端机巢状态数据 ################ \n{}", json);
break;
case PushType.nestRunning:
- json = down.NestRuningControlXml2Json(xml);
- logger.info("[NETTY] 客户端机巢运行数据: {}", xml);
+ json = downXml2Json.NestRunningControlXml2Json(xml);
+ logger.info("################ 客户端机巢运行数据 ################ \n{}", json);
break;
case PushType.location:
- json = down.LocationControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备坐标: {}", xml);
+ json = downXml2Json.LocationControlXml2Json(xml);
+ logger.info("################ 客户端设备坐标 ################ \n{}", json);
break;
case PushType.route:
- json = down.RouteControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备路线: {}", xml);
+ json = downXml2Json.RouteControlXml2Json(xml);
+ logger.info("################ 客户端设备路线 ################ \n{}", json);
break;
case PushType.alarm:
- json = down.AlarmControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备异常告警: {}", xml);
+ //json = down.AlarmControlXml2Json(xml);
+ json = downXml2Json.DownStreamJson2Xml(xml, AlarmControl.class);
+ logger.info("################ 客户端设备异常告警 ################ \n{}", json);
break;
case PushType.environment:
- json = down.EnvironmentControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备上报环境数据: {}", xml);
+ //json = downXml2Json.EnvironmentControlXml2Json(xml);
+ json = downXml2Json.DownStreamJson2Xml(xml, EnvironmentControl.class);
+ logger.info("################ 客户端设备上报环境数据 ################ \n{}", json);
break;
case PushType.taskState:
- json = down.TaskStateControlXml2Json(xml);
- logger.info("[NETTY] 客户端设备任务状态: {}", xml);
+ json = downXml2Json.TaskStateControlXml2Json(xml);
+ logger.info("################ 客户端设备任务状态 ################ \n{}", json);
break;
case PushType.result:
- json = down.TaskResultControlXml2Json(xml);
- logger.info("[NETTY] 客户端巡视结果: {}", xml);
+ json = downXml2Json.TaskResultControlXml2Json(xml);
+ logger.info("################ 客户端巡视结果 ################ \n{}", json);
break;
default:
// server-handle-接收到的type:{},不在处理范围内,不予处理
- logger.warn("[NETTY] 非法的消息不予处理: {}, TYPE: {}", xml, type);
+ logger.info("################ 非法的消息不予处理, 类型{}, 消息体 ################ \n {}", type, xml);
}
if (type != SystemType.system && !StringUtil.isNullOrEmpty(json)) {
//rabbitmq推送到消息队列中基于springboot_xggd
@@ -316,7 +313,7 @@ public class NettyServer {
public void responseMsg(String sendCode, String receiveCode) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
- xStream.alias(alias, ResponseControl.class);
+ xStream.alias(aliasHost, ResponseControl.class);
xStream.autodetectAnnotations(true);
ResponseControl responseControl = new ResponseControl();
responseControl.SendCode = sendCode;
@@ -332,13 +329,30 @@ public class NettyServer {
//处理注册应答
public void dealRegister(String xml) {
- XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
- //xStream.alias(alias,BaseControl.class);
- xStream.alias("PatrolHost", BaseControl.class);
- xStream.autodetectAnnotations(true);
- xStream.ignoreUnknownElements();
- xStream.addPermission(AnyTypePermission.ANY);
- BaseControl obj = (BaseControl) xStream.fromXML(xml);
+ BaseControl obj = new BaseControl();
+ try {
+ XStream xStream = getXmlStreamInstance();
+ xStream.alias(aliasHost, BaseControl.class);
+ xStream.autodetectAnnotations(true);
+ xStream.ignoreUnknownElements();
+ xStream.addPermission(AnyTypePermission.ANY);
+ obj = (BaseControl) xStream.fromXML(xml);
+ } catch (com.thoughtworks.xstream.XStreamException e) {
+ logger.error("################ 解析失败[PatrolHost] ################");
+ logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e));
+ try {
+ XStream xStreamEx = getXmlStreamInstance();
+ xStreamEx.alias(aliasDevice, BaseControl.class);
+ xStreamEx.autodetectAnnotations(true);
+ xStreamEx.ignoreUnknownElements();
+ xStreamEx.addPermission(AnyTypePermission.ANY);
+ obj = (BaseControl) xStreamEx.fromXML(xml);
+ } catch (com.thoughtworks.xstream.XStreamException e2) {
+ logger.error("################ 解析失败[PatrolDevice] ################");
+ logger.error("################ 异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e2));
+ }
+ }
+
RegisterResponseControl responseControl = new RegisterResponseControl();
responseControl.SendCode = obj.ReceiveCode;
responseControl.ReceiveCode = obj.SendCode;
@@ -379,6 +393,10 @@ public class NettyServer {
sendRegisterResponse(responseControl, obj.SendCode);
}
+ private XStream getXmlStreamInstance() {
+ return new XStream(new Xpp3Driver(new NoNameCoder()));
+ }
+
/**
* 鉴权巡视设备
*
@@ -408,7 +426,7 @@ public class NettyServer {
public void sendRegisterResponse(RegisterResponseControl responseControl, String sendCode) {
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
- xStream.alias(alias, RegisterResponseControl.class);
+ xStream.alias(aliasHost, RegisterResponseControl.class);
xStream.autodetectAnnotations(true);
String xml = xStream.toXML(responseControl);
sendMsg(sendCode, false, xml);
@@ -417,7 +435,7 @@ public class NettyServer {
public void sendHeartBeat(String xml) {
logger.info("[NETTY] 设备端机器人系统心跳消息: {}", xml);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
- xStream.alias(alias, BaseControl.class);
+ xStream.alias(aliasHost, BaseControl.class);
xStream.autodetectAnnotations(true);
xStream.ignoreUnknownElements();
xStream.addPermission(AnyTypePermission.ANY);
@@ -438,7 +456,7 @@ public class NettyServer {
* 判断机器人是否在线
*/
public boolean isOnline(String code) {
- return clients.containsKey(code);
+ return tcpClientMap.containsKey(code);
}
public void sendXmlMessage(JSONObject obj) {
@@ -454,29 +472,29 @@ public class NettyServer {
case RobotType.robotFz:
case RobotType.robotIr:
case RobotType.robotPtz:
- xml = up.RobotJson2Xml(json);
+ xml = upJson2Xml.RobotJson2Xml(json);
break;
case UAVType.uav:
case UAVType.uavXj:
case UAVType.uavKz:
case UAVType.uavYt:
case UAVType.nest:
- xml = up.UavControlJson2Xml(json);
+ xml = upJson2Xml.UavControlJson2Xml(json);
break;
case TaskType.taskControl:
- xml = up.ResponseJson2Xml(json);
+ xml = upJson2Xml.ResponseJson2Xml(json);
break;
case TaskType.taskSend:
- xml = up.TaskSendJson2Xml(json);
+ xml = upJson2Xml.TaskSendJson2Xml(json);
break;
case TaskType.taskArea:
- xml = up.AreaJson2Xml(json);
+ xml = upJson2Xml.AreaJson2Xml(json);
break;
case ModelType.modelSync:
- xml = up.ResponseJson2Xml(json);
+ xml = upJson2Xml.ResponseJson2Xml(json);
break;
case TaskType.lendonTask:
- xml = up.LendonTaskJson2Xml(json);
+ xml = upJson2Xml.LinkageTaskJson2Xml(json);
break;
default:
logger.warn("[NETTY] 向设备端下发命令, 类型[{}]不正确, 不予处理", type);
diff --git a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java
index effd544..3819dfd 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/NettyServerHandler.java
@@ -4,7 +4,6 @@ import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
-import org.apache.tomcat.util.buf.HexUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -21,10 +20,10 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
this.nettyServer = nettyServer;
}
- public void SendMsg(String id, ByteBuf byteBuf) {
+ public void sendMsg(String id, ByteBuf byteBuf) {
if (ids.containsKey(id)) {
ByteBuf forPrint = byteBuf.copy();
- logger.info("[NETTY] FULL MSG =>: [{}]", ByteBufUtil.hexDump(forPrint));
+ logger.info("################ 下行原始报文 ################\n [{}]", ByteBufUtil.hexDump(forPrint));
ids.get(id).writeAndFlush(byteBuf);
}
}
@@ -36,7 +35,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
public void channelActive(ChannelHandlerContext ctx) throws Exception {
String id = ctx.channel().id().asShortText();
ids.put(id, ctx);
- logger.warn("[NETTY] 设备上线: {}", id);
+ logger.info("################ 设备上线: {} ################", id);
}
/**
@@ -46,9 +45,7 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
public void channelInactive(ChannelHandlerContext ctx) throws Exception {
ctx.close();
String id = ctx.channel().id().asShortText();
-
- logger.warn("设备断开,id:{}", id);
-
+ logger.warn("################ 设备断开: {} ################", id);
if (ids.containsKey(id)) {
ids.remove(id);
}
@@ -60,10 +57,14 @@ public class NettyServerHandler extends ChannelInboundHandlerAdapter {
*/
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
- logger.warn("[NETTY] channelRead");
String id = ctx.channel().id().asShortText();
BinaryModel binaryModel = (BinaryModel) msg;
binaryModel.id = id;
+ logger.info("################ 客户:{}, 客户序列号:{}, 服务序列号:{}, 长度:{} ################",
+ binaryModel.id,
+ binaryModel.sendIndex,
+ binaryModel.receiveIndex,
+ binaryModel.dataLength);
nettyServer.receiveMsg((BinaryModel) msg);
}
diff --git a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java
index ccdae6e..24ac138 100644
--- a/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java
+++ b/src/main/java/com/inspect/tcpserver/tcp/UpJson2Xml.java
@@ -4,9 +4,14 @@ import com.alibaba.fastjson.JSON;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.naming.NoNameCoder;
import com.thoughtworks.xstream.io.xml.Xpp3Driver;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-public class UpJson2Xml
-{
+public class UpJson2Xml {
+ private final Logger logger = LoggerFactory.getLogger(DownXml2Json.class);
+
+ private String deviceAlias = "PatrolDevice";
public String getAlias() {
return alias;
@@ -26,71 +31,84 @@ public class UpJson2Xml
this.alias = alias;
}
-
- public String ModelJson2Xml(String json, Class clazz) {
- XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
- xStream.autodetectAnnotations(true);
- xStream.alias(alias, clazz.getClass());
-
- T obj = JSON.parseObject(json,clazz);
- return xStream.toXML(obj);
+ public String UpStreamJson2Xml(String json, Class clazz) {
+ try {
+ XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
+ xStream.autodetectAnnotations(true);
+ xStream.alias(alias, clazz);
+ T obj = JSON.parseObject(json, clazz);
+ return xStream.toXML(obj);
+ } catch (com.thoughtworks.xstream.XStreamException e) {
+ logger.error("################ UP解析失败[PatrolHost] ################");
+ logger.error("################ UP异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(e));
+ try {
+ XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
+ xStream.autodetectAnnotations(true);
+ xStream.alias(deviceAlias, clazz);
+ T obj = JSON.parseObject(json, clazz);
+ return xStream.toXML(obj);
+ } catch (com.thoughtworks.xstream.XStreamException ex) {
+ logger.error("################ UP解析失败[PatrolDevice] ################");
+ logger.error("################ UP异常堆栈 ################\n{}", ExceptionUtils.getStackTrace(ex));
+ return null;
+ }
+ }
}
//模型更新上报指令
- public String UpdateModelJson2Xml(String json)
- {
- UpdateModelControl obj=JSON.parseObject(json,UpdateModelControl.class);
+ public String UpdateModelJson2Xml(String json) {
+ UpdateModelControl obj = JSON.parseObject(json, UpdateModelControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, UpdateModelControl.class);
String resultXML = xStream.toXML(obj);
return resultXML;
}
+
//任务控制和模型同步
- public String ResponseJson2Xml(String json)
- {
- ResponseControl obj=JSON.parseObject(json,ResponseControl.class);
+ public String ResponseJson2Xml(String json) {
+ ResponseControl obj = JSON.parseObject(json, ResponseControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, ResponseControl.class);
- obj.Items="";
+ obj.Items = "";
String resultXML = xStream.toXML(obj);
return resultXML;
}
+
//模型同步
- public String ModelJson2Xml(String json)
- {
- BaseControl obj=JSON.parseObject(json,ModelControl.class);
+ public String ModelJson2Xml(String json) {
+ BaseControl obj = JSON.parseObject(json, ModelControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, ModelControl.class);
String resultXML = xStream.toXML(obj);
return resultXML;
}
+
//机器人控制指令
- public String RobotJson2Xml(String json)
- {
- RobotControl obj=JSON.parseObject(json,RobotControl.class);
+ public String RobotJson2Xml(String json) {
+ RobotControl obj = JSON.parseObject(json, RobotControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, RobotControl.class);
String resultXML = xStream.toXML(obj);
return resultXML;
}
+
//无人机控制指令
- public String UavControlJson2Xml(String json)
- {
- RobotControl obj=JSON.parseObject(json,RobotControl.class);
+ public String UavControlJson2Xml(String json) {
+ RobotControl obj = JSON.parseObject(json, RobotControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, RobotControl.class);
String resultXML = xStream.toXML(obj);
return resultXML;
}
+
//任务下发指令
- public String TaskSendJson2Xml(String json)
- {
- TaskSendControl obj=JSON.parseObject(json,TaskSendControl.class);
+ public String TaskSendJson2Xml(String json) {
+ TaskSendControl obj = JSON.parseObject(json, TaskSendControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, TaskSendControl.class);
@@ -99,9 +117,8 @@ public class UpJson2Xml
}
//联动任务下发指令
- public String LendonTaskJson2Xml(String json)
- {
- LendonTaskControl obj=JSON.parseObject(json,LendonTaskControl.class);
+ public String LinkageTaskJson2Xml(String json) {
+ LendonTaskControl obj = JSON.parseObject(json, LendonTaskControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, LendonTaskControl.class);
@@ -110,9 +127,8 @@ public class UpJson2Xml
}
//检修区域指令
- public String AreaJson2Xml(String json)
- {
- AreaControl obj=JSON.parseObject(json,AreaControl.class);
+ public String AreaJson2Xml(String json) {
+ AreaControl obj = JSON.parseObject(json, AreaControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, AreaControl.class);
@@ -123,9 +139,8 @@ public class UpJson2Xml
//-----------------------------------------上行数据----------------------------------//
//巡视设备状态数据
- public String PatrolDeviceStateControlJson2Xml(String json)
- {
- PatrolDeviceStateControl obj=JSON.parseObject(json,PatrolDeviceStateControl.class);
+ public String PatrolDeviceStateControlJson2Xml(String json) {
+ PatrolDeviceStateControl obj = JSON.parseObject(json, PatrolDeviceStateControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, PatrolDeviceStateControl.class);
@@ -134,9 +149,8 @@ public class UpJson2Xml
}
//巡视设备运行数据
- public String PatrolDeviceRuningControlJson2Xml(String json)
- {
- PatrolDeviceRuningControl obj=JSON.parseObject(json,PatrolDeviceRuningControl.class);
+ public String PatrolDeviceRunningControlJson2Xml(String json) {
+ PatrolDeviceRuningControl obj = JSON.parseObject(json, PatrolDeviceRuningControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, PatrolDeviceRuningControl.class);
@@ -145,9 +159,8 @@ public class UpJson2Xml
}
//无人机机巢状态数据
- public String NestStateJson2Xml(String json)
- {
- NestStateControl obj=JSON.parseObject(json,NestStateControl.class);
+ public String NestStateJson2Xml(String json) {
+ NestStateControl obj = JSON.parseObject(json, NestStateControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, NestStateControl.class);
@@ -156,9 +169,8 @@ public class UpJson2Xml
}
//无人机机巢运行数据
- public String NestRuningJson2Xml(String json)
- {
- NestRuningControl obj=JSON.parseObject(json,NestRuningControl.class);
+ public String NestRunningJson2Xml(String json) {
+ NestRuningControl obj = JSON.parseObject(json, NestRuningControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, NestRuningControl.class);
@@ -168,9 +180,8 @@ public class UpJson2Xml
//巡视设备坐标
- public String LocationControlJson2Xml(String json)
- {
- LocationControl obj=JSON.parseObject(json,LocationControl.class);
+ public String LocationControlJson2Xml(String json) {
+ LocationControl obj = JSON.parseObject(json, LocationControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, LocationControl.class);
@@ -179,9 +190,8 @@ public class UpJson2Xml
}
//巡视路线
- public String RouteControlJson2Xml(String json)
- {
- RouteControl obj=JSON.parseObject(json,RouteControl.class);
+ public String RouteControlJson2Xml(String json) {
+ RouteControl obj = JSON.parseObject(json, RouteControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, RouteControl.class);
@@ -190,9 +200,8 @@ public class UpJson2Xml
}
//巡视设备异常告警数据
- public String AlarmControlJson2Xml(String json)
- {
- AlarmControl obj=JSON.parseObject(json,AlarmControl.class);
+ public String AlarmControlJson2Xml(String json) {
+ AlarmControl obj = JSON.parseObject(json, AlarmControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, AlarmControl.class);
@@ -201,9 +210,8 @@ public class UpJson2Xml
}
//环境数据
- public String EnvironmentControlJson2Xml(String json)
- {
- EnvironmentControl obj=JSON.parseObject(json,EnvironmentControl.class);
+ public String EnvironmentControlJson2Xml(String json) {
+ EnvironmentControl obj = JSON.parseObject(json, EnvironmentControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, EnvironmentControl.class);
@@ -212,9 +220,8 @@ public class UpJson2Xml
}
//任务状态数据
- public String TaskStateControlJson2Xml(String json)
- {
- TaskStateControl obj=JSON.parseObject(json,TaskStateControl.class);
+ public String TaskStateControlJson2Xml(String json) {
+ TaskStateControl obj = JSON.parseObject(json, TaskStateControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, TaskStateControl.class);
@@ -223,9 +230,8 @@ public class UpJson2Xml
}
//巡视结果
- public String TaskResultControlJson2Xml(String json)
- {
- TaskResultControl obj=JSON.parseObject(json,TaskResultControl.class);
+ public String TaskResultControlJson2Xml(String json) {
+ TaskResultControl obj = JSON.parseObject(json, TaskResultControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, TaskResultControl.class);
@@ -234,9 +240,8 @@ public class UpJson2Xml
}
//静默监视告警数据
- public String MonitorControlJson2Xml(String json)
- {
- MonitorControl obj=JSON.parseObject(json,MonitorControl.class);
+ public String MonitorControlJson2Xml(String json) {
+ MonitorControl obj = JSON.parseObject(json, MonitorControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, MonitorControl.class);
@@ -245,9 +250,8 @@ public class UpJson2Xml
}
//巡视设备统计信息上报
- public String ReportControlJson2Xml(String json)
- {
- ReportControl obj=JSON.parseObject(json,ReportControl.class);
+ public String ReportControlJson2Xml(String json) {
+ ReportControl obj = JSON.parseObject(json, ReportControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, ReportControl.class);
@@ -256,9 +260,8 @@ public class UpJson2Xml
}
//巡检告警数据
- public String AnalysisControlJson2Xml(String json)
- {
- AnalysisControl obj=JSON.parseObject(json,AnalysisControl.class);
+ public String AnalysisControlJson2Xml(String json) {
+ AnalysisControl obj = JSON.parseObject(json, AnalysisControl.class);
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
xStream.autodetectAnnotations(true);
xStream.alias(alias, AnalysisControl.class);
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 63fd431..b2745a0 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -1,8 +1,13 @@
+
+
-
+
+
+
+
@@ -12,51 +17,63 @@
- log/tcpServer.log
+ ${log.path}/info.log
-
+
- log/tcpServer.%d{yyyy-MM-dd}.log
+ ${log.path}/info/info.%d{yyyy-MM-dd}.%i.log
+ ${log.maxFileSize}
- 60
+ ${log.maxHistory}
${log.pattern}
-
-
-
-
-
-
- udp:10.10.18.185
- 12201
- 1.1
-
- dliip-device
-
- version=1.1,module=patrol
- true
- true
- true
- yyyy-MM-dd HH:mm:ss,SSS
- 8192
-
- mdcField1,mdcField2
- mdc.*,(mdc|MDC)fields
- true
-
-
- INFO
-
+
+
+ INFO
+
+ ACCEPT
+
+ DENY
+
+
+ ${log.path}/error.log
+
+
+
+ ${log.path}/error.%d{yyyy-MM-dd}.log
+
+ 60
+
+
+ ${log.pattern}
+
+
+
+ ERROR
+
+ ACCEPT
+
+ DENY
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file