From c81fc5e2a4f4153be2bb8602ed14a0743e6ecd29 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 05 三月 2026 11:14:50 +0800
Subject: [PATCH] RCS对接优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java |  116 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 74 insertions(+), 42 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
index efc1a52..8de29f8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -79,7 +79,9 @@
     @Override
     public R getOutStockTaskItem(String barcode) {
         LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(Task::getBarcode, barcode);
+        lambdaQueryWrapper.eq(Task::getBarcode, barcode)
+                .orderByDesc(Task::getId)
+                .last("limit 1");
         Task task = taskService.getOne(lambdaQueryWrapper);
         if (null == task) {
             return R.error("鏈煡璇㈠埌鐩稿叧浠诲姟");
@@ -97,12 +99,16 @@
     @Synchronized
     public R saveOutTaskSts(String barcode) {
         LambdaQueryWrapper<Task> lambdaQueryWrapper = new LambdaQueryWrapper<>();
-        lambdaQueryWrapper.eq(Task::getBarcode, barcode);
+        lambdaQueryWrapper.eq(Task::getBarcode, barcode)
+                .orderByDesc(Task::getId)
+                .last("limit 1");
         Task task = taskService.getOne(lambdaQueryWrapper);
         if (null == task) {
-            throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
+            throw new CoolException("鏈壘鍒版枡绠辩爜瀵瑰簲浠诲姟");
         }
-        if (!task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+        // 鍏佽 199锛圵AVE_SEED 鎾涓�/寰呯‘璁わ級鎴� 196锛圓WAIT 绛夊緟纭锛夛紝涓庣洏鐐� PDA 閫昏緫涓�鑷�
+        if (!task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)
+                && !task.getTaskStatus().equals(TaskStsType.AWAIT.id)) {
             return R.error("浠诲姟鐘舵�佷笉鏄瓑寰呯‘璁�");
         }
         
@@ -153,9 +159,11 @@
         if (Cools.isEmpty(barcode)) {
             throw new CoolException("鍙傛暟鏈夎");
         }
-        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, barcode));
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, barcode)
+                .orderByDesc(Task::getId)
+                .last("limit 1"));
         if (null == task) {
-            throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲浠诲姟");
+            throw new CoolException("鏈壘鍒版枡绠辩爜瀵瑰簲浠诲姟");
         }
         if (!task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
             return R.error("浠诲姟鐘舵�佷笉鏄弨鏂欑媭鎱�");
@@ -186,7 +194,7 @@
 //            containerWaveDto.setTaskItem(taskItem);
 //            Wave wave = waveService.getById(taskItem.getSourceId());
 //            if (null == wave) {
-//                throw new CoolException("鏈壘鍒板鍣ㄥ彿瀵瑰簲娉㈡");
+//                throw new CoolException("鏈壘鍒版枡绠辩爜瀵瑰簲娉㈡");
 //            }
 //            List<WaveOrderRela> waveOrderRelas = waveOrderRelaService.list(new LambdaQueryWrapper<WaveOrderRela>()
 //                    .eq(WaveOrderRela::getWaveId, wave.getId()));
@@ -223,41 +231,58 @@
         if (Objects.isNull(param)) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        if (Objects.isNull(param.get("fieldsIndex"))) {
-            return R.error("绁ㄥ彿涓嶈兘涓虹┖锛侊紒");
-        }
+        // 绁ㄥ彿鏆備笉浣跨敤锛屾敞閲婃牎楠�
+        // if (Objects.isNull(param.get("fieldsIndex"))) {
+        //     return R.error("绁ㄥ彿涓嶈兘涓虹┖锛侊紒");
+        // }
         if (Objects.isNull(param.get("barcode"))) {
-            return R.error("瀹瑰櫒鍙蜂笉鑳戒负绌猴紒锛�");
+            return R.error("鏂欑鐮佷笉鑳戒负绌猴紒锛�");
         }
         if (Objects.isNull(param.get("orderId"))) {
             return R.error("璁㈠崟ID涓嶈兘涓虹┖锛侊紒");
         }
-        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, param.get("barcode").toString()));
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, param.get("barcode").toString())
+                .orderByDesc(Task::getId)
+                .last("limit 1"));
         if (Objects.isNull(task)) {
             throw new CoolException("鏁版嵁閿欒锛屼换鍔℃。宸蹭笉瀛樺湪锛侊紒");
         }
