完成整体航班动态消息处理框架
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@ package com.gzzn.omms.msgexchangeapi.entity.msg;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
public class Meta {
|
public class META {
|
||||||
@JsonProperty("SNDR")
|
@JsonProperty("SNDR")
|
||||||
private String sndr;
|
private String sndr;
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
|||||||
public class Msg {
|
public class Msg {
|
||||||
|
|
||||||
@JsonProperty("META")
|
@JsonProperty("META")
|
||||||
private Meta meta;
|
private META meta;
|
||||||
|
|
||||||
public Meta getMeta() {
|
public META getMeta() {
|
||||||
return meta;
|
return meta;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMeta(Meta meta) {
|
public void setMeta(META meta) {
|
||||||
this.meta = meta;
|
this.meta = meta;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2018 bejson.com
|
||||||
|
*/
|
||||||
|
package com.gzzn.omms.msgexchangeapi.entity.msg.flop.acft;
|
||||||
|
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.META;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated: 2018-12-04 13:55:4
|
||||||
|
*
|
||||||
|
* @author bejson.com (i@bejson.com)
|
||||||
|
* @website http://www.bejson.com/java2pojo/
|
||||||
|
*/
|
||||||
|
public class ACFTMsg {
|
||||||
|
|
||||||
|
private META META;
|
||||||
|
private FLOP FLOP;
|
||||||
|
public void setMETA(META META) {
|
||||||
|
this.META = META;
|
||||||
|
}
|
||||||
|
public META getMETA() {
|
||||||
|
return META;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFLOP(FLOP FLOP) {
|
||||||
|
this.FLOP = FLOP;
|
||||||
|
}
|
||||||
|
public FLOP getFLOP() {
|
||||||
|
return FLOP;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/**
|
||||||
|
* Copyright 2018 bejson.com
|
||||||
|
*/
|
||||||
|
package com.gzzn.omms.msgexchangeapi.entity.msg.flop.acft;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated: 2018-12-04 13:55:4
|
||||||
|
*
|
||||||
|
* @author bejson.com (i@bejson.com)
|
||||||
|
* @website http://www.bejson.com/java2pojo/
|
||||||
|
*/
|
||||||
|
public class FLOP {
|
||||||
|
|
||||||
|
private String FLID;
|
||||||
|
private String FFID;
|
||||||
|
private String ACFT;
|
||||||
|
public void setFLID(String FLID) {
|
||||||
|
this.FLID = FLID;
|
||||||
|
}
|
||||||
|
public String getFLID() {
|
||||||
|
return FLID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFFID(String FFID) {
|
||||||
|
this.FFID = FFID;
|
||||||
|
}
|
||||||
|
public String getFFID() {
|
||||||
|
return FFID;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setACFT(String ACFT) {
|
||||||
|
this.ACFT = ACFT;
|
||||||
|
}
|
||||||
|
public String getACFT() {
|
||||||
|
return ACFT;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ import java.util.Locale;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.Meta;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.META;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
|
||||||
import com.gzzn.omms.msgexchangeapi.utils.DateTimeUtil;
|
import com.gzzn.omms.msgexchangeapi.utils.DateTimeUtil;
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ public class RefdMsg extends Msg {
|
|||||||
|
|
||||||
public RefdMsg()
|
public RefdMsg()
|
||||||
{
|
{
|
||||||
Meta meta = new Meta();
|
META meta = new META();
|
||||||
meta.setSndr("OMMS");
|
meta.setSndr("OMMS");
|
||||||
meta.setSeqn("1"); //消息序号,自增
|
meta.setSeqn("1"); //消息序号,自增
|
||||||
meta.setDttm(DateTimeUtil.gtFormatStr(new Date(), "yyMMddHHmmss", Locale.CHINA));
|
meta.setDttm(DateTimeUtil.gtFormatStr(new Date(), "yyMMddHHmmss", Locale.CHINA));
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package com.gzzn.omms.msgexchangeapi.msghandler;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||||
|
|
||||||
|
public class HandlerResult {
|
||||||
|
private Boolean isSuccess;//是否更新成功
|
||||||
|
private List<FLTR> fltrs; //影响的航班动态信息
|
||||||
|
|
||||||
|
public Boolean getIsSuccess() {
|
||||||
|
return isSuccess;
|
||||||
|
}
|
||||||
|
public void setIsSuccess(Boolean isSuccess) {
|
||||||
|
this.isSuccess = isSuccess;
|
||||||
|
}
|
||||||
|
public List<FLTR> getFltrs() {
|
||||||
|
return fltrs;
|
||||||
|
}
|
||||||
|
public void setFltrs(List<FLTR> fltrs) {
|
||||||
|
this.fltrs = fltrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static HandlerResult success(FLTR fltr)
|
||||||
|
{
|
||||||
|
HandlerResult handlerResult = new HandlerResult();
|
||||||
|
handlerResult.isSuccess = true;
|
||||||
|
|
||||||
|
List<FLTR> fltrs = new ArrayList();
|
||||||
|
fltrs.add(fltr);
|
||||||
|
|
||||||
|
handlerResult.fltrs = fltrs;
|
||||||
|
|
||||||
|
return handlerResult;
|
||||||
|
}//end function
|
||||||
|
|
||||||
|
public static HandlerResult success(List<FLTR> fltrs)
|
||||||
|
{
|
||||||
|
HandlerResult handlerResult = new HandlerResult();
|
||||||
|
handlerResult.isSuccess = true;
|
||||||
|
handlerResult.fltrs = fltrs;
|
||||||
|
|
||||||
|
return handlerResult;
|
||||||
|
}//end function
|
||||||
|
|
||||||
|
public static HandlerResult failure()
|
||||||
|
{
|
||||||
|
HandlerResult handlerResult = new HandlerResult();
|
||||||
|
handlerResult.isSuccess = false;
|
||||||
|
|
||||||
|
return handlerResult;
|
||||||
|
}//end function
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.gzzn.omms.msgexchangeapi.msghandler;
|
||||||
|
|
||||||
|
public interface IBaseHandler {
|
||||||
|
public HandlerResult run(String msg);
|
||||||
|
}
|
||||||
@@ -8,14 +8,13 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.Msg;
|
||||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.UpdateByCminmsgsResult;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class MsgHandlerDispatcher {
|
public class MsgHandlerDispatcher {
|
||||||
@Autowired
|
@Autowired
|
||||||
IExchangeService exchangeService;
|
IExchangeService exchangeService;
|
||||||
|
|
||||||
public UpdateByCminmsgsResult dispatch(String xmlMsg)
|
public HandlerResult dispatch(String xmlMsg)
|
||||||
{
|
{
|
||||||
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
||||||
String type = msg.getMeta().getType();
|
String type = msg.getMeta().getType();
|
||||||
@@ -26,7 +25,7 @@ public class MsgHandlerDispatcher {
|
|||||||
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
|
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
|
||||||
Object classObject = clazzHandler.newInstance();
|
Object classObject = clazzHandler.newInstance();
|
||||||
Method runMethod = clazzHandler.getMethod("run", String.class);
|
Method runMethod = clazzHandler.getMethod("run", String.class);
|
||||||
UpdateByCminmsgsResult result = (UpdateByCminmsgsResult) runMethod.invoke(classObject, xmlMsg);
|
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, xmlMsg);
|
||||||
return result;
|
return result;
|
||||||
} catch (ClassNotFoundException
|
} catch (ClassNotFoundException
|
||||||
| InstantiationException
|
| InstantiationException
|
||||||
@@ -50,7 +49,7 @@ public class MsgHandlerDispatcher {
|
|||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
buffer.append("com.gzzn.omms.msgexchangeapi.msghandler" );
|
buffer.append("com.gzzn.omms.msgexchangeapi.msghandler" );
|
||||||
buffer.append(".");
|
buffer.append(".");
|
||||||
buffer.append(type);
|
buffer.append(type.toLowerCase());
|
||||||
buffer.append(".");
|
buffer.append(".");
|
||||||
buffer.append(subType);
|
buffer.append(subType);
|
||||||
buffer.append("Handler");
|
buffer.append("Handler");
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.flop.acft.ACFTMsg;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.msghandler.IBaseHandler;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.service.flightInfo.IFlightInfoService;
|
||||||
|
|
||||||
|
public class ACFTHandler implements IBaseHandler {
|
||||||
|
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(ACFTHandler.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
IExchangeService exchangeService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
IFlightInfoService flightInfoService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理航班消息,更新航班动态信息
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public HandlerResult run(String msg) {
|
||||||
|
ACFTMsg acftMsg = exchangeService.xmlstrToObject(msg, ACFTMsg.class);
|
||||||
|
FLTR fltr = flightInfoService.getByFlid(acftMsg.getFLOP().getFLID());
|
||||||
|
if(null != fltr)
|
||||||
|
{
|
||||||
|
fltr.setAcft(acftMsg.getFLOP().getACFT());
|
||||||
|
flightInfoService.saveFltr(fltr);
|
||||||
|
return HandlerResult.success(fltr);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//没有该动态航班信息
|
||||||
|
logger.warn("没有flid为:{}的消息",acftMsg.getFLOP().getFLID());
|
||||||
|
}
|
||||||
|
|
||||||
|
return HandlerResult.failure();
|
||||||
|
}//end function
|
||||||
|
}
|
||||||
+31
-5
@@ -1,5 +1,6 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -9,6 +10,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.DnldMsg;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.DnldMsg;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult;
|
||||||
import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher;
|
import com.gzzn.omms.msgexchangeapi.msghandler.MsgHandlerDispatcher;
|
||||||
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
import com.gzzn.omms.msgexchangeapi.redis.RedisService;
|
||||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||||
@@ -52,16 +54,40 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs) {
|
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs) {
|
||||||
|
List<UpdateByCminmsgsResult> resultUpdated = new ArrayList();//更新结果
|
||||||
|
|
||||||
for (Cminmsg cminmsg : lsCminmsgs) {
|
for (Cminmsg cminmsg : lsCminmsgs) {
|
||||||
//更新动态航班消息
|
//更新动态航班消息
|
||||||
String strClobMsg = cminmsg.getCminmsgsClobMsg();
|
String strClobMsg = cminmsg.getCminmsgsClobMsg();
|
||||||
msgHandlerDispatcher.dispatch(strClobMsg);
|
HandlerResult handlerResult = msgHandlerDispatcher.dispatch(strClobMsg);
|
||||||
|
UpdateByCminmsgsResult updateResult = null;
|
||||||
|
if(handlerResult.getIsSuccess())
|
||||||
}
|
{
|
||||||
return null;
|
updateResult = UpdateByCminmsgsResult.success(cminmsg, handlerResult.getFltrs());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
updateResult = UpdateByCminmsgsResult.failure(cminmsg);
|
||||||
|
}
|
||||||
|
resultUpdated.add(updateResult);
|
||||||
|
}//end for
|
||||||
|
|
||||||
|
return resultUpdated;
|
||||||
}//end function
|
}//end function
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FLTR getByFlid(String flid) {
|
||||||
|
FLTR fltr = (FLTR) redisGet(flid);
|
||||||
|
return fltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean saveFltr(FLTR fltr) {
|
||||||
|
return redisSet(fltr);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重新包装的set
|
* 重新包装的set
|
||||||
* @param fltr
|
* @param fltr
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||||
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||||
|
|
||||||
public interface IFlightInfoService {
|
public interface IFlightInfoService {
|
||||||
/**
|
/**
|
||||||
@@ -16,4 +17,16 @@ public interface IFlightInfoService {
|
|||||||
* @return 返回被更新了的动态航班信息
|
* @return 返回被更新了的动态航班信息
|
||||||
*/
|
*/
|
||||||
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs);
|
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过航班id获取航班动态
|
||||||
|
* @param flid
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public FLTR getByFlid(String flid);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存航班动态信息,新增或更新
|
||||||
|
*/
|
||||||
|
public boolean saveFltr(FLTR fltr);
|
||||||
}
|
}
|
||||||
|
|||||||
+59
-3
@@ -1,12 +1,68 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||||
|
|
||||||
public class UpdateByCminmsgsResult {
|
public class UpdateByCminmsgsResult {
|
||||||
Boolean isSuccess;//是否更新成功
|
private Boolean isSuccess;//是否更新成功
|
||||||
Cminmsg cminmsg; //消息
|
private Cminmsg cminmsg; //消息
|
||||||
List<FLTR> fltrs; //影响的航班动态信息
|
private List<FLTR> fltrs; //影响的航班动态信息
|
||||||
|
|
||||||
|
public Boolean getIsSuccess() {
|
||||||
|
return isSuccess;
|
||||||
|
}
|
||||||
|
public void setIsSuccess(Boolean isSuccess) {
|
||||||
|
this.isSuccess = isSuccess;
|
||||||
|
}
|
||||||
|
public Cminmsg getCminmsg() {
|
||||||
|
return cminmsg;
|
||||||
|
}
|
||||||
|
public void setCminmsg(Cminmsg cminmsg) {
|
||||||
|
this.cminmsg = cminmsg;
|
||||||
|
}
|
||||||
|
public List<FLTR> getFltrs() {
|
||||||
|
return fltrs;
|
||||||
|
}
|
||||||
|
public void setFltrs(List<FLTR> fltrs) {
|
||||||
|
this.fltrs = fltrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static UpdateByCminmsgsResult success(Cminmsg cminmsg,FLTR fltr)
|
||||||
|
{
|
||||||
|
UpdateByCminmsgsResult updateByCminmsgsResult = new UpdateByCminmsgsResult();
|
||||||
|
updateByCminmsgsResult.isSuccess = true;
|
||||||
|
updateByCminmsgsResult.cminmsg = cminmsg;
|
||||||
|
|
||||||
|
List<FLTR> fltrs = new ArrayList();
|
||||||
|
fltrs.add(fltr);
|
||||||
|
|
||||||
|
updateByCminmsgsResult.fltrs = fltrs;
|
||||||
|
|
||||||
|
return updateByCminmsgsResult;
|
||||||
|
}//end function
|
||||||
|
|
||||||
|
public static UpdateByCminmsgsResult success(Cminmsg cminmsg,List<FLTR> fltrs)
|
||||||
|
{
|
||||||
|
|
||||||
|
UpdateByCminmsgsResult updateByCminmsgsResult = new UpdateByCminmsgsResult();
|
||||||
|
updateByCminmsgsResult.isSuccess = true;
|
||||||
|
updateByCminmsgsResult.cminmsg = cminmsg;
|
||||||
|
updateByCminmsgsResult.fltrs = fltrs;
|
||||||
|
|
||||||
|
|
||||||
|
return updateByCminmsgsResult;
|
||||||
|
}//end function
|
||||||
|
|
||||||
|
public static UpdateByCminmsgsResult failure(Cminmsg cminmsg)
|
||||||
|
{
|
||||||
|
UpdateByCminmsgsResult updateByCminmsgsResult = new UpdateByCminmsgsResult();
|
||||||
|
updateByCminmsgsResult.isSuccess = false;
|
||||||
|
updateByCminmsgsResult.cminmsg = cminmsg;
|
||||||
|
|
||||||
|
return updateByCminmsgsResult;
|
||||||
|
}//end function
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user