From 614a98bb2d6ba13a53480974844477ff78d744c8 Mon Sep 17 00:00:00 2001 From: zhouxiunai <154707516@qq.com> Date: Tue, 30 Apr 2019 18:14:46 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=87=8D=E6=9E=84=E8=AE=A1?= =?UTF-8?q?=E5=88=92=E6=9C=BA=E4=BD=8D=E7=9A=84=E6=B6=88=E6=81=AF=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../msghandler/flop/PSDTHandler.java | 145 +++++++++++------- 1 file changed, 91 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java index bfa64181..0dd74716 100644 --- a/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java +++ b/src/main/java/com/gzzn/omms/msgexchangeapi/msghandler/flop/PSDTHandler.java @@ -7,6 +7,7 @@ import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; +import org.springframework.util.CollectionUtils; import com.gzzn.omms.msgexchangeapi.basicdata.entity.OrmsStand; import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandAirbridgeManager; @@ -36,17 +37,11 @@ public class PSDTHandler extends FlopBaseHandler { } //先保存当前航班机位数据 - String lpsdt=""; - for(STANDDATA node : fltr.getPSDT()) + if(!CollectionUtils.isEmpty(fltr.getPSDT())) { - lpsdt += node.getPSST(); - lpsdt += ","; + fltr.setLpsdt(getPsdtAsStr(fltr.getPSDT())); } - if(lpsdt.endsWith(",")) - { - lpsdt = lpsdt.substring(0, lpsdt.length() - 1); - } - fltr.setLpsdt(lpsdt); + //更新计划机位 fltr.getPSDT().clear(); //清空旧数据 @@ -56,54 +51,18 @@ public class PSDTHandler extends FlopBaseHandler { BeanUtils.copyProperties(optStandata, standata); fltr.getPSDT().add(standata); - - //获取机位 - OrmsStand ormsStand = OrmsStandManager - .getInstance() - .getOrmsStandByStandCode(standata.getPSST()); - if(null == ormsStand) - { - logger.error("机位:{},基础数据获取失败",standata.getPSST()); - continue; - } - - //获取机位对应的登机桥 - if("near".equalsIgnoreCase(ormsStand.getStandType())) - { - String standCode = standata.getPSST();//登机桥 - - List lsBridge = new ArrayList(); - try { - lsBridge = OrmsStandAirbridgeManager - .getInstance() - .getAirbridgeCodeByStandCodeCode(standCode); - } catch (IOException e) { - logger.error("获取登机桥信息失败:{}",e.getMessage()); - } - - StringBuffer abdgBuffer = new StringBuffer(); - lsBridge.forEach(node->{ - abdgBuffer.append(node); - abdgBuffer.append(","); - }); - if(abdgBuffer.toString().endsWith(",")) - { - abdgBuffer.deleteCharAt(abdgBuffer.length() - 1); - } - - fltr.setAbdg(abdgBuffer.toString());//登机桥叠加 - } - else { - //远机位,清空登机桥信息 - fltr.setAbdg(""); - } - - } //添加新数据 + } - return fltr; + //更新登机桥信息 + return updateAbg(fltr,flop.getPSDT()); } - + /** + * 判断计划机位是否相等 + * @param psdt 原机位信息 + * @param optPsdt 新机位信息 + * @return + */ private Boolean isTheSamePSDT(List psdt ,List optPsdt) { psdt.sort((node1,node2)-> node1.getPSST().compareTo(node2.getPSST())); @@ -124,4 +83,82 @@ public class PSDTHandler extends FlopBaseHandler { return strPsdt.toString().equals(strOptPsdt.toString()); } + + /** + * 将机位信息列表,组织成逗号分隔的字符串 + * @return + */ + private String getPsdtAsStr(List lsStanddata) + { + //先保存当前航班机位数据 + String lpsdt=""; + for(STANDDATA node : lsStanddata) + { + lpsdt += node.getPSST(); + lpsdt += ","; + } + if(lpsdt.endsWith(",")) + { + lpsdt = lpsdt.substring(0, lpsdt.length() - 1); + } + + return lpsdt; + }//end function + + /** + * 根据计划机位信息,更新fltr中的登机桥信息 + * @parm fltr 要更新的航班信息 + * @parm lsOptstanddata 计划机位消息 + */ + private SCHD.FLTR updateAbg(SCHD.FLTR fltr,List lsOptstanddata) + { + for(OPTSTANDDATA optStandata : lsOptstanddata ) { + STANDDATA standata = new STANDDATA(); + BeanUtils.copyProperties(optStandata, standata); + + try { + //获取机位 + OrmsStand ormsStand = OrmsStandManager + .getInstance() + .getOrmsStandByStandCode(standata.getPSST()); + if(null == ormsStand) + { + logger.error("机位:{},基础数据获取失败",standata.getPSST()); + continue; + } + + //获取机位对应的登机桥 + if("near".equalsIgnoreCase(ormsStand.getStandType()) == false) + { + //远机位,清空登机桥信息 + fltr.setAbdg(""); + } + + //近机位处理 + String standCode = standata.getPSST();//登机桥 + + + List lsBridge = new ArrayList(); + lsBridge = OrmsStandAirbridgeManager + .getInstance() + .getAirbridgeCodeByStandCodeCode(standCode); + // + StringBuffer abdgBuffer = new StringBuffer(); + lsBridge.forEach(node->{ + abdgBuffer.append(node); + abdgBuffer.append(","); + }); + if(abdgBuffer.toString().endsWith(",")) + { + abdgBuffer.deleteCharAt(abdgBuffer.length() - 1); + } + + fltr.setAbdg(abdgBuffer.toString());//登机桥叠加 + } catch (Exception e) { + logger.error("获取登机桥信息失败:{}",e.getMessage()); + } + }//end for + + return fltr; + } //end function }