|
|
package com.inspect.upstream.tcp;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.inspect.upstream.util.Color;
|
|
|
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 lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
@Slf4j
|
|
|
public class DownXml2Json {
|
|
|
|
|
|
/**
|
|
|
* 默认为对上级的客户端的别名
|
|
|
*/
|
|
|
private String alias;
|
|
|
|
|
|
private String deviceAlias = "PatrolDevice";
|
|
|
|
|
|
private XStream getXmlStreamInstance() {
|
|
|
return new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
}
|
|
|
|
|
|
public DownXml2Json(String alias) {
|
|
|
this.alias = alias;
|
|
|
}
|
|
|
|
|
|
public <T> String DownStreamJson2Xml(String uuid, String id, String xml, Class<T> clazz) {
|
|
|
try {
|
|
|
XStream xStream = getXmlStreamInstance();
|
|
|
xStream.alias(alias, clazz);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
T obj = (T) xStream.fromXML(xml);
|
|
|
return JSON.toJSONString(obj);
|
|
|
} catch (com.thoughtworks.xstream.XStreamException e) {
|
|
|
try {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(deviceAlias, clazz);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
T obj = (T) xStream.fromXML(xml);
|
|
|
return JSON.toJSONString(obj);
|
|
|
} catch (com.thoughtworks.xstream.XStreamException ex) {
|
|
|
log.error(Color.RED + "###### 客户:{}, DownStreamJson2Xml解析失败:{} ######" + Color.END, id, e.getMessage());
|
|
|
return null;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//任务下发
|
|
|
public String TaskSendControlXml2Json(String xml) {
|
|
|
XStream xStream = getXmlStreamInstance();
|
|
|
xStream.alias(alias, TaskSendControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
TaskSendControl obj = (TaskSendControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//联动任务下发
|
|
|
public String LinkageTaskControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, LinkageTaskControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
LinkageTaskControl obj = (LinkageTaskControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//检修去下发
|
|
|
public String AreaControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, AreaControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
AreaControl obj = (AreaControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//机器人控制下发
|
|
|
public String RobotControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, RobotControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
RobotControl obj = (RobotControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//无人机控制下发
|
|
|
public String UavControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, RobotControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
RobotControl obj = (RobotControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//任务控制和同步指令
|
|
|
public String BaseControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, BaseControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
BaseControl obj = (BaseControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//上级查询巡视结果指令
|
|
|
public String ResultControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, ResultControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
ResultControl obj = (ResultControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//模型同步同步指令
|
|
|
public String ModelControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, ModelControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
BaseControl obj = (BaseControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//巡检设备状态数据
|
|
|
public String PatrolDeviceStateControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, PatrolDeviceStateControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
PatrolDeviceStateControl obj = (PatrolDeviceStateControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//巡检设备运行数据
|
|
|
public String PatrolDeviceRunningControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, PatrolDeviceRunningControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
PatrolDeviceRunningControl obj = (PatrolDeviceRunningControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//机巢状态数据
|
|
|
public String NestStateControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, NestStateControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
NestStateControl obj = (NestStateControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//机巢运行数据
|
|
|
public String NestRunningControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, NestRunningControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
NestRunningControl obj = (NestRunningControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//坐标数据
|
|
|
public String LocationControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, LocationControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
LocationControl obj = (LocationControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//巡视路线
|
|
|
public String RouteControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, RouteControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
RouteControl obj = (RouteControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//设备告警数据
|
|
|
public String AlarmControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
//xStream.alias(alias, AlarmControl.class);
|
|
|
log.info("[XML] AlarmControlXml2Json alias:{}", alias);
|
|
|
xStream.alias(alias, AlarmControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
AlarmControl obj = (AlarmControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//环境数据
|
|
|
public String EnvironmentControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, EnvironmentControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
EnvironmentControl obj = (EnvironmentControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//任务状态
|
|
|
public String TaskStateControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, TaskStateControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
TaskStateControl obj = (TaskStateControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//巡视结果
|
|
|
public String TaskResultControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, TaskResultControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
TaskResultControl obj = (TaskResultControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
|
|
|
//巡检告警数据
|
|
|
public String AnalysisControlXml2Json(String xml) {
|
|
|
XStream xStream = new XStream(new Xpp3Driver(new NoNameCoder()));
|
|
|
xStream.alias(alias, AnalysisControl.class);
|
|
|
xStream.autodetectAnnotations(true);
|
|
|
xStream.ignoreUnknownElements();
|
|
|
xStream.addPermission(AnyTypePermission.ANY);
|
|
|
AnalysisControl obj = (AnalysisControl) xStream.fromXML(xml);
|
|
|
String resultJson = JSON.toJSONString(obj);
|
|
|
return resultJson;
|
|
|
}
|
|
|
}
|