From 2ddf6fc24333df35bd1ac15848b917336d533d53 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期二, 09 九月 2025 09:22:43 +0800
Subject: [PATCH] 1

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java   |   21 ++++-
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/third/ReportThirdScheduler.java   |   46 ++++++++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java          |   17 ++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java         |    9 ++
 zy-acs-manager/src/main/resources/application.yml                                      |    4 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java   |    1 
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java |   93 ++++++++++------------
 7 files changed, 123 insertions(+), 68 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 c6081b3..66562d8 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
@@ -85,7 +85,7 @@
                         this.autoRun(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP);
                         break;
                     case '5':
-                        this.autoRun(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
+                        this.autoRun2(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
                         break;
                     default:
                         break;
@@ -111,9 +111,9 @@
                         case '4':
                             this.autoOut(LocGroupConstant.LEFT_LOC_ROW_LIST, StaGroupConstant.LEFT_STA_ROW_LIST, AgvGroupConstant.SECOND_AGV_GROUP);
                             break;
-                        case '5':
-                            this.autoOut(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
-                            break;
+//                        case '5':
+//                            this.autoOut(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST, StaGroupConstant.FAR_LEFT_STA_ROW_LIST, AgvGroupConstant.FIRST_AGV_GROUP);
+//                            break;
                         default:
                             break;
                     }
@@ -140,6 +140,19 @@
         this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo);
     }
 
+    private void autoRun2(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
+        int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
+        if (0 == availableAgvCount) {
+            return;
+        }
+
+        List<String> staPreNos = getStaPrefixes(staGroupList);
+        String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
+
+        // 绉诲簱
+        this.runLocToLoc(locGroupList, agvGroupList, staTaskMemo);
+    }
+
     private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
         int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
         if (0 == availableAgvCount) {
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 de1bcc9..1a2bf2a 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
@@ -137,6 +137,7 @@
             throw new BusinessException("Internal Server Error!");
         }
         Boolean locStaStatusCheck = configService.getVal("LOC_STA_STATUS_CHECK", Boolean.class, true);
+        Integer locStaTaskNum = configService.getVal("LOC_STA_TASK_NUM", Integer.class, 2);
 
 
         // 淇濆瓨浠诲姟
@@ -190,6 +191,11 @@
                         if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
                             throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
                         }
+                    } else {
+                        List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getDestSta, destSta.getId()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+                        if (!Cools.isEmpty(list) && list.size() >= locStaTaskNum) {
+                            throw new BusinessException("destSta锛�" + task.getDestSta$() + " task more");
+                        }
                     }
                     destSta.setStaSts(StaStsType.READY_RELEASE.val());
                     destSta.setUpdateTime(now);
@@ -237,6 +243,11 @@
                     if (destSta.getStaTypeIsCheck() != 1) {
                         if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
                             throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+                        }
+                    } else {
+                        List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getDestSta, destSta.getId()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+                        if (!Cools.isEmpty(list) && list.size() >= locStaTaskNum) {
+                            throw new BusinessException("destSta锛�" + task.getDestSta$() + " task more");
                         }
                     }
                     destSta.setStaSts(StaStsType.READY_RELEASE.val());
@@ -1633,6 +1644,9 @@
                     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);
+                    }
                 }
             }
         }
@@ -1676,7 +1690,7 @@
         }
         List<TaskReport> list = taskReportService.list(new LambdaQueryWrapper<TaskReport>().eq(TaskReport::getSeqNum, task.getSeqNum()).eq(TaskReport::getBusNo, task.getBusId$()).eq(TaskReport::getTaskSts, taskReportStsType.status));
         if (!Cools.isEmpty(list)) {
-            log.info("TaskReport [{}] 宸查噸澶嶏紝涓嶅啀鎻掑叆 ==========>> ", JSON.toJSONString(task));
+            log.info("TaskReport [{},{}] 宸查噸澶嶏紝涓嶅啀鎻掑叆 ==========>> ", taskReportStsType, JSON.toJSONString(task));
             return;
         }
         TaskReport taskReport = new TaskReport();
@@ -1691,6 +1705,7 @@
         taskReport.setEventType(taskReportStsType.name);
         taskReport.setSeqNum(task.getSeqNum());
         taskReport.setZpallet(task.getZpallet());
