From 82065a03737fa1370eb9f4f01ab5332933baf08a Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期四, 05 三月 2026 09:23:37 +0800
Subject: [PATCH] 云仓WMS+RCS+自动入库临时方法配置

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java |  124 ++++++++++++++++-------------------------
 1 files changed, 49 insertions(+), 75 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index 618be12..de355f0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -27,6 +27,7 @@
 
 import javax.annotation.Resource;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -69,93 +70,67 @@
     private FieldsItemService fieldsItemService;
 
     /**
-     * @author Ryan
-     * @date 2025/5/9
-     * @description: 鐩存帴缁勬墭寮�鍏充负true锛屽皢鏀惰揣鍗曠洿鎺ュ姞鍏ヤ复鏃跺簱瀛�
-     * @version 1.0
+     * 鑷姩鏀惰揣锛氫粎褰� DirectWaitPakin 閰嶇疆涓� true 鏃舵墽琛岋紝灏嗘湭鎵ц鍏ュ簱鍗曠洿鎺ユ敹璐у苟鍐欏叆鏀惰揣鍖猴紝鏇存柊鍗曟嵁鐘舵�佷负鏀惰揣瀹屾垚銆�
+     * 涓嶅奖鍝嶄簯浠揥MS鍏ュ簱鎺ュ彛锛�8.3 鍚屾鍗曪級涓庣粍鎵樻祦绋嬶紱鍏抽棴鏃朵笉鍋氫换浣曟搷浣溿��
      */
     @Scheduled(cron = "0/25 * * * * ?")
     @Transactional(rollbackFor = Exception.class)
     public synchronized void IgnoreReceipt() {
         Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.DIRECT_WAIT_PAKIN));
-        if (Objects.isNull(config)) {
+        if (Objects.isNull(config) || !Boolean.parseBoolean(config.getVal())) {
             return;
         }
-        if (!Boolean.parseBoolean(config.getVal())) {
-            return;
-        }
-        //鑷姩鏀惰揣鍗�
         List<WkOrder> orders = asnOrderService.list(new LambdaQueryWrapper<WkOrder>()
                 .eq(WkOrder::getType, OrderType.ORDER_IN.type)
                 .eq(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_UN_EXCE.val));
-         if (!orders.isEmpty()) {
-            for (WkOrder order : orders) {
-                if (order.getWkType().equals(OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type)) {
-                    WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>()
-                            .eq(WkOrder::getPoCode, order.getPoCode())
-                            .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type));
-                    if (Objects.isNull(one)) {
-                        throw new CoolException("鏁版嵁閿欒");
-                    }
-                    if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) {
-                        continue;
-                    }
+        if (orders.isEmpty()) {
+            return;
+        }
+        WarehouseAreas receiptArea = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
+                .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false);
+        for (WkOrder order : orders) {
+            if (OrderWorkType.ORDER_WORK_TYPE_OTHER_TERANSFER.type.equals(order.getWkType())) {
+                WkOrder one = outStockService.getOne(new LambdaQueryWrapper<WkOrder>()
+                        .eq(WkOrder::getPoId, order.getPoId())
+                        .eq(WkOrder::getWkType, OrderWorkType.ORDER_WORK_TYPE_STOCK_TERANSFER.type));
+                if (Objects.isNull(one)) {
+                    throw new CoolException("鏁版嵁閿欒");
                 }
-
-                List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
-                if (orderItems.isEmpty()) {
-                    return;
+                if (!one.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_DONE.val)) {
+                    continue;
                 }
-                List<WarehouseAreasItem> items = new ArrayList<>();
-                for (WkOrderItem item : orderItems) {
-                    WarehouseAreas one = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
-                            .eq(WarehouseAreas::getType, WarehouseAreasType.WAREHOUSE_AREAS_TYPE_RECEIPT.type), false);
-                    Long areaId = Objects.isNull(one) ? null : one.getId();
-                    String areaName = Objects.isNull(one) ? null : one.getName();
-
-                    WarehouseAreasItem param = new WarehouseAreasItem();
-                    BeanUtils.copyProperties(item, param);
-                    param.setAreaId(one.getId())
-                            .setAsnCode(order.getCode())
-                            .setAreaId(areaId)
-                            .setAreaName(areaName)
-                            .setAsnId(order.getId());
-                    items.add(param);
+            }
+            List<WkOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>().eq(WkOrderItem::getOrderId, order.getId()));
+            if (orderItems.isEmpty()) {
+                continue;
+            }
+            for (WkOrderItem item : orderItems) {
+                if (receiptArea != null) {
                     Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>().eq(Matnr::getId, item.getMatnrId()));
                     if (Objects.isNull(matnr)) {
                         throw new CoolException("鐗╂枡涓嶅瓨鍦紒锛�");
                     }
-                    //鏇存柊鏀惰揣鍖哄簱瀛�
                     try {
-                        updateReceipt(one, item, order, matnr);
+                        updateReceipt(receiptArea, item, order, matnr);
                     } catch (Exception e) {
                         throw new CoolException(e.getMessage());
                     }
-
-                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) {
-                        throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
-                    }
                 }
