Browse Source

:white_check_mark: 到达时处理预计时间不一致的情况

Twelve615 1 year ago
parent
commit
9d05965901

+ 7 - 1
airport/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/imf/msg/ArreImfMsg.java

@@ -22,6 +22,7 @@ public class ArreImfMsg extends ImfMsgAbstract {
     }
 
     @Override
+    @Transactional
     public void handle() {
         log.info("航班到达本站消息处理开始");
         // 直接更新机位表将计划表以及消息中的时间等数据更新
@@ -41,7 +42,12 @@ public class ArreImfMsg extends ImfMsgAbstract {
                     return;
                 }
                 adminDfdl.setArrival(1);
-                adminDfdl.setFrlt(date);
+                if (adminDfdl.getEstr() != null && adminDfdlList.getEstr() != null && (adminDfdl.getEstr().after(adminDfdlList.getEstr()))) {
+                    // 如果进港计划和出港计划的预计开始占用时间不一致(在出港的在开始占用在进港的开始占用之后),不为出港计划设置到达时间
+                    // 因为这将会导致错误判断,导致使用降落时间判定已经在机位上了
+                } else {
+                    adminDfdl.setFrlt(date);
+                }
                 updateAdminDfdl(adminDfdl);
             }
         } else {

+ 4 - 0
airport/jeecg-boot-module-system/src/main/java/org/jeecg/modules/api/imf/msg/DfdlImfMsg.java

@@ -101,6 +101,7 @@ public class DfdlImfMsg extends ImfMsgAbstract {
      * 发现有计划将还没有起飞标志的进港计划换到了已经出港的计划上面,由于出港计划已经起飞导致起飞的这个计划永远无法设置上起飞标志位,所以对进港计划进行矫正
      */
     private void correctiveEventsHandle() {
+        log.info("进港计划起飞事件矫正开始");
         Calendar instance = Calendar.getInstance();
         instance.add(Calendar.HOUR_OF_DAY, -1);
         // 一小时之前,主要是更改被整表同步事件修改的内容,所以一小时就够了,出港进港计划中其中一个被修改另一个一定会被修改
@@ -126,14 +127,17 @@ public class DfdlImfMsg extends ImfMsgAbstract {
         for (AdminDfdlList adminDfdlList : aDfdlList) {
             for (AdminDfdlList dfdlList : dDfdlList) {
                 if (dfdlList.getFlid().equals(adminDfdlList.getAfid()) && !dfdlList.getDepe().equals(adminDfdlList.getDepe())) {
+                    log.info("矫正计划:{}", adminDfdlList);
                     adminDfdlList.setDepe(dfdlList.getDepe());
                     updateList.add(adminDfdlList);
+                    log.info("矫正后计划:{}", adminDfdlList);
                 }
             }
         }
         if (!updateList.isEmpty()) {
             getAdminDfdlListService().updateBatchById(updateList);
         }
+        log.info("进港计划起飞事件矫正结束");
     }
 
     /**