From c0b0d329029cff9e91f2d5768074470a50face7f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 30 五月 2025 14:45:34 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java |   34 +++++++++++++++++++++++++++++-----
 1 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 5c04328..6868f52 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -361,7 +361,7 @@
         //鏍规嵁绔嬪簱绫诲瀷鑾峰彇鑾峰彇搴撲綅
         if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_CRN.val)) {
             //鍫嗗灈鏈�
-            dto = getLocNoCrn(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
+            dto = getLocNoCrn(param.getOrgLoc(),deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
 
         } else if (warehouseArea.getType().equals(WarehType.WAREHOUSE_TYPE_FOUR_DIRECTIONS.val)) {
             //鍥涘悜搴�
@@ -372,7 +372,7 @@
         return dto;
     }
 
-    private InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+    private InTaskMsgDto getLocNoCrn(String orgLoc,DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
         }
@@ -409,7 +409,7 @@
             throw new CoolException("鏃犲彲鐢ㄥ爢鍨涙満");
         }
         //鍏ュ簱闈犺繎鎽嗘斁
-        if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr)) {
+        if (ioType == 1 && deviceBind.getBeSimilar().equals("1") && !Cools.isEmpty(matnr) && Cools.isEmpty(orgLoc)) {
             if (nearRow != curRow) {
                 List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getMatnrCode, matnr));
                 for (LocItem locItem : locItems) {
@@ -484,6 +484,10 @@
                     .orderByAsc(Loc::getLev)
                     .orderByAsc(Loc::getCol)
             );
+            Loc orgMoveLoc = null;
+            if (!Cools.isEmpty(orgLoc)) {
+                orgMoveLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, orgLoc));
+            }
             for (Loc locMast1 : locMasts) {
                 if (!LocUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
                     continue;
@@ -496,6 +500,11 @@
                             .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                             .eq(Loc::getAreaId, area)
                     );
+                    if (null != orgMoveLoc){
+                        if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+                            break;
+                        }
+                    }
                     if (!Cools.isEmpty(locMast2)) {
                         loc = locMast2;
                         break;
@@ -516,6 +525,11 @@
                                 .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                 .eq(Loc::getAreaId, area)
                         );
+                        if (null != orgMoveLoc){
+                            if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+                                break;
+                            }
+                        }
                         if (!Cools.isEmpty(locMast2)) {
                             loc = locMast2;
                             break;
@@ -535,6 +549,11 @@
                                 .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
                                 .eq(Loc::getAreaId, area)
                         );
+                        if (null != orgMoveLoc){
+                            if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+                                break;
+                            }
+                        }
                         if (!Cools.isEmpty(locMast2)) {
                             loc = locMast2;
                             break;
@@ -544,6 +563,11 @@
                                     .in(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_D.type, LocStsType.LOC_STS_TYPE_D.type)
                                     .eq(Loc::getAreaId, area)
                             );
+                            if (null != orgMoveLoc){
+                                if (!locMast2.getChannel().equals(orgMoveLoc.getChannel())) {
+                                    break;
+                                }
+                            }
                             if (!Cools.isEmpty(locMast2)) {
                                 loc = locMast1;
                                 break;
@@ -573,14 +597,14 @@
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount * 2) {
                 times = times + 1;
-                return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
+                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, times, ioType);
 
             }
             // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
             if (locTypeDto.getLocType1() < 3) {
                 int i = locTypeDto.getLocType1() + 1;
                 locTypeDto.setLocType1(i);
-                return getLocNoCrn(deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
+                return getLocNoCrn(orgLoc,deviceBind, area, sourceStaNo, matnr, batch, locTypeDto, 0, ioType);
             }
             throw new CoolException("娌℃湁绌哄簱浣�");
         }

--
Gitblit v1.9.1