完成整体航班动态消息处理框架
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@ package com.gzzn.omms.msgexchangeapi.entity.msg;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
public class Meta {
|
||||
public class META {
|
||||
@JsonProperty("SNDR")
|
||||
private String sndr;
|
||||
|
||||
@@ -7,13 +7,13 @@ import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
public class Msg {
|
||||
|
||||
@JsonProperty("META")
|
||||
private Meta meta;
|
||||
private META meta;
|
||||
|
||||
public Meta getMeta() {
|
||||
public META getMeta() {
|
||||
return meta;
|
||||
}
|
||||
|
||||
public void setMeta(Meta meta) {
|
||||
public void setMeta(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.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.utils.DateTimeUtil;
|
||||
|
||||
@@ -17,7 +17,7 @@ public class RefdMsg extends Msg {
|
||||
|
||||
public RefdMsg()
|
||||
{
|
||||
Meta meta = new Meta();
|
||||
META meta = new META();
|
||||
meta.setSndr("OMMS");
|
||||
meta.setSeqn("1"); //消息序号,自增
|
||||
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.service.IExchangeService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.flightInfo.UpdateByCminmsgsResult;
|
||||
|
||||
@Service
|
||||
public class MsgHandlerDispatcher {
|
||||
@Autowired
|
||||
IExchangeService exchangeService;
|
||||
|
||||
public UpdateByCminmsgsResult dispatch(String xmlMsg)
|
||||
public HandlerResult dispatch(String xmlMsg)
|
||||
{
|
||||
Msg msg = exchangeService.xmlstrToObject(xmlMsg, Msg.class);
|
||||
String type = msg.getMeta().getType();
|
||||
@@ -26,7 +25,7 @@ public class MsgHandlerDispatcher {
|
||||
Class clazzHandler = Class.forName(getHandlerClassName(type,subType));
|
||||
Object classObject = clazzHandler.newInstance();
|
||||
Method runMethod = clazzHandler.getMethod("run", String.class);
|
||||
UpdateByCminmsgsResult result = (UpdateByCminmsgsResult) runMethod.invoke(classObject, xmlMsg);
|
||||
HandlerResult result = (HandlerResult) runMethod.invoke(classObject, xmlMsg);
|
||||
return result;
|
||||
} catch (ClassNotFoundException
|
||||
| InstantiationException
|
||||
@@ -50,7 +49,7 @@ public class MsgHandlerDispatcher {
|
||||
StringBuffer buffer = new StringBuffer();
|
||||
buffer.append("com.gzzn.omms.msgexchangeapi.msghandler" );
|
||||
buffer.append(".");
|
||||
buffer.append(type);
|
||||
buffer.append(type.toLowerCase());
|
||||
buffer.append(".");
|
||||
buffer.append(subType);
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
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.msg.schd.dnld.DnldMsg;
|
||||
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.redis.RedisService;
|
||||
import com.gzzn.omms.msgexchangeapi.service.IExchangeService;
|
||||
@@ -52,16 +54,40 @@ public class FlightInfoServiceImpl implements IFlightInfoService {
|
||||
|
||||
@Override
|
||||
public List<UpdateByCminmsgsResult> updateByCminmsgs(List<Cminmsg> lsCminmsgs) {
|
||||
List<UpdateByCminmsgsResult> resultUpdated = new ArrayList();//更新结果
|
||||
|
||||
for (Cminmsg cminmsg : lsCminmsgs) {
|
||||
//更新动态航班消息
|
||||
String strClobMsg = cminmsg.getCminmsgsClobMsg();
|
||||
msgHandlerDispatcher.dispatch(strClobMsg);
|
||||
|
||||
|
||||
}
|
||||
return null;
|
||||
HandlerResult handlerResult = msgHandlerDispatcher.dispatch(strClobMsg);
|
||||
UpdateByCminmsgsResult updateResult = null;
|
||||
if(handlerResult.getIsSuccess())
|
||||
{
|
||||
updateResult = UpdateByCminmsgsResult.success(cminmsg, handlerResult.getFltrs());
|
||||
}
|
||||
else {
|
||||
updateResult = UpdateByCminmsgsResult.failure(cminmsg);
|
||||
}
|
||||
resultUpdated.add(updateResult);
|
||||
}//end for
|
||||
|
||||
return resultUpdated;
|
||||
}//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
|
||||
* @param fltr
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.gzzn.omms.msgexchangeapi.service.flightInfo;
|
||||
import java.util.List;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
|
||||
public interface IFlightInfoService {
|
||||
/**
|
||||
@@ -16,4 +17,16 @@ public interface IFlightInfoService {
|
||||
* @return 返回被更新了的动态航班信息
|
||||
*/
|
||||
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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.gzzn.omms.msgexchangeapi.entity.Cminmsg;
|
||||
import com.gzzn.omms.msgexchangeapi.entity.msg.schd.dnld.FLTR;
|
||||
|
||||
public class UpdateByCminmsgsResult {
|
||||
Boolean isSuccess;//是否更新成功
|
||||
Cminmsg cminmsg; //消息
|
||||
List<FLTR> fltrs; //影响的航班动态信息
|
||||
private Boolean isSuccess;//是否更新成功
|
||||
private Cminmsg cminmsg; //消息
|
||||
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