Cui Zhi Feng
2024-09-19 81dc260639dfd5ad58a5ffc803d7a86c308abf28
src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
@@ -274,6 +274,8 @@
        dto.setParams(parseArray(oi.getFlowerParams(), ParamItemDTO.class));
        dto.setNum(oi.getNum());
        return dto;
    }
@@ -308,6 +310,8 @@
        dto.setFlowerCategory(oi.getFlowerCategory());
        dto.setParams(parseArray(oi.getFlowerParams(), ParamItemDTO.class));
        dto.setNum(oi.getNum());
        return dto;
    }
@@ -406,7 +410,7 @@
        );
        if (count == 0) {
            Order o = orderMapper.selectById(orderId);
            if(!Constants.ORDER_STATUS_BACKEND.COLLECTION.name().equals(o.getStatus())){
            if(!Constants.ORDER_STATUS_BACKEND.COLLECTION.name().equals(o.getStatusBackend())){
                log.warn("非待集货状态,不可设置待发货");
                return;
            }
@@ -607,7 +611,7 @@
        return dto;
    }
    public OrderItemCheckNumDTO getOtherCheck(String itemId, String type){
    public OrderItemCheckNumDTO getOtherCheck(String itemId, String type, boolean isSupplier){
        OrderItemCheck c = orderItemCheckMapper.selectOne(new QueryWrapper<OrderItemCheck>()
                .eq("type", type)
                .eq("order_item_id", itemId)
@@ -619,6 +623,12 @@
            BeanUtils.copyProperties(c, dto);
            User user = userMapper.selectById(c.getCreateBy());
            dto.setCreateName(user.getNickName());
            if(Constants.CHECK_TYPE.lack.name().equals(c.getType()) && isSupplier){
                OrderItem oi = orderItemMapper.selectById(itemId);
                BigDecimal lackFeeSupplier = oi.getSupplierPrice().multiply(new BigDecimal(c.getNum()));
                dto.setDeductAmount(lackFeeSupplier);
            }
        }
        return dto;
@@ -663,13 +673,19 @@
            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()));
            //质检退款,按照这个单价扣,如果3扎都缺货,按照总的金额退
            //缺货数量等于商品总数时按真实总价退款
            if(dto.getNum().intValue() == oi.getNum() && oi.getRealTotal() != null){
                deduct = oi.getRealTotal();
            }
        } 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()){
            if(deduct.doubleValue() > dt.doubleValue()
                    || (oi.getRealTotal() != null && deduct.doubleValue() > oi.getRealTotal().doubleValue())){
                throw new ValidationException("降级金额不能大于商品处理数量金额");
            }
        }