From 32b4f1698970ff646811766f7d91a555e7d6a850 Mon Sep 17 00:00:00 2001 From: gongzuming <gongzuming> Date: 星期二, 10 九月 2024 07:07:15 +0800 Subject: [PATCH] 质检异常问题 --- src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java | 49 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java index 1e503f0..4f67bd0 100644 --- a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java +++ b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java @@ -590,13 +590,38 @@ if(dto.getNum() > oi.getNum()){ throw new ValidationException("处理数量不能大于商品数量"); } - BigDecimal deduct = deductAmount; - if(deduct == null){ - deduct = new BigDecimal(0); - if(Constants.CHECK_TYPE.replace.name().equals(dto.getType())){ - deduct = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum())); - } else if(Constants.CHECK_TYPE.lack.name().equals(dto.getType())){ - deduct = oi.getPrice().multiply(new BigDecimal(dto.getNum())); + + List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>() + .ne("type", dto.getType()) + .eq("order_item_id", dto.getOrderItemId()) + ); + int otherNum = 0; + if(cLs != null && cLs.size() > 0){ + for(OrderItemCheck c : cLs){ + if(Constants.CHECK_AUDIT_STATUS.REJECTED.name().equals(c.getAuditStatus())){ + continue; + } + otherNum += c.getNum(); + } + } + if(otherNum + dto.getNum() > oi.getNum()){ + throw new ValidationException("处理总数量不能大于商品数量"); + } + + BigDecimal deduct = new BigDecimal(0); + BigDecimal realPrice = oi.getRealPrice()==null?new BigDecimal(0):oi.getRealPrice(); + if(Constants.CHECK_TYPE.replace.name().equals(dto.getType())){ + deduct = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum())); + } else if(Constants.CHECK_TYPE.lack.name().equals(dto.getType())){ + deduct = realPrice.multiply(new BigDecimal(dto.getNum())); + } else if (Constants.CHECK_TYPE.reduce.name().equals(dto.getType())) { + if(deductAmount == null){ + throw new ValidationException("降级金额不能为空"); + } + deduct = deductAmount.multiply(new BigDecimal(dto.getNum())); + BigDecimal dt = realPrice.multiply(new BigDecimal(dto.getNum())); + if(deduct.doubleValue() > dt.doubleValue()){ + throw new ValidationException("降级金额不能大于商品处理数量金额"); } } @@ -605,8 +630,8 @@ .eq("order_item_id", dto.getOrderItemId()) ); if(c != null){ - if(StringUtils.isNotEmpty(c.getAuditStatus())){ - throw new ValidationException("已审核,不可修改"); + if(Constants.CHECK_AUDIT_STATUS.AGREED.name().equals(c.getAuditStatus())){ + throw new ValidationException("已审核通过,不可修改"); } c.setCheckTime(LocalDateTime.now()); c.setNum(dto.getNum()); @@ -614,6 +639,8 @@ c.setPictures(toJSONString(pictureList)); c.setTargetLevel(targetLevel); c.setDeductAmount(deduct); + c.setAuditStatus(null); + c.setAuditTime(null); c.update(SecurityUtils.getUserId()); orderItemCheckMapper.updateById(c); } else { @@ -633,7 +660,7 @@ } } - public void checkOrderItemStatus(String id){ + public String checkOrderItemStatus(String id){ OrderItem oi = orderItemMapper.selectById(id); List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>() .eq("order_item_id", id) @@ -664,6 +691,8 @@ deliveryOrderMapper.updateById(d); } } + + return oi.getOrderId(); } public void deleteCheckInfo(String itemId, String type){ -- Gitblit v1.9.3