From 4dcdd93603aad2ab27ee4976a6dd7b5d47dd5da4 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 24 五月 2024 10:56:44 +0800
Subject: [PATCH] #

---
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java                |   26 +++++++++++-
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java |   28 ++++++++++++++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java      |   21 ++++++++--
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java          |    2 +
 4 files changed, 69 insertions(+), 8 deletions(-)

diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
index 984dbf9..d157cd0 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CommonService.java
@@ -228,6 +228,13 @@
                 throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
             }
 
+            //鎵剧浉鍚岀┖鎵樼洏
+            LambdaQueryWrapper<LocMast> wrapper0 = new LambdaQueryWrapper<LocMast>()
+                    .eq(LocMast::getLocSts, "D")
+                    .eq(LocMast::getLocType1, locTypeDto.getLocType1())
+                    .eq(LocMast::getCrnNo, staDesc.getDeviceNo())
+                    .eq(LocMast::getHostId, hostId);
+
             LambdaQueryWrapper<LocMast> wrapper1 = new LambdaQueryWrapper<LocMast>()
                     .eq(LocMast::getLocSts, "O")
                     .eq(LocMast::getLocType1, locTypeDto.getLocType1())
@@ -245,9 +252,9 @@
                 wrapper1.le(LocMast::getLev1, locRangeDto.getTargetLev());
             }
 
-            List<LocMast> locMasts = locMastService.list(wrapper1);
-            if (!locMasts.isEmpty()) {
-                for (LocMast loc : locMasts) {
+            List<LocMast> locMasts0 = locMastService.list(wrapper0);
+            if (!locMasts0.isEmpty()) {
+                for (LocMast loc : locMasts0) {
                     LocMast locMast0 = locMastService.findNearloc(loc.getLocNo(), hostId, locRangeDto);
                     if (null != locMast0) {
                         locMast = locMast0;
@@ -257,6 +264,19 @@
             }
 
             if (locMast == null) {
+                List<LocMast> locMasts = locMastService.list(wrapper1);
+                if (!locMasts.isEmpty()) {
+                    for (LocMast loc : locMasts) {
+                        LocMast locMast0 = locMastService.findNearloc(loc.getLocNo(), hostId, locRangeDto);
+                        if (null != locMast0) {
+                            locMast = locMast0;
+                            break;
+                        }
+                    }
+                }
+            }
+
+            if (locMast == null) {
                 throw new CoolException("缂哄皯绌哄簱浣�");
             }
         }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java
index 1eb2fa6..2ead1a8 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDirectionService.java
@@ -16,4 +16,6 @@
 
     List<ArrayList<Integer>> parseData(List<LocDirection> origin);
 
+    boolean isAsc(Integer row, String direction, Long hostId);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java
index 54e3a43..acdf593 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDirectionServiceImpl.java
@@ -50,4 +50,32 @@
         }
         return data;
     }
+
+    @Override
+    public boolean isAsc(Integer row, String direction, Long hostId) {
+        List<ArrayList<Integer>> list = null;
+        if(direction.equals("inner")){
+            list = this.getInnerList(hostId);
+        } else if (direction.equals("outer")) {
+            list = this.getOuterList(hostId);
+        }else {
+            list = this.getNaturalList(hostId);
+        }
+
+        ArrayList<Integer> obj = null;
+        for (ArrayList<Integer> arrayList : list) {
+            if(arrayList.contains(row)){
+                obj = arrayList;
+                break;
+            }
+        }
+
+        if (obj != null && obj.size() >= 2) {
+            Integer i0 = obj.get(0);
+            Integer i1 = obj.get(1);
+            return i0 - i1 < 0;
+        }
+
+        return false;
+    }
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
index 65ca520..1a1194a 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocMastServiceImpl.java
@@ -5,15 +5,20 @@
 import com.zy.asrs.common.utils.Utils;
 import com.zy.asrs.common.wms.mapper.LocMastMapper;
 import com.zy.asrs.common.wms.entity.LocMast;
+import com.zy.asrs.common.wms.service.LocDirectionService;
 import com.zy.asrs.common.wms.service.LocMastService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.zy.asrs.framework.common.Cools;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 
 @Service("locMastService")
 public class LocMastServiceImpl extends ServiceImpl<LocMastMapper, LocMast> implements LocMastService {
+
+    @Autowired
+    private LocDirectionService locDirectionService;
 
     @Override
     public List<String> queryGroupEmptyStock(String sourceLocNo, Long hostId) {
@@ -50,13 +55,19 @@
     @Override
     public LocMast findNearloc(String locNo, Long hostId, LocRangeDto locRangeDto) {
         LocMast locMast = null;
-        List<String> groupOuterLoc = Utils.getGroupInnerLoc(locNo, hostId);
-        if (!Cools.isEmpty(groupOuterLoc)) {
+        List<String> groupLoc = Utils.getGroupLoc(locNo, hostId);
+        boolean asc = locDirectionService.isAsc(Utils.getRow(locNo), "inner", hostId);
+        if (!Cools.isEmpty(groupLoc)) {
             LambdaQueryWrapper<LocMast> wrapper = new LambdaQueryWrapper<LocMast>()
                     .eq(LocMast::getLocSts, 'O')
-                    .in(LocMast::getLocNo, groupOuterLoc)
-                    .eq(LocMast::getHostId, hostId)
-                    .orderByAsc(LocMast::getRow1);
+                    .in(LocMast::getLocNo, groupLoc)
+                    .eq(LocMast::getHostId, hostId);
+            if (asc) {
+                wrapper.orderByAsc(LocMast::getRow1);
+            }else {
+                wrapper.orderByDesc(LocMast::getRow1);
+            }
+
             //搴撲綅鎼滅储鑼冨洿
             if (locRangeDto != null) {
                 wrapper.ge(LocMast::getRow1, locRangeDto.getStartRow());

--
Gitblit v1.9.1