From 9c0236bacbd10fb629a4142719c4199bca1038bc Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期二, 15 四月 2025 17:28:58 +0800
Subject: [PATCH] 修改 1. 新增库位明细流界面 2. 修改库存信息表

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |  168 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 125 insertions(+), 43 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index cca988c..78e4034 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -53,6 +53,14 @@
     @Autowired
     private DeviceSiteService deviceSiteService;
 
+    @Autowired
+    private OrderService orderService;
+
+    @Autowired
+    private OrderItemService orderItemService;
+
+    @Autowired
+    private LocItemService locItemService;
 
 
     /**
@@ -113,8 +121,13 @@
             waitPakinItems.forEach(item -> {
                 TaskItem taskItem = new TaskItem();
                 BeanUtils.copyProperties(item, taskItem);
+                AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getId, item.getAsnId()));
+                if (Objects.isNull(order)) {
+                    throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
+                }
                 taskItem.setTaskId(task.getId())
                         .setOrderType(OrderType.ORDER_RECEIPT.type)
+                        .setWkType(Short.parseShort(order.getWkType()))
                         .setSource(item.getId())
                         .setTrackCode(item.getTrackCode())
                         .setCreateBy(loginUserId)
@@ -139,7 +152,7 @@
     }
 
     /**
-     * 瀹屾垚浠诲姟
+     * 瀹屾垚浠诲姟 鏇存柊搴撲綅鏄庣粏淇℃伅锛屽皢鍗曟嵁搴撳瓨鏇存柊鍒板崟鎹簱瀛樿〃
      * @param tasks
      * @throws Exception
      */
@@ -152,59 +165,36 @@
         List<Long> list = tasks.stream().map(Task::getId).collect(Collectors.toList());
         List<TaskItem> taskItems = taskItemService.list(new LambdaQueryWrapper<TaskItem>().eq(TaskItem::getTaskId, list));
         if (taskItems.isEmpty()) {
-            throw new CoolException("浠诲姟鏄庣粏涓嶈兘涓虹┖锛侊紒");
+            throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
         }
+        List<String> locCodes = tasks.stream().map(Task::getTargLoc).collect(Collectors.toList());
+        Map<Long, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getTaskId));
+        /**瀵逛换鍔℃槑缁嗘寜浠诲姟涓诲崟杩涜鍒嗙粍*/
+        listMap.keySet().forEach(key -> {
+            List<TaskItem> items = listMap.get(key);
+            //鏇存柊搴撲綅鏄庣粏
+            try {
+                saveLocItem(items, key);
+            } catch (Exception e) {
+                throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒");
+            }
+        });
+
         /**瀵逛换鍔℃槑缁嗘寜璁㈠崟杩涜鍒嗙粍*/
         Map<Long, List<TaskItem>> orderMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getOrderId));
-        List<StockItem> stockItems = new ArrayList<>();
         orderMap.keySet().forEach(key -> {
             AsnOrder order = asnOrderService.getOne(new LambdaQueryWrapper<AsnOrder>()
                     .eq(AsnOrder::getId, key)
                     .select(AsnOrder::getId, AsnOrder::getPoCode, AsnOrder::getCode));
-            Stock stock = new Stock();
-            if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
-                Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
-                if (!Objects.isNull(purchase)) {
-                    stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
-                }
-            }
-            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
-            if (StringUtils.isBlank(ruleCode)) {
-                throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒");
-            }
-            stock.setAsnId(order.getId()).setAsnCode(order.getCode());
-            if (!stockService.save(stock)) {
-                throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
-            }
             List<TaskItem> items = orderMap.get(key);
-            for (TaskItem item : items) {
-                /**閫氳繃浠诲姟鏄庣粏涓殑taskId鏌ヨ,鑾峰彇TASK鐨勭洰鏍囧簱浣嶄俊鎭�*/
-                Task taskServiceOne = this.getOne(new LambdaQueryWrapper<Task>()
-                        .select(Task::getId, Task::getTargLoc, Task::getOrgLoc, Task::getBarcode)
-                        .eq(Task::getId, item.getTaskId()));
-                Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, taskServiceOne.getTargLoc()));
-                if (Objects.isNull(loc)) {
-                    throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�");
-                }
-                AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, item.getOrderItemId()));
-                if (Objects.isNull(orderItem)) {
-                    throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
-                }
-                StockItem stockItem = new StockItem();
-                BeanUtils.copyProperties(orderItem, stockItem);
-                stockItem.setAsnItemId(item.getOrderItemId())
-                        .setBarcode(taskServiceOne.getBarcode())
-                        .setLocId(loc.getId())
-                        .setId(null)
-                        .setStockId(stock.getId());
-                stockItems.add(stockItem);
-            }
-            if (!stockItemService.saveBatch(stockItems)) {
-                throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�");
+            //淇濆瓨搴撳瓨鏄庣粏
+            try {
+                saveStockItems(items, order);
+            } catch (Exception e) {
+                throw new CoolException("搴撳瓨绠$悊淇濆瓨鏇存柊澶辫触锛侊紒");
             }
         });
         /**淇敼搴撲綅鐘舵�佷负F.鍦ㄥ簱*/
