diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/ABTMHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/ABTMHandler.java new file mode 100644 index 00000000..97dd6055 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/ABTMHandler.java @@ -0,0 +1,47 @@ +package com.gzzn.omms.msgexchangeapi.msghandler.flop; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; +import com.gzzn.omms.msgexchangeapi.entity.msg.BRIDGEDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; +import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; +import com.gzzn.omms.msgexchangeapi.entity.msg.OPTBRIDGEDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; +import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult; +import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; +import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; + +/** + * 航班登机桥时间事件 + * @author fhc + * + */ +public class ABTMHandler extends FlopBaseHandler { + private static Logger logger = LoggerFactory.getLogger(ABTMHandler.class); + + @Override + public HandlerResult run(Cminmsg cminmsg) { + MSG cldtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + FLOP flop = cldtMsg.getFLOP().get(0); + + List optBridgeDatas = flop.getABTM(); + if(optBridgeDatas.size()>1) + { //航班轮档时间事件 一个动态消息只能包含一个航班轮档时间数据记录 + logger.error("航班登机桥时间事件,只能包含一条登机桥靠桥/离桥操作记录:"+JsonUtil.getString(optBridgeDatas)); + return HandlerResult.failure(); + }else { + SCHD.FLTR fltr = flightInfoService.getByFlid(flop.getFLID().toString()); + OPTBRIDGEDATA optBridgeData = optBridgeDatas.get(0); + BRIDGEDATA bridgeData = new BRIDGEDATA(); + BeanUtils.copyProperties(optBridgeData, bridgeData); + fltr.getABTM().clear(); + fltr.getABTM().add(bridgeData); + return HandlerResult.success(fltr); + } + } +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java new file mode 100644 index 00000000..fb7078c7 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/CHOTHandler.java @@ -0,0 +1,47 @@ +package com.gzzn.omms.msgexchangeapi.msghandler.flop; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; + +import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; +import com.gzzn.omms.msgexchangeapi.entity.msg.CHOCKSDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; +import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; +import com.gzzn.omms.msgexchangeapi.entity.msg.OPTCHOCKSDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; +import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult; +import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; +import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; + +/** + * 航班轮档时间事件 + * @author fhc + * + */ +public class CHOTHandler extends FlopBaseHandler { + private static Logger logger = LoggerFactory.getLogger(CHOTHandler.class); + + @Override + public HandlerResult run(Cminmsg cminmsg) { + MSG cldtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + FLOP flop = cldtMsg.getFLOP().get(0); + + List optChocksDatas = flop.getCHOT(); + if(optChocksDatas.size()>1) + { //航班轮档时间事件 一个动态消息只能包含一个航班轮档时间数据记录 + logger.error("航班轮档时间事件 一个动态消息只能包含一个航班轮档时间数据记录:"+JsonUtil.getString(optChocksDatas)); + return HandlerResult.failure(); + }else { + SCHD.FLTR fltr = flightInfoService.getByFlid(flop.getFLID().toString()); + OPTCHOCKSDATA optChocksData = optChocksDatas.get(0); + CHOCKSDATA chocksData = new CHOCKSDATA(); + BeanUtils.copyProperties(optChocksData, chocksData); + fltr.getCHOT().clear(); + fltr.getCHOT().add(chocksData); + return HandlerResult.success(fltr); + } + } +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FLBGHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FLBGHandler.java new file mode 100644 index 00000000..0fb8e5ce --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FLBGHandler.java @@ -0,0 +1,66 @@ +package com.gzzn.omms.msgexchangeapi.msghandler.flop; + +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.gzzn.omms.msgexchangeapi.entity.Cminmsg; +import com.gzzn.omms.msgexchangeapi.entity.msg.BELTDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.CLASSES; +import com.gzzn.omms.msgexchangeapi.entity.msg.FLBGDATA; +import com.gzzn.omms.msgexchangeapi.entity.msg.FLBTCODES; +import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; +import com.gzzn.omms.msgexchangeapi.entity.msg.MSG; +import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; +import com.gzzn.omms.msgexchangeapi.entity.msg.SUBSYSTEMS; +import com.gzzn.omms.msgexchangeapi.msghandler.HandlerResult; +import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; +import com.gzzn.omms.msgexchangeapi.utils.JsonUtil; + +/** + * 首行李/末行李事件 + * @author fhc + * + */ +public class FLBGHandler extends FlopBaseHandler { + private static Logger logger = LoggerFactory.getLogger(FLBGHandler.class); + + @Override + public HandlerResult run(Cminmsg cminmsg) { + MSG cldtMsg = exchangeService.xmlstrToObject(cminmsg.getCminmsgsClobMsg(), MSG.class); + if(!cldtMsg.getMETA().getSNDR().value().equals(SUBSYSTEMS.AODB)){ + logger.error("只发送AODB分配的行李转盘数据,需进行手动处理/更正后发生数据。"); + return HandlerResult.failure(); + } + + FLOP flop = cldtMsg.getFLOP().get(0); + List flbgDatas = flop.getFLBG(); + if(flbgDatas.size()>1) + { // 首行李/末行李事件,一个动态消息只能包含一个行李事件数据记录 + logger.error("首行李/末行李事件,一个动态消息只能包含一个行李事件数据记录:"+JsonUtil.getString(flbgDatas)); + return HandlerResult.failure(); + }else { + SCHD.FLTR fltr = flightInfoService.getByFlid(flop.getFLID().toString()); + FLBGDATA flbgData = flbgDatas.get(0); + String optBlst = flbgData.getBLST(); //到达航班的行李传送带号 + CLASSES optBcls = flbgData.getBCLS(); //行李转盘等级 F:头等 C:商务 Y:经济 X:全部 + List beltDatas = fltr.getCLDT(); + + for(BELTDATA beltData : beltDatas){ + //找到计划中 行李传送带号一致 且等级一致的行李转盘 + if(beltData.getBELT().equals(optBlst) && optBcls.compareTo(beltData.getBCLS())==0){ + if(flbgData.getFLBT().getTYPE().value().equals(FLBTCODES.F)){ //首件行李 + beltData.setFBAG(flbgData.getFLBT().getValue()); + } + if(flbgData.getFLBT().getTYPE().value().equals(FLBTCODES.L)){ //末件行李 + beltData.setLBAG(flbgData.getFLBT().getValue()); + } + break; + } + } + + return HandlerResult.success(fltr); + } + } +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FRETHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FRETHandler.java new file mode 100644 index 00000000..3f725d6f --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/FRETHandler.java @@ -0,0 +1,20 @@ +package com.gzzn.omms.msgexchangeapi.msghandler.flop; + +import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; +import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; +import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; + +/** + * 航班返回时间 + * @author fhc + * + */ +public class FRETHandler extends FlopBaseHandler { + + @Override + protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr) + { + fltr.setFRET(flop.getFRET()); + return fltr; + } +} diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/RENOHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/RENOHandler.java new file mode 100644 index 00000000..17299197 --- /dev/null +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/RENOHandler.java @@ -0,0 +1,20 @@ +package com.gzzn.omms.msgexchangeapi.msghandler.flop; + +import com.gzzn.omms.msgexchangeapi.entity.msg.FLOP; +import com.gzzn.omms.msgexchangeapi.entity.msg.SCHD; +import com.gzzn.omms.msgexchangeapi.msghandler.flop.base.FlopBaseHandler; + +/** + * 航班注册号事件 + * @author fhc + * + */ +public class RENOHandler extends FlopBaseHandler { + + @Override + protected SCHD.FLTR updateFltr(FLOP flop,SCHD.FLTR fltr) + { + fltr.setRENO(flop.getRENO()); + return fltr; + } +}