From 54b4f53323d0833cbac86fd18932c5fa5a5447a8 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 17 二月 2025 14:19:17 +0800
Subject: [PATCH] #移库任务
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java | 61 +++++++++++++++++++++++++++++-
1 files changed, 59 insertions(+), 2 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
index 28df8f4..377f800 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java
@@ -34,6 +34,63 @@
private BasLiftService basLiftService;
@Autowired
private ShuttleStandbyService shuttleStandbyService;
+ @Autowired
+ private NavigateUtils navigateUtils;
+
+ /**
+ * 鏍规嵁鐩爣浣嶇疆鎼滅储鎻愬崌鏈�
+ * transfer: 鏄惁鍙崲灞�
+ */
+ public LiftThread searchLift(String locNo, Long hostId, Boolean transfer) {
+ LiftThread recentLiftThread = null;
+ Integer finalDistance = Integer.MAX_VALUE;
+ List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
+ .eq(Device::getDeviceType, DeviceCtgType.LIFT.val())
+ .eq(Device::getHostId, hostId)
+ .eq(Device::getStatus, 1));
+ for (Device device : list) {
+ LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getId().intValue());
+ if (liftThread == null) {
+ continue;
+ }
+
+ LiftProtocol liftProtocol = liftThread.getStatus();
+ if (liftProtocol == null) {
+ continue;
+ }
+
+ if (transfer) {
+ BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getLiftNo, device.getDeviceNo()).eq(BasLift::getHostId, hostId));
+ if (basLift == null) {
+ continue;
+ }
+ if (basLift.getTransfer() != 1) {
+ continue;//鎻愬崌鏈鸿璁剧疆鎴愪笉鍙崲灞�
+ }
+ }
+
+ ShuttleStandby standby = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+ .eq(ShuttleStandby::getDeviceId, device.getId())
+ .eq(ShuttleStandby::getDeviceLev, Utils.getLev(locNo))
+ .eq(ShuttleStandby::getStatus, 1));
+ if (standby == null) {
+ continue;
+ }
+
+ String liftLocNo = Utils.getLocNo(Utils.getRow(standby.getDeviceStandbyLoc()), Utils.getBay(standby.getDeviceStandbyLoc()), Utils.getLev(locNo));
+ List<NavigateNode> nodeList = navigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, null);
+ if (nodeList == null) {
+ continue;
+ }
+ Integer originPathAllDistance = navigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂�
+ if (originPathAllDistance < finalDistance) {
+ finalDistance = originPathAllDistance;
+ recentLiftThread = liftThread;
+ }
+ }
+
+ return recentLiftThread;
+ }
/**
* 鏍规嵁鐩爣浣嶇疆鎼滅储绌洪棽鎻愬崌鏈�
@@ -80,11 +137,11 @@
}
String liftLocNo = Utils.getLocNo(Utils.getRow(standby.getDeviceStandbyLoc()), Utils.getBay(standby.getDeviceStandbyLoc()), Utils.getLev(locNo));
- List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, null);
+ List<NavigateNode> nodeList = navigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, null);
if (nodeList == null) {
continue;
}
- Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂�
+ Integer originPathAllDistance = navigateUtils.getOriginPathAllDistance(nodeList);//鎬昏窛绂�
if (originPathAllDistance < finalDistance) {
finalDistance = originPathAllDistance;
recentLiftThread = liftThread;
--
Gitblit v1.9.1