+
         if (!taskReportService.save(taskReport)) {
             log.info("TaskReport [{}] 鎻掑叆澶辫触 ==========>> ", JSON.toJSONString(taskReport));
         } else {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
index 400c064..895d026 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/ValidService.java
@@ -1,6 +1,7 @@
 package com.zy.acs.manager.core.service;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.acs.framework.common.Cools;
 import com.zy.acs.framework.common.SnowflakeIdWorker;
 import com.zy.acs.manager.common.domain.TaskDto;
@@ -9,10 +10,12 @@
 import com.zy.acs.manager.manager.entity.Loc;
 import com.zy.acs.manager.manager.entity.Sta;
 import com.zy.acs.manager.manager.entity.Task;
+import com.zy.acs.manager.manager.enums.TaskStsType;
 import com.zy.acs.manager.manager.enums.TaskTypeType;
 import com.zy.acs.manager.manager.service.CodeService;
 import com.zy.acs.manager.manager.service.LocService;
 import com.zy.acs.manager.manager.service.StaService;
+import com.zy.acs.manager.manager.service.impl.TaskServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -36,6 +39,8 @@
     private MapService mapService;
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private TaskServiceImpl taskService;
 
     public List<Task> validTaskDtoList(List<TaskDto> taskDtoList) {
         List<Task> taskList = new ArrayList<>();
@@ -49,6 +54,10 @@
             task.setSeqNum(taskDto.getSeqNum());
             task.setPriority(taskDto.getPriority());
 
+            List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getSeqNum, taskDto.getSeqNum()).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+            if (!Cools.isEmpty(list)){
+                throw new BusinessException("Task seqNum: " + taskDto.getSeqNum() + " is already exists!");
+            }
 
             // ori --------------------------
             if (!Cools.isEmpty(taskDto.getOriLoc())) {
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 4fe348f..3476c29 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
@@ -8,6 +8,7 @@
 import com.zy.acs.manager.core.utils.HttpHandler;
 import com.zy.acs.manager.manager.entity.TaskReport;
 import com.zy.acs.manager.manager.entity.TaskReportLog;
+import com.zy.acs.manager.manager.enums.TaskReportStsType;
 import com.zy.acs.manager.manager.service.TaskReportLogService;
 import com.zy.acs.manager.manager.service.TaskReportService;
 import com.zy.acs.manager.system.service.ConfigService;
@@ -44,19 +45,43 @@
         if (report) {
             String wmsUrl = configService.getVal("WMS_URL", String.class);
             String wmsPath = configService.getVal("WMS_PATH", String.class);
+
+            String wcsUrl = configService.getVal("WCS_URL", String.class);
+            String wcsPath = configService.getVal("WCS_TASK_REPORT", String.class);
             List<TaskReport> list = taskReportService.list(new LambdaQueryWrapper<TaskReport>().eq(TaskReport::getCompleted, 0).le(TaskReport::getReportTimes, 3));
             for (TaskReport taskReport : list) {
-                TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + "");
-                log.info("寮�濮嬩笂鎶ワ細{}", taskEvent);
-                if (report(taskEvent, wmsUrl, wmsPath)) {
-                    taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
-                    taskReport.setUpdateTime(new Date());
-                    taskReport.setCompleted(1);
+                if (taskReport.getEventType().equalsIgnoreCase(TaskReportStsType.COMPLETED.name)) {
+                    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 {
-                    taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
-                    taskReport.setUpdateTime(new Date());
+                    TaskEvent taskEvent = new TaskEvent(taskReport.getSeqNum(), taskReport.getEventType(), taskReport.getAgvId() + "");
+                    log.info("寮�濮嬩笂鎶ワ細{}", taskEvent);
+                    if (report(taskEvent, wmsUrl, wmsPath)) {
+                        taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+                        taskReport.setUpdateTime(new Date());
+                        taskReport.setCompleted(1);
+                    } else {
+                        taskReport.setReportTimes((Cools.isEmpty(taskReport.getReportTimes()) ? 0 : taskReport.getReportTimes()) + 1);
+                        taskReport.setUpdateTime(new Date());
+                    }
+                    taskReportService.updateById(taskReport);
                 }
-                taskReportService.updateById(taskReport);
             }
         }
     }
@@ -93,13 +118,12 @@
             response = new HttpHandler.Builder()
                     .setUri(wmsUrl)
                     .setPath(wmsPath)
-
                     .setJson(JSON.toJSONString(taskReport))
                     .build()
                     .doPost();
             log.info("杩斿洖鍙傛暟锛歿}", response);
             JSONObject jsonObject = JSON.parseObject(response);
-            if (jsonObject != null && jsonObject.getInteger("code").equals(200)) {
+            if (jsonObject != null && jsonObject.get("code") != null && jsonObject.getInteger("code").equals(200)) {
                 return true;
             }
         } catch (IOException e) {
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
index 62c2e96..04dfbb9 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/controller/OpenController.java
@@ -56,20 +56,17 @@
     //@PreAuthorize("hasAuthority('open:bus:submit')")
     @PostMapping("/bus/submit")
     @OperationLog("generate task from open api")
-    public R save(@RequestBody OpenBusSubmitParam param) {
-        if (!configService.getVal("TaskAssignMode", Boolean.class)) {
-            for (TaskDto taskDto : param.getTaskList()) {
-                if (Cools.isEmpty(taskDto.getSeqNum())) {
-                    return R.error("缂哄け浠诲姟鍙�");
-                }
-                if(Cools.isEmpty(taskDto.getPriority())){
-                    taskDto.setPriority(1);
-                }
+    public synchronized R save(@RequestBody OpenBusSubmitParam param) {
+        for (TaskDto taskDto : param.getTaskList()) {
+            if (Cools.isEmpty(taskDto.getSeqNum())) {
+                return R.error("缂哄け浠诲姟鍙�");
             }
-            mainService.generateBusAndTask(param, null);
-            return R.ok("generate tasks success");
+            if (Cools.isEmpty(taskDto.getPriority())) {
+                taskDto.setPriority(1);
+            }
         }
-        return R.error("generate tasks error");
+        mainService.generateBusAndTask(param, null);
+        return R.ok("generate tasks success");
     }
 
 
@@ -141,45 +138,41 @@
     @PostMapping("/loc/one")
     @OperationLog("one loc")
     public R emptyLoc(@RequestBody Map<String, Object> map) {
-        if (!configService.getVal("TaskAssignMode", Boolean.class)) {
-            if (configService.getVal("InAndOutMode", Boolean.class, false)) {
-                String staNo = map.get("staNo").toString();
-                Integer startRow = null;
-                Integer endRow = null;
-                if (staNo.equals("101-2") || staNo.equals("101-3") || staNo.equals("102-2") || staNo.equals("102-3")) {
-                    startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
-                    endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
-                } else if (staNo.equals("103-2") || staNo.equals("103-3") || staNo.equals("104-2") || staNo.equals("104-3")) {
-                    startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST);
-                    endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST);
-                } else if (staNo.equals("105-2") || staNo.equals("105-3") || staNo.equals("106-2") || staNo.equals("106-3")) {
-                    startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
-                    endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
-                } else if (staNo.equals("107-2") || staNo.equals("107-3") || staNo.equals("108-2") || staNo.equals("108-3")) {
-                    startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST);
-                    endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST);
-                } else if (staNo.equals("1007") || staNo.equals("1001")) {
-                    startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
-                    endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
-                } else {
-                    return R.error("staNo is not support");
-                }
-                LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, Long.parseLong(map.get("sts").toString()));
-                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 R.error("娌$┖搴撲綅");
-                }
-                Collections.shuffle(idleList);
-                return R.ok().add(idleList.get(0));
-            }
+
+        String staNo = map.get("staNo").toString();
+        Integer startRow = null;
+        Integer endRow = null;
+        if (staNo.equals("101-2") || staNo.equals("101-3") || staNo.equals("102-2") || staNo.equals("102-3")) {
+            startRow = Collections.min(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+            endRow = Collections.max(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+        } else if (staNo.equals("103-2") || staNo.equals("103-3") || staNo.equals("104-2") || staNo.equals("104-3")) {
+            startRow = Collections.min(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+            endRow = Collections.max(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+        } else if (staNo.equals("105-2") || staNo.equals("105-3") || staNo.equals("106-2") || staNo.equals("106-3")) {
+            startRow = Collections.min(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+            endRow = Collections.max(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+        } else if (staNo.equals("107-2") || staNo.equals("107-3") || staNo.equals("108-2") || staNo.equals("108-3")) {
+            startRow = Collections.min(LocGroupConstant.LEFT_LOC_ROW_LIST);
+            endRow = Collections.max(LocGroupConstant.LEFT_LOC_ROW_LIST);
+        } else if (staNo.equals("1007") || staNo.equals("1001")) {
+            startRow = Collections.min(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+            endRow = Collections.max(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+        } else {
+            return R.error("staNo is not support");
         }
-        return R.error("鏈紑鍚妯″紡");
+        LambdaQueryWrapper<Loc> idleWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getLocSts, Long.parseLong(map.get("sts").toString()));
+        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 R.error("娌$┖搴撲綅");
+        }
+        Collections.shuffle(idleList);
+        return R.ok().add(idleList.get(0));
     }
 
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
index 28a9efc..a4b388a 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/enums/TaskReportStsType.java
@@ -17,6 +17,7 @@
     START(1,"START"),
     OTBIN(5,"OTBIN"),
     END(10, "END"),
+    COMPLETED(15, "COMPLETED"),
     ;
 
     public int status;
diff --git a/zy-acs-manager/src/main/resources/application.yml b/zy-acs-manager/src/main/resources/application.yml
index f99e46b..8d8b003 100644
--- a/zy-acs-manager/src/main/resources/application.yml
+++ b/zy-acs-manager/src/main/resources/application.yml
@@ -8,7 +8,7 @@
     static-path-pattern: /**
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://10.10.10.200:3306/jbly?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
     password: xltys1995
     type: com.alibaba.druid.pool.DruidDataSource
@@ -43,7 +43,7 @@
     enabled: false
 
 redis:
-  host: 127.0.0.1
+  host: 10.10.10.200
   password: xltys1995
   port: 6379
   max: 30

--
Gitblit v1.9.1