From f6e687c194354f1c0b883b5ac56da3a8e70db471 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期三, 14 一月 2026 18:43:37 +0800
Subject: [PATCH] 出库工作档功能优化

---
 src/main/java/com/zy/asrs/utils/OrderExcelListener.java |   60 +++++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 43 insertions(+), 17 deletions(-)

diff --git a/src/main/java/com/zy/asrs/utils/OrderExcelListener.java b/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
index 59e6c5e..0efd602 100644
--- a/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
+++ b/src/main/java/com/zy/asrs/utils/OrderExcelListener.java
@@ -22,7 +22,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 @Slf4j
-public class OrderExcelListener  extends AnalysisEventListener<OrderExcel> {
+public class OrderExcelListener extends AnalysisEventListener<OrderExcel> {
 
     private int total = 0;
     private Long userId;
@@ -48,16 +48,17 @@
 
     /**
      * 鍗曟嵁瀵煎叆瀹炵幇
+     *
+     * @param data
+     * @param context
      * @author Ryan
      * @date 2026/1/8 17:25
-     * @param data
-     * @param context 
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void invoke(OrderExcel data, AnalysisContext context) {
-        OrderService orderService = (OrderService) SpringUtils.getBean(OrderService.class);
-        OrderDetlService detlService = (OrderDetlService) SpringUtils.getBean(OrderDetlService.class);
+        OrderService orderService = SpringUtils.getBean(OrderService.class);
+        OrderDetlService detlService = SpringUtils.getBean(OrderDetlService.class);
         MatService matService = SpringUtils.getBean(MatService.class);
         DocTypeService docTypeService = SpringUtils.getBean(DocTypeService.class);
         Date now = new Date();
@@ -77,16 +78,27 @@
 
         Order order = new Order();
         order.setOrderNo(data.getOrderNo());
-        order.setDocType(docType.getDocId());
-        order.setCreateTime(now);
-        order.setUpdateTime(now);
-        order.setSettle(1L);
-        order.setStatus(1);
-        order.setCreateBy(userId);
-        order.setUpdateBy(userId);
-        order.setPakinPakoutStatus(docType.getPakin() == 1 ? 1 : 2);    
-        if (!orderService.insert(order)) {
-            throw new CoolException("璁㈠崟鍒涘缓澶辫触锛侊紒");
+        if (Objects.isNull(data.getOrderNo())) {
+            throw new CoolException("鍗曟嵁缂栫爜涓嶈兘涓虹┖锛侊紒");
+        }
+        order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", data.getOrderNo()));
+        if (!Objects.isNull(order)) {
+            //璁㈠崟宸插瓨鍦紝鍙坊鍔犳槑缁�
+        } else {
+            order = new Order();
+            order.setOrderNo(data.getOrderNo());
+            order.setDocType(docType.getDocId());
+            order.setUuid(UUID.randomUUID().toString());
+            order.setCreateTime(now);
+            order.setUpdateTime(now);
+            order.setSettle(1L);
+            order.setStatus(1);
+            order.setCreateBy(userId);
+            order.setUpdateBy(userId);
+            order.setPakinPakoutStatus(docType.getPakin() == 1 ? 1 : 2);
+            if (!orderService.insert(order)) {
+                throw new CoolException("璁㈠崟鍒涘缓澶辫触锛侊紒");
+            }
         }
         if (Objects.isNull(data.getMatnr())) {
             throw new CoolException("鐗╂枡缂栫爜涓嶈兘涓虹┖锛�");
@@ -95,14 +107,27 @@
         if (Objects.isNull(mat)) {
             throw new CoolException("鐗╂枡[" + data.getMatnr() + "]涓嶅瓨鍦紒锛�");
         }
+
+        OrderDetl orderDetl = detlService.selectOne(new EntityWrapper<OrderDetl>()
+                .eq("matnr", data.getMatnr())
+                .eq("batch", data.getBatch())
+                .eq("barcode", data.getBarcode())
+                .eq("order_no", order.getOrderNo()));
+        if (!Objects.isNull(orderDetl)) {
+            return;
+        }
         OrderDetl detl = new OrderDetl();
         detl.setOrderNo(data.getOrderNo());
         detl.setOrderId(order.getId());
         detl.setMatnr(data.getMatnr());
         detl.setMaktx(mat.getMaktx());
         detl.setQty(data.getQty());
-        detl.setBatch(data.getBatch());
-        detl.setVolume(data.getVolume());
+        detl.setUnit(data.getUnit());
+        detl.setModel(data.getModel());
+        detl.setBrand(data.getBrand());
+        detl.setSpecs(data.getSpecs());
+        detl.setBatch(Objects.isNull(data.getBatch()) ? "1" : data.getBatch());
+        detl.setVolume(mat.getVolume());
         detl.setSafeQty(mat.getSafeQty());
         detl.setAnfme(data.getAnfme());
         detl.setBarcode(data.getBarcode());
@@ -113,6 +138,7 @@
         if (!detlService.insert(detl)) {
             throw new CoolException("璁㈠崟璇︽儏鍒涘缓澶辫触锛侊紒");
         }
+        total++;
     }
 
     @Override

--
Gitblit v1.9.1