-        List<String> locCodes = tasks.stream().map(Task::getTargLoc).collect(Collectors.toList());
         if (!locService.update(new LambdaUpdateWrapper<Loc>().set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).in(Loc::getCode, locCodes))) {
             throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
         }
@@ -212,4 +202,96 @@
             throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
         }
     }
+
+    /**
+     * @author Ryan
+     * @description 鏇存柊搴撲綅鏄庣粏
+     * @param
+     * @return
+     * @time 2025/4/15 15:28
+     */
+    @Transactional(rollbackFor = Exception.class)
+    private void saveLocItem(List<TaskItem> items, Long taskId) throws Exception {
+        Task task = this.getById(taskId);
+        if (Objects.isNull(task)) {
+            throw new CoolException("浠诲姟涓嶅瓨鍦�!!");
+        }
+        List<LocItem> locItems = new ArrayList<>();
+        items.forEach(taskItem -> {
+            Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()));
+            LocItem item = new LocItem();
+            BeanUtils.copyProperties(taskItem, item);
+            item.setLocId(loc.getId()).setType(taskItem.getOrderType());
+            locItems.add(item);
+        });
+        if (!locItemService.saveBatch(locItems)) {
+            throw new CoolException("搴撲綅鏄庣粏鏇存柊澶辫触锛侊紒");
+        }
+    }
+
+    /**
+     * 鐢熸垚搴撳瓨鏄庣粏
+     * @param items
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    private void saveStockItems(List<TaskItem> items, AsnOrder order) throws Exception {
+        Stock stock = new Stock();
+//        if (!Objects.isNull(order.getPoCode()) && StringUtils.isNotBlank(order.getPoCode())) {
+//            Purchase purchase = purchaseService.getOne(new LambdaQueryWrapper<Purchase>().eq(Purchase::getCode, order.getPoCode()));
+//            if (!Objects.isNull(purchase)) {
+//                stock.setPlatOrderNo(purchase.getPlatCode()).setPlatToken(purchase.getPlatId());
+//            }
+//        }
+        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_STOCK_CODE, null);
+        if (StringUtils.isBlank(ruleCode)) {
+            throw new CoolException("褰撳墠涓氬姟锛�" + SerialRuleCode.SYS_STOCK_CODE + "锛岀紪鐮佽鍒欎笉瀛樺湪锛侊紒");
+        }
+        stock.setSourceId(order.getId()).setSourceCode(order.getCode());
+        if (!stockService.save(stock)) {
+            throw new CoolException("搴撳瓨淇濆瓨澶辫触锛侊紒");
+        }
+
+        List<StockItem> stockItems = new ArrayList<>();
+        for (TaskItem item : items) {
+            /**閫氳繃浠诲姟鏄庣粏涓殑taskId鏌ヨ,鑾峰彇TASK鐨勭洰鏍囧簱浣嶄俊鎭�*/
+            AsnOrderItem orderItem = asnOrderItemService.getOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getId, item.getOrderItemId()));
+            if (Objects.isNull(orderItem)) {
+                throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+            StockItem stockItem = new StockItem();
+            BeanUtils.copyProperties(orderItem, stockItem);
+            stockItem.setSourceItemId(item.getOrderItemId())
+                    .setStockCode(stock.getCode())
+                    .setSourceItemId(orderItem.getId())
+                    .setId(null)
+                    .setStockId(stock.getId());
+            stockItems.add(stockItem);
+        }
+        if (!stockItemService.saveBatch(stockItems)) {
+            throw new CoolException("搴撳瓨淇敼鏋跺け璐ワ紒锛�");
+        }
+    }
+
+//    public void generateOrders() {
+//        Map<Long, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getOrderId));
+//        listMap.keySet().forEach(key -> {
+//            double sum = listMap.get(key).stream().mapToDouble(TaskItem::getAnfme).sum();
+//            listMap.get(key).forEach(taskItem -> {
+//                Order order = new Order();
+//                String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_MANAGE_ORDER_CODE, taskItem);
+//                if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
+//                    throw new CoolException("缂栫爜瑙勫垯閿欒锛�" + "璇锋煡鐪嬬紪鐮侊細" + "銆孲YS_MANAGE_ORDER_CODE銆�" + "鏄惁璁剧疆");
+//                }
+//                order.setCode(ruleCode).setAnfme(sum).setSourceId(taskItem.getOrderId());
+//            });
+//        });
+//
+//        if (!orderItemService.saveBatch(orderItems)) {
+//            throw new CoolException("鍗曟嵁鏄庣粏淇濆瓨澶辫触锛侊紒");
+//        }
+//    }
+
+
+
 }

--
Gitblit v1.9.1