|
@@ -1,16 +1,12 @@
|
|
|
package org.jeecg.modules.api.imf.msg;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
-import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
-import com.google.common.base.Strings;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jeecg.modules.admin_aircraft_position.entity.AdminAircraftPosition;
|
|
|
import org.jeecg.modules.admin_dfdl_list.entity.AdminDfdlList;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.Date;
|
|
|
-import java.util.Map;
|
|
|
|
|
|
|
|
|
* @author 王葆权
|
|
@@ -39,259 +35,12 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
- setStlsDate(dfdlList);
|
|
|
|
|
|
- String CODE = getStrVal("/MSG/DFLT/STLS/STND/CODE");
|
|
|
- dfdlList.setPositionCode(CODE);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ setStlsStnd(dfdlList);
|
|
|
updateAdminDfdl(dfdlList);
|
|
|
-
|
|
|
- log.info("进站飞机");
|
|
|
- if (Strings.isNullOrEmpty(CODE)) {
|
|
|
- log.error("未获取到机位!(/MSG/DFLT/STLS/STND/CODE)");
|
|
|
- return;
|
|
|
- }
|
|
|
- AdminAircraftPosition codeAircraftPosition = getApByCode(CODE);
|
|
|
- if (codeAircraftPosition != null) {
|
|
|
- log.info("查询到相应的机位:{}", CODE);
|
|
|
- log.info("机位当前信息:{}", codeAircraftPosition);
|
|
|
-
|
|
|
- AdminDfdlList stlsDfdlList = getAdminDfdlListService().getById(FLID);
|
|
|
- if (stlsDfdlList == null) {
|
|
|
-
|
|
|
- log.error("此航班【{}】,没有计划", FLID);
|
|
|
- return;
|
|
|
- }
|
|
|
- log.info("查询到计划内容:{}", stlsDfdlList);
|
|
|
- if (stlsDfdlList.getArrival() > 0) {
|
|
|
-
|
|
|
- log.info("此航班【{}】,已经到站,判断是否出站", FLID);
|
|
|
-
|
|
|
- if (stlsDfdlList.getRend() != null) {
|
|
|
-
|
|
|
- log.info("出站清空机位");
|
|
|
- getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
- return;
|
|
|
- } else {
|
|
|
- log.info("没有出站");
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (stlsDfdlList.getRend() != null) {
|
|
|
-
|
|
|
- getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
- stlsDfdlList.setArrival(1);
|
|
|
- updateAdminDfdl(stlsDfdlList);
|
|
|
- log.info("计划中此航班【{}】,已经出站,{}", FLID, stlsDfdlList);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- boolean isChangeFlag = false;
|
|
|
-
|
|
|
- LambdaQueryWrapper<AdminAircraftPosition> aircraftPositionByFlidQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
- aircraftPositionByFlidQueryWrapper.eq(AdminAircraftPosition::getFlightSole, FLID);
|
|
|
-
|
|
|
- AdminAircraftPosition flidAircraftPosition = getAdminAircraftPositionService().getOne(aircraftPositionByFlidQueryWrapper);
|
|
|
- if (flidAircraftPosition != null) {
|
|
|
- log.info("此航班【{}】在机位表中被发现", FLID);
|
|
|
-
|
|
|
- if (!flidAircraftPosition.getAircraftPositionNum().equals(CODE)) {
|
|
|
- log.info("此航班【{}】与对应机位所属数据不匹配,进行交换机位数据操作", FLID);
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- getAdminAircraftPositionService().dept(flidAircraftPosition.getId());
|
|
|
-
|
|
|
- } else {
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- Map map = getStlsDateMap(getXmlStr());
|
|
|
- Object rstr = map.get("RSTR");
|
|
|
-
|
|
|
- if (rstr != null) {
|
|
|
- log.info("判断flid:{}是否已经占用机位", stlsDfdlList.getFlid());
|
|
|
-
|
|
|
- Object rend = map.get("REND");
|
|
|
- if (rend != 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:{},有实际结束占用时间{}, 且小于当前时间, 清空机位", stlsDfdlList.getFlid(), String.valueOf(rend).replace("null", ""));
|
|
|
-
|
|
|
- getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
- stlsDfdlList.setArrival(1);
|
|
|
- updateAdminDfdl(stlsDfdlList);
|
|
|
-
|
|
|
- return;
|
|
|
- } else {
|
|
|
-
|
|
|
- log.info("flid:{},有实际结束占用时间{},且大于当前时间", stlsDfdlList.getFlid(), rendDate);
|
|
|
- }
|
|
|
- } else {
|
|
|
-
|
|
|
- log.info("flid:{},没有实际结束占用时间,判断是否有实际开始占用时间", stlsDfdlList.getFlid());
|
|
|
-
|
|
|
- Date rstrDate = strToDate(String.valueOf(rstr).replace("null", ""));
|
|
|
- if (rstrDate != null) {
|
|
|
- log.info("flid:{},有实际开始占用时间{},应占用机位", rstrDate, stlsDfdlList.getFlid());
|
|
|
- setUsePosition(codeAircraftPosition, stlsDfdlList, isChangeFlag);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
-
|
|
|
- log.info("flid:{},没有实际占用时间", stlsDfdlList.getFlid());
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- if (flidAircraftPosition == null) {
|
|
|
- log.info("此航班【{}】未在机位表中被发现,判断机位上航班【{}】是否结束占用没结束就不占用", FLID, codeAircraftPosition.getFlightSole());
|
|
|
-
|
|
|
- if (codeAircraftPosition.getFlightSole() != null && !FLID.equals(codeAircraftPosition.getFlightSole())) {
|
|
|
-
|
|
|
-
|
|
|
- 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, codeDfdlList)) {
|
|
|
-
|
|
|
- if ("空置".equals(codeAircraftPosition.getType())) {
|
|
|
-
|
|
|
- log.info("空置状态,改为占用");
|
|
|
- setUsePosition(codeAircraftPosition, codeDfdlList, isChangeFlag);
|
|
|
- }
|
|
|
- return;
|
|
|
- } else {
|
|
|
-
|
|
|
- if ("使用中".equals(codeAircraftPosition.getType())) {
|
|
|
-
|
|
|
- log.info("使用状态改为空置");
|
|
|
- getAdminAircraftPositionService().dept(codeAircraftPosition.getId());
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.info("当前机位【{}】的航班未到站FLID:{},状态:{}", CODE, codeDfdlList.getFlid(), codeAircraftPosition.getType());
|
|
|
-
|
|
|
-
|
|
|
- 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(FLID);
|
|
|
- getAdminAircraftPositionService().updateById(adminAircraftPosition);
|
|
|
- }
|
|
|
- return;
|
|
|
- } else {
|
|
|
- log.info("需要占用");
|
|
|
- if ("空置".equals(codeAircraftPosition.getType())) {
|
|
|
- log.info("空置状态,改为占用");
|
|
|
-
|
|
|
- setUsePosition(codeAircraftPosition, codeDfdlList, isChangeFlag);
|
|
|
- }
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- log.info("机位【{}】上的航班flid:{}不在计划中", CODE, codeAircraftPosition.getFlightSole());
|
|
|
-
|
|
|
- log.error("判断机位冲突时发现此航班【{}】,没有计划", flidAircraftPosition.getFlightSole());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- codeAircraftPosition.setFlightSole(FLID);
|
|
|
- getAdminAircraftPositionService().updateById(codeAircraftPosition);
|
|
|
-
|
|
|
- updateAdminDfdl(stlsDfdlList);
|
|
|
- log.info("最终更新计划数据:{}", stlsDfdlList);
|
|
|
- log.info("最终更新机位数据:{}", codeAircraftPosition);
|
|
|
- } else {
|
|
|
- log.error("未找到对应机位【{}】", CODE);
|
|
|
- }
|
|
|
- } else if ("D".equals(dfdlList.getFlio())) {
|
|
|
-
|
|
|
-
|
|
|
- log.info("是出站飞机");
|
|
|
- Map map = null;
|
|
|
- try {
|
|
|
- map = getStlsDateMap(getXmlStr());
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("此出站消息没有时间标签");
|
|
|
- e.printStackTrace();
|
|
|
- return;
|
|
|
- }
|
|
|
- if (map == null || map.isEmpty()) {
|
|
|
- return;
|
|
|
- }
|
|
|
- Object rend = map.get("REND");
|
|
|
- if (rend == null) {
|
|
|
- log.info("没有实际结束占用时间,判断是否是始发站飞机");
|
|
|
-
|
|
|
- Object rstr = map.get("RSTR");
|
|
|
- if (rstr == null) {
|
|
|
-
|
|
|
- log.info("没有实际开始占用时间,不做操作");
|
|
|
- } else {
|
|
|
- log.info("有实际开始占用时间,判断是否有Afid");
|
|
|
-
|
|
|
- if (dfdlList.getAfid() == null) {
|
|
|
- log.info("没有Afid,是始发站飞机");
|
|
|
-
|
|
|
- AdminAircraftPosition codeAircraftPosition = getApByCode(CODE);
|
|
|
- if (codeAircraftPosition != null) {
|
|
|
- log.info("有对应机位,占用机位:{}",CODE);
|
|
|
-
|
|
|
- setUsePosition(codeAircraftPosition, dfdlList, false);
|
|
|
- } else {
|
|
|
- log.info("未找到机位:{}",CODE);
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.info("有Afid:{}", dfdlList.getAfid());
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- log.info("有实际结束占用时间");
|
|
|
-
|
|
|
- if (dfdlList.getAfid() == null) {
|
|
|
-
|
|
|
- Date rendDate = strToDate(String.valueOf(rend).replace("null", ""));
|
|
|
- if (rendDate != null && rendDate.before(now)) {
|
|
|
-
|
|
|
- DepeImfMsg depeImfMsg = new DepeImfMsg(getXmlStr());
|
|
|
- depeImfMsg.depeHandle(dfdlList.getFlid(), rendDate);
|
|
|
- }
|
|
|
- } else {
|
|
|
- Date rendDate = strToDate(String.valueOf(rend).replace("null", ""));
|
|
|
- if (rendDate != null && rendDate.before(now)) {
|
|
|
-
|
|
|
- DepeImfMsg depeImfMsg = new DepeImfMsg(getXmlStr());
|
|
|
- depeImfMsg.depeHandleD(String.valueOf(dfdlList.getFlid()).replace("null", ""), rendDate);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }*/
|
|
|
}
|
|
|
|
|
|
|
|
@@ -320,7 +69,7 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
|
|
|
codeAircraftPosition.setType("使用中");
|
|
|
dfdlList.setArrival(1);
|
|
|
- setStlsDate(dfdlList);
|
|
|
+ setStlsStnd(dfdlList);
|
|
|
if (!isChangeFlag) {
|
|
|
log.info("flid:{},copy", dfdlList.getFlid());
|
|
|
adminDfdlCopyToAirPosition(dfdlList, codeAircraftPosition);
|
|
@@ -376,37 +125,9 @@ public class StlsImfMsg extends ImfMsgAbstract {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- * 获取计划
|
|
|
- *
|
|
|
- * @param FLID
|
|
|
- * @return
|
|
|
- */
|
|
|
- private AdminDfdlList getAdminDfdl(String FLID) {
|
|
|
- AdminDfdlList dfdlList;
|
|
|
- ObjectMapper objectMapper = getObjectMapper();
|
|
|
- if (getRedisUtil().hasKey(ImfMsgType.DFDL.getRedisKey() + FLID)) {
|
|
|
- String dfdlJson = (String) getRedisUtil().get(ImfMsgType.DFDL.getRedisKey() + FLID);
|
|
|
- try {
|
|
|
- dfdlList = objectMapper.readValue(dfdlJson, AdminDfdlList.class);
|
|
|
- } catch (JsonProcessingException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- } else {
|
|
|
-
|
|
|
- dfdlList = getAdminDfdlListService().getById(FLID);
|
|
|
- try {
|
|
|
- getRedisUtil().set(ImfMsgType.DFDL.getRedisKey() + FLID, objectMapper.writeValueAsString(dfdlList));
|
|
|
- } catch (JsonProcessingException e) {
|
|
|
- throw new RuntimeException(e);
|
|
|
- }
|
|
|
- }
|
|
|
- return dfdlList;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
private void updateAdminDfdlTime(AdminDfdlList dfdlList) {
|
|
|
- setStlsDate(dfdlList);
|
|
|
+ setStlsStnd(dfdlList);
|
|
|
updateAdminDfdl(dfdlList);
|
|
|
}
|
|
|
}
|