|
@@ -56,23 +56,24 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
Date now = new Date();
|
|
|
LambdaQueryWrapper<AdminAircraftPosition> adminAircraftPositionLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
adminAircraftPositionLambdaQueryWrapper.eq(AdminAircraftPosition::getAircraftPositionNum, CODE);
|
|
|
- AdminAircraftPosition aircraftPosition = getAdminAircraftPositionService().getOne(adminAircraftPositionLambdaQueryWrapper);
|
|
|
- if (aircraftPosition != null) {
|
|
|
+ // 通过机位查询到的数据
|
|
|
+ AdminAircraftPosition codeAircraftPosition = getAdminAircraftPositionService().getOne(adminAircraftPositionLambdaQueryWrapper);
|
|
|
+ if (codeAircraftPosition != null) {
|
|
|
log.info("查询到相应的机位:{}", CODE);
|
|
|
- log.info("机位当前信息:{}", aircraftPosition);
|
|
|
+ log.info("机位当前信息:{}", codeAircraftPosition);
|
|
|
// 有这个机位
|
|
|
- AdminDfdlList adminDfdlList = getAdminDfdlListService().getById(FLID);
|
|
|
- if (adminDfdlList == null) {
|
|
|
+ AdminDfdlList stlsDfdlList = getAdminDfdlListService().getById(FLID);
|
|
|
+ if (stlsDfdlList == null) {
|
|
|
// 没有计划
|
|
|
log.error("此航班【{}】,没有计划", FLID);
|
|
|
return;
|
|
|
}
|
|
|
- log.info("查询到计划内容:{}", adminDfdlList);
|
|
|
- if (adminDfdlList.getArrival() > 0) {
|
|
|
+ log.info("查询到计划内容:{}", stlsDfdlList);
|
|
|
+ if (stlsDfdlList.getArrival() > 0) {
|
|
|
//已经到站
|
|
|
log.info("此航班【{}】,已经到站,判断是否出站", FLID);
|
|
|
//判断是否出站
|
|
|
- if (adminDfdlList.getRend() != null) {
|
|
|
+ if (stlsDfdlList.getRend() != null) {
|
|
|
// 已经出站
|
|
|
log.info("出站清空机位");
|
|
|
getAdminAircraftPositionService().dept(FLID);
|
|
@@ -83,12 +84,12 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
}
|
|
|
}
|
|
|
//判断是否出站 防止arrival为0但是已经出战
|
|
|
- if (adminDfdlList.getRend() != null) {
|
|
|
+ if (stlsDfdlList.getRend() != null) {
|
|
|
// 已经出站
|
|
|
getAdminAircraftPositionService().dept(FLID);
|
|
|
- adminDfdlList.setArrival(1);
|
|
|
- updateAdminDfdl(adminDfdlList);
|
|
|
- log.info("计划中此航班【{}】,已经出站,{}", FLID, adminDfdlList);
|
|
|
+ stlsDfdlList.setArrival(1);
|
|
|
+ updateAdminDfdl(stlsDfdlList);
|
|
|
+ log.info("计划中此航班【{}】,已经出站,{}", FLID, stlsDfdlList);
|
|
|
return;
|
|
|
}
|
|
|
//标识是否交换过数据
|
|
@@ -96,21 +97,23 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
//判断是否更换了机位
|
|
|
LambdaQueryWrapper<AdminAircraftPosition> aircraftPositionByFlidQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
aircraftPositionByFlidQueryWrapper.eq(AdminAircraftPosition::getFlightSole, FLID);
|
|
|
- AdminAircraftPosition adminAircraftPosition = getAdminAircraftPositionService().getOne(aircraftPositionByFlidQueryWrapper);
|
|
|
- if (adminAircraftPosition != null) {
|
|
|
+ // 通过flid 查询到的机位
|
|
|
+ AdminAircraftPosition flidAircraftPosition = getAdminAircraftPositionService().getOne(aircraftPositionByFlidQueryWrapper);
|
|
|
+ if (flidAircraftPosition != null) {
|
|
|
log.info("此航班【{}】在机位表中被发现", FLID);
|
|
|
//FLID匹配到的机位号 和 进来的机位号 不是 一个 换机位 清空原机位信息
|
|
|
- if (!adminAircraftPosition.getAircraftPositionNum().equals(CODE)) {
|
|
|
+ if (!flidAircraftPosition.getAircraftPositionNum().equals(CODE)) {
|
|
|
log.info("此航班【{}】与对应机位所属数据不匹配,进行交换机位数据操作", FLID);
|
|
|
//表中有但不是一个机位
|
|
|
//给新匹配到的机位上附上信息
|
|
|
- aircraftPosition.setAircraftNum(adminAircraftPosition.getAircraftNum());
|
|
|
- aircraftPosition.setType(adminAircraftPosition.getType());
|
|
|
- aircraftPosition.setDropTime(adminAircraftPosition.getDropTime());
|
|
|
- aircraftPosition.setFlightNum(adminAircraftPosition.getFlightNum());
|
|
|
- aircraftPosition.setFlightAfid(adminAircraftPosition.getFlightAfid());
|
|
|
+ codeAircraftPosition.setAircraftNum(flidAircraftPosition.getAircraftNum());
|
|
|
+ codeAircraftPosition.setType(flidAircraftPosition.getType());
|
|
|
+ codeAircraftPosition.setDropTime(flidAircraftPosition.getDropTime());
|
|
|
+ codeAircraftPosition.setFlightNum(flidAircraftPosition.getFlightNum());
|
|
|
+ codeAircraftPosition.setFlightAfid(flidAircraftPosition.getFlightAfid());
|
|
|
+ codeAircraftPosition.setFlightSole(FLID);
|
|
|
//清空旧的机位
|
|
|
- getAdminAircraftPositionService().dept(adminAircraftPosition.getId());
|
|
|
+ getAdminAircraftPositionService().dept(flidAircraftPosition.getId());
|
|
|
isChangeFlag = true;
|
|
|
} else {
|
|
|
// 是一个机位
|
|
@@ -122,95 +125,113 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
Object rstr = map.get("RSTR");
|
|
|
|
|
|
if (rstr != null) {
|
|
|
- log.info("判断flid:{}是否已经占用机位", adminDfdlList.getFlid());
|
|
|
+ log.info("判断flid:{}是否已经占用机位", stlsDfdlList.getFlid());
|
|
|
// 有开始占用时间,证明到站了
|
|
|
Object rend = map.get("REND");
|
|
|
if (rend != null) {
|
|
|
- log.info("flid:{},有实际结束占用时间{}", adminDfdlList.getFlid(), String.valueOf(rend).replace("null", ""));
|
|
|
+ log.info("flid:{},有实际结束占用时间{}", stlsDfdlList.getFlid(), String.valueOf(rend).replace("null", ""));
|
|
|
// 有结束占用机位的时间
|
|
|
Date rendDate = strToDate(String.valueOf(rend).replace("null", ""));
|
|
|
if (rendDate.before(now)) {
|
|
|
- log.info("flid:{},有实际结束占用时间{}, 且小于当前时间, 清空机位", adminDfdlList.getFlid(), String.valueOf(rend).replace("null", ""));
|
|
|
+ log.info("flid:{},有实际结束占用时间{}, 且小于当前时间, 清空机位", stlsDfdlList.getFlid(), String.valueOf(rend).replace("null", ""));
|
|
|
//不在占用时间范围内,结束占用机位,清空机位后续不做处理
|
|
|
- getAdminAircraftPositionService().dept(aircraftPosition.getId());
|
|
|
- adminDfdlList.setArrival(1);
|
|
|
- updateAdminDfdl(adminDfdlList);
|
|
|
+ getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
+ stlsDfdlList.setArrival(1);
|
|
|
+ updateAdminDfdl(stlsDfdlList);
|
|
|
//结束
|
|
|
return;
|
|
|
} else {
|
|
|
// 在占用时间范围内,到站
|
|
|
- log.info("flid:{},有实际结束占用时间{},且大于当前时间", adminDfdlList.getFlid(), rendDate);
|
|
|
+ log.info("flid:{},有实际结束占用时间{},且大于当前时间", stlsDfdlList.getFlid(), rendDate);
|
|
|
}
|
|
|
} else {
|
|
|
// 没有结束占用时间,到站
|
|
|
- log.info("flid:{},没有实际结束占用时间,判断是否有实际开始占用时间", adminDfdlList.getFlid());
|
|
|
+ log.info("flid:{},没有实际结束占用时间,判断是否有实际开始占用时间", stlsDfdlList.getFlid());
|
|
|
// 判断到站时间是否在当前时间之前,避免脏数据
|
|
|
Date rstrDate = strToDate(String.valueOf(rstr).replace("null", ""));
|
|
|
if (rstrDate != null) {
|
|
|
- log.info("flid:{},有实际开始占用时间{},应占用机位", rstrDate, adminDfdlList.getFlid());
|
|
|
- // 到站
|
|
|
- aircraftPosition.setType("使用中");
|
|
|
- adminDfdlList.setArrival(1);
|
|
|
- setStlsDate(adminDfdlList);
|
|
|
- if (!isChangeFlag) {
|
|
|
- log.info("flid:{},copy", adminDfdlList.getFlid());
|
|
|
- adminDfdlCopyToAirPosition(adminDfdlList, aircraftPosition);
|
|
|
- }
|
|
|
- // 更新机位
|
|
|
- getAdminAircraftPositionService().updateById(aircraftPosition);
|
|
|
- // 更新计划
|
|
|
- updateAdminDfdl(adminDfdlList);
|
|
|
- // 结束
|
|
|
+ log.info("flid:{},有实际开始占用时间{},应占用机位", rstrDate, stlsDfdlList.getFlid());
|
|
|
+ setUsePosition(codeAircraftPosition, stlsDfdlList, isChangeFlag);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- // 没有实际占用时间,设置预计时间
|
|
|
- log.info("flid:{},没有实际占用时间", adminDfdlList.getFlid());
|
|
|
+ // 没有实际占用时间
|
|
|
+ log.info("flid:{},没有实际占用时间", stlsDfdlList.getFlid());
|
|
|
}
|
|
|
|
|
|
- if (adminAircraftPosition == null) {
|
|
|
- log.info("此航班【{}】未在机位表中被发现,判断是否有结束时间,有直接占用,没有判断机位上航班【{}】是否结束占用没结束就不占用", FLID, aircraftPosition.getFlightSole());
|
|
|
+ // 走到此处表名stls中的航班没有实际占用,矫正机位上的航班是否占用
|
|
|
+ if (flidAircraftPosition == null) {
|
|
|
+ log.info("此航班【{}】未在机位表中被发现,判断机位上航班【{}】是否结束占用没结束就不占用", FLID, codeAircraftPosition.getFlightSole());
|
|
|
// 在机位表中没有找到航班对应的机位, 判断机位上航班是否结束占用
|
|
|
- if (aircraftPosition.getFlightSole() != null && !FLID.equals(aircraftPosition.getFlightSole())) {
|
|
|
+ if (codeAircraftPosition.getFlightSole() != null && !FLID.equals(codeAircraftPosition.getFlightSole())) {
|
|
|
// 不是一个航班,判断谁应该在这段时间占用
|
|
|
- //查询机位上航班所在计划中的信息
|
|
|
- AdminDfdlList byId = getAdminDfdlListService().getById(aircraftPosition.getFlightSole());
|
|
|
- if (byId != null) {
|
|
|
- log.info("机位【{}】上的航班flid:{}在计划中", CODE, byId.getFlid());
|
|
|
- if (byId.getArrival() > 0) {
|
|
|
- log.info("当前机位【{}】的航班到站FLID:{}", CODE, byId.getFlid());
|
|
|
+ //机位上的航班计划
|
|
|
+ AdminDfdlList codeDfdlList = getAdminDfdlListService().getById(codeAircraftPosition.getFlightSole());
|
|
|
+ if (codeDfdlList != null) {
|
|
|
+ log.info("机位【{}】上的航班flid:{}在计划中", CODE, codeDfdlList.getFlid());
|
|
|
+ if (codeDfdlList.getArrival() > 0) {
|
|
|
+ log.info("当前机位【{}】的航班到站FLID:{}", CODE, codeDfdlList.getFlid());
|
|
|
// 已经到站, 判断是否结束占用
|
|
|
- if (isArrival(CODE, now, byId)) return;
|
|
|
+ if (isArrival(CODE, now, codeDfdlList)) {
|
|
|
+ // 需要占用
|
|
|
+ if ("空置".equals(codeAircraftPosition.getType())){
|
|
|
+ // 改为占用
|
|
|
+ log.info("空置状态,改为占用");
|
|
|
+ setUsePosition(codeAircraftPosition, codeDfdlList, isChangeFlag);
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ //不需要占用,先置空,走到此处表明上一条数据没到站,新来的数据也没到站(但是计划里面设置到站了数据异常!),暂时不反回先把新来的数据flid放到机位上
|
|
|
+ if ("使用中".equals(codeAircraftPosition.getType())){
|
|
|
+ // 改为空置
|
|
|
+ log.info("使用状态改为空置");
|
|
|
+ getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
- log.info("当前机位【{}】的航班未到站FLID:{}", CODE, byId.getFlid());
|
|
|
+ log.info("当前机位【{}】的航班未到站FLID:{},状态:{}", CODE, codeDfdlList.getFlid(), codeAircraftPosition.getType());
|
|
|
// 机位上的数据未到站
|
|
|
- // 不需要占用机位就返回
|
|
|
- if (!isArrival(CODE, now, adminDfdlList)) {
|
|
|
+ // 机位上的航班不需要占用机位就返回
|
|
|
+ if (!isArrival(CODE, now, codeDfdlList)) {
|
|
|
log.info("不需要占用");
|
|
|
+ if ("使用中".equals(codeAircraftPosition.getType())){
|
|
|
+ log.info("使用状态改为空置");
|
|
|
+ getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
+ // 更新机位对应的航班
|
|
|
+ AdminAircraftPosition adminAircraftPosition = new AdminAircraftPosition();
|
|
|
+ adminAircraftPosition.setId(codeAircraftPosition.getId());
|
|
|
+ adminAircraftPosition.setFlightSole(codeAircraftPosition.getFlightSole());
|
|
|
+ getAdminAircraftPositionService().updateById(adminAircraftPosition);
|
|
|
+ }
|
|
|
return;
|
|
|
} else {
|
|
|
- log.info("需要占用,设置到站值为1");
|
|
|
- adminDfdlList.setArrival(1);
|
|
|
+ log.info("需要占用");
|
|
|
+ if ("空置".equals(codeAircraftPosition.getType())){
|
|
|
+ log.info("空置状态,改为占用");
|
|
|
+ // 改为占用
|
|
|
+ setUsePosition(codeAircraftPosition, codeDfdlList, isChangeFlag);
|
|
|
+ }
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
- log.info("机位【{}】上的航班flid:{}不在计划中", CODE, aircraftPosition.getFlightSole());
|
|
|
+ log.info("机位【{}】上的航班flid:{}不在计划中", CODE, codeAircraftPosition.getFlightSole());
|
|
|
// 没有此计划
|
|
|
- log.error("判断机位冲突时发现此航班【{}】,没有计划", adminAircraftPosition.getFlightSole());
|
|
|
+ log.error("判断机位冲突时发现此航班【{}】,没有计划", flidAircraftPosition.getFlightSole());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 更新数据
|
|
|
// 更新机位对应的航班
|
|
|
- aircraftPosition.setFlightSole(FLID);
|
|
|
- getAdminAircraftPositionService().updateById(aircraftPosition);
|
|
|
+ codeAircraftPosition.setFlightSole(FLID);
|
|
|
+ getAdminAircraftPositionService().updateById(codeAircraftPosition);
|
|
|
// 更新计划
|
|
|
- updateAdminDfdl(adminDfdlList);
|
|
|
- log.info("最终更新计划数据:{}", adminDfdlList);
|
|
|
- log.info("最终更新机位数据:{}", aircraftPosition);
|
|
|
+ updateAdminDfdl(stlsDfdlList);
|
|
|
+ log.info("最终更新计划数据:{}", stlsDfdlList);
|
|
|
+ log.info("最终更新机位数据:{}", codeAircraftPosition);
|
|
|
} else {
|
|
|
log.error("未找到对应机位【{}】", CODE);
|
|
|
}
|
|
@@ -218,6 +239,28 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 占用机位
|
|
|
+ * @param codeAircraftPosition
|
|
|
+ * @param dfdlList
|
|
|
+ * @param isChangeFlag
|
|
|
+ */
|
|
|
+ private void setUsePosition(AdminAircraftPosition codeAircraftPosition, AdminDfdlList dfdlList, boolean isChangeFlag) {
|
|
|
+ // 到站
|
|
|
+ codeAircraftPosition.setType("使用中");
|
|
|
+ dfdlList.setArrival(1);
|
|
|
+ setStlsDate(dfdlList);
|
|
|
+ if (!isChangeFlag) {
|
|
|
+ log.info("flid:{},copy", dfdlList.getFlid());
|
|
|
+ adminDfdlCopyToAirPosition(dfdlList, codeAircraftPosition);
|
|
|
+ }
|
|
|
+ // 更新机位
|
|
|
+ getAdminAircraftPositionService().updateById(codeAircraftPosition);
|
|
|
+ // 更新计划
|
|
|
+ updateAdminDfdl(dfdlList);
|
|
|
+ // 结束
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 判断已经到站的飞机是否需要占用机位
|
|
|
* 需要返回 true
|
|
|
* 不需要返回 false
|