diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/controller/KafkaController.java b/src/main/java/com/gzzn/omms/msgexchangeapi/controller/KafkaController.java index 466bff0e..59bf2197 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/controller/KafkaController.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/controller/KafkaController.java @@ -37,7 +37,7 @@ public class KafkaController { kafkaservice.msgSend(topicName, msg); } catch (Exception e) { try { - String jsonStr = exchangeService.xmlstrToJson(msg); + String jsonStr = exchangeService.xmlMsgToJsonMsg(msg); kafkaservice.msgSend(topicName, jsonStr); } catch (Exception e2) { throw new RuntimeException(e2); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java index 88b9e096..8d66afc7 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/MsgHandlerDispatcher.java @@ -27,7 +27,7 @@ public class MsgHandlerDispatcher { { try { - MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); String type = msg.getMETA().getTYPE().name(); String subType = msg.getMETA().getSTYP().name(); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java index d5e0aefa..876edcc9 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FDELHandler.java @@ -20,7 +20,7 @@ public class FDELHandler extends FlopBaseHandler { @Override public HandlerResult run(Cminmsg cminmsg) { - MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); FLOP flop = msg.getFLOP(); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java index f17e89d3..e49fd488 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/base/FlopBaseHandler.java @@ -45,7 +45,7 @@ public class FlopBaseHandler implements IBaseHandler { @Override public HandlerResult run(Cminmsg cminmsg) { - MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); FLOP flop = msg.getFLOP(); @@ -96,7 +96,7 @@ public class FlopBaseHandler implements IBaseHandler { kafkaservice.msgSend("schd", schdMsg); //send msg - String msg = exchangeService.xmlstrToJson( + String msg = exchangeService.xmlMsgToJsonMsg( cminmsg.getCminmsgsClobMsg() ); kafkaservice.msgSend("msg", msg); @@ -110,7 +110,7 @@ public class FlopBaseHandler implements IBaseHandler { protected void sendMsg(Cminmsg cminmsg) { //send msg - String msg = exchangeService.xmlstrToJson( + String msg = exchangeService.xmlMsgToJsonMsg( cminmsg.getCminmsgsClobMsg() ); kafkaservice.msgSend("msg", msg); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/ADFTHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/ADFTHandler.java index f514b40e..fd61b955 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/ADFTHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/ADFTHandler.java @@ -19,7 +19,7 @@ public class ADFTHandler extends SchdBaseHandler{ @Override public HandlerResult run(Cminmsg cminmsg) { - MSG msg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + MSG msg = exchangeService.xmlToMsg(cminmsg.getCminmsgsClobMsg()); if(msg.getSCHD().getFLTR().size() != 1) { logger.error("预期每条消息只会包含一个动态航班,当前{}",msg.getSCHD().getFLTR().size()); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/base/SchdBaseHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/base/SchdBaseHandler.java index acef8f78..9f45851e 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/base/SchdBaseHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/schd/base/SchdBaseHandler.java @@ -54,7 +54,7 @@ public class SchdBaseHandler implements IBaseHandler{ { //发送日航班消息的通知给前端,让前端重新加载全部动态 String clobMsg = cminmsg.getCminmsgsClobMsg(); - MSG dnldMsg = exchangeService.xmlstrToObject(clobMsg, MSG.class); + MSG dnldMsg = exchangeService.xmlToMsg(clobMsg); int recs = dnldMsg.getSCHD().getRECS(); logger.info("发送日计划到kafka,条数:{}",recs); @@ -73,7 +73,7 @@ public class SchdBaseHandler implements IBaseHandler{ protected void sendMsg(Cminmsg cminmsg) { //send msg - String msg = exchangeService.xmlstrToJson( + String msg = exchangeService.xmlMsgToJsonMsg( cminmsg.getCminmsgsClobMsg() ); kafkaservice.msgSend("msg", msg); @@ -92,7 +92,7 @@ public class SchdBaseHandler implements IBaseHandler{ kafkaservice.msgSend("schd", schdMsg); //send msg - String msg = exchangeService.xmlstrToJson( + String msg = exchangeService.xmlMsgToJsonMsg( cminmsg.getCminmsgsClobMsg() ); kafkaservice.msgSend("msg", msg); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/CminmsgServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/CminmsgServiceImpl.java index 8c843a2c..d4447a14 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/CminmsgServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/CminmsgServiceImpl.java @@ -75,7 +75,7 @@ public class CminmsgServiceImpl implements ICminmsgService { .stream() .filter(x->{ String msgBlob = x.getCminmsgsClobMsg(); - MSG msg = exchangeService.xmlstrToObject(msgBlob, MSG.class); + MSG msg = exchangeService.xmlToMsg(msgBlob); String type = msg.getMETA().getTYPE().name(); String subType = msg.getMETA().getSTYP().name(); return type.equals("SCHD") && subType.equals("RESP"); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/CmoutmsgServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/CmoutmsgServiceImpl.java index 1118f291..78b65e85 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/CmoutmsgServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/CmoutmsgServiceImpl.java @@ -68,7 +68,7 @@ public class CmoutmsgServiceImpl implements ICmoutmsgService { //发送消息到数据库 Cmoutmsg cmoutmsg = new Cmoutmsg(); cmoutmsg.setCoutmsgsDateInserted(new Date()); - cmoutmsg.setCoutmsgsClobMsg(exchangeService.getCoutmsgsClobMsg(rqfdMsg)); + cmoutmsg.setCoutmsgsClobMsg(exchangeService.msgToXml(rqfdMsg)); cmoutmsg.setRoutingid(SUBSYSTEMS.OSH5RQFD.name()); Cmoutmsg rtCmoutmsg = cmoutmsgDao.save(cmoutmsg); diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/ExchangeServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/ExchangeServiceImpl.java index b6bd34f7..2b52e980 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/ExchangeServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/ExchangeServiceImpl.java @@ -10,10 +10,13 @@ import javax.xml.stream.XMLStreamWriter; import org.springframework.stereotype.Service; import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.type.TypeFactory; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator; @@ -24,7 +27,8 @@ import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; @Service("exchangeService") public class ExchangeServiceImpl implements IExchangeService { - + + /* @Override public String xmlstrToJson(String xml) throws ExchangeServiceException { MSG msg = xmlstrToObject(xml,MSG.class); //转具体消息 @@ -91,4 +95,92 @@ public class ExchangeServiceImpl implements IExchangeService { throw new ExchangeServiceException(e.getMessage(),e); } }// end function + */ + + @Override + public MSG xmlToMsg(String xmlStr) throws ExchangeServiceException { + try { + XmlMapper xmlMapper = new XmlMapper(); + xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + xmlMapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector(TypeFactory.defaultInstance())); + return xmlMapper.readValue(xmlStr, MSG.class); + } catch (Exception e) { + throw new ExchangeServiceException(e.getMessage(),e); + } + } + + @Override + public String msgToJson(MSG msg) throws ExchangeServiceException { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + JsonGenerator jsonGenerator = null; + StringWriter out = new StringWriter(); + + try { + jsonGenerator = objectMapper.getJsonFactory().createJsonGenerator(out); + jsonGenerator.writeStartObject(); + jsonGenerator.writeObjectField("META", msg.getMETA()); + + // + String method = "get" + msg.getMETA().getTYPE().name(); + jsonGenerator.writeObjectField( + msg.getMETA().getTYPE().name(), + msg + .getClass() + .getDeclaredMethod(method) + .invoke(msg) + ); + + jsonGenerator.writeEndObject(); + jsonGenerator.flush(); + + return out.toString(); + } catch (Exception e) { + throw new ExchangeServiceException(e.getMessage(),e); + } + } + + @Override + public String msgToXml(MSG msg) throws ExchangeServiceException { + try { + XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory(); + XMLOutputFactory xmlOutputFactory = XMLOutputFactory.newFactory(); + + StringWriter out = new StringWriter(); + XMLStreamWriter sw = xmlOutputFactory.createXMLStreamWriter(out); + + // then Jackson components + XmlMapper mapper = new XmlMapper(xmlInputFactory); + mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); + + + sw.writeStartDocument(); + sw.writeStartElement("MSG"); + sw.writeNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance"); + sw.writeAttribute("xsi", "http://www.w3.org/2001/XMLSchema-instance", "noNamespaceSchemaLocation", "unisysaodbsis.xsd"); + + // Write whatever content POJOs... + mapper.writeValue(sw, msg.getMETA()); + // + String method = "get" + msg.getMETA().getTYPE().name(); + mapper.writeValue(sw, + msg + .getClass() + .getDeclaredMethod(method) + .invoke(msg)); + + sw.writeEndDocument(); + + return out.toString(); + } catch (Exception e) { + throw new ExchangeServiceException(e.getMessage(),e); + } + } + + @Override + public String xmlMsgToJsonMsg(String xml) throws ExchangeServiceException { + MSG msg = xmlToMsg(xml); + String json = msgToJson(msg); + return json; + } } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/IExchangeService.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/IExchangeService.java index 8b62367e..b5cd5574 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/IExchangeService.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/exchange/IExchangeService.java @@ -9,8 +9,38 @@ import com.gzzn.omms.msgexchangeapi.exception.ExchangeServiceException; * */ public interface IExchangeService { + /* public String xmlstrToJson(String xml) throws ExchangeServiceException; public T xmlstrToObject(String xml,Class valueType) throws ExchangeServiceException; public String objectToXmlstr(Object object) throws ExchangeServiceException; public String getCoutmsgsClobMsg(MSG msg) throws ExchangeServiceException; + */ + + /** + * xml字符串转msg类 + * @param xmlStr + * @return + */ + public MSG xmlToMsg(String xmlStr) throws ExchangeServiceException; + + /** + * msg类转json字符串 + * @param msg + * @return + */ + public String msgToJson(MSG msg) throws ExchangeServiceException; + + /** + * msg类转xml字符串 + * @param msg + * @return + */ + public String msgToXml(MSG msg) throws ExchangeServiceException; + + /** + * xml 消息字符串转json消息字符串 + * @param xml + * @return + */ + public String xmlMsgToJsonMsg(String xml) throws ExchangeServiceException; } diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java index c5734907..2f7cb86a 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/service/flightInfo/FlightInfoServiceImpl.java @@ -34,7 +34,7 @@ public class FlightInfoServiceImpl implements IFlightInfoService { @Override public Boolean updateByDaySchd(Cminmsg cminmsg) { String clobMsg = cminmsg.getCminmsgsClobMsg(); - MSG dnldMsg = exchangeService.xmlstrToObject(clobMsg, MSG.class); + MSG dnldMsg = exchangeService.xmlToMsg(clobMsg); // List lsFltr = dnldMsg