-//                if (!warehouseAreasItemService.saveBatch(items)) {
-//                    throw new CoolException("鏀惰揣鍗曚繚瀛樿嚦鏀惰揣鍖烘墽琛屽け璐ワ紒锛�");
-//                }
-
-                if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
-                        .set(WkOrder::getQty, order.getAnfme())
-                        .set(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
-                        .eq(WkOrder::getId, order.getId()))) {
-                    throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
+                if (!asnOrderItemService.update(new LambdaUpdateWrapper<WkOrderItem>().set(WkOrderItem::getQty, item.getAnfme()).eq(WkOrderItem::getId, item.getId()))) {
+                    throw new CoolException("鏀惰揣鍗曟槑缁嗗畬鎴愭暟閲忎慨鏀瑰け璐ワ紒锛�");
                 }
+            }
+            if (!asnOrderService.update(new LambdaUpdateWrapper<WkOrder>()
+                    .set(WkOrder::getQty, order.getAnfme())
+                    .set(WkOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)
+                    .eq(WkOrder::getId, order.getId()))) {
+                throw new CoolException("鏀惰揣鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
             }
         }
     }
 
-
     /**
-     * @author Ryan
-     * @date 2025/5/12
-     * @description: 鏀惰揣鍖哄簱瀛樻洿鏂�
-     * @version 1.0
+     * 鏀惰揣鍖哄簱瀛樻洿鏂帮紙浠� DirectWaitPakin 鍚敤鏃剁敱 IgnoreReceipt 璋冪敤锛�
      */
     @Transactional(rollbackFor = Exception.class)
     public void updateReceipt(WarehouseAreas areasItem, WkOrderItem orderItem, WkOrder wkOrder, Matnr matnr) throws Exception {
@@ -163,7 +138,9 @@
         if (StringUtils.isNoneBlank(orderItem.getSplrCode())) {
             companys = companysService.getOne(new LambdaQueryWrapper<Companys>().eq(Companys::getCode, orderItem.getSplrCode()));
         }
-
+        if (Objects.isNull(companys)) {
+            companys = new Companys();
+        }
         WarehouseAreasItem item = new WarehouseAreasItem();
         item.setTrackCode(orderItem.getBarcode())
                 .setAreaName(areasItem.getName())
@@ -177,7 +154,6 @@
                 .setPlatWorkCode(orderItem.getPlatWorkCode())
                 .setProjectCode(orderItem.getProjectCode())
                 .setSplrId(companys.getId())
-                //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
                 .setUnit(orderItem.getStockUnit())
                 .setStockUnit(orderItem.getStockUnit())
                 .setMatnrCode(matnr.getCode())
@@ -189,18 +165,17 @@
                 .setWeight(matnr.getWeight())
                 .setFieldsIndex(orderItem.getFieldsIndex())
                 .setShipperId(matnr.getShipperId());
-
-
-        WarehouseAreasItem warehousItem = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(StringUtils.isNotBlank(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()));
-        if (!Objects.isNull(warehousItem)) {
-            //甯屾棩鐩稿悓绁ㄥ彿锛屾敹璐у尯涓嶅彲鏂板鐩稿悓绁ㄥ彿鏁版嵁
-            FieldsItem fieldsItem = fieldsItemService.getOne(new LambdaQueryWrapper<FieldsItem>()
-                    .eq(FieldsItem::getUuid, orderItem.getFieldsIndex()).last("LIMIT 1"));
-            if (!Objects.isNull(fieldsItem)) {
-                throw new CoolException("绁ㄥ彿锛�" + fieldsItem.getValue() + "宸插湪鏀惰揣鍖猴紝涓嶅彲鎺ㄩ�佺浉褰撶エ鍙锋暟鎹�傝鑱旂郴绠$悊鍛橈紒锛�" );
+        if (StringUtils.isNotBlank(orderItem.getFieldsIndex())) {
+            List<WarehouseAreasItem> warehousList = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()));
+            WarehouseAreasItem warehousItem = warehousList.isEmpty() ? null : warehousList.get(0);
+            if (Objects.nonNull(warehousItem)) {
+                List<FieldsItem> fieldsList = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, orderItem.getFieldsIndex()).last("LIMIT 1"));
+                FieldsItem fieldsItem = fieldsList.isEmpty() ? null : fieldsList.get(0);
+                if (Objects.nonNull(fieldsItem)) {
+                    throw new CoolException("绁ㄥ彿锛�" + fieldsItem.getValue() + "宸插湪鏀惰揣鍖猴紝涓嶅彲鎺ㄩ�佺浉褰撶エ鍙锋暟鎹�傝鑱旂郴绠$悊鍛橈紒锛�");
+                }
             }
         }
-
         LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>()
                 .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode())
                 .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex())
@@ -212,12 +187,11 @@
             queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult());
         }
         WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper);
-        if (!Objects.isNull(serviceOne)) {
+        if (Objects.nonNull(serviceOne)) {
             item.setId(serviceOne.getId());
-            Double anfme = Math.round((item.getAnfme() + serviceOne.getAnfme()) * 100) / 100.0;
+            Double anfme = Math.round((item.getAnfme() + serviceOne.getAnfme()) * 10000) / 10000.0;
             item.setAnfme(anfme);
         }
-        //鏈川妫�
         if (!warehouseAreasItemService.saveOrUpdate(item)) {
             throw new CoolException("鏀惰揣澶辫触锛侊紒");
         }

--
Gitblit v1.9.1