From a768dc3daa04d35fedfbe75c0a59b9b2545b85c4 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期四, 19 九月 2024 16:59:33 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master-v2'

---
 src/main/java/com/mzl/flower/service/payment/BillService.java |   47 +++++++++++++++++++++++++++++++----------------
 1 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/payment/BillService.java b/src/main/java/com/mzl/flower/service/payment/BillService.java
index fa0cb1c..65311be 100644
--- a/src/main/java/com/mzl/flower/service/payment/BillService.java
+++ b/src/main/java/com/mzl/flower/service/payment/BillService.java
@@ -42,6 +42,9 @@
     @Autowired
     private OrderItemSalesMapper orderItemSalesMapper;
 
+    @Autowired
+    private OrderItemSettlementMapper orderItemSettlementMapper;
+
     public Page<BillListDTO> selectBillList(Page page, BillQueryDTO dto){
         dto.setStart(parseLocalDate(dto.getStartDate()));
         dto.setEnd(parseLocalDate(dto.getEndDate()));
@@ -72,6 +75,7 @@
                 r.setDeductAmount(r.getDeductAmount().add(b.getDeductAmount()));
                 r.setSalesAmount(r.getSalesAmount().add(b.getSalesAmount()));
                 r.setProfitAmount(r.getProfitAmount().add(b.getProfitAmount()));
+                r.setMemberCouponAmount(r.getMemberCouponAmount().add(b.getMemberCouponAmount()));
             }
         }
 
@@ -136,24 +140,30 @@
         }
 
         //账单售后
-        List<OrderItemSales> sLs = orderItemSalesMapper.selectList(new QueryWrapper<OrderItemSales>()
+        /*List<OrderItemSales> sLs = orderItemSalesMapper.selectList(new QueryWrapper<OrderItemSales>()
+                .in("order_id", orderIdsAll));*/
+        List<OrderItemSettlement> sLs = orderItemSettlementMapper.selectList(new QueryWrapper<OrderItemSettlement>()
                 .in("order_id", orderIdsAll));
         Map<String, BigDecimal> salesMap = new HashMap<>();
+        Map<String, BigDecimal> deductMap = new HashMap<>();
         if(sLs != null && sLs.size() > 0){
-            for(OrderItemSales s : sLs){//同一个订单的同一个商品可能会多次理赔
-                prepareSalesAmount(s, null, null, salesMap);
+            for(OrderItemSettlement s : sLs){//同一个订单的同一个商品可能会多次理赔
+                salesMap.put(s.getOrderItemId(), s.getSalesFeePlatform());
+                deductMap.put(s.getOrderItemId(), s.getLackFeePlatform());
             }
         }
 
+
         String type = Constants.BILL_TYPE.partner.name();//账单类型
-        calculate(date, type, orderIdsPartner, orderMap, orderItemMap, salesMap);
+        calculate(date, type, orderIdsPartner, orderMap, orderItemMap, salesMap, deductMap);
 
         type = Constants.BILL_TYPE.personal.name();//账单类型
-        calculate(date, type, orderIdsPersonal, orderMap, orderItemMap, salesMap);
+        calculate(date, type, orderIdsPersonal, orderMap, orderItemMap, salesMap, deductMap);
     }
 
     public Bill calculate(LocalDate date, String type, List<String> orderIds, Map<String, Order> orderMap
-            , Map<String, List<OrderItem>> orderItemMap, Map<String, BigDecimal> salesMap){
+            , Map<String, List<OrderItem>> orderItemMap, Map<String, BigDecimal> salesMap
+            , Map<String, BigDecimal> deductMap){
         Bill bill = new Bill();
         bill.setId(UUIDGenerator.getUUID());
 
@@ -165,8 +175,9 @@
         BigDecimal markupOne = new BigDecimal(0);//区间加价
         BigDecimal markupTwo = new BigDecimal(0);//二次加价
         BigDecimal markupPartner = new BigDecimal(0);//合伙人加价
-        BigDecimal deductAmount = new BigDecimal(0);//质检退款
+        BigDecimal deductAmount = new BigDecimal(0);//质检退款(缺货)
         BigDecimal salesAmount = new BigDecimal(0);//售后退款
+        BigDecimal memberCouponAmount = new BigDecimal(0);//优惠券金额
         for(String orderId : orderIds){
             Order o = orderMap.get(orderId);
             orderAmount = orderAmount.add(o.getTotalAmount());
@@ -176,14 +187,16 @@
             for(OrderItem oi : items){
                 Integer n = oi.getNum();
                 supplierAmount = supplierAmount.add(oi.getSupplierPrice().multiply(new BigDecimal(n)));
-                markupOne = markupOne.add(oi.getMarkupOne().multiply(new BigDecimal(n)));
-                markupTwo = markupTwo.add((oi.getMarkupTwo() == null ? new BigDecimal(0) : oi.getMarkupTwo()).multiply(new BigDecimal(n)));
-                markupPartner = markupPartner.add((oi.getMarkupPartner() == null ? new BigDecimal(0) : oi.getMarkupPartner()).multiply(new BigDecimal(n)));
-                deductAmount = deductAmount.add(oi.getDeductAmount() == null ? new BigDecimal(0) : oi.getDeductAmount());
+                markupOne = markupOne.add(getAmount(oi.getMarkupOne()).multiply(new BigDecimal(n)));
+                markupTwo = markupTwo.add(getAmount(oi.getMarkupTwo()).multiply(new BigDecimal(n)));
+                markupPartner = markupPartner.add(getAmount(oi.getMarkupPartner()).multiply(new BigDecimal(n)));
+
+                salesAmount = salesAmount.add(getAmount(salesMap.get(oi.getId())));
+                deductAmount = deductAmount.add(getAmount(deductMap.get(oi.getId())));
                 num += n;
             }
-            BigDecimal ss = salesMap.get(orderId);
-            salesAmount = salesAmount.add(ss == null ? new BigDecimal(0) : ss);
+
+            memberCouponAmount = memberCouponAmount.add(getAmount(o.getMemberCouponAmount()));
 
             o.setBillId(bill.getId());
             orderMapper.updateById(o);
@@ -200,13 +213,15 @@
         bill.setMarkupPartner(markupPartner);
         bill.setDeductAmount(deductAmount);
         bill.setSalesAmount(salesAmount);
+        bill.setMemberCouponAmount(memberCouponAmount);
         bill.setBillDate(date);
 
-        //合伙人:利润=售价-底价(花农上架价格)-打包、运费(订单管理手输)-合伙人加价-平台罚款
-        //散户:利润=售价-底价(花农上架价格)-运费-平台罚款
+        //合伙人:利润=售价-底价(花农上架价格)-打包、运费(订单管理手输)-合伙人加价-平台罚款-质检(缺货)-优惠券
+        //散户:利润=售价-底价(花农上架价格)-运费-平台罚款-质检(缺货)-优惠券
         //其实都一样的计算方式
         BigDecimal profitAmount = orderAmount.subtract(supplierAmount)
-                .subtract(markupPartner).subtract(salesAmount).subtract(packingFee).subtract(transportFee);//利润合计
+                .subtract(markupPartner).subtract(salesAmount).subtract(packingFee).subtract(transportFee)
+                .subtract(deductAmount).subtract(memberCouponAmount);//利润合计
         bill.setProfitAmount(profitAmount);
 
         bill.create();

--
Gitblit v1.9.3