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

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java                   |    5 +++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/SiemensConveyorStationService.java |   17 +++++++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ConveyorStationService.java        |   12 ++++++++++++
 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            |    1 +
 zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml                           |    1 +
 6 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ConveyorStationService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ConveyorStationService.java
new file mode 100644
index 0000000..51e0568
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ConveyorStationService.java
@@ -0,0 +1,12 @@
+package com.zy.acs.manager.core.service;
+
+import com.zy.acs.manager.manager.entity.Segment;
+import com.zy.acs.manager.manager.entity.Sta;
+import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.enums.StaReserveType;
+
+public interface ConveyorStationService {
+
+    boolean allowAgvWork(Sta sta, Task task, Segment seg, StaReserveType type);
+
+}
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 b3058b4..2d2890e 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
@@ -100,6 +100,8 @@
     private ActionSorter actionSorter;
     @Autowired
     private StaReserveService staReserveService;
+    @Autowired
+    private ConveyorStationService conveyorStationService;
 
     @SuppressWarnings("all")
     @Transactional
@@ -1495,6 +1497,9 @@
                             case ORI_STA:
                                 sta = staService.getById(currTask.getOriSta());
                                 success = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT);
+
+                                boolean permit = conveyorStationService.allowAgvWork(sta, currTask, currSeg, StaReserveType.OUT);
+
                                 // load sta
                                 // remove expiredTime
                                 break;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/SiemensConveyorStationService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/SiemensConveyorStationService.java
new file mode 100644
index 0000000..f933f43
--- /dev/null
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/SiemensConveyorStationService.java
@@ -0,0 +1,17 @@
+package com.zy.acs.manager.core.service;
+
+import com.zy.acs.manager.manager.entity.Segment;
+import com.zy.acs.manager.manager.entity.Sta;
+import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.enums.StaReserveType;
+import org.springframework.stereotype.Service;
+
+@Service
+public class SiemensConveyorStationService implements ConveyorStationService {
+
+    @Override
+    public boolean allowAgvWork(Sta sta, Task task, Segment seg, StaReserveType type) {
+        return true;
+    }
+
+}
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 4f69f87..d091148 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
@@ -22,6 +22,7 @@
             , @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/impl/StaReserveServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaReserveServiceImpl.java
index f9641ba..e0ec01f 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
@@ -27,6 +27,7 @@
 public class StaReserveServiceImpl extends ServiceImpl<StaReserveMapper, StaReserve> implements StaReserveService {
 
     public static final Long RESERVE_EXPIRE_TIME = 30 * 60 * 1000L;
+    public static final Long WAITING_EXPIRE_TIME = 5 * 60 * 1000L;
 
     public static final Integer DEFAULT_QTY = 1;
 
@@ -110,10 +111,13 @@
         qty = Optional.ofNullable(qty).orElse(DEFAULT_QTY);
 
         // update reserve to be waiting state
-        if (0 < this.baseMapper.updateStateToWaiting(sta.getId()
+        int changed = this.baseMapper.updateStateToWaiting(sta.getId()
                 , task.getId()
                 , type.toString()
-                , StaReserveStateType.WAITING.toString())) {
+                , StaReserveStateType.WAITING.toString()
+                , WAITING_EXPIRE_TIME
+        );
+        if (changed > 0) {
             return true;
         }
 
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 264cb22..bbc3c31 100644
--- a/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml
+++ b/zy-acs-manager/src/main/resources/mapper/manager/StaReserveMapper.xml
@@ -20,6 +20,7 @@
         UPDATE man_sta_reserve
         SET state = #{state},
             waiting_at = IFNULL(waiting_at, NOW()),
+            expire_time = DATE_ADD(NOW(), INTERVAL #{extendMs} MILLISECOND),
             update_time = NOW()
         WHERE task_id = #{taskId}
         AND sta_id = #{staId}

--
Gitblit v1.9.1