-        FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
-                .eq(FieldsItem::getValue, param.get("fieldsIndex").toString())
-                .last("limit 1"));
-        if (Objects.isNull(fieldsItem)) {
-            return R.error("鏁版嵁閿欒锛岀エ鍙蜂笉瀛樺湪锛侊紒");
-        }
-        TaskItem taskItem = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>()
+        // 绁ㄥ彿鏆備笉浣跨敤锛屾寜浠诲姟鍙栫涓�鏉℃槑缁�
+        // FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
+        //         .eq(FieldsItem::getValue, param.get("fieldsIndex").toString())
+        //         .last("limit 1"));
+        // if (Objects.isNull(fieldsItem)) {
+        //     return R.error("鏁版嵁閿欒锛岀エ鍙蜂笉瀛樺湪锛侊紒");
+        // }
+        TaskItem taskItem = null;
+        FieldsItem fieldsItem = null;
+        if (param.get("fieldsIndex") != null && StringUtils.isNotBlank(param.get("fieldsIndex").toString())) {
+            fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
+                    .eq(FieldsItem::getValue, param.get("fieldsIndex").toString())
+                    .last("limit 1"));
+            if (fieldsItem != null) {
+                taskItem = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>()
                         .eq(TaskItem::getFieldsIndex, fieldsItem.getUuid())
-                .eq(TaskItem::getTaskId, task.getId()));
+                        .eq(TaskItem::getTaskId, task.getId()));
+            }
+        }
+        if (taskItem == null) {
+            taskItem = taskItemService.getOne(new LambdaQueryWrapper<TaskItem>()
+                    .eq(TaskItem::getTaskId, task.getId())
+                    .last("limit 1"));
+        }
         if (Objects.isNull(taskItem)) {
             return R.error("鏁版嵁閿欒锛屼换鍔℃。鏄庣粏涓嶅瓨鍦紒锛�");
         }
-//        Long orderId = Long.valueOf(param.get("orderId").toString());
-//        List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, orderId));
-//        if (orderItems.isEmpty()) {
-//            return R.error("鏁版嵁閿欒锛岃鍗曟暟鎹笉瀛樺湪锛侊紒");
-//        }
-        //鏍规嵁绱㈠紩鑾峰彇鍔ㄦ�佸瓧娈礦alue鍊�
-        Map<String, String> fields = new HashMap<>();
-        Fields fields1 = fieldsService.getById(fieldsItem.getFieldsId());
-        fields.put(fields1.getFields(), fieldsItem.getValue());
-        taskItem.setExtendFields(fields);
+        // 绁ㄥ彿鏆備笉浣跨敤锛氫粎褰撴湁 fieldsItem 鏃惰缃� extendFields
+        if (fieldsItem != null) {
+            Fields fields1 = fieldsService.getById(fieldsItem.getFieldsId());
+            if (fields1 != null) {
+                Map<String, String> fields = new HashMap<>();
+                fields.put(fields1.getFields(), fieldsItem.getValue());
+                taskItem.setExtendFields(fields);
+            }
+        }
 
         return R.ok().add(taskItem);
     }
@@ -272,7 +297,7 @@
     @Transactional(rollbackFor = Exception.class)
     public synchronized R wavePickItems(WavePickItemsParams params) {
         if (Objects.isNull(params.getBarcode())) {
-            return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�");
+            return R.error("鏂欑鐮佷笉鑳戒负绌猴紒锛�");
         }
         if (Objects.isNull(params.getOrderId())) {
             return R.error("璁㈠崟ID涓嶈兘涓虹┖锛侊紒");
@@ -280,9 +305,11 @@
         if (Objects.isNull(params.getTaskItems()) || params.getTaskItems().isEmpty()) {
             return R.error("鎷h揣鏄庣粏涓嶈兘涓虹┖锛�");
         }
-        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode()));
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, params.getBarcode())
+                .orderByDesc(Task::getId)
+                .last("limit 1"));
         if (null == task) {
-            return R.error("鏈壘鍒版墭鐩樺搴旂殑浠诲姟");
+            return R.error("鏈壘鍒版枡绠卞搴旂殑浠诲姟");
         }
         if (!task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
             return R.error("浠诲姟鐘舵�佷笉鏄弨鏂欑媭鎱�");
@@ -361,10 +388,10 @@
                         throw new CoolException("缂撳瓨鏁版嵁涓㈠け锛侊紒");
                     }
                     Double v1 = Math.round((workItem.getAnfme() - serviceOne.getQty()) * 1000000) / 1000000.0;
