From 930cf3fe63ddea4720ca6818df94c2161a04054f Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 11 六月 2025 15:51:43 +0800
Subject: [PATCH] 任务工作档优化 代码优化 生成工作档优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java |   76 +++++++++++++++++++++++++++----------
 1 files changed, 55 insertions(+), 21 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
index def395e..7948911 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -413,7 +413,7 @@
             throw new CoolException("绛栫暐鍙傛暟涓虹┖");
         }
         if (Cools.isEmpty(param.getOrderId())) {
-            throw new CoolException("鍗曟嵁id涓虹┖");
+            throw new CoolException("鍗曟嵁ID涓虹┖");
         }
         WaveRule waveRule = waveRuleService.getOne(new LambdaQueryWrapper<WaveRule>().eq(WaveRule::getId, param.getWaveId()));
         if (Cools.isEmpty(waveRule)) {
@@ -450,22 +450,6 @@
             if (!Objects.isNull(loc)) {
                 List<LocItem> locItems = new ArrayList<>();
                 LocItem locItem = locItemService.getById(param.getId());
-                locItem.setOutQty(param.getOutQty()).setBatch(param.getBatch());
-                locItems.add(locItem);
-
-                LocToTaskParams taskParams = new LocToTaskParams();
-                taskParams.setType(Constants.TASK_TYPE_ORDER_OUT_STOCK)
-                        .setOrgLoc(loc.getCode())
-                        .setItems(locItems)
-                        .setSourceId(outId)
-                        .setSiteNo(param.getSiteNo());
-                try {
-                    //鐢熸垚鍑哄簱浠诲姟
-                    locItemService.generateTask(taskParams, loginUserId);
-                } catch (Exception e) {
-                    logger.error("UNK", e);
-                    throw new CoolException(e.getMessage());
-                }
 
                 AsnOrderItem orderItem = outStockItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>()
                         .eq(AsnOrderItem::getAsnId, outId)
@@ -476,6 +460,28 @@
                 if (Objects.isNull(orderItem)) {
                     throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
                 }
+
+                locItem.setOutQty(param.getOutQty())
+                        .setBatch(param.getBatch())
+                        .setSourceId(outId)
+                        .setSourceCode(orderItem.getAsnCode())
+                        .setSource(orderItem.getId());
+                locItems.add(locItem);
+
+                LocToTaskParams taskParams = new LocToTaskParams();
+                taskParams.setType(Constants.TASK_TYPE_ORDER_OUT_STOCK)
+                        .setOrgLoc(loc.getCode())
+                        .setItems(locItems)
+                        .setSourceId(outId)
+                        .setSiteNo(param.getSiteNo());
+                try {
+                    //鐢熸垚鍑哄簱浠诲姟
+                    locItemService.generateTask(TaskResouceType.TASK_RESOUCE_ORDER_TYPE.val, taskParams, loginUserId);
+                } catch (Exception e) {
+                    logger.error("UNK", e);
+                    throw new CoolException(e.getMessage());
+                }
+
 
                 Double workQty = Math.round((orderItem.getWorkQty() + locItem.getOutQty()) * 10000) / 10000.0;
 
@@ -495,13 +501,27 @@
         }
         Double workQty = Math.round((outOrder.getWorkQty() + sum) * 10000) / 10000.0;
 
-        outOrder.setWorkQty(workQty).setExceStatus( AsnExceStatus.OUT_STOCK_STATUS_TASK_CREATE.val);
+        outOrder.setWorkQty(workQty).setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_CREATE.val);
 
         if (!outStockService.updateById(outOrder)) {
             throw new CoolException("鍑哄簱鍗曠姸鎬佷慨鏀瑰け璐ワ紒锛�");
         }
 
         return R.ok();
+    }
+
+    /**
+     * 鑾峰彇鍑哄簱绔欑偣
+     * @return
+     */
+    @Override
+    public R getSiteNos() {
+        List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_MERGE_OUT.type,
+                TaskType.TASK_TYPE_OUT.type,
+                TaskType.TASK_TYPE_MERGE_OUT.type,
+                TaskType.TASK_TYPE_PICK_AGAIN_OUT.type);
+        List<DeviceSite> sites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, list).groupBy(DeviceSite::getSite));
+        return R.ok(sites);
     }
 
 
@@ -543,8 +563,7 @@
 
     private List<OrderOutItemDto> getOutOrderList(Long orderId, WaveRule waveRule) {
         List<AsnOrderItem> asnOrderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
-                .eq(AsnOrderItem::getAsnId, orderId)
-        );
+                .eq(AsnOrderItem::getAsnId, orderId));
         List<OrderOutItemDto> list = new ArrayList<>();
         Set<ExistDto> existDtos = new HashSet<>();
 
@@ -597,8 +616,23 @@
 
                         issued = issued.subtract(new BigDecimal(locItem.getAnfme().toString()));
                     }
-                }
+                } else {
 
+                }
+            }
+            if (issued.doubleValue() > 0) {
+                LocItem locItem = new LocItem()
+                        .setId(new Random().nextLong())
+                        .setMatnrCode(asnOrderItem.getMatnrCode())
+                        .setMaktx(asnOrderItem.getMaktx())
+                        .setAnfme(0.00)
+                        .setWorkQty(issued.doubleValue())
+                        .setOutQty(issued.doubleValue())
+                        .setUnit(asnOrderItem.getStockUnit())
+                        .setBatch(asnOrderItem.getSplrBatch());
+                OrderOutItemDto orderOutItemDto = new OrderOutItemDto();
+                orderOutItemDto.setLocItem(locItem);
+                list.add(orderOutItemDto);
             }
         }
 

--
Gitblit v1.9.1