From c6c9b7d3baa822765768c110304d27623f946286 Mon Sep 17 00:00:00 2001
From: pjb <123456>
Date: 星期二, 15 七月 2025 14:29:09 +0800
Subject: [PATCH] `1`
---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java | 543 +++++++++++++++++++++++++++++++-----------------------
1 files changed, 310 insertions(+), 233 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 b7dbae7..240c693 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,233 +1,310 @@
-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");
-
- List<Order> orderList = this.list(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, param.getOrderNo()));
- if (!orderList.isEmpty()) {
- throw new CoolException("璁㈠崟宸插瓨鍦�");
- }
-
- 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();
- 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 = 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("璁㈠崟鏄庣粏鎵╁睍瀛楁鍒涘缓澶辫触");
- }
- }
- }
-
- }
-
- return true;
- }
-
- @Override
- public boolean updateOrder(UpdateOrderParam param) {
- Order order = this.getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, param.getOrderId()));
- 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("璁㈠崟鏄庣粏鎵╁睍瀛楁淇敼澶辫触");
- }
- }
- }
-
- }
-
- 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;
- }
-
- @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;
- }
-}
+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.enums.OrderType;
+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.*;
+
+@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;
+ @Autowired
+ private WaitPakinService waitPakinService;
+
+ @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.setCustomer(param.getCustomer());
+ order.setPhone(param.getPhone());
+ order.setAddress(param.getAddress());
+ 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("鏇存柊鏄庣粏绱㈠紩澶辫触");
+ }
+
+ mat.setUtiliz(Objects.isNull(mat.getUtiliz()) ? 0 : mat.getUtiliz() + 1);
+
+ if (!matService.updateById(mat)) {
+ 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("璁㈠崟宸茬粡鐢熸垚娉㈡锛屽垹闄ゅけ璐�");
+ }
+
+ List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getOrderId, orderId));
+ if (!waitPakins.isEmpty()) {
+ 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