-                    //涓嶇鏄惁鍏佽瓒呮敹锛岄兘闇�鍒ゆ柇鏄惁瓒呭嚭搴撳瓨鑼冨洿
-                    if (taskItem.getAnfme().compareTo(v1) > 0) {
-                        throw new CoolException("鎷h揣鏁伴噺瓒呭嚭褰撳墠绁ㄥ彿搴撳瓨鏁伴噺锛侊紒");
-                    }
+                    //涓嶇鏄惁鍏佽瓒呮敹锛岄兘闇�鍒ゆ柇鏄惁瓒呭嚭搴撳瓨鑼冨洿锛堢エ鍙锋殏涓嶄娇鐢紝璇ュ垽鏂敞閲婏級
+                    // if (taskItem.getAnfme().compareTo(v1) > 0) {
+                    //     throw new CoolException("鎷h揣鏁伴噺瓒呭嚭褰撳墠绁ㄥ彿搴撳瓨鏁伴噺锛侊紒");
+                    // }
                     if (!Boolean.parseBoolean(config.getVal())) {
                         Double v = Math.round((item.getQty() + taskItem.getAnfme()) * 1000000) / 1000000.0;
                         if (item.getAnfme().compareTo(v) < 0.0) {
@@ -451,7 +478,7 @@
                 .in(Task::getTaskType, integers)
                 .eq(Task::getBarcode, params.get("barcode")), false);
         if (Objects.isNull(task)) {
-            return R.error("鎵樼洏鎵�鍦ㄤ换鍔′笉瀛樺湪锛侊紒");
+            return R.error("鏂欑鎵�鍦ㄤ换鍔′笉瀛樺湪锛侊紒");
         }
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, task.getId()));
         taskItems.forEach(taskItem -> {
@@ -476,6 +503,9 @@
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
         for (TaskItem item : items) {
+            // 绁ㄥ彿鏆備笉浣跨敤锛岃烦杩囦慨鏀瑰嚭搴撲换鍔℃。鏄庣粏绁ㄥ彿閫昏緫
+            continue;
+            /*
             if (Objects.isNull(item.getCrushNo())) {
                 continue;
             }
@@ -484,7 +514,7 @@
                 Map<String, String> fields = FieldsUtils.getFields(byId.getFieldsIndex());
                 byId.setExtendFields(fields);
             }
-            if (byId.getExtendFields().get("crushNo").equals(item.getCrushNo())) {
+            if (byId.getExtendFields() != null && byId.getExtendFields().get("crushNo") != null && byId.getExtendFields().get("crushNo").equals(item.getCrushNo())) {
                 continue;
             }
             FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
@@ -518,7 +548,7 @@
             //鏇存柊搴撲綅淇℃伅
             locItemWorkingService.updateById(oldOne);
             locItemWorkingService.updateById(one);
-
+            */
         }
         return R.ok();
     }
@@ -542,9 +572,11 @@
             return R.error("鏁版嵁閿欒锛侊紒");
         }
 
-        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, containerWaveParam.getContainer()));
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, containerWaveParam.getContainer())
+                .orderByDesc(Task::getId)
+                .last("limit 1"));
         if (null == task) {
-            return R.error("鏈壘鍒版墭鐩樺搴旂殑浠诲姟");
+            return R.error("鏈壘鍒版枡绠卞搴旂殑浠诲姟");
         }
         if (!task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
             return R.error("浠诲姟鐘舵�佷笉鏄緟鎻�鐙�鎱�");

--
Gitblit v1.9.1