From 4206fedd87d92b8dd59c670f9fc0e8190d048c9c Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期二, 10 二月 2026 15:07:57 +0800
Subject: [PATCH] 入库

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java |   46 +++++++++++++++++++++++++++++++---------------
 1 files changed, 31 insertions(+), 15 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 5f450cc..d25230b 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
@@ -1057,7 +1057,7 @@
                     String shallowLocNo = LocUtils.getShallowLoc(loc1.getCode());
                     // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
                     Loc shallowLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLocNo));
-                    if (shallowLoc != null && shallowLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+                    if (shallowLoc != null && Objects.equals(shallowLoc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
                         if (LocUtils.locMoveCheckLocTypeComplete(shallowLoc, locTypeDto)) {
                             loc = shallowLoc;
                             channel = shallowLoc.getChannel();
@@ -1240,7 +1240,7 @@
             loc = null;
         }
         // 閫掑綊鏌ヨ
-        if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+        if (Cools.isEmpty(loc) || !Objects.equals(loc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < rowCount * 2) {
                 times = times + 1;
@@ -1276,16 +1276,26 @@
         Loc loc = new Loc();
         InTaskMsgDto inTaskMsgDto = new InTaskMsgDto();
         locTypeDto.setLocType1(18);
-        List<Loc> loc1 = locService.list(new LambdaQueryWrapper<Loc>()
+        LambdaQueryWrapper<Loc> locQw = new LambdaQueryWrapper<Loc>()
                 .eq(Loc::getAreaId, area)
                 .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
-                .eq(Loc::getType, locTypeDto.getLocType1())
-                .ge(Loc::getRow, deviceBind.getStartRow())
-                .le(Loc::getRow, deviceBind.getEndRow())
-                .orderByAsc(Loc::getLev)
-                .orderByAsc(Loc::getCol)
-                .orderByAsc(Loc::getRow)
-        );
+                .eq(Loc::getType, locTypeDto.getLocType1());
+        if (deviceBind.getStartRow() != null && deviceBind.getEndRow() != null) {
+            locQw.ge(Loc::getRow, deviceBind.getStartRow()).le(Loc::getRow, deviceBind.getEndRow());
+        }
+        locQw.orderByAsc(Loc::getLev).orderByAsc(Loc::getCol).orderByAsc(Loc::getRow);
+        List<Loc> loc1 = locService.list(locQw);
+        // 鑻ユ寜宸烽亾琛岃寖鍥存湭鏌ュ埌绌哄簱浣嶏紝鍒欐斁瀹芥潯浠讹細涓嶉檺鍒惰鑼冨洿锛屼粎鎸夊簱鍖�+绌哄簱+绫诲瀷鏌ヨ锛堜笌 loc/page 琛屼负涓�鑷达級
+        if (Cools.isEmpty(loc1) && times == 0) {
+            loc1 = locService.list(new LambdaQueryWrapper<Loc>()
+                    .eq(Loc::getAreaId, area)
+                    .eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                    .eq(Loc::getType, locTypeDto.getLocType1())
+                    .orderByAsc(Loc::getLev)
+                    .orderByAsc(Loc::getCol)
+                    .orderByAsc(Loc::getRow)
+            );
+        }
         for (Loc loc2 : loc1) {
             if (!LocUtils.locMoveCheckLocTypeComplete(loc2, locTypeDto)) {
                 continue;
@@ -1301,12 +1311,17 @@
         );
         if (Cools.isEmpty(deviceSite)) {
             deviceNo = 0;
-            loc = null;
+            // 鏈夊彲鐢ㄧ┖搴撲綅浣嗘湭閰嶇疆璺緞鏃讹紝鐢ㄦ簮绔欑偣浣滀负鐩爣绔欑偣锛屼粛杩斿洖璇ュ簱浣嶏紝閬垮厤璇姤鈥滄病鏈夌┖搴撲綅鈥�
+            if (loc != null && loc.getId() != null && Objects.equals(loc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
+                inTaskMsgDto.setStaNo(sourceStaNo);
+            } else {
+                loc = null;
+            }
         } else {
             inTaskMsgDto.setStaNo(deviceSite.getDeviceSite());
         }
         // 閫掑綊鏌ヨ
-        if (Cools.isEmpty(loc) || !loc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) {
+        if (Cools.isEmpty(loc) || !Objects.equals(loc.getUseStatus(), LocStsType.LOC_STS_TYPE_O.type)) {
             // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
             if (times < 5) {
                 times = times + 1;
@@ -1376,7 +1391,8 @@
         // 鎯呭喌1锛氬鏋滄槸鎷f枡/鐩樼偣鍏ュ簱浠诲姟锛岀姸鎬�199宸茬粡鍦╟reateInTask涓洿鏂颁负2浜�
         // 鎯呭喌2锛氬鏋滄槸鏂板垱寤虹殑浠诲姟锛堟棤璁㈠崟鍙风粍鎵橈級锛岀姸鎬佹槸1锛岄渶瑕佹洿鏂颁负2
         // 鎯呭喌3锛氬鏋滅姸鎬佸凡缁忔槸2锛屼笉闇�瑕佹洿鏂�
-        if (task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) {
+        Integer taskStatus = task.getTaskStatus();
+        if (taskStatus != null && taskStatus.equals(TaskStsType.GENERATE_IN.id)) {
             log.info("鏂板垱寤虹殑鍏ュ簱浠诲姟锛堟棤璁㈠崟鍙风粍鎵橈級锛孯CS鐢宠鍏ュ簱鏃舵洿鏂颁负鐘舵��2 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
             Long loginUserId = SystemAuthUtils.getLoginUserId();
             if (loginUserId == null) {
@@ -1397,11 +1413,11 @@
                 log.warn("鏂板垱寤虹殑鍏ュ簱浠诲姟鐘舵�佹洿鏂颁负2澶辫触锛屽彲鑳界姸鎬佸凡鍙樻洿 - 浠诲姟缂栫爜锛歿}锛屽綋鍓嶇姸鎬侊細{}", 
                         task.getTaskCode(), task.getTaskStatus());
             }
-        } else if (task.getTaskStatus().equals(TaskStsType.WCS_EXECUTE_IN.id)) {
+        } else if (taskStatus != null && taskStatus.equals(TaskStsType.WCS_EXECUTE_IN.id)) {
             log.info("鍏ュ簱浠诲姟鐘舵�佸凡缁忔槸2锛圧CS浠诲姟宸蹭笅鍙戯級锛屾棤闇�鏇存柊 - 浠诲姟缂栫爜锛歿}", task.getTaskCode());
         } else {
             log.info("鍏ュ簱浠诲姟褰撳墠鐘舵�侊細{}锛孯CS鐢宠鍏ュ簱鏃朵繚鎸佸綋鍓嶇姸鎬� - 浠诲姟缂栫爜锛歿}", 
-                    task.getTaskStatus(), task.getTaskCode());
+                    taskStatus, task.getTaskCode());
         }
         
         log.info("========== RCS-鐢宠鍏ュ簱浠诲姟鎴愬姛 ==========");

--
Gitblit v1.9.1