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