From 4b1ba7d2753178e44edc970f4a2af37e56c85d3b Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <cuizf@fengyuntec.com>
Date: 星期日, 22 九月 2024 16:01:57 +0800
Subject: [PATCH] 质检售后 验证和新增返回字段

---
 src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java |    9 +++++++++
 src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java     |   35 +++++++++++++++++++++++++++++++++++
 src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java      |    8 ++++++--
 src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java     |    6 ++++++
 src/main/resources/mapper/payment/OrderMapper.xml                           |    1 +
 5 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
index 4a08e76..131ee9a 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemListDTO.java
@@ -68,4 +68,10 @@
 
     @ApiModelProperty(value = "缺货数量")
     private Integer lackNum;
+
+    @ApiModelProperty(value = "优惠券总金额")
+    private BigDecimal couponAmountTotal;
+
+    @ApiModelProperty(value = "真实成交总价格")
+    private BigDecimal realTotal;
 }
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java
index f55e432..a91666f 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/OrderItemSalesNewDTO.java
@@ -37,4 +37,13 @@
     @ApiModelProperty(value = "下单时间")
     private LocalDateTime orderTime;
 
+    @ApiModelProperty(value = "降级数量")
+    private Integer reduceNum;
+
+    @ApiModelProperty(value = "降级金额")
+    private BigDecimal reduceAmount;
+
+    @ApiModelProperty(value = "补货数量")
+    private Integer replaceNum;
+
 }
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 8ee01c1..cebb508 100644
--- a/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/DeliveryOrderService.java
@@ -573,7 +573,7 @@
         orderItemSettlementService.saveItemSettlementInfo(oi, SecurityUtils.getUserId(), Constants.S_TYPE.CHECK);
     }
 
-    private BigDecimal calculateOrderItemDeduct(String id){
+    public BigDecimal calculateOrderItemDeduct(String id){
         List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>()
                 .eq("order_item_id", id)
                 .eq("audit_status", Constants.CHECK_AUDIT_STATUS.AGREED.name())
@@ -696,7 +696,11 @@
             BigDecimal dt = realPrice.multiply(new BigDecimal(dto.getNum()));
             if(deduct.doubleValue() > dt.doubleValue()
                     || (oi.getRealTotal() != null && deduct.doubleValue() > oi.getRealTotal().doubleValue())){
-                throw new ValidationException("降级金额不能大于商品处理数量金额");
+                throw new ValidationException("降级金额不能大于商品处理数量的支付的金额");
+            }
+            BigDecimal st = oi.getSupplierPrice().multiply(new BigDecimal(dto.getNum()));
+            if(deduct.doubleValue() > st.doubleValue()){
+                throw new ValidationException("降级金额不能大于商品处理数量的供应商的金额");
             }
         }
 
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
index ba34055..11ee635 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderItemSalesService.java
@@ -67,6 +67,9 @@
     @Autowired
     private OrderItemCheckMapper orderItemCheckMapper;
 
+    @Autowired
+    private DeliveryOrderService deliveryOrderService;
+
     public String createSales(OrderItemSalesCreateDTO dto){
         Integer num = dto.getNum();
         if(num == null || num == 0){
@@ -295,6 +298,27 @@
             rr.setStationName(s.getName());
         }
 
+        List<OrderItemCheck> cLs = orderItemCheckMapper.selectList(new QueryWrapper<OrderItemCheck>()
+                .eq("order_item_id", oi.getId())
+                .eq("audit_status", Constants.CHECK_AUDIT_STATUS.AGREED.name())
+        );
+        int reduceNum = 0;
+        BigDecimal reduceAmount = new BigDecimal(0);
+        int replaceNum = 0;
+        if(cLs != null && cLs.size() > 0){
+            for(OrderItemCheck c : cLs){
+                if(Constants.CHECK_TYPE.reduce.name().equals(c.getType())){
+                    reduceNum += c.getNum();
+                    reduceAmount = reduceAmount.add(c.getDeductAmount());
+                } else if(Constants.CHECK_TYPE.replace.name().equals(c.getType())){
+                    replaceNum += c.getNum();
+                }
+            }
+        }
+        rr.setReduceNum(reduceNum);
+        rr.setReduceAmount(reduceAmount);
+        rr.setReplaceNum(replaceNum);
+
         return rr;
     }
 
@@ -313,6 +337,11 @@
         }
 
         BigDecimal feeSupplier = getAmount(dto.getFeeSupplier());
+        BigDecimal supplierTotal = oi.getSupplierPrice().multiply(new BigDecimal(sl.getNum()));
+        if(feeSupplier.doubleValue() > supplierTotal.doubleValue()){
+            throw new ValidationException("供应商扣款金额不能大于商品申请数量的供应商售价");
+        }
+
         BigDecimal feePartner = getAmount(dto.getFeePartner());
         BigDecimal feePlatform = getAmount(dto.getFeePlatform());
         BigDecimal feePlatformPack = getAmount(dto.getFeePlatformPack());
@@ -342,6 +371,12 @@
             throw new ValidationException("退款总金额不能大于商品总价");
         }
 
+        BigDecimal deduct = deliveryOrderService.calculateOrderItemDeduct(sl.getOrderItemId());//质检已扣款金额
+        preFee = preFee.add(deduct);
+        if(preFee.doubleValue() > oi.getRealTotal().doubleValue()){
+            throw new ValidationException("退款总金额(包含质检退款)不能大于商品总价");
+        }
+
         sl.setRemarks(dto.getRemarks());
         sl.setFeeSupplier(feeSupplier);
         sl.setFeePartner(feePartner);
diff --git a/src/main/resources/mapper/payment/OrderMapper.xml b/src/main/resources/mapper/payment/OrderMapper.xml
index 6639b8c..8d5e6e0 100644
--- a/src/main/resources/mapper/payment/OrderMapper.xml
+++ b/src/main/resources/mapper/payment/OrderMapper.xml
@@ -133,6 +133,7 @@
                 and (oi.status = 'reduce' or oi.status = 'abnormal')
             )
             and q.transfer_id is null
+            and q.status in ('COLLECTION', 'SEND')
         </if>
         <if test="condition.billId != null and condition.billId != ''">
             AND q.bill_id = #{condition.billId}

--
Gitblit v1.9.3