From 3fa7cdec6ce44f07a0dc7e1910511ead606990f3 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期四, 11 九月 2025 08:19:53 +0800
Subject: [PATCH] 1

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java     |   67 +++++++++++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java     |   23 ++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java            |   72 ++++++++------
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java          |    5 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java |   83 +++++++++++-----
 5 files changed, 189 insertions(+), 61 deletions(-)

diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
index 66562d8..a63b102 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java
@@ -150,7 +150,7 @@
         String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
 
         // 绉诲簱
-        this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo);
+        this.runLocToLoc2(locGroupList, agvGroupList, staTaskMemo);
     }
 
     private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
@@ -446,6 +446,71 @@
         mainService.generateBusAndTask(param, memo);
     }
 
+    private void runLocToLoc2(List<Integer> locGroupList, List<String> agvGroupList, String staTaskMemo) {
+        Integer startRow = Collections.min(locGroupList);
+        Integer endRow = Collections.max(locGroupList);
+
+        String memo = "DEMO_LOC_" + startRow + "-" + endRow;
+
+        // -2 鏄负浜嗘湇鍔¤緭閫佺嚎
+        int availableAgvCount = this.getAvailableAgvCount(agvGroupList) - 1;
+
+        // 鏈�澶� ? 缁刡us杩愯
+        if (availableAgvCount <= busService.count(new LambdaQueryWrapper<Bus>().in(Bus::getBusSts, BusStsType.RECEIVE.val(), BusStsType.PROGRESS.val()).in(Bus::getMemo, memo, staTaskMemo))) {
+            return;
+        }
+
+        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
+        if (null == agvModel) {
+            return;
+        }
+        int maxCapacity = agvModel.getBackpack();
+
+        // STOCK
+        LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.STOCK.val());
+        if (null != startRow) {
+            stockWrapper.ge(Loc::getRow, startRow);
+        }
+        if (null != endRow) {
+            stockWrapper.le(Loc::getRow, endRow);
+        }
+        List<Loc> stockList = locService.list(stockWrapper);
+        if (Cools.isEmpty(stockList) || stockList.size() < agvModel.getBackpack()) {
+            return;
+        }
+        Collections.shuffle(stockList);
+
+        // IDLE
+        LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, LocStsType.IDLE.val());
+        if (null != startRow) {
+            idleWrapper.ge(Loc::getRow, startRow);
+        }
+        if (null != endRow) {
+            idleWrapper.le(Loc::getRow, endRow);
+        }
+        List<Loc> idleList = locService.list(idleWrapper);
+        if (Cools.isEmpty(idleList)) {
+            return;
+        }
+        Collections.shuffle(idleList);
+
+        OpenBusSubmitParam param = new OpenBusSubmitParam();
+        param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19));
+        for (int i = 0; i < Math.min(maxCapacity, Math.min(stockList.size(), idleList.size())); i++) {
+            Loc stockLoc = stockList.get(i);
+            Loc idleLoc = idleList.get(i);
+
+            TaskDto taskDto = new TaskDto();
+            taskDto.setOriLoc(stockLoc.getLocNo());
+            taskDto.setDestLoc(idleLoc.getLocNo());
+            taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(11, 19));
+
+            param.getTaskList().add(taskDto);
+        }
+
+        mainService.generateBusAndTask(param, memo);
+    }
+
     public static List<String> getStaPrefixes(List<String> staGroupList) {
         Set<String> rowSet = new HashSet<>();
         for (String s : staGroupList) {
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 1a2bf2a..545ea54 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
@@ -1502,11 +1502,11 @@
 //                    }
 //                }
 
-                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
-                for (Long taskId : taskIds) {
-                    Task task = taskService.getById(taskId);
-                    report(task, agv_11_up.getQrCode(), TaskReportStsType.END);
-                }
+//                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
+//                for (Long taskId : taskIds) {
+//                    Task task = taskService.getById(taskId);
+//                    report(task, agv_11_up.getQrCode(), TaskReportStsType.END);
+//                }
             }
 
             // 鍑哄簱鍙栬揣
@@ -1540,31 +1540,31 @@
 //                        }
 //                    }
 //                }
-                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
-                for (Long taskId : taskIds) {
-                    Task task = taskService.getById(taskId);
-                    report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN);
-                }
+//                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
+//                for (Long taskId : taskIds) {
+//                    Task task = taskService.getById(taskId);
+//                    report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN);
+//                }
 
             }
             //浠庤緭閫佺嚎鍙栬揣瀹屾垚
