From efabc6ba991acfd01d38bb0bf4e8cfd772416617 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 05 一月 2026 13:07:39 +0800
Subject: [PATCH] #

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java |  117 +++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 98 insertions(+), 19 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
index 07c84af..9666287 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/TaskServiceImpl.java
@@ -41,6 +41,8 @@
     private SnowflakeIdWorker snowflakeIdWorker;
     @Autowired
     private LaneService laneService;
+    @Autowired
+    private StaReserveService staReserveService;
 
     @Override
     public PageResult<Task> pageRel(PageParam<Task, BaseParam> pageParam) {
@@ -96,7 +98,7 @@
         if (null == task) {
             return Boolean.FALSE;
         }
-        this.maintainLocSts(task, Boolean.TRUE);
+        this.maintainLocAndStaHandler(task, Boolean.TRUE);
 
         task.setTaskSts(TaskStsType.COMPLETE.val());
         task.setUpdateTime(new Date());
@@ -115,7 +117,7 @@
         if (null == task) {
             return Boolean.FALSE;
         }
-        this.maintainLocSts(task, Boolean.FALSE);
+        this.maintainLocAndStaHandler(task, Boolean.FALSE);
 
         task.setTaskSts(TaskStsType.CANCEL.val());
         task.setUpdateTime(new Date());
@@ -220,8 +222,85 @@
         return this.list(wrapper).stream().findFirst().orElse(null);
     }
 
+    @Override
+    public void maintainLocAndSta(Task task) {
+        if (null == task) {
+            return;
+        }
+        if (!task.getTaskSts().equals(TaskStsType.COMPLETE.val())) {
+            return;
+        }
+        Date now = new Date();
+        // loc status
+        Loc oriLoc = null;
+        Loc destLoc = null;
+        Sta oriSta = null;
+        Sta destSta = null;
+        switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) {
+            case LOC_TO_LOC:
+                oriLoc = locService.getById(task.getOriLoc());
+                if (oriLoc.getLocSts().equals(LocStsType.PAKOUT.val())) {
+                    oriLoc.setLocSts(LocStsType.IDLE.val());
+                    oriLoc.setUpdateTime(now);
+                    if (!locService.updateById(oriLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getOriLoc$());
+                    }
+                }
+
+                destLoc = locService.getById(task.getDestLoc());
+                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
+                    destLoc.setLocSts(LocStsType.STOCK.val());
+                    destLoc.setUpdateTime(now);
+                    if (!locService.updateById(destLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
+                    }
+                }
+                break;
+            case LOC_TO_STA:
+                oriLoc = locService.getById(task.getOriLoc());
+                if (oriLoc.getLocSts().equals(LocStsType.PAKOUT.val())) {
+                    oriLoc.setLocSts(LocStsType.IDLE.val());
+                    oriLoc.setUpdateTime(now);
+                    if (!locService.updateById(oriLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getOriLoc$());
+                    }
+                }
+
+                destSta = staService.getById(task.getDestSta());
+                staReserveService.confirmStaReserve(destSta, task, 1, StaReserveType.IN);
+                break;
+            case STA_TO_LOC:
+                oriSta = staService.getById(task.getOriSta());
+                staReserveService.confirmStaReserve(oriSta, task, 1, StaReserveType.OUT);
+
+                destLoc = locService.getById(task.getDestLoc());
+                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
+                    destLoc.setLocSts(LocStsType.STOCK.val());
+                    destLoc.setUpdateTime(now);
+                    if (!locService.updateById(destLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
+                    }
+                }
+                break;
+            case STA_TO_STA:
+                oriSta = staService.getById(task.getOriSta());
+                staReserveService.confirmStaReserve(oriSta, task, 1, StaReserveType.OUT);
+
+                destSta = staService.getById(task.getDestSta());
+                staReserveService.confirmStaReserve(destSta, task, 1, StaReserveType.IN);
+                break;
+            case TO_CHARGE:
+            case TO_STANDBY:
+            case MOVE:
+                break;
+            default:
+                break;
+        }
+    }
+
+
     @Transactional
-    public void maintainLocSts(Task task, Boolean complete) {
+    public void maintainLocAndStaHandler(Task task, Boolean complete) {
         Loc oriLoc = null; Loc destLoc = null;
         Sta oriSta = null; Sta destSta = null;
         Date now = new Date();
@@ -252,18 +331,18 @@
                 }
 
                 destSta = staService.getById(task.getDestSta());
-                destSta.setStaSts(complete?StaStsType.STOCK.val():StaStsType.IDLE.val());
-                destSta.setUpdateTime(now);
-                if (!staService.updateById(destSta)) {
-                    throw new BusinessException("Sta [" + destSta.getStaNo() + "] 绔欑偣淇敼鐘舵�佸け璐� 锛侊紒锛�");
+                if (complete) {
+                    staReserveService.confirmStaReserve(destSta, task, 1, StaReserveType.IN);
+                } else {
+                    staReserveService.cancelStaReserve(destSta, task, 1, StaReserveType.IN);
                 }
                 break;
             case STA_TO_LOC:
                 oriSta = staService.getById(task.getOriSta());
-                oriSta.setStaSts(complete?StaStsType.IDLE.val():StaStsType.STOCK.val());
-                oriSta.setUpdateTime(now);
-                if (!staService.updateById(oriSta)) {
-                    throw new BusinessException("Sta [" + oriSta.getStaNo() + "] 绔欑偣淇敼鐘舵�佸け璐� 锛侊紒锛�");
+                if (complete) {
+                    staReserveService.confirmStaReserve(oriSta, task, 1, StaReserveType.OUT);
+                } else {
+                    staReserveService.cancelStaReserve(oriSta, task, 1, StaReserveType.OUT);
                 }
 
                 destLoc = locService.getById(task.getDestLoc());
@@ -275,17 +354,17 @@
                 break;
             case STA_TO_STA:
                 oriSta = staService.getById(task.getOriSta());
-                oriSta.setStaSts(complete?StaStsType.IDLE.val():StaStsType.STOCK.val());
-                oriSta.setUpdateTime(now);
-                if (!staService.updateById(oriSta)) {
-                    throw new BusinessException("Sta [" + oriSta.getStaNo() + "] 绔欑偣淇敼鐘舵�佸け璐� 锛侊紒锛�");
+                if (complete) {
+                    staReserveService.confirmStaReserve(oriSta, task, 1, StaReserveType.OUT);
+                } else {
+                    staReserveService.cancelStaReserve(oriSta, task, 1, StaReserveType.OUT);
                 }
 
                 destSta = staService.getById(task.getDestSta());
-                destSta.setStaSts(complete?StaStsType.STOCK.val():StaStsType.IDLE.val());
-                destSta.setUpdateTime(now);
-                if (!staService.updateById(destSta)) {
-                    throw new BusinessException("Sta [" + destSta.getStaNo() + "] 绔欑偣淇敼鐘舵�佸け璐� 锛侊紒锛�");
+                if (complete) {
+                    staReserveService.confirmStaReserve(destSta, task, 1, StaReserveType.IN);
+                } else {
+                    staReserveService.cancelStaReserve(destSta, task, 1, StaReserveType.IN);
                 }
                 break;
             case TO_CHARGE:

--
Gitblit v1.9.1