From dcf49806e12b014cf6471910814fdbcb6f494c44 Mon Sep 17 00:00:00 2001
From: vincentlu <t1341870251@gmail.com>
Date: 星期一, 27 四月 2026 09:11:01 +0800
Subject: [PATCH] #
---
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java | 71 ++++++++++++++++++++++++++++++++++-
1 files changed, 68 insertions(+), 3 deletions(-)
diff --git a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
index 276355d..5370b92 100644
--- a/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
+++ b/zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
@@ -2,7 +2,9 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.acs.common.utils.News;
import com.zy.acs.framework.common.Cools;
+import com.zy.acs.manager.core.integrate.conveyor.ConveyorStationService;
import com.zy.acs.manager.core.domain.TaskPosDto;
import com.zy.acs.manager.manager.entity.*;
import com.zy.acs.manager.manager.enums.*;
@@ -11,6 +13,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
@@ -29,6 +33,8 @@
private StaReserveService staReserveService;
@Autowired
private TaskService taskService;
+ @Autowired
+ private ConveyorStationService conveyorStationService;
@Override
public Sta selectByStaNo(String staNo) {
@@ -48,12 +54,22 @@
@Override
public List<Sta> queryAvailableOutSta(Integer minAvailableQty) {
- return this.baseMapper.selectAvailableOutSta(minAvailableQty);
+ long rollerStaType = StaTypeType.ROLLER.val();
+ List<Sta> list = new ArrayList<>();
+ list.addAll(this.baseMapper.selectAvailableOutStaRoller(rollerStaType, minAvailableQty));
+ list.addAll(this.baseMapper.selectAvailableOutStaCommon(rollerStaType, minAvailableQty));
+ list.sort(Comparator.comparing(Sta::getStaNo, Comparator.nullsLast(String::compareTo)));
+ return list;
}
@Override
public List<Sta> queryAvailableInSta(Integer minAvailableQty) {
- return this.baseMapper.selectAvailableInSta(minAvailableQty);
+ long rollerStaType = StaTypeType.ROLLER.val();
+ List<Sta> list = new ArrayList<>();
+ list.addAll(this.baseMapper.selectAvailableInStaRoller(rollerStaType, minAvailableQty));
+ list.addAll(this.baseMapper.selectAvailableInStaCommon(rollerStaType, minAvailableQty));
+ list.sort(Comparator.comparing(Sta::getStaNo, Comparator.nullsLast(String::compareTo)));
+ return list;
}
@Override
@@ -78,10 +94,59 @@
return false;
}
Sta sta = this.getById(staId);
+ return StaTypeType.ROLLER.equals(resolveStaType(sta));
+ }
+
+ @Override
+ public StaTypeType resolveStaType(Sta sta) {
if (sta == null || Cools.isEmpty(sta.getStaType())) {
+ return null;
+ }
+ for (StaTypeType value : StaTypeType.values()) {
+ if (value.val() == sta.getStaType()) {
+ return value;
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public boolean allowAgvWorkAtSta(String agvNo, Sta sta, Task task, Segment seg, StaReserveType type) {
+ if (sta == null) {
return false;
}
- return StaTypeType.ROLLER.val() == sta.getStaType();
+ if (!staReserveService.waitingStaReserve(sta, task, seg, 1, type)) {
+ return false;
+ }
+
+ StaTypeType staType = resolveStaType(sta);
+ if (staType == null) {
+ News.warn("AGV [{}] station [{}] has unknown sta type, validation bypassed",
+ agvNo,
+ sta.getStaNo());
+ return true;
+ }
+
+ switch (staType) {
+ case ROLLER:
+ if (!conveyorStationService.allowAgvWork(sta, task, seg, type)) {
+ staReserveService.rollbackWaitingToReserved(sta, task, type);
+ return false;
+ }
+ News.info("AGV [{}] work permitted at conveyor station [{}], type=[{}]",
+ agvNo,
+ sta.getStaNo(),
+ type);
+ return true;
+ case RACK:
+ case TRANSFER:
+ default:
+ News.info("AGV [{}] work permitted at station [{}], staType=[{}], validation bypassed",
+ agvNo,
+ sta.getStaNo(),
+ staType);
+ return true;
+ }
}
@Override
--
Gitblit v1.9.1