-            if (agv_11_up.getCompleteType().equals(AgvCompleteType.TAKE_FROM_STA_COMPLETE)) {
-                WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode();
-                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
-                for (Long taskId : taskIds) {
-                    Task task = taskService.getById(taskId);
-                    report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN);
-                }
-            }
+//            if (agv_11_up.getCompleteType().equals(AgvCompleteType.TAKE_FROM_STA_COMPLETE)) {
+//                WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode();
+//                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
+//                for (Long taskId : taskIds) {
+//                    Task task = taskService.getById(taskId);
+//                    report(task, agv_11_up.getQrCode(), TaskReportStsType.OTBIN);
+//                }
+//            }
             //寰�杈撻�佺嚎鏀捐揣瀹屾垚
-            if (agv_11_up.getCompleteType().equals(AgvCompleteType.RELEASE_FROM_STA_COMPLETE)) {
-                WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode();
-                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
-                for (Long taskId : taskIds) {
-                    Task task = taskService.getById(taskId);
-                    report(task, agv_11_up.getQrCode(), TaskReportStsType.END);
-                }
-            }
+//            if (agv_11_up.getCompleteType().equals(AgvCompleteType.RELEASE_FROM_STA_COMPLETE)) {
+//                WebsocketServiceImpl.taskShelfBarcode = agv_11_up.getLocCode();
+//                List<Long> taskIds = actionService.selectTaskIdsByGroupId(serialNo);
+//                for (Long taskId : taskIds) {
+//                    Task task = taskService.getById(taskId);
+//                    report(task, agv_11_up.getQrCode(), TaskReportStsType.END);
+//                }
+//            }
 
             // 璺緞瀹屾垚 || 鍏呯數瀹屾垚
             if (agv_11_up.getCompleteType().equals(AgvCompleteType.ENTIRE_PATH_COMPLETE)
@@ -1604,6 +1604,8 @@
         // task
         for (Segment segment : segmentList) {
             boolean taskComplete = false;
+            boolean otbin = false;
+
 
             Task task = taskService.getById(segment.getTaskId());
             assert null != task;
@@ -1614,6 +1616,7 @@
             switch (Objects.requireNonNull(posType)) {
                 case ORI_STA:
                 case ORI_LOC:
+                    otbin = true;
                     break;
                 case DEST_STA:
                 case DEST_LOC:
@@ -1634,19 +1637,24 @@
                     break;
             }
 
+            if (otbin) {
+                locService.taskCallBackOtbin(task);
+                report(task, null, TaskReportStsType.OTBIN);
+            }
+
+
             if (taskComplete) {
-                locService.taskCallBack(task);
+                locService.taskCallBackEnd(task);
 
                 task.setTaskSts(TaskStsType.COMPLETE.val());
                 task.setEndTime(now);
                 task.setUpdateTime(now);
                 if (!taskService.updateById(task)) {
                     log.error("Task [{}] 鏇存柊澶辫触 锛侊紒锛�", task.getSeqNum());
-                } else {
-                    report(task, null, TaskReportStsType.END);
-                    if (task.getSeqNum() != null && task.getSeqNum().contains("SSX-CK")) {
-                        report(task, "1001", TaskReportStsType.COMPLETED);
-                    }
+                }
+                report(task, null, TaskReportStsType.END);
+                if (task.getSeqNum() != null && task.getSeqNum().contains("SSX-CK")) {
+                    report(task, "1001", TaskReportStsType.COMPLETED);
                 }
             }
         }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java
index 3476c29..855f981 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java
@@ -69,6 +69,25 @@
                         e.printStackTrace();
                     }
                     taskReportService.updateById(taskReport);
+                } else if (taskReport.getEventType().equalsIgnoreCase(TaskReportStsType.OTBIN.name) && taskReport.getSeqNum().contains("SSX-RK")) {
+                    String response = null;
+                    try {
+                        response = new HttpHandler.Builder()
+                                .setUri(wcsUrl)
+                                .setPath(wcsPath)
+                                .setJson(JSON.toJSONString(taskReport))
+                                .build()
+                                .doPost();
+                        log.info("杩斿洖鍙傛暟锛歿}", response);
+                        taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+                        taskReport.setUpdateTime(new Date());
+                        taskReport.setCompleted(1);
+                    } catch (IOException e) {
+                        taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+                        taskReport.setUpdateTime(new Date());
+                        e.printStackTrace();
+                    }
+                    taskReportService.updateById(taskReport);
                 } else {
                     TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + "");
                     log.info("寮�濮嬩笂鎶ワ細{}", taskEvent);
@@ -86,6 +105,10 @@
         }
     }
 
