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 String DownStreamJson2Xml(String uuid, String id, String xml, Class 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; } }