From 3a49654f51096d4f9f95f4a5e8198e168e38a0c5 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期六, 16 八月 2025 08:34:13 +0800
Subject: [PATCH] 1

---
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/AutoRunScheduler.java |  205 +++++++++++++++++++++++++----
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java        |   83 +++++++++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java     |   36 ++--
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java              |   11 +
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/StaType.java          |   50 ++++---
 zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Action.java           |   28 ++++
 zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java        |    5 
 7 files changed, 332 insertions(+), 86 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 7e10fa7..78c19c9 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
@@ -57,13 +57,19 @@
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
 
-//    @Scheduled(fixedRate = 500) // 鍥哄畾棰戠巼鎵ц锛屼笉鍚屾
+    private Integer num = 0;
+
+    private Integer max = 2;
+
+    //    @Scheduled(fixedRate = 500) // 鍥哄畾棰戠巼鎵ц锛屼笉鍚屾
     @Scheduled(fixedDelay = 1000) // 鍥哄畾棰戠巼鎵ц锛屽悓姝�
 //    @Scheduled(cron = "0/1 * * * * ? ")
     private void execute() {
         if (configService.getVal("TaskAssignMode", Boolean.class)) {
             String autoRunAreas = configService.getVal("autoRunAreas", String.class);
-            if (Cools.isEmpty(autoRunAreas)) { return; }
+            if (Cools.isEmpty(autoRunAreas)) {
+                return;
+            }
             for (char c : autoRunAreas.toCharArray()) {
                 switch (c) {
                     case '1':
@@ -85,10 +91,12 @@
                         break;
                 }
             }
-        }else {
-            if (configService.getVal("InAndOutMode", Boolean.class,false)) {
+        } else {
+            if (configService.getVal("InAndOutMode", Boolean.class, false)) {
                 String autoRunAreas = configService.getVal("autoRunAreas", String.class);
-                if (Cools.isEmpty(autoRunAreas)) { return; }
+                if (Cools.isEmpty(autoRunAreas)) {
+                    return;
+                }
                 for (char c : autoRunAreas.toCharArray()) {
                     switch (c) {
                         case '1':
@@ -116,7 +124,9 @@
 
     private void autoRun(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
         int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
-        if (0 == availableAgvCount) { return; }
+        if (0 == availableAgvCount) {
+            return;
+        }
 
         List<String> staPreNos = getStaPrefixes(staGroupList);
         String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
@@ -132,18 +142,22 @@
 
     private void autoOut(List<Integer> locGroupList, List<String> staGroupList, List<String> agvGroupList) {
         int availableAgvCount = this.getAvailableAgvCount(agvGroupList);
-        if (0 == availableAgvCount) { return; }
+        if (0 == availableAgvCount) {
+            return;
+        }
 
         List<String> staPreNos = getStaPrefixes(staGroupList);
         String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
-
-        // 鍑哄簱
-        this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
-        // 鍏ュ簱
-        if (staGroupList.contains("1007")){
-            this.runStaToLoc(locGroupList, staGroupList, staTaskMemo);
+        List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getDestSta, 33).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+        if (Cools.isEmpty(list) && num < max) {
+            // 鍑哄簱
+            this.runLocToSSXSta(locGroupList, staGroupList, staTaskMemo);
         }
-
+        List<Task> list2 = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getOriSta, 34).in(Task::getTaskSts, TaskStsType.INIT.val(), TaskStsType.WAITING.val(), TaskStsType.ASSIGN.val(), TaskStsType.PROGRESS.val()));
+        if (Cools.isEmpty(list2) && num > 0) {
+            // 鍏ュ簱
+            this.runXXSStaToLoc(locGroupList, staGroupList, staTaskMemo);
+        }
     }
 
     // 鍏ュ簱
@@ -153,31 +167,39 @@
 
 
         AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
-//        if (null == agvModel) {
-//            return;
-//        }
+        if (null == agvModel) {
+            return;
+        }
 
         // STOCK
         LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>()
                 .eq(Sta::getStaSts, StaStsType.STOCK.val())
                 .eq(Sta::getStatus, StatusType.ENABLE.val)
-                .eq(Sta::getInEnable,"Y")
+                .eq(Sta::getInEnable, "Y")
                 .in(Sta::getStaNo, staGroupList);
         List<Sta> stockList = staService.list(stockWrapper);
-        if (Cools.isEmpty(stockList)) { return; }
+        if (Cools.isEmpty(stockList)) {
+            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); }
+        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; }
+        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(agvModel.getBackpack(), Math.min(stockList.size(), idleList.size())) ; i++) {
+        for (int i = 0; i < Math.min(agvModel.getBackpack(), Math.min(stockList.size(), idleList.size())); i++) {
             Sta stockSta = stockList.get(i);
             Loc idleLoc = idleList.get(i);
 
@@ -188,6 +210,61 @@
             taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
 
             param.getTaskList().add(taskDto);
+        }
+
+        mainService.generateBusAndTask(param, memo);
+    }
+
+    private void runXXSStaToLoc(List<Integer> locGroupList, List<String> staGroupList, String memo) {
+        Integer startRow = Collections.min(locGroupList);
+        Integer endRow = Collections.max(locGroupList);
+
+
+        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
+        if (null == agvModel) {
+            return;
+        }
+
+        // STOCK
+        LambdaQueryWrapper<Sta> stockWrapper = new LambdaQueryWrapper<Sta>()
+                //.eq(Sta::getStaSts, StaStsType.STOCK.val())
+                .eq(Sta::getStatus, StatusType.ENABLE.val)
+                .eq(Sta::getInEnable, "Y")
+                .in(Sta::getStaNo, staGroupList);
+        List<Sta> stockList = staService.list(stockWrapper);
+        if (Cools.isEmpty(stockList)) {
+            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 < max; i++) {
+            Sta stockSta = stockList.get(0);
+            Loc idleLoc = idleList.get(i);
+
+            TaskDto taskDto = new TaskDto();
+            taskDto.setOriSta(stockSta.getStaNo());
+            taskDto.setDestLoc(idleLoc.getLocNo());
+            taskDto.setPriority(99);
+            taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
+
+            param.getTaskList().add(taskDto);
+            num--;
         }
 
         mainService.generateBusAndTask(param, memo);
@@ -208,7 +285,7 @@
         LambdaQueryWrapper<Sta> idleWrapper = new LambdaQueryWrapper<Sta>()
                 .eq(Sta::getStaSts, StaStsType.IDLE.val())
                 .eq(Sta::getStatus, StatusType.ENABLE.val)
-                .eq(Sta::getOutEnable,"Y")
+                .eq(Sta::getOutEnable, "Y")
                 .in(Sta::getStaNo, staGroupList);
         List<Sta> idleList = staService.list(idleWrapper);
         if (Cools.isEmpty(idleList)) {
@@ -218,8 +295,12 @@
 
         // LOC 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); }
+        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)) {
             return;
@@ -239,6 +320,62 @@
             taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
 
             param.getTaskList().add(taskDto);
+        }
+
+        mainService.generateBusAndTask(param, memo);
+    }
+
+
+    private void runLocToSSXSta(List<Integer> locGroupList, List<String> staGroupList, String memo) {
+        Integer startRow = Collections.min(locGroupList);
+        Integer endRow = Collections.max(locGroupList);
+
+        AgvModel agvModel = agvModelService.getOne(new LambdaQueryWrapper<AgvModel>().eq(AgvModel::getType, AgvModelType.CTU_BOX_TRANSPORT_AGV.toString()));
+        if (null == agvModel) {
+            return;
+        }
+        int maxCapacity = agvModel.getBackpack();
+
+        // STA IDLE
+        LambdaQueryWrapper<Sta> idleWrapper = new LambdaQueryWrapper<Sta>()
+                //.eq(Sta::getStaSts, StaStsType.IDLE.val())
+                .eq(Sta::getStatus, StatusType.ENABLE.val)
+                .eq(Sta::getOutEnable, "Y")
+                .in(Sta::getStaNo, staGroupList);
+        List<Sta> idleList = staService.list(idleWrapper);
+        if (Cools.isEmpty(idleList)) {
+            return;
+        }
+        Collections.shuffle(idleList);
+
+        // LOC 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)) {
+            return;
+        }
+        Collections.shuffle(stockList);
+
+        OpenBusSubmitParam param = new OpenBusSubmitParam();
+        param.setBatch(String.valueOf(snowflakeIdWorker.nextId()).substring(13, 19));
+        for (int i = 0; i < max; i++) {
+            Loc stockLoc = stockList.get(i);
+            Sta idleSta = idleList.get(0);
+
+            TaskDto taskDto = new TaskDto();
+            taskDto.setOriLoc(stockLoc.getLocNo());
+            taskDto.setDestSta(idleSta.getStaNo());
+            taskDto.setPriority(100);
+            taskDto.setSeqNum(String.valueOf(snowflakeIdWorker.nextId()).substring(15, 19));
+
+            param.getTaskList().add(taskDto);
+            num++;
         }
 
         mainService.generateBusAndTask(param, memo);
@@ -269,8 +406,12 @@
 
         // 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); }
+        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;
@@ -279,8 +420,12 @@
 
         // 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); }
+        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;
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
index 29202df..018eb05 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/LaneService.java
@@ -20,7 +20,6 @@
 import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.PostConstruct;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
@@ -149,6 +148,10 @@
             if (this.adjacencyCodeMap.get(codeData).size() != 2) {
                 List<String> neighbors = this.adjacencyCodeMap.get(codeData);
                 for (String neighbor : neighbors) {
+                    if (this.adjacencyCodeMap.get(neighbor) == null) {
+                        log.info("cunzai");
+                        continue;
+                    }
                     if (this.adjacencyCodeMap.get(neighbor).size() == 2 && !visited.contains(neighbor)) {
                         Lane lane = new Lane(String.valueOf(snowflakeIdWorker.nextId()).substring(3));
                         lane.getCodes().add(codeData); // 鍖呭惈璧风偣
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 451bc83..f3acf60 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
@@ -1,6 +1,7 @@
 package com.zy.acs.manager.core.service;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.zy.acs.common.domain.AgvAction;
 import com.zy.acs.common.domain.AgvActionItem;
@@ -26,6 +27,7 @@
 import com.zy.acs.manager.core.domain.Lane;
 import com.zy.acs.manager.core.domain.TaskPosDto;
 import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
+import com.zy.acs.manager.core.utils.HttpHandler;
 import com.zy.acs.manager.manager.controller.param.OpenBusSubmitParam;
 import com.zy.acs.manager.manager.entity.*;
 import com.zy.acs.manager.manager.enums.*;
@@ -40,7 +42,9 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
+import java.io.IOException;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
 /**
@@ -182,8 +186,10 @@
                     }
 
                     destSta = staService.getById(task.getDestSta());
-                    if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
-                        throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+                    if (destSta.getStaTypeIsCheck() != 1) {
+                        if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
+                            throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+                        }
                     }
                     destSta.setStaSts(StaStsType.READY_RELEASE.val());
                     destSta.setUpdateTime(now);
@@ -193,8 +199,10 @@
                     break;
                 case STA_TO_LOC:
                     oriSta = staService.getById(task.getOriSta());
-                    if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
-                        throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
+                    if (oriSta.getStaTypeIsCheck() != 1) {
+                        if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
+                            throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
+                        }
                     }
                     oriSta.setStaSts(StaStsType.READY_TAKE.val());
                     oriSta.setUpdateTime(now);
@@ -214,8 +222,10 @@
                     break;
                 case STA_TO_STA:
                     oriSta = staService.getById(task.getOriSta());
-                    if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
-                        throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
+                    if (oriSta.getStaTypeIsCheck() != 1) {
+                        if (locStaStatusCheck && !oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
+                            throw new BusinessException("oriSta锛�" + task.getOriSta$() + " is not in STOCK status");
+                        }
                     }
                     oriSta.setStaSts(StaStsType.READY_TAKE.val());
                     oriSta.setUpdateTime(now);
@@ -224,8 +234,10 @@
                     }
 
                     destSta = staService.getById(task.getDestSta());
-                    if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
-                        throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+                    if (destSta.getStaTypeIsCheck() != 1) {
+                        if (locStaStatusCheck && !destSta.getStaSts().equals(StaStsType.IDLE.val())) {
+                            throw new BusinessException("destSta锛�" + task.getDestSta$() + " is not in IDLE status");
+                        }
                     }
                     destSta.setStaSts(StaStsType.READY_RELEASE.val());
                     destSta.setUpdateTime(now);
@@ -279,7 +291,7 @@
                 if (!taskService.updateById(task)) {
                     throw new BusinessException("seqNum: " + task.getSeqNum() + " failed to update");
                 }
-                report(task,null, TaskReportStsType.START);
+                report(task, null, TaskReportStsType.START);
             }
         } catch (Exception e) {
             log.error("mainService.infuseAgvForTask", e);
@@ -1017,7 +1029,9 @@
                                 ActionTypeType.ReadyTakeFromConveyorSta.val(),    // 鍔ㄤ綔绫诲瀷
                                 actionPrepareSts,    // 鍔ㄤ綔杩涘害
                                 agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
+                                now,    // 宸ヤ綔鏃堕棿
+                                oriSta.getStaTypeIsCheck() == 1 ? 1 : 0,
+                                oriSta.getStaNo()
                         ));
                         // 鏆傚瓨鐐规斁璐�
                         assert backpackType != null;
@@ -1060,7 +1074,7 @@
                                     ActionTypeType.TurnCorner.val(),    // 鍔ㄤ綔绫诲瀷
                                     actionPrepareSts,    // 鍔ㄤ綔杩涘害
                                     agvId,    // AGV
-                                    now    // 宸ヤ綔鏃堕棿
+                                    now   // 宸ヤ綔鏃堕棿
                             ));
                             lastDirection = destStaWorkDirection;
                         }
@@ -1079,7 +1093,9 @@
                                 ActionTypeType.ReadyTakeFromAgvSite.val(),    // 鍔ㄤ綔绫诲瀷
                                 actionPrepareSts,    // 鍔ㄤ綔杩涘害
                                 agvId,    // AGV
-                                now    // 宸ヤ綔鏃堕棿
+                                now,    // 宸ヤ綔鏃堕棿
+                                destSta.getStaTypeIsCheck() == 1 ? 2 : 0,
+                                destSta.getStaNo()
                         ));
                         // 璁$畻璐у弶宸ヤ綔鏂瑰悜
                         staWorkDirection = mapService.calculateAgvWorkDirectionByStation(destStaWorkDirection, lastDirection);
@@ -1264,7 +1280,7 @@
     public void publishAction(String actionGroupId) {
         try {
             Date now = new Date();
-
+            boolean flag = true;
             // action
             List<Action> actionList = actionService.list(new LambdaQueryWrapper<Action>()
                     .eq(Action::getGroupId, actionGroupId).eq(Action::getActionSts, ActionStsType.PREPARE.val())
@@ -1395,9 +1411,14 @@
                     default:
                         break;
                 }
-
+                if (!Cools.isEmpty(action.getAskType()) && (action.getAskType() == 1 || action.getAskType() == 2)) {
+                    flag = askSta(action.getAskType(), action.getAskSta());
+                }
             }
-
+            if (!flag) {
+                log.error("浠诲姟缁� [{}] 鍔ㄤ綔鎸囦护涓嬪彂澶辫触 ,鍚戣緭閫佺嚎璇㈤棶鎶ラ敊锛侊紒锛�", actionGroupId);
+                throw new CoolException("浠诲姟缁� [{" + actionGroupId + "}] 鍔ㄤ綔鎸囦护涓嬪彂澶辫触 锛侊紒锛�");
+            }
             BaseResult<?> result = agvCmdService.executeAgvActionCmd(agvAction);
             if (result.success()) {
                 log.info("浠诲姟缁� [{}] 鍔ㄤ綔鎸囦护宸蹭笅鍙� ===>> 鎸囦护鏁伴噺锛歿}", actionGroupId, actionList.size());
@@ -1666,4 +1687,36 @@
             log.info("Task [{}] 鐘舵�佽褰曟彃鍏ユ暟鎹簱 ==========>> ", task.getSeqNum());
         }
     }
+
+    private boolean askSta(Integer askType, String askSta) {
+        log.info("鏉ヨ闂緭閫佺嚎浜嗭紝{}锛寋}", askType, askSta);
+        String wmsUrl = configService.getVal("WMS_URL", String.class);
+        String wmsPath = configService.getVal("WMS_STA", String.class);
+        if (Cools.isEmpty(wmsPath) || Cools.isEmpty(wmsUrl)) {
+            return true;
+        }
+        Integer time = configService.getVal("TIMEOUT", Integer.class, 5);
+        //Integer times = configService.getVal("REPORT_TIMES", Integer.class, 2);
+        Map<String, Object> data = new HashMap<>();
+        data.put("askType", askType);
+        data.put("askSta", askSta);
+        String response = null;
+        try {
+            response = new HttpHandler.Builder()
+                    .setUri(wmsUrl)
+                    .setPath(wmsPath)
+                    .setTimeout(time, TimeUnit.SECONDS)
+                    .setJson(JSON.toJSONString(data))
+                    .build()
+                    .doPost();
+            log.info("杩斿洖鍙傛暟锛歿}", response);
+            JSONObject jsonObject = JSON.parseObject(response);
+            if (jsonObject.getInteger("code").equals(200)) {
+                return true;
+            }
+        } catch (IOException e) {
+            log.info("鎶ラ敊浜嗭紝{}", e);
+        }
+        return false;
+    }
 }
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
index 775f301..f904df3 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -255,24 +255,24 @@
             } else {
 
                 // complete first segment then merge behind segment
-                int serial = segment.getSerial();
-                boolean interrupt = false;
-                while (!interrupt) {
-
-                    Segment nextStep = segmentService.getNextStepOfInit(travel.getId(), serial);
-                    serial ++;
-                    if (null == nextStep) {
-                        interrupt = true;
-                    } else {
-                        if (nextStep.getEndNode() == endNode) {
-
-                            segmentList.add(nextStep);
-                        } else {
-                            interrupt = true;
-                        }
-                    }
-
-                }
+//                int serial = segment.getSerial();
+//                boolean interrupt = false;
+//                while (!interrupt) {
+//
+//                    Segment nextStep = segmentService.getNextStepOfInit(travel.getId(), serial);
+//                    serial ++;
+//                    if (null == nextStep) {
+//                        interrupt = true;
+//                    } else {
+//                        if (nextStep.getEndNode() == endNode) {
+//
+//                            segmentList.add(nextStep);
+//                        } else {
+//                            interrupt = true;
+//                        }
+//                    }
+//
+//                }
             }
 
             mapService.lockPath(null, pathList, agv.getUuid());
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Action.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Action.java
index f4d9cbe..841ada0 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Action.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Action.java
@@ -61,6 +61,16 @@
      */
     @ApiModelProperty(value= "浼樺厛绾�")
     private Integer priority;
+    /**
+     * 鍙栬繕鏄斁锛�1鍙栵紝2鏀�
+     */
+    @ApiModelProperty(value= "鍙栬繕鏄斁锛�1鍙栵紝2鏀�")
+    private Integer askType;
+    /**
+     * 鏄惁璇㈤棶绔欑偣
+     */
+    @ApiModelProperty(value= "鏄惁璇㈤棶绔欑偣")
+    private String askSta;
 
     /**
      * 鍚嶇О
@@ -201,6 +211,24 @@
         this.ioTime = ioTime;
     }
 
+    public Action(String uuid, Long busId, Long taskId, String seqNum, Integer priority, String name, Double val, String code, String params, Long actionType, Long actionSts, Long agvId, Date ioTime,Integer askType,String askSta) {
+        this.uuid = uuid;
+        this.busId = busId;
+        this.taskId = taskId;
+        this.seqNum = seqNum;
+        this.priority = priority;
+        this.name = name;
+        this.val = val;
+        this.code = code;
+        this.params = params;
+        this.actionType = actionType;
+        this.actionSts = actionSts;
+        this.agvId = agvId;
+        this.ioTime = ioTime;
+        this.askType = askType;
+        this.askSta = askSta;
+    }
+
     public String getBusId$(){
         BusService service = SpringUtils.getBean(BusService.class);
         Bus bus = service.getById(this.busId);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
index 5cdd1cc..bb201a6 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
@@ -56,7 +56,7 @@
      * 绔欑被鍨�
      */
     @ApiModelProperty(value= "绔欑被鍨�")
-    private Long staType;
+    private Integer staType;
 
     /**
      * 鏉$爜
@@ -178,6 +178,15 @@
         return null;
     }
 
+    public Integer getStaTypeIsCheck(){
+        StaTypeService service = SpringUtils.getBean(StaTypeService.class);
+        StaType staType = service.getById(this.staType);
+        if (!Cools.isEmpty(staType)){
+            return staType.getCheckType();
+        }
+        return 0;
+    }
+
     public String getCode$(){
         CodeService service = SpringUtils.getBean(CodeService.class);
         Code code = service.getById(this.code);
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/StaType.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/StaType.java
index 684072e..72ec66f 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/StaType.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/StaType.java
@@ -18,73 +18,77 @@
     /**
      * ID
      */
-    @ApiModelProperty(value= "ID")
+    @ApiModelProperty(value = "ID")
     @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * 鏍囪瘑
      */
-    @ApiModelProperty(value= "鏍囪瘑")
+    @ApiModelProperty(value = "鏍囪瘑")
     private String uuid;
 
     /**
      * 鍚嶇О
      */
-    @ApiModelProperty(value= "鍚嶇О")
+    @ApiModelProperty(value = "鍚嶇О")
     private String name;
 
+    @ApiModelProperty(value = "鏄惁妫�娴嬩俊鍙�")
+    private Integer checkType;
+
     /**
-     * 鐘舵�� 1: 姝e父  0: 鍐荤粨  
+     * 鐘舵�� 1: 姝e父  0: 鍐荤粨
      */
-    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
+    @ApiModelProperty(value = "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
     private Integer status;
 
     /**
-     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
+     * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�
      */
-    @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value = "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
     private Integer deleted;
 
     /**
      * 绉熸埛
      */
-    @ApiModelProperty(value= "绉熸埛")
+    @ApiModelProperty(value = "绉熸埛")
     private Long tenantId;
 
     /**
      * 娣诲姞浜哄憳
      */
-    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @ApiModelProperty(value = "娣诲姞浜哄憳")
     private Long createBy;
 
     /**
      * 娣诲姞鏃堕棿
      */
-    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @ApiModelProperty(value = "娣诲姞鏃堕棿")
     private Date createTime;
 
     /**
      * 淇敼浜哄憳
      */
-    @ApiModelProperty(value= "淇敼浜哄憳")
+    @ApiModelProperty(value = "淇敼浜哄憳")
     private Long updateBy;
 
     /**
      * 淇敼鏃堕棿
      */
-    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @ApiModelProperty(value = "淇敼鏃堕棿")
     private Date updateTime;
 
     /**
      * 澶囨敞
      */
-    @ApiModelProperty(value= "澶囨敞")
+    @ApiModelProperty(value = "澶囨敞")
     private String memo;
 
-    public StaType() {}
+    public StaType() {
+    }
 
-    public StaType(String uuid,String name,Integer status,Integer deleted,Long tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public StaType(String uuid, String name, Integer status, Integer deleted, Long tenantId, Long createBy, Date createTime, Long updateBy, Date updateTime, String memo) {
         this.uuid = uuid;
         this.name = name;
         this.status = status;
@@ -110,9 +114,11 @@
 //            null    // 澶囨敞
 //    );
 
-    public String getStatus$(){
-        if (null == this.status){ return null; }
-        switch (this.status){
+    public String getStatus$() {
+        if (null == this.status) {
+            return null;
+        }
+        switch (this.status) {
             case 1:
                 return "姝e父";
             case 0:
@@ -122,9 +128,11 @@
         }
     }
 
-    public Boolean getStatusBool(){
-        if (null == this.status){ return null; }
-        switch (this.status){
+    public Boolean getStatusBool() {
+        if (null == this.status) {
+            return null;
+        }
+        switch (this.status) {
             case 1:
                 return true;
             case 0:

--
Gitblit v1.9.1