From c94101e403cdaf332e0b80cbedab747a03a5df93 Mon Sep 17 00:00:00 2001
From: cl <1442464845@qq.com>
Date: 星期四, 16 四月 2026 16:57:29 +0800
Subject: [PATCH] 定时任务开启

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index b912340..7b9ce48 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -115,8 +115,44 @@
 
         List<WaitPakinItem> items = new ArrayList<>();
         if (directWaitPakin) {
-            // DirectWaitPakin 鍚敤锛氱粍鎵樻潵鑷敹璐у尯锛宲aram 涓� id 涓� WarehouseAreasItem.id
+            // DirectWaitPakin 鍚敤锛氱粍鎵樺彲鏉ヨ嚜鏀惰揣鍖猴紙鏈� id锛夋垨鏃犺鍗曠粍鎵橈紙id 涓� null锛屼粎鐗╂枡+鏁伴噺锛�
             for (PakinItem pakinItem1 : waitPakin.getItems()) {
+                if (pakinItem1.getId() == null) {
+                    // 鏃犺鍗曠粍鎵橈細鏃犳敹璐у尯鏉ユ簮锛屾寜 matnrId + receiptQty 寤虹粍鎵樻槑缁�
+                    if (pakinItem1.getMatnrId() == null) {
+                        throw new CoolException("鏃犺鍗曠粍鎵樻椂鐗╂枡ID涓嶈兘涓虹┖锛侊紒");
+                    }
+                    Matnr matnr = matnrMapper.selectById(pakinItem1.getMatnrId());
+                    if (matnr == null) {
+                        throw new CoolException("鐗╂枡淇℃伅涓嶅瓨鍦紝鐗╂枡ID锛�" + pakinItem1.getMatnrId());
+                    }
+                    if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) {
+                        throw new CoolException("缁勬墭鏁伴噺涓嶈兘灏忎簬绛変簬闆讹紒锛�");
+                    }
+                    WaitPakinItem pakinItem = new WaitPakinItem();
+                    pakinItem.setPakinId(waitPakin1.getId())
+                            .setSource(null)
+                            .setAsnId(null)
+                            .setAsnCode(null)
+                            .setAsnItemId(null)
+                            .setIsptResult(null)
+                            .setPlatItemId(null)
+                            .setPlatOrderCode(null)
+                            .setPlatWorkCode(null)
+                            .setProjectCode(null)
+                            .setBatch(null)
+                            .setUnit(matnr.getStockUnit() != null ? matnr.getStockUnit() : "涓�")
+                            .setFieldsIndex(matnr.getFieldsIndex())
+                            .setMatnrId(matnr.getId())
+                            .setMaktx(matnr.getName())
+                            .setUpdateBy(userId)
+                            .setCreateBy(userId)
+                            .setMatnrCode(matnr.getCode())
+                            .setAnfme(QuantityUtils.roundToScale(pakinItem1.getReceiptQty()))
+                            .setTrackCode(pakinItem1.getTrackCode());
+                    items.add(pakinItem);
+                    continue;
+                }
                 WarehouseAreasItem areaItem = warehouseAreasItemService.getById(pakinItem1.getId());
                 if (areaItem == null) {
                     throw new CoolException("鐗╂枡鏈�佽嚦鏀惰揣鍖猴紒锛�");
@@ -142,7 +178,7 @@
                         .setMatnrCode(areaItem.getMatnrCode());
                 WkOrder order = asnOrderService.getById(areaItem.getAsnId());
                 if (order != null) {
-                    pakinItem.setType(order.getType()).setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
+                    pakinItem.setType(order.getType()).setWkType(order.getWkType());
                 }
                 if (pakinItem1.getReceiptQty() == null || pakinItem1.getReceiptQty().compareTo(0.0) <= 0) {
                     throw new CoolException("缁勬墭鏁伴噺涓嶈兘灏忎簬绛変簬闆讹紒锛�");
@@ -157,6 +193,9 @@
                 throw new CoolException("缁勬墭鏄庣粏淇濆瓨澶辫触锛侊紒");
             }
             for (WaitPakinItem pakinItem : items) {
+                if (pakinItem.getSource() == null) {
+                    continue; // 鏃犺鍗曠粍鎵樻棤鏀惰揣鍖烘潵婧愶紝涓嶆洿鏂版敹璐у尯
+                }
                 WarehouseAreasItem one = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getId, pakinItem.getSource()));
                 if (one == null) {
                     throw new CoolException("鏀惰揣鍖烘暟鎹敊璇紒锛�");
@@ -197,7 +236,11 @@
 
         for (PakinItem pakinItem1 : waitPakin.getItems()) {
             WaitPakinItem pakinItem = new WaitPakinItem();
-            if (StringUtils.isBlank(pakinItem1.getAsnCode())) {
+            // 鍘熼�昏緫锛歩f (StringUtils.isBlank(pakinItem1.getAsnCode())) { ... } else { 鎸夊崟鎹檺鍒� ... }
+            // 鍙湁鍗曟嵁鍙峰瓨鍦ㄤ笖鑳芥煡鍒板崟鎹椂鎵嶆寜鍗曟嵁闄愬埗
+            WkOrder bindOrder = StringUtils.isBlank(pakinItem1.getAsnCode()) ? null :
+                    asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>().eq(WkOrder::getCode, pakinItem1.getAsnCode()));
+            if (bindOrder == null) {
                 if (Objects.isNull(pakinItem1.getMatnrId())) {
                     throw new CoolException("鐗╂枡ID涓嶈兘涓虹┖锛侊紒");
                 }
@@ -240,9 +283,9 @@
                 if (null == orderItem) {
                     throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
                 }
-                WkOrder order = asnOrderService.getById(orderItem.getOrderId());
-                if (null == order) {
-                    throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+                WkOrder order = bindOrder;
+                if (orderItem.getOrderId() == null || !orderItem.getOrderId().equals(order.getId())) {
+                    throw new CoolException("鐗╂枡涓嶅湪褰撳墠鍗曟嵁涓紝涓嶈兘鎸夊崟鎹粍鎵橈紒锛�");
                 }
                 pakinItem.setAnfme(QuantityUtils.roundToScale(orderItem.getAnfme()))
                         .setPakinId(waitPakin1.getId())
@@ -264,7 +307,7 @@
                         .setCreateBy(userId)
                         .setMatnrCode(orderItem.getMatnrCode());
                 pakinItem.setType(null == order.getType() ? null : order.getType())
-                        .setWkType(StringUtils.isNotBlank(order.getWkType()) ? Short.parseShort(order.getWkType()) : null);
+                        .setWkType(order.getWkType());
 
                 for (PakinItem waitPakinItem : waitPakin.getItems()) {
                     if (waitPakinItem.getId().equals(orderItem.getId())) {

--
Gitblit v1.9.1