From 478546850c145257f41c04c44a471ba2741216b6 Mon Sep 17 00:00:00 2001
From: Cui Zhi Feng <7426394+wuxixiaocui@user.noreply.gitee.com>
Date: 星期四, 05 九月 2024 09:10:17 +0800
Subject: [PATCH] 账单计算
---
src/main/java/com/mzl/flower/service/payment/BillService.java | 45 ++++++++++++++++++++++++++++++---------------
src/main/resources/script/db-v2.sql | 2 ++
src/main/java/com/mzl/flower/dto/response/payment/BillListDTO.java | 2 ++
src/main/表设计.xlsx | 0
src/main/java/com/mzl/flower/entity/payment/Bill.java | 2 ++
5 files changed, 36 insertions(+), 15 deletions(-)
diff --git a/src/main/java/com/mzl/flower/dto/response/payment/BillListDTO.java b/src/main/java/com/mzl/flower/dto/response/payment/BillListDTO.java
index bddb0c6..7bd6e0d 100644
--- a/src/main/java/com/mzl/flower/dto/response/payment/BillListDTO.java
+++ b/src/main/java/com/mzl/flower/dto/response/payment/BillListDTO.java
@@ -48,4 +48,6 @@
@ApiModelProperty(value = "账单日期")
private LocalDate billDate;
+ @ApiModelProperty(value = "优惠券金额")
+ private BigDecimal memberCouponAmount = new BigDecimal(0);
}
diff --git a/src/main/java/com/mzl/flower/entity/payment/Bill.java b/src/main/java/com/mzl/flower/entity/payment/Bill.java
index 1ab9565..6b12059 100644
--- a/src/main/java/com/mzl/flower/entity/payment/Bill.java
+++ b/src/main/java/com/mzl/flower/entity/payment/Bill.java
@@ -51,4 +51,6 @@
@TableField("bill_date")
private LocalDate billDate;//账单日期
+ @TableField("member_coupon_amount")
+ private BigDecimal memberCouponAmount;//优惠券金额
}
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..84b7675 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());
@@ -177,13 +188,15 @@
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());
+ 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();
diff --git a/src/main/resources/script/db-v2.sql b/src/main/resources/script/db-v2.sql
index 12c75ef..1f28c6e 100644
--- a/src/main/resources/script/db-v2.sql
+++ b/src/main/resources/script/db-v2.sql
@@ -16,6 +16,8 @@
INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('POINT_GOODS_STATUS_A','POINT_GOODS_STATUS','A','上架','上架',1,'A');
INSERT INTO t_code_value(ID,TYPE_CODE,VALUE,LABEL,DESCRIPTION,SEQ,STATUS) VALUES ('POINT_GOODS_STATUS_I','POINT_GOODS_STATUS','I','下架','下架',2,'A');
+ALTER TABLE `t_bill` ADD `member_coupon_amount` DECIMAL(11,2) COMMENT '优惠券金额';
+
diff --git "a/src/main/\350\241\250\350\256\276\350\256\241.xlsx" "b/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
index 1eb580f..1233e42 100644
--- "a/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
+++ "b/src/main/\350\241\250\350\256\276\350\256\241.xlsx"
Binary files differ
--
Gitblit v1.9.3