From d0226747665355acecd5b4f2b5c0beb020586729 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 17 一月 2025 15:37:32 +0800
Subject: [PATCH] # 23. PDA拣货单据,勾选或点击确认按钮后,完成当前单据 (已完成) 24. PDA出库成功后,界面数据重置,避免重复操作  (已修复) 25. PDA接口请求,添加一个Loading遮档  (已修复) 27. 非平库单据,在平库可做入库操作  (已修复) 28. 平库已组拖数据,组拖完成后依然可组拖  (已修复) 29. 平库入库后,订单明细没有添加(已修复) 30. 平库入库后,单据类型没有修改(已修复) 31. 没有绑定播种位,不能进行播种,前后端都需加判定(已修复) 33. 平库入库未修改入库已完成数量(已修复) 34. cacheSite缓存站点逻辑需重新梳理,入库生成波次时(已完成) 35. PDA添加发货确认,默认全选 (已修复) 36. 大屏获取任务时,是由容器到达的拖盘码确认通知 (已修复) 37. 拣货单序号不显示 问题修复 (已修复) 42. pda发货确认,添加不同颜色区分是否全部完成拣货,绿色全部拣货完成,红色完成部分拣货(已修复) 43. CTU入库完成后,订单明细没有删除,执行中数量清空(已修复) 44. 平库入库完成后,历史档明细完成数量没有更新 (已修复) 45. PDA料号不显示  (已修复) 46. 发货完成后,波次管理数据未加入历史档 (已修复)

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java |  499 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 298 insertions(+), 201 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 d00cda0..302f67a 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,201 +1,298 @@
-package com.zy.asrs.wms.asrs.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.zy.asrs.framework.exception.CoolException;
-import com.zy.asrs.wms.asrs.entity.*;
-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 org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-
-@Service("orderService")
-public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
-
-    @Autowired
-    private MatService matService;
-    @Autowired
-    private MatFieldService matFieldService;
-    @Autowired
-    private OrderDetlService orderDetlService;
-    @Autowired
-    private OrderDetlFieldService orderDetlFieldService;
-
-    @Override
-    @Transactional
-    public boolean createOrder(CreateOrderParam param) {
-        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-
-        Order order = new Order();
-        order.setOrderNo(param.getOrderNo());
-        order.setOrderType(param.getOrderType());
-        order.setOrderSettle(param.getOrderSettle());
-        order.setOrderTime(format.format(new Date()));
-        order.setCreateTime(new Date());
-        order.setCreateBy(9527L);
-        boolean result = this.save(order);
-        if (!result) {
-            throw new CoolException("鐢熸垚璁㈠崟澶辫触");
-        }
-
-        for (HashMap<String, Object> map : param.getList()) {
-            double anfme = Double.parseDouble(map.get("anfme").toString());
-            String batch = map.get("batch").toString();
-            String matnr = map.get("matnr").toString();
-            String memo = map.getOrDefault("memo", "").toString();
-            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr));
-            if (mat == null) {
-                throw new CoolException(matnr + "鐗╂枡涓嶅瓨鍦�");
-            }
-
-            OrderDetl orderDetl = new OrderDetl();
-            orderDetl.setOrderId(order.getId());
-            orderDetl.setOrderNo(order.getOrderNo());
-            orderDetl.setAnfme(anfme);
-            orderDetl.setQty(0D);
-            orderDetl.setWorkQty(0D);
-            orderDetl.setBatch(batch);
-            orderDetl.setMatId(mat.getId());
-            orderDetl.setMemo(memo);
-            orderDetl.setCreateTime(new Date());
-            orderDetl.setCreateBy(9527L);
-            boolean save = orderDetlService.save(orderDetl);
-            if (!save) {
-                throw new CoolException("璁㈠崟鏄庣粏鍒涘缓澶辫触");
-            }
-
-            //鑾峰彇鎵╁睍瀛楁
-            List<MatField> matFields = matFieldService.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
-            for (MatField matField : matFields) {
-                if (map.containsKey(matField.getName())) {
-                    OrderDetlField fieldValue = new OrderDetlField();
-                    fieldValue.setDetlId(orderDetl.getId());
-                    fieldValue.setFieldId(matField.getId());
-                    fieldValue.setName(matField.getName());
-                    fieldValue.setValue(map.get(matField.getName()).toString());
-                    boolean save1 = orderDetlFieldService.save(fieldValue);
-                    if (!save1) {
-                        throw new CoolException("璁㈠崟鏄庣粏鎵╁睍瀛楁鍒涘缓澶辫触");
-                    }
-                }
-            }
-
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean updateOrder(UpdateOrderParam param) {
-        Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, param.getOrderNo()));
-        order.setOrderNo(param.getOrderNo());
-        order.setOrderType(param.getOrderType());
-        order.setOrderSettle(param.getOrderSettle());
-        order.setUpdateTime(new Date());
-        order.setUpdateBy(9527L);
-        boolean result = this.updateById(order);
-        if (!result) {
-            throw new CoolException("淇敼璁㈠崟澶辫触");
-        }
-
-        for (HashMap<String, Object> map : param.getList()) {
-            double anfme = Double.parseDouble(map.get("anfme").toString());
-            String batch = map.get("batch").toString();
-            String matnr = map.get("matnr").toString();
-            String memo = map.getOrDefault("memo", "").toString();
-            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr));
-            if (mat == null) {
-                throw new CoolException(matnr + "鐗╂枡涓嶅瓨鍦�");
-            }
-
-            OrderDetl orderDetl = null;
-            if (map.containsKey("detlId")) {
-                orderDetl = orderDetlService.getById(map.get("detlId").toString());
-            }
-
-            if(orderDetl == null) {
-                orderDetl = new OrderDetl();
-                orderDetl.setOrderId(order.getId());
-                orderDetl.setOrderNo(order.getOrderNo());
-                orderDetl.setAnfme(anfme);
-                orderDetl.setQty(0D);
-                orderDetl.setWorkQty(0D);
-                orderDetl.setBatch(batch);
-                orderDetl.setMatId(mat.getId());
-                orderDetl.setMemo(memo);
-                orderDetl.setCreateTime(new Date());
-                orderDetl.setCreateBy(9527L);
-            }else {
-                orderDetl.setOrderNo(order.getOrderNo());
-                orderDetl.setAnfme(anfme);
-                orderDetl.setBatch(batch);
-                orderDetl.setMemo(memo);
-                orderDetl.setUpdateTime(new Date());
-                orderDetl.setUpdateBy(9527L);
-            }
-            boolean save = orderDetlService.saveOrUpdate(orderDetl);
-            if (!save) {
-                throw new CoolException("璁㈠崟鏄庣粏淇敼澶辫触");
-            }
-
-            //鑾峰彇鎵╁睍瀛楁
-            List<MatField> matFields = matFieldService.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
-            for (MatField matField : matFields) {
-                if (map.containsKey(matField.getName())) {
-                    OrderDetlField fieldValue = orderDetlFieldService.getOne(new LambdaQueryWrapper<OrderDetlField>()
-                            .eq(OrderDetlField::getDetlId, orderDetl.getId())
-                            .eq(OrderDetlField::getFieldId, matField.getId()));
-                    if (fieldValue == null) {
-                        fieldValue = new OrderDetlField();
-                        fieldValue.setDetlId(orderDetl.getId());
-                        fieldValue.setFieldId(matField.getId());
-                        fieldValue.setName(matField.getName());
-                        fieldValue.setValue(map.get(matField.getName()).toString());
-                    }else {
-                        fieldValue.setValue(map.get(matField.getName()).toString());
-                    }
-
-                    boolean save1 = orderDetlFieldService.saveOrUpdate(fieldValue);
-                    if (!save1) {
-                        throw new CoolException("璁㈠崟鏄庣粏鎵╁睍瀛楁淇敼澶辫触");
-                    }
-                }
-            }
-
-        }
-
-        List<Long> deleteDetlId = param.getDeleteDetlId();
-        if (!deleteDetlId.isEmpty()) {
-            for (Long detlId : deleteDetlId) {
-                //鍒犻櫎鏄庣粏
-                orderDetlService.removeById(detlId);
-                //鍒犻櫎鏄庣粏瀵瑰簲鐨勬墿灞曞瓧娈�
-                orderDetlFieldService.remove(new LambdaQueryWrapper<OrderDetlField>().eq(OrderDetlField::getDetlId, detlId));
-            }
-        }
-
-        return true;
-    }
-
-    @Override
-    public boolean deleteOrder(Long orderId) {
-        //鍒犻櫎璁㈠崟
-        this.removeById(orderId);
-        //鍒犻櫎鏄庣粏
-        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
-        for (OrderDetl orderDetl : orderDetls) {
-            orderDetlService.removeById(orderDetl.getId());//鍒犻櫎鏄庣粏
-            //鍒犻櫎鏄庣粏瀵瑰簲鐨勬墿灞曞瓧娈�
-            orderDetlFieldService.remove(new LambdaQueryWrapper<OrderDetlField>().eq(OrderDetlField::getDetlId, orderDetl.getId()));
-        }
-        return true;
-    }
-}
+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.dto.OrderInfoDto;
+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 io.netty.util.internal.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+@Service("orderService")
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
+
+    @Autowired
+    private MatService matService;
+    @Autowired
+    private MatFieldService matFieldService;
+    @Autowired
+    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(orderNo);
+        order.setOrderType(param.getOrderType());
+        order.setOrderSettle(OrderSettleType.INIT.val());
+        order.setIoPri(orderUtils.getIoPri());
+        order.setOrderTime(format.format(new Date()));
+        order.setCreateTime(new Date());
+        order.setCreateBy(9527L);
+        boolean result = this.save(order);
+        if (!result) {
+            throw new CoolException("鐢熸垚璁㈠崟澶辫触");
+        }
+
+        for (HashMap<String, Object> map : param.getList()) {
+            double anfme = Double.parseDouble(map.get("anfme").toString());
+            String batch = map.get("batch").toString();
+            String matnr = map.get("matnr").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) {
+                throw new CoolException(matnr + "鐗╂枡涓嶅瓨鍦�");
+            }
+
+            OrderDetl orderDetl = new OrderDetl();
+            orderDetl.setOrderId(order.getId());
+            orderDetl.setOrderNo(order.getOrderNo());
+            orderDetl.setAnfme(anfme);
+            orderDetl.setQty(qty);
+            orderDetl.setWorkQty(workQty);
+            orderDetl.setBatch(batch);
+            orderDetl.setMatId(mat.getId());
+            orderDetl.setMemo(memo);
+            orderDetl.setCreateTime(new Date());
+            orderDetl.setCreateBy(9527L);
+            boolean save = orderDetlService.save(orderDetl);
+            if (!save) {
+                throw new CoolException("璁㈠崟鏄庣粏鍒涘缓澶辫触");
+            }
+
+            //鑾峰彇鎵╁睍瀛楁
+            List<MatField> matFields = matFieldService.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
+            for (MatField matField : matFields) {
+                if (map.containsKey(matField.getName())) {
+                    OrderDetlField fieldValue = new OrderDetlField();
+                    fieldValue.setDetlId(orderDetl.getId());
+                    fieldValue.setFieldId(matField.getId());
+                    fieldValue.setName(matField.getName());
+                    fieldValue.setValue(map.get(matField.getName()).toString());
+                    boolean save1 = orderDetlFieldService.save(fieldValue);
+                    if (!save1) {
+                        throw new CoolException("璁㈠崟鏄庣粏鎵╁睍瀛楁鍒涘缓澶辫触");
+                    }
+                }
+            }
+
+            orderDetl.setStockIndex(Utils.getMatUniqueKey(matnr, batch, orderDetl.getUniqueField()));
+            if (!orderDetlService.updateById(orderDetl)) {
+                throw new CoolException("鏇存柊鏄庣粏绱㈠紩澶辫触");
+            }
+
+        }
+
+        return true;
+    }
+
+    @Override
+    public boolean updateOrder(UpdateOrderParam param) {
+        Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, param.getOrderId()));
+        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());
+        order.setUpdateBy(9527L);
+        boolean result = this.updateById(order);
+        if (!result) {
+            throw new CoolException("淇敼璁㈠崟澶辫触");
+        }
+
+        for (HashMap<String, Object> map : param.getList()) {
+            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());
+            String memo = map.getOrDefault("memo", "").toString();
+            Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, matnr));
+            if (mat == null) {
+                throw new CoolException(matnr + "鐗╂枡涓嶅瓨鍦�");
+            }
+
+            OrderDetl orderDetl = null;
+            if (map.containsKey("detlId")) {
+                orderDetl = orderDetlService.getById(map.get("detlId").toString());
+            }
+
+            if(orderDetl == null) {
+                orderDetl = new OrderDetl();
+                orderDetl.setOrderId(order.getId());
+                orderDetl.setOrderNo(order.getOrderNo());
+                orderDetl.setAnfme(anfme);
+                orderDetl.setQty(0D);
+                orderDetl.setWorkQty(0D);
+                orderDetl.setBatch(batch);
+                orderDetl.setMatId(mat.getId());
+                orderDetl.setMemo(memo);
+                orderDetl.setCreateTime(new Date());
+                orderDetl.setCreateBy(9527L);
+            }else {
+                orderDetl.setOrderNo(order.getOrderNo());
+                orderDetl.setAnfme(anfme);
+                orderDetl.setQty(qty);
+                orderDetl.setWorkQty(workQty);
+                orderDetl.setBatch(batch);
+                orderDetl.setMemo(memo);
+                orderDetl.setUpdateTime(new Date());
+                orderDetl.setUpdateBy(9527L);
+            }
+            boolean save = orderDetlService.saveOrUpdate(orderDetl);
+            if (!save) {
+                throw new CoolException("璁㈠崟鏄庣粏淇敼澶辫触");
+            }
+
+            //鑾峰彇鎵╁睍瀛楁
+            List<MatField> matFields = matFieldService.list(new LambdaQueryWrapper<MatField>().eq(MatField::getFieldType, 1));
+            for (MatField matField : matFields) {
+                if (map.containsKey(matField.getName())) {
+                    OrderDetlField fieldValue = orderDetlFieldService.getOne(new LambdaQueryWrapper<OrderDetlField>()
+                            .eq(OrderDetlField::getDetlId, orderDetl.getId())
+                            .eq(OrderDetlField::getFieldId, matField.getId()));
+                    if (fieldValue == null) {
+                        fieldValue = new OrderDetlField();
+                        fieldValue.setDetlId(orderDetl.getId());
+                        fieldValue.setFieldId(matField.getId());
+                        fieldValue.setName(matField.getName());
+                        fieldValue.setValue(map.get(matField.getName()).toString());
+                    }else {
+                        fieldValue.setValue(map.get(matField.getName()).toString());
+                    }
+
+                    boolean save1 = orderDetlFieldService.saveOrUpdate(fieldValue);
+                    if (!save1) {
+                        throw new CoolException("璁㈠崟鏄庣粏鎵╁睍瀛楁淇敼澶辫触");
+                    }
+                }
+            }
+
+            orderDetl.setStockIndex(Utils.getMatUniqueKey(matnr, batch, orderDetl.getUniqueField()));
+            if (!orderDetlService.updateById(orderDetl)) {
+                throw new CoolException("鏇存柊鏄庣粏绱㈠紩澶辫触");
+            }
+
+        }
+
+        List<Long> deleteDetlId = param.getDeleteDetlId();
+        if (!deleteDetlId.isEmpty()) {
+            for (Long detlId : deleteDetlId) {
+                //鍒犻櫎鏄庣粏
+                orderDetlService.removeById(detlId);
+                //鍒犻櫎鏄庣粏瀵瑰簲鐨勬墿灞曞瓧娈�
+                orderDetlFieldService.remove(new LambdaQueryWrapper<OrderDetlField>().eq(OrderDetlField::getDetlId, detlId));
+            }
+        }
+
+        return true;
+    }
+
+    @Override
+    public boolean deleteOrder(Long orderId) {
+        Order order = this.getById(orderId);
+        if (order.getHasWave() == 1) {
+            throw new CoolException("璁㈠崟宸茬粡鐢熸垚娉㈡锛屽垹闄ゅけ璐�");
+        }
+
+        //鍒犻櫎璁㈠崟
+        this.removeById(orderId);
+        //鍒犻櫎鏄庣粏
+        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
+        for (OrderDetl orderDetl : orderDetls) {
+            orderDetlService.removeById(orderDetl.getId());//鍒犻櫎鏄庣粏
+            //鍒犻櫎鏄庣粏瀵瑰簲鐨勬墿灞曞瓧娈�
+            orderDetlFieldService.remove(new LambdaQueryWrapper<OrderDetlField>().eq(OrderDetlField::getDetlId, orderDetl.getId()));
+        }
+        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;
+    }
+
+    @Override
+    public Order selectByBarcode(String barcode) {
+        return this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, barcode), false);
+    }
+
+    @Override
+    public List<OrderInfoDto> getDetlForOrderId(Long id) {
+        return this.baseMapper.getDetlForOrderId(id);
+    }
+}

--
Gitblit v1.9.1