From c635d78b479510ebe2556a420948effcd30a0731 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期六, 21 十二月 2024 18:40:43 +0800 Subject: [PATCH] 新建德森项目分支 --- zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java | 583 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 298 insertions(+), 285 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 1db9f8b..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,285 +1,298 @@ -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; - -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; - @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; - } -} +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