+    public static void main(String[] args) {
+        System.out.println("SSX-RK122".contains("SSX-RK"));
+    }
+
     /**
      * 鍒犻櫎瓒呰繃涓�瀹氬ぉ鏁扮殑涓婃姤鍘嗗彶璁板綍
      */
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java
index 4b1fc72..cfc71a5 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/LocService.java
@@ -15,5 +15,8 @@
 
     List<Map<String, Object>> selectDigitalLocWhichNeedShow();
 
-    void taskCallBack(Task task);
+    void taskCallBackOtbin(Task task);
+
+    void taskCallBackEnd(Task task);
+
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java
index d73227f..e66a2e2 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/LocServiceImpl.java
@@ -44,7 +44,7 @@
     }
 
     @Override
-    public void taskCallBack(Task task) {
+    public void taskCallBackOtbin(Task task) {
         if (null == task) {
             return;
         }
@@ -54,9 +54,7 @@
         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 = this.getById(task.getOriLoc());
@@ -68,14 +66,6 @@
                     }
                 }
 
-                destLoc = this.getById(task.getDestLoc());
-                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
-                    destLoc.setLocSts(LocStsType.STOCK.val());
-                    destLoc.setUpdateTime(now);
-                    if (!this.updateById(destLoc)) {
-                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
-                    }
-                }
                 break;
             case LOC_TO_STA:
                 oriLoc = this.getById(task.getOriLoc());
@@ -87,14 +77,6 @@
                     }
                 }
 
-                destSta = staService.getById(task.getDestSta());
-                if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) {
-                    destSta.setStaSts(StaStsType.STOCK.val());
-                    destSta.setUpdateTime(now);
-                    if (!staService.updateById(destSta)) {
-                        log.error("Sta [{}] 绔欑偣淇敼鐘舵�佸け璐�", task.getDestSta$());
-                    }
-                }
                 break;
             case STA_TO_LOC:
                 oriSta = staService.getById(task.getOriSta());
@@ -106,14 +88,6 @@
                     }
                 }
 
-                destLoc = this.getById(task.getDestLoc());
-                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
-                    destLoc.setLocSts(LocStsType.STOCK.val());
-                    destLoc.setUpdateTime(now);
-                    if (!this.updateById(destLoc)) {
-                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
-                    }
-                }
                 break;
             case STA_TO_STA:
                 oriSta = staService.getById(task.getOriSta());
@@ -125,6 +99,61 @@
                     }
                 }
 
+                break;
+            case TO_CHARGE:
+            case TO_STANDBY:
+            case MOVE:
+                break;
+            default:
+                break;
+        }
+
+    }
+
+    @Override
+    public void taskCallBackEnd(Task task) {
+        if (null == task) {
+            return;
+        }
+        if (!task.getTaskSts().equals(TaskStsType.PROGRESS.val())) {
+            return;
+        }
+        Date now = new Date();
+        // loc status
+        Loc destLoc = null;
+        Sta destSta = null;
+        switch (Objects.requireNonNull(TaskTypeType.get(task.getTaskTypeEl()))) {
+            case LOC_TO_LOC:
+                destLoc = this.getById(task.getDestLoc());
+                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
+                    destLoc.setLocSts(LocStsType.STOCK.val());
+                    destLoc.setUpdateTime(now);
+                    if (!this.updateById(destLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
+                    }
+                }
+                break;
+            case LOC_TO_STA:
+                destSta = staService.getById(task.getDestSta());
+                if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) {
+                    destSta.setStaSts(StaStsType.STOCK.val());
+                    destSta.setUpdateTime(now);
+                    if (!staService.updateById(destSta)) {
+                        log.error("Sta [{}] 绔欑偣淇敼鐘舵�佸け璐�", task.getDestSta$());
+                    }
+                }
+                break;
+            case STA_TO_LOC:
+                destLoc = this.getById(task.getDestLoc());
+                if (destLoc.getLocSts().equals(LocStsType.PAKIN.val())) {
+                    destLoc.setLocSts(LocStsType.STOCK.val());
+                    destLoc.setUpdateTime(now);
+                    if (!this.updateById(destLoc)) {
+                        log.error("Loc [{}] 搴撲綅淇敼鐘舵�佸け璐�", task.getDestLoc$());
+                    }
+                }
+                break;
+            case STA_TO_STA:
                 destSta = staService.getById(task.getDestSta());
                 if (destSta.getStaSts().equals(StaStsType.READY_RELEASE.val())) {
                     destSta.setStaSts(StaStsType.STOCK.val());

--
Gitblit v1.9.1