修复完善登机桥关联更新。只取最后计划机位的登机桥信息
This commit is contained in:
@@ -1,11 +1,13 @@
|
|||||||
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
package com.gzzn.omms.msgexchangeapi.msghandler.flop;
|
||||||
|
|
||||||
|
import java.math.BigInteger;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import com.gzzn.omms.msgexchangeapi.basicdata.entity.OrmsStand;
|
import com.gzzn.omms.msgexchangeapi.basicdata.entity.OrmsStand;
|
||||||
import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandAirbridgeManager;
|
import com.gzzn.omms.msgexchangeapi.basicdata.manager.OrmsStandAirbridgeManager;
|
||||||
@@ -34,6 +36,7 @@ public class PSDTHandler extends FlopBaseHandler {
|
|||||||
return fltr;
|
return fltr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//先保存当前航班机位数据
|
//先保存当前航班机位数据
|
||||||
if(!CollectionUtils.isEmpty(fltr.getPSDT()))
|
if(!CollectionUtils.isEmpty(fltr.getPSDT()))
|
||||||
{
|
{
|
||||||
@@ -43,37 +46,74 @@ public class PSDTHandler extends FlopBaseHandler {
|
|||||||
|
|
||||||
//更新计划机位
|
//更新计划机位
|
||||||
fltr.getPSDT().clear(); //清空旧数据
|
fltr.getPSDT().clear(); //清空旧数据
|
||||||
for(OPTSTANDDATA optStandata : flop.getPSDT() )
|
|
||||||
|
//
|
||||||
|
if(!isClearPsdtMsg(flop.getPSDT()) )
|
||||||
{
|
{
|
||||||
STANDDATA standata = new STANDDATA();
|
for(OPTSTANDDATA optStandata : flop.getPSDT() )
|
||||||
BeanUtils.copyProperties(optStandata, standata);
|
{
|
||||||
|
STANDDATA standata = new STANDDATA();
|
||||||
fltr.getPSDT().add(standata);
|
BeanUtils.copyProperties(optStandata, standata);
|
||||||
}
|
|
||||||
|
fltr.getPSDT().add(standata);
|
||||||
|
}
|
||||||
|
} //end if
|
||||||
|
|
||||||
|
|
||||||
//更新登机桥信息
|
//更新登机桥信息
|
||||||
return updateAbg(fltr,flop.getPSDT());
|
return updateAbg(fltr,flop.getPSDT());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否清空计划机位事件,内容为空的情况,<PSDT PSNO = "0"></PSDT>
|
||||||
|
* @param flop 航班事件
|
||||||
|
* @return true 清空计划航班事件 ,false 非清空计划航班事件
|
||||||
|
*/
|
||||||
|
private Boolean isClearPsdtMsg(List<OPTSTANDDATA> lsOptstanddata)
|
||||||
|
{
|
||||||
|
return (
|
||||||
|
lsOptstanddata.size() == 1
|
||||||
|
&& lsOptstanddata.get(0).getPSNO().equals(new BigInteger("0"))
|
||||||
|
&& StringUtils.isEmpty(lsOptstanddata.get(0).getPSST())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断计划机位是否相等
|
* 判断计划机位是否相等
|
||||||
* @param psdt 原机位信息
|
* @param psdt 原机位信息
|
||||||
* @param optPsdt 新机位信息
|
* @param optPsdt 新机位信息
|
||||||
* @return
|
* @return true 相同,false 不相同
|
||||||
*/
|
*/
|
||||||
private Boolean isTheSamePSDT(List<STANDDATA> psdt ,List<OPTSTANDDATA> optPsdt)
|
private Boolean isTheSamePSDT(List<STANDDATA> psdt ,List<OPTSTANDDATA> optPsdt)
|
||||||
{
|
{
|
||||||
|
//特殊处理清空航班事件
|
||||||
|
if(
|
||||||
|
isClearPsdtMsg(optPsdt)
|
||||||
|
&&
|
||||||
|
CollectionUtils.isEmpty(psdt)
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return true;//当前为清除机位信息,同时当前机位信息为空
|
||||||
|
}
|
||||||
|
|
||||||
|
//不相等,必然不同
|
||||||
|
if (psdt.size() != optPsdt.size()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
psdt.sort((node1,node2)-> node1.getPSST().compareTo(node2.getPSST()));
|
psdt.sort((node1,node2)-> node1.getPSST().compareTo(node2.getPSST()));
|
||||||
optPsdt.sort((node1,node2)-> node1.getPSST().compareTo(node2.getPSST()));
|
optPsdt.sort((node1,node2)-> node1.getPSST().compareTo(node2.getPSST()));
|
||||||
|
|
||||||
//生成序列比较是否相等
|
//生成序列比较是否相等
|
||||||
StringBuffer strPsdt = new StringBuffer();
|
StringBuilder strPsdt = new StringBuilder();
|
||||||
psdt.forEach(node->{
|
psdt.forEach(node->{
|
||||||
strPsdt.append(node.getPSST());
|
strPsdt.append(node.getPSST());
|
||||||
strPsdt.append(",");
|
strPsdt.append(",");
|
||||||
});
|
});
|
||||||
|
|
||||||
StringBuffer strOptPsdt = new StringBuffer();
|
StringBuilder strOptPsdt = new StringBuilder();
|
||||||
optPsdt.forEach(node->{
|
optPsdt.forEach(node->{
|
||||||
strOptPsdt.append(node.getPSST());
|
strOptPsdt.append(node.getPSST());
|
||||||
strOptPsdt.append(",");
|
strOptPsdt.append(",");
|
||||||
@@ -88,19 +128,25 @@ public class PSDTHandler extends FlopBaseHandler {
|
|||||||
*/
|
*/
|
||||||
private String getPsdtAsStr(List<STANDDATA> lsStanddata)
|
private String getPsdtAsStr(List<STANDDATA> lsStanddata)
|
||||||
{
|
{
|
||||||
//先保存当前航班机位数据
|
if(CollectionUtils.isEmpty(lsStanddata))
|
||||||
String lpsdt="";
|
|
||||||
for(STANDDATA node : lsStanddata)
|
|
||||||
{
|
{
|
||||||
lpsdt += node.getPSST();
|
return "";
|
||||||
lpsdt += ",";
|
|
||||||
}
|
|
||||||
if(lpsdt.endsWith(","))
|
|
||||||
{
|
|
||||||
lpsdt = lpsdt.substring(0, lpsdt.length() - 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return lpsdt;
|
|
||||||
|
//先保存当前航班机位数据
|
||||||
|
StringBuilder lpsdt= new StringBuilder();
|
||||||
|
for(STANDDATA node : lsStanddata)
|
||||||
|
{
|
||||||
|
lpsdt.append(node.getPSST());
|
||||||
|
lpsdt.append(",");
|
||||||
|
}
|
||||||
|
if(lpsdt.toString().endsWith(","))
|
||||||
|
{
|
||||||
|
lpsdt.deleteCharAt(lpsdt.length()-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return lpsdt.toString();
|
||||||
}//end function
|
}//end function
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -110,51 +156,66 @@ public class PSDTHandler extends FlopBaseHandler {
|
|||||||
*/
|
*/
|
||||||
private SCHD.FLTR updateAbg(SCHD.FLTR fltr,List<OPTSTANDDATA> lsOptstanddata)
|
private SCHD.FLTR updateAbg(SCHD.FLTR fltr,List<OPTSTANDDATA> lsOptstanddata)
|
||||||
{
|
{
|
||||||
for(OPTSTANDDATA optStandata : lsOptstanddata ) {
|
//清空计划机位事件,同时清除登机桥信息
|
||||||
STANDDATA standata = new STANDDATA();
|
if (isClearPsdtMsg(lsOptstanddata)) {
|
||||||
BeanUtils.copyProperties(optStandata, standata);
|
fltr.setAbdg("");
|
||||||
|
return fltr;
|
||||||
try {
|
}
|
||||||
//获取机位
|
|
||||||
OrmsStand ormsStand = OrmsStandManager
|
|
||||||
.getInstance()
|
//多个机位信息,取最后一个机位的登机桥信息
|
||||||
.getOrmsStandByStandCode(standata.getPSST());
|
if (CollectionUtils.isEmpty(lsOptstanddata)) {
|
||||||
if(null == ormsStand)
|
return fltr;
|
||||||
{
|
}//end if
|
||||||
logger.error("机位:{},基础数据获取失败",standata.getPSST());
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
OPTSTANDDATA optStandata = lsOptstanddata.get(lsOptstanddata.size() - 1);
|
||||||
//获取机位对应的登机桥
|
STANDDATA standata = new STANDDATA();
|
||||||
if("near".equalsIgnoreCase(ormsStand.getStandType()) == false)
|
BeanUtils.copyProperties(optStandata, standata);
|
||||||
{
|
|
||||||
//远机位,清空登机桥信息
|
|
||||||
fltr.setAbdg("");
|
//获取机位
|
||||||
}
|
OrmsStand ormsStand = OrmsStandManager
|
||||||
|
.getInstance()
|
||||||
//近机位处理
|
.getOrmsStandByStandCode(standata.getPSST());
|
||||||
String standCode = standata.getPSST();//登机桥
|
if(null == ormsStand)
|
||||||
|
{
|
||||||
|
logger.error("机位:{},基础数据获取失败",standata.getPSST());
|
||||||
List<String> lsBridge = OrmsStandAirbridgeManager
|
return fltr;
|
||||||
.getInstance()
|
}
|
||||||
.getAirbridgeCodeByStandCodeCode(standCode);
|
|
||||||
//
|
//远机位,清空登机桥信息
|
||||||
StringBuffer abdgBuffer = new StringBuffer();
|
if("near".equalsIgnoreCase(ormsStand.getStandType()) == false)
|
||||||
lsBridge.forEach(node->{
|
{
|
||||||
abdgBuffer.append(node);
|
fltr.setAbdg("");
|
||||||
abdgBuffer.append(",");
|
return fltr;
|
||||||
});
|
}
|
||||||
if(abdgBuffer.toString().endsWith(","))
|
|
||||||
{
|
|
||||||
abdgBuffer.deleteCharAt(abdgBuffer.length() - 1);
|
//近机位,获取登机桥
|
||||||
}
|
String standCode = standata.getPSST();//登机桥
|
||||||
|
|
||||||
fltr.setAbdg(abdgBuffer.toString());//登机桥叠加
|
try {
|
||||||
} catch (Exception e) {
|
List<String> lsBridge = OrmsStandAirbridgeManager
|
||||||
logger.error("获取登机桥信息失败,msg:{},trace:{}",e.getMessage(),e);
|
.getInstance()
|
||||||
|
.getAirbridgeCodeByStandCodeCode(standCode);
|
||||||
|
//
|
||||||
|
StringBuilder abdgBuffer = new StringBuilder();
|
||||||
|
lsBridge.forEach(node->{
|
||||||
|
abdgBuffer.append(node);
|
||||||
|
abdgBuffer.append(",");
|
||||||
|
});
|
||||||
|
if(abdgBuffer.toString().endsWith(","))
|
||||||
|
{
|
||||||
|
abdgBuffer.deleteCharAt(abdgBuffer.length() - 1);
|
||||||
}
|
}
|
||||||
}//end for
|
|
||||||
|
fltr.setAbdg(abdgBuffer.toString());//登机桥叠加
|
||||||
|
return fltr;
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("msg:{},trace:{}",e.getMessage(),e);
|
||||||
|
}
|
||||||
|
|
||||||
return fltr;
|
return fltr;
|
||||||
} //end function
|
} //end function
|
||||||
|
|||||||
Reference in New Issue
Block a user