From 0f69561e397093b5165c4aac58530721d5c62178 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期一, 25 十一月 2024 11:03:16 +0800
Subject: [PATCH] #led

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/LiftDispatcher.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 50 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 928c2e7..28df8f4 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
@@ -1,12 +1,14 @@
 package com.zy.asrs.wcs.core.utils;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.wcs.core.domain.dto.BasLiftLevOffsetDto;
 import com.zy.asrs.wcs.core.entity.BasLift;
 import com.zy.asrs.wcs.core.entity.ShuttleStandby;
 import com.zy.asrs.wcs.core.model.NavigateNode;
 import com.zy.asrs.wcs.core.model.enums.DeviceCtgType;
 import com.zy.asrs.wcs.core.model.enums.NavigationMapType;
-import com.zy.asrs.wcs.core.model.enums.WorkZoneType;
 import com.zy.asrs.wcs.core.service.BasLiftService;
 import com.zy.asrs.wcs.core.service.ShuttleStandbyService;
 import com.zy.asrs.wcs.rcs.cache.SlaveConnection;
@@ -35,8 +37,9 @@
 
     /**
      * 鏍规嵁鐩爣浣嶇疆鎼滅储绌洪棽鎻愬崌鏈�
+     * transfer: 鏄惁鍙崲灞�
      */
-    public LiftThread searchIdleLift(String locNo, Long hostId) {
+    public LiftThread searchIdleLift(String locNo, Long hostId, Boolean transfer) {
         LiftThread recentLiftThread = null;
         Integer finalDistance = Integer.MAX_VALUE;
         List<Device> list = deviceService.list(new LambdaQueryWrapper<Device>()
@@ -58,6 +61,16 @@
                 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))
@@ -68,6 +81,9 @@
 
             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;
@@ -112,4 +128,36 @@
         return liftLocNo;
     }
 
+    /**
+     * 鑾峰彇鎹㈠眰闇�瑕侀攣瀹氱殑璺緞
+     */
+    public List<String> getLockPathByLocNo(LiftThread liftThread, Integer lev) {
+        Device device = liftThread.getDevice();
+        ShuttleStandby standby = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>()
+                .eq(ShuttleStandby::getDeviceId, device.getId())
+                .eq(ShuttleStandby::getDeviceLev, lev)
+                .eq(ShuttleStandby::getStatus, 1));
+        if (standby == null) {
+            return null;
+        }
+
+        return standby.getLockPath$();
+    }
+
+    public Integer getLiftLevOffset(Integer deviceId,Integer lev) {
+        BasLift basLift = basLiftService.getOne(new LambdaQueryWrapper<BasLift>().eq(BasLift::getDeviceId, deviceId));
+        if (basLift != null) {
+            if(Cools.isEmpty(basLift.getLevOffset())) {
+                return lev;
+            }
+            List<BasLiftLevOffsetDto> levOffsetDtos = JSON.parseArray(basLift.getLevOffset(), BasLiftLevOffsetDto.class);
+            for (BasLiftLevOffsetDto offsetDto : levOffsetDtos) {
+                if(lev == offsetDto.getLogicLev()){
+                    return offsetDto.getRealLev();
+                }
+            }
+        }
+        return lev;
+    }
+
 }

--
Gitblit v1.9.1