From ac4341ea6b66ae02427d39d35f41d42d78b2eb2e Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 14 二月 2025 10:08:32 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java |   88 +++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 83 insertions(+), 5 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
index 4839986..1db9f8b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
@@ -1,13 +1,17 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
 import com.zy.asrs.wms.asrs.entity.param.CreateOrderParam;
 import com.zy.asrs.wms.asrs.entity.param.UpdateOrderParam;
 import com.zy.asrs.wms.asrs.mapper.OrderMapper;
 import com.zy.asrs.wms.asrs.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.wms.utils.OrderUtils;
+import com.zy.asrs.wms.utils.Utils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -28,16 +32,40 @@
     private OrderDetlService orderDetlService;
     @Autowired
     private OrderDetlFieldService orderDetlFieldService;
+    @Autowired
+    private OrderNoRuleService orderNoRuleService;
+    @Autowired
+    private OrderUtils orderUtils;
+
+    @Override
+    @Transactional
+    public boolean createOrder(List<CreateOrderParam> list) {
+        for (CreateOrderParam orderParam : list) {
+            createOrder(orderParam);
+        }
+        return true;
+    }
 
     @Override
     @Transactional
     public boolean createOrder(CreateOrderParam param) {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
+        List<Order> orderList = this.list(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, param.getOrderNo()));
+        if (!orderList.isEmpty()) {
+            throw new CoolException("璁㈠崟宸插瓨鍦�");
+        }
+
+        String orderNo = param.getOrderNo();
+        if (Cools.isEmpty(param.getOrderNo())) {
+            orderNo = orderNoRuleService.getOrderNo(param.getOrderType().intValue());
+        }
+
         Order order = new Order();
-        order.setOrderNo(param.getOrderNo());
+        order.setOrderNo(orderNo);
         order.setOrderType(param.getOrderType());
-        order.setOrderSettle(param.getOrderSettle());
+        order.setOrderSettle(OrderSettleType.INIT.val());
+        order.setIoPri(orderUtils.getIoPri());
         order.setOrderTime(format.format(new Date()));
         order.setCreateTime(new Date());
         order.setCreateBy(9527L);
@@ -50,8 +78,14 @@
             double anfme = Double.parseDouble(map.get("anfme").toString());
             String batch = map.get("batch").toString();
             String matnr = map.get("matnr").toString();
-            Double qty = Double.parseDouble(map.get("qty").toString());
-            Double workQty = Double.parseDouble(map.get("workQty").toString());
+            Double qty = 0D;
+            Double workQty = 0D;
+            if (map.containsKey("qty")) {
+                qty = Double.parseDouble(map.get("qty").toString());
+            }
+            if (map.containsKey("workQty")) {
+                workQty = Double.parseDouble(map.get("workQty").toString());
+            }
             String memo = map.getOrDefault("memo", "").toString();
             Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr));
             if (mat == null) {
@@ -90,6 +124,11 @@
                 }
             }
 
+            orderDetl.setStockIndex(Utils.getMatUniqueKey(matnr, batch, orderDetl.getUniqueField()));
+            if (!orderDetlService.updateById(orderDetl)) {
+                throw new CoolException("鏇存柊鏄庣粏绱㈠紩澶辫触");
+            }
+
         }
 
         return true;
@@ -98,7 +137,14 @@
     @Override
     public boolean updateOrder(UpdateOrderParam param) {
         Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, param.getOrderId()));
-        order.setOrderNo(param.getOrderNo());
+        if (order == null) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+        }
+
+        if (order.getHasWave() == 1) {
+            throw new CoolException("璁㈠崟宸茬粡鐢熸垚娉㈡锛屾棤娉曚慨鏀�");
+        }
+
         order.setOrderType(param.getOrderType());
         order.setOrderSettle(param.getOrderSettle());
         order.setUpdateTime(new Date());
@@ -176,6 +222,11 @@
                 }
             }
 
+            orderDetl.setStockIndex(Utils.getMatUniqueKey(matnr, batch, orderDetl.getUniqueField()));
+            if (!orderDetlService.updateById(orderDetl)) {
+                throw new CoolException("鏇存柊鏄庣粏绱㈠紩澶辫触");
+            }
+
         }
 
         List<Long> deleteDetlId = param.getDeleteDetlId();
@@ -193,6 +244,11 @@
 
     @Override
     public boolean deleteOrder(Long orderId) {
+        Order order = this.getById(orderId);
+        if (order.getHasWave() == 1) {
+            throw new CoolException("璁㈠崟宸茬粡鐢熸垚娉㈡锛屽垹闄ゅけ璐�");
+        }
+
         //鍒犻櫎璁㈠崟
         this.removeById(orderId);
         //鍒犻櫎鏄庣粏
@@ -204,4 +260,26 @@
         }
         return true;
     }
+
+    @Override
+    public boolean checkOrderComplete(Long orderId) {
+        Order order = this.getById(orderId);
+        if (order == null) {
+            return false;
+        }
+
+        boolean complete = true;
+        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
+        if(orderDetls.isEmpty()) {
+            complete = false;
+        }
+
+        for (OrderDetl orderDetl : orderDetls) {
+            if (!orderDetl.getAnfme().equals(orderDetl.getQty())) {
+                complete = false;
+            }
+        }
+
+        return complete;
+    }
 }

--
Gitblit v1.9.1