From 11c95afd1e44bcd3d70dbcf77e790596ec80a53e Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 24 九月 2024 18:54:59 +0800
Subject: [PATCH] fix: 剔除加价限制条件
---
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