完善重构计划机位的消息处理

This commit is contained in:
zhouxiunai
2019-04-30 18:14:46 +08:00
parent 3093fe69d0
commit 614a98bb2d
@@ -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<String> lsBridge = new ArrayList<String>();
try {
lsBridge = OrmsStandAirbridgeManager
.getInstance()
.getAirbridgeCodeByStandCodeCode(standCode);
} catch (IOException e) {
logger.error("获取登机桥信息失败:{}",e.getMessage());
//更新登机桥信息
return updateAbg(fltr,flop.getPSDT());
}
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;
}
/**
* 判断计划机位是否相等
* @param psdt 原机位信息
* @param optPsdt 新机位信息
* @return
*/
private Boolean isTheSamePSDT(List<STANDDATA> psdt ,List<OPTSTANDDATA> 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<STANDDATA> 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<OPTSTANDDATA> 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<String> lsBridge = new ArrayList<String>();
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
}