From 400b66ecb2ab42af18ef9697c5b2a2fb831447a8 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 29 十二月 2025 12:56:56 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                   |   13 ++++++++++---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaReserveService.java          |    2 ++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java |    8 ++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/StaReserveMapper.java            |    8 ++++++++
 zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml                           |   13 +++++++++++++
 5 files changed, 41 insertions(+), 3 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
index 2d2890e..ba30eab 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1496,12 +1496,19 @@
                                 break;
                             case ORI_STA:
                                 sta = staService.getById(currTask.getOriSta());
-                                success = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT);
+                                boolean reserveWaitingOk = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT);
+                                if (!reserveWaitingOk) {
+                                    break;
+                                }
 
                                 boolean permit = conveyorStationService.allowAgvWork(sta, currTask, currSeg, StaReserveType.OUT);
+                                if (!permit) {
+                                    // reserve rollback
+                                    staReserveService.rollbackWaitingToReserved(sta, currTask, StaReserveType.OUT);
+                                    break;
+                                }
 
-                                // load sta
-                                // remove expiredTime
+                                success = true;
                                 break;
                             case DEST_STA:
                                 // place sta
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/StaReserveMapper.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/StaReserveMapper.java
index d091148..e84e694 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/StaReserveMapper.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/mapper/StaReserveMapper.java
@@ -25,4 +25,12 @@
             , @Param("extendMs") Long extendMs
     );
 
+    int updateStateBackToWaiting(
+            @Param("taskId") Long taskId
+            , @Param("staId") Long staId
+            , @Param("type") String type
+            , @Param("state") String state
+            , @Param("extendMs") Long extendMs
+    );
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaReserveService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaReserveService.java
index 5da15ef..45a32cd 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaReserveService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaReserveService.java
@@ -15,6 +15,8 @@
 
     Boolean waitingStaReserve(Sta sta, Task task, Integer qty, StaReserveType type);
 
+    Boolean rollbackWaitingToReserved(Sta sta, Task currTask, StaReserveType staReserveType);
+
 
     void confirmStaReserve(Sta sta, Task task, Integer qty, StaReserveType type);
 
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java
index e0ec01f..9750e6c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java
@@ -145,6 +145,14 @@
     }
 
     @Override
+    public Boolean rollbackWaitingToReserved(Sta sta, Task currTask, StaReserveType staReserveType) {
+
+        rollbackWaitingToReserved
+
+        return null;
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public void confirmStaReserve(Sta sta, Task task, Integer qty, StaReserveType type) {
         qty = Optional.ofNullable(qty).orElse(DEFAULT_QTY);
diff --git a/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml b/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml
index bbc3c31..9c26d9a 100644
--- a/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml
+++ b/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml
@@ -30,4 +30,17 @@
 --         AND state IN ('RESERVED','WAITING')
     </update>
 
+    <update id="updateStateBackToWaiting">
+        UPDATE man_sta_reserve
+        SET state = #{state},
+            expire_time = DATE_ADD(NOW(), INTERVAL (#{reservedExtendMs} * 1000) MICROSECOND),
+            update_time = NOW()
+        WHERE task_id = #{taskId}
+        AND sta_id = #{staId}
+        AND type = #{type}
+        AND deleted = 0
+        AND status = 1
+--         AND state = 'WAITING'
+    </update>
+
 </mapper>

--
Gitblit v1.9.1