From ccbf73034e8a7c5867d3b58e115013527283ee76 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期五, 26 十二月 2025 15:35:19 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java | 98 +++++++++++++++++++++++++++++++------------------
1 files changed, 62 insertions(+), 36 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
index ed7b01e..9142b9c 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -8,10 +8,12 @@
import com.zy.acs.framework.common.Cools;
import com.zy.acs.framework.common.R;
import com.zy.acs.framework.common.SnowflakeIdWorker;
+import com.zy.acs.manager.common.annotation.OperationLog;
import com.zy.acs.manager.common.domain.param.HandlerPublishParam;
import com.zy.acs.manager.common.exception.BusinessException;
import com.zy.acs.manager.core.service.*;
import com.zy.acs.manager.core.service.astart.MapDataDispatcher;
+import com.zy.acs.manager.core.service.astart.domain.DynamicNode;
import com.zy.acs.manager.manager.entity.*;
import com.zy.acs.manager.manager.enums.*;
import com.zy.acs.manager.manager.service.*;
@@ -27,6 +29,7 @@
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
+import java.util.stream.Collectors;
/**
* Created by vincent on 8/1/2024
@@ -70,16 +73,59 @@
private AvoidWaveCalculator avoidWaveCalculator;
@Autowired
private PatrolService patrolService;
+ @Autowired
+ private StaReserveService staReserveService;
- @PreAuthorize("hasAuthority('manager:loc:update')")
- @PostMapping("/rePositionAllAgv")
- public synchronized R rePositionAllAgv() {
+ @PreAuthorize("hasAuthority('manager:agv:update')")
+ @OperationLog("Locate All Agv")
+ @PostMapping("/locateAllAgv")
+ public synchronized R locateAllAgv() {
final Integer MAP_DEFAULT_LEV = 1;
redis.deleteValue(RedisConstant.AGV_MAP_ASTAR_DYNAMIC_FLAG, String.valueOf(MAP_DEFAULT_LEV));
-// avoidWaveCalculator.calcDynamicNodeWhenBoot();
+ avoidWaveCalculator.calcDynamicNodeWhenBoot();
return R.ok();
}
+ @PreAuthorize("hasAuthority('manager:agv:update')")
+ @PostMapping("/patrol/batch/startup")
+ public synchronized R patrolBatchStartup() {
+ List<Agv> list = agvService.list(new LambdaQueryWrapper<Agv>().eq(Agv::getStatus, StatusType.ENABLE.val));
+ DynamicNode[][] dynamicMatrix = mapDataDispatcher.getDynamicMatrix(MapDataDispatcher.MAP_DEFAULT_LEV);
+ int result = 0;
+ for (Agv agv : list) {
+ String agvNo = agv.getUuid();
+
+ boolean inMap = false;
+ label: for (int i = 0; i < dynamicMatrix.length; i++) {
+ for (int j = 0; j < dynamicMatrix[i].length; j++) {
+ DynamicNode dynamicNode = dynamicMatrix[i][j];
+ String vehicle = dynamicNode.getVehicle();
+ if (agvNo.equals(vehicle)) {
+ inMap = true;
+ break label;
+ }
+ }
+ }
+
+ if (inMap) {
+ patrolService.startupPatrol(agvNo);
+ result++;
+ }
+ }
+ return R.ok().add(result);
+ }
+
+ @PreAuthorize("hasAuthority('manager:agv:update')")
+ @PostMapping("/patrol/batch/shutdown")
+ public synchronized R patrolBatchShutdown() {
+ List<Agv> list = agvService.list(new LambdaQueryWrapper<Agv>());
+ for (String agvNo : list.stream().map(Agv::getUuid).collect(Collectors.toList())) {
+ if (patrolService.isPatrolling(agvNo)) {
+ patrolService.shutdownPatrol(agvNo);
+ }
+ }
+ return R.ok();
+ }
@RequestMapping(value = "/control/agv", method = {RequestMethod.GET, RequestMethod.POST})
@Transactional
@@ -147,7 +193,7 @@
oriLoc = locService.getById(param.getStartLocNo());
}
if (!Cools.isEmpty(param.getStartLocNoStr())) {
- oriLoc = locService.selecatByLocNo(param.getStartLocNoStr());
+ oriLoc = locService.selectByLocNo(param.getStartLocNoStr());
}
if (null == oriLoc) {
return R.error();
@@ -166,7 +212,7 @@
destLoc = locService.getById(param.getEndLocNo());
}
if (!Cools.isEmpty(param.getEndLocNoStr())) {
- destLoc = locService.selecatByLocNo(param.getEndLocNoStr());
+ destLoc = locService.selectByLocNo(param.getEndLocNoStr());
}
if (null == destLoc) {
return R.error();
@@ -194,7 +240,7 @@
oriLoc = locService.getById(param.getStartLocNo());
}
if (!Cools.isEmpty(param.getStartLocNoStr())) {
- oriLoc = locService.selecatByLocNo(param.getStartLocNoStr());
+ oriLoc = locService.selectByLocNo(param.getStartLocNoStr());
}
if (null == oriLoc) {
return R.error();
@@ -218,13 +264,8 @@
if (null == destSta) {
return R.error();
}
- if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) {
- throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 涓嶆槸鏃犺揣鐘舵��");
- }
- destSta.setStaSts(StaStsType.READY_RELEASE.val());
- destSta.setUpdateTime(now);
- if (!staService.updateById(destSta)) {
- throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 淇敼绔欑偣鐘舵�佸け璐�");
+ if (null == staReserveService.reserveStaIn(destSta, task, 1)) {
+ throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 棰勭害澶辫触");
}
// task
@@ -246,13 +287,8 @@
if (null == oriSta) {
return R.error();
}
- if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
- throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 涓嶆槸鏈夎揣鐘舵��");
- }
- oriSta.setStaSts(StaStsType.READY_TAKE.val());
- oriSta.setUpdateTime(now);
- if (!staService.updateById(oriSta)) {
- throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 淇敼绔欑偣鐘舵�佸け璐�");
+ if (null == staReserveService.reserveStaOut(oriSta, task, 1)) {
+ throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 棰勭害澶辫触");
}
// destLoc
@@ -260,7 +296,7 @@
destLoc = locService.getById(param.getEndLocNo());
}
if (!Cools.isEmpty(param.getEndLocNoStr())) {
- destLoc = locService.selecatByLocNo(param.getEndLocNoStr());
+ destLoc = locService.selectByLocNo(param.getEndLocNoStr());
}
if (null == destLoc) {
return R.error();
@@ -293,13 +329,8 @@
if (null == oriSta) {
return R.error();
}
- if (!oriSta.getStaSts().equals(StaStsType.STOCK.val())) {
- throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 涓嶆槸鏈夎揣鐘舵��");
- }
- oriSta.setStaSts(StaStsType.READY_TAKE.val());
- oriSta.setUpdateTime(now);
- if (!staService.updateById(oriSta)) {
- throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 淇敼绔欑偣鐘舵�佸け璐�");
+ if (null == staReserveService.reserveStaOut(oriSta, task, 1)) {
+ throw new BusinessException("oriSta锛�" + oriSta.getStaNo() + " 棰勭害澶辫触");
}
// destSta
@@ -312,13 +343,8 @@
if (null == destSta) {
return R.error();
}
- if (!destSta.getStaSts().equals(StaStsType.IDLE.val())) {
- throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 涓嶆槸鏃犺揣鐘舵��");
- }
- destSta.setStaSts(StaStsType.READY_RELEASE.val());
- destSta.setUpdateTime(now);
- if (!staService.updateById(destSta)) {
- throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 淇敼绔欑偣鐘舵�佸け璐�");
+ if (null == staReserveService.reserveStaIn(destSta, task, 1)) {
+ throw new BusinessException("destSta锛�" + destSta.getStaNo() + " 棰勭害澶辫触");
}
// task
--
Gitblit v1.9.1