From d2230c638cc57b7dc4fa4570e79cbc93107926b0 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 24 十月 2024 15:44:38 +0800
Subject: [PATCH] 合并代码
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 70 ++++++++++++++++++++++------------
1 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index 3e1118a..be18d9b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -1275,12 +1275,12 @@
List<ChargingOrderListVO> list = this.baseMapper.chargingList(pageInfo,dto,startTime1,startTime2,endTime1,endTime2);
for (ChargingOrderListVO chargingOrderListVO : list) {
chargingOrderListVO.setChargingCapacity(chargingOrderListVO.getElectricity());
- chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getOrderAmount());
+ chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getPaymentAmount());
BigDecimal bigDecimal = new BigDecimal("0.006");
if (chargingOrderListVO.getServiceCharge()!=null){
chargingOrderListVO.setCommissionAmount(chargingOrderListVO.getServiceCharge().multiply(bigDecimal));
}
- chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount().subtract(chargingOrderListVO.getResidualAmount()));
+ chargingOrderListVO.setPaymentAmount(chargingOrderListVO.getResidualAmount()==null?chargingOrderListVO.getPaymentAmount():chargingOrderListVO.getPaymentAmount());
chargingOrderListVO.setUid(chargingOrderListVO.getId()+"");
List<Integer> integers = new ArrayList<>();
integers.add(chargingOrderListVO.getSiteId());
@@ -1404,7 +1404,7 @@
for (ChargingOrderListVO chargingOrderListVO : list1) {
if (chargingOrderListVO.getChargingCapacity()!=null)electronic = electronic.add(chargingOrderListVO.getElectricity());
- if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getOrderAmount());
+ if (chargingOrderListVO.getPaymentAmount()!=null)paymentAmount = paymentAmount.add(chargingOrderListVO.getPaymentAmount());
if (chargingOrderListVO.getElectrovalence()!=null)electrovalence = electrovalence.add(chargingOrderListVO.getElectrovalence());
if (chargingOrderListVO.getServiceCharge()!=null)serviceCharge = serviceCharge.add(chargingOrderListVO.getServiceCharge());
List<TChargingOrderAccountingStrategy> list2 = chargingOrderAccountingStrategyService.lambdaQuery()
@@ -1663,6 +1663,8 @@
//获取订单的计费策略
List<AccountingStrategyDetailOrder> accountingStrategyDetailOrderList = accountingStrategyDetailOrderClient.getAllAccountingStrategyDetailOrder(chargingOrder.getId()).getData();
+
+ //开始处理计费明细数据和优惠数据
chargingOrderAccountingStrategyService.remove(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, chargingOrder.getId()));
for (int i = 0; i < accountingStrategyDetailOrderList.size(); i++) {
Class<? extends TransactionRecordMessageVO> clazz = vo.getClass();
@@ -1705,22 +1707,23 @@
BigDecimal electrovalenc = strategyDetail.getElectrovalence().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
BigDecimal originalServicePrice = strategyDetail.getServiceCharge().multiply(sharp_peak_charge).setScale(2, RoundingMode.DOWN);
BigDecimal serviceCharge = originalServicePrice;
+ BigDecimal vipDiscountAmount = BigDecimal.ZERO;
//计算优惠金额
if(null != chargingOrder.getVipDiscount()){
+ vipDiscountAmount = serviceCharge.multiply(new BigDecimal(1).subtract(chargingOrder.getVipDiscount())).setScale(2, RoundingMode.DOWN);
serviceCharge = serviceCharge.multiply(chargingOrder.getVipDiscount()).setScale(2, RoundingMode.DOWN);
}
chargingOrderAccountingStrategy.setChargingCapacity(sharp_peak_charge);
chargingOrderAccountingStrategy.setPeriodElectricPrice(electrovalenc);
chargingOrderAccountingStrategy.setPeriodServicePrice(serviceCharge);
chargingOrderAccountingStrategy.setPeriodOriginalServicePrice(originalServicePrice);
+ chargingOrderAccountingStrategy.setVipDiscountAmount(vipDiscountAmount);
chargingOrderAccountingStrategy.setCreateTime(LocalDateTime.now());
chargingOrderAccountingStrategyService.save(chargingOrderAccountingStrategy);
- BigDecimal periodElectricPrice = chargingOrderAccountingStrategy.getPeriodElectricPrice();
- BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodOriginalServicePrice();
- periodElectricPrice_total = periodElectricPrice_total.add(periodElectricPrice);
- periodServicePrice_total = periodServicePrice_total.add(periodServicePrice);
- total = total.add(periodElectricPrice.add(periodServicePrice));
+ periodElectricPrice_total = periodElectricPrice_total.add(electrovalenc);
+ periodServicePrice_total = periodServicePrice_total.add(originalServicePrice);
+ total = total.add(electrovalenc.add(originalServicePrice));
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
@@ -1743,21 +1746,19 @@
//折扣金额
BigDecimal discountAmount = BigDecimal.ZERO;
if(null != chargingOrder.getVipDiscount()){
- //服务费折扣
- discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
- periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
-
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
- if(null != appUser.getVipId()){
- //判断会员是否还有充电优惠次数
- GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
- getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
- getAppUserVipDetail.setVipId(appUser.getVipId());
- TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
- if(null != data && data.getChargeNum() > 0){
- data.setChargeNum(data.getChargeNum() - 1);
- appUserVipDetailClient.updateAppUserVipDetail(data);
- }
+ //判断会员是否还有充电优惠次数
+ GetAppUserVipDetail getAppUserVipDetail = new GetAppUserVipDetail();
+ getAppUserVipDetail.setAppUserId(chargingOrder.getAppUserId());
+ getAppUserVipDetail.setVipId(appUser.getVipId());
+ TAppUserVipDetail data = appUserVipDetailClient.getAppUserVipDetail(getAppUserVipDetail).getData();
+ if(null != data && data.getChargeNum() > 0){
+ data.setChargeNum(data.getChargeNum() - 1);
+ appUserVipDetailClient.updateAppUserVipDetail(data);
+
+ //服务费折扣
+ discountAmount = periodServicePrice_total.multiply((new BigDecimal(1).subtract(chargingOrder.getVipDiscount())));
+ periodServicePrice_total = periodServicePrice_total.multiply(chargingOrder.getVipDiscount());
TVip vip = vipClient.getInfo1(appUser.getVipId()).getData();
BigDecimal maximumDeduction = vip.getMaximumDeduction();
@@ -1766,8 +1767,8 @@
discountAmount = maximumDeduction;
}
}
- payAmount = payAmount.subtract(discountAmount);
}
+ payAmount = payAmount.subtract(discountAmount);
TChargingOrder order = new TChargingOrder();
order.setId(chargingOrder.getId());
@@ -1784,7 +1785,6 @@
order.setStatus(5);
order.setOrderAmount(orderAmount);
order.setVipDiscountAmount(discountAmount);
- order.setServiceCharge(periodServicePrice_total);
order.setElectrovalence(periodElectricPrice_total);
order.setChargingCapacity(vo.getTotal_electricity());
order.setElectricity(vo.getTotal_electricity());
@@ -1805,10 +1805,12 @@
refundAmount = refundAmount.add(periodServicePrice_total);
order.setCouponDiscountAmount(periodServicePrice_total);
payAmount = payAmount.subtract(periodServicePrice_total);
+ periodServicePrice_total = BigDecimal.ZERO;
}else{
refundAmount = refundAmount.add(couponDiscountAmount);
order.setCouponDiscountAmount(couponDiscountAmount);
payAmount = payAmount.subtract(couponDiscountAmount);
+ periodServicePrice_total = periodServicePrice_total.subtract(couponDiscountAmount);
}
appCoupon.setStatus(2);
@@ -1830,10 +1832,12 @@
refundAmount = refundAmount.add(periodServicePrice_total);
order.setCouponDiscountAmount(periodServicePrice_total);
payAmount = payAmount.subtract(periodServicePrice_total);
+ periodServicePrice_total = BigDecimal.ZERO;
}else{
refundAmount = refundAmount.add(divide);
order.setCouponDiscountAmount(divide);
payAmount = payAmount.subtract(divide);
+ periodServicePrice_total = periodServicePrice_total.subtract(divide);
}
appCoupon.setStatus(2);
@@ -1845,11 +1849,27 @@
}
}
}
+
+ order.setServiceCharge(periodServicePrice_total);
order.setPaymentAmount(payAmount);
order.setRefundAmount(refundAmount);
order.setRefundStatus(1);
this.updateById(order);
chargingOrder = this.getById(order.getId());
+
+ //开始将优惠券优惠的金额添加到明细中
+ BigDecimal couponDiscountAmount = order.getCouponDiscountAmount();
+ if(couponDiscountAmount.compareTo(BigDecimal.ZERO) > 0){
+ List<TChargingOrderAccountingStrategy> list = chargingOrderAccountingStrategyService.list(new LambdaQueryWrapper<TChargingOrderAccountingStrategy>().eq(TChargingOrderAccountingStrategy::getChargingOrderId, order.getId()));
+ for (TChargingOrderAccountingStrategy chargingOrderAccountingStrategy : list) {
+ BigDecimal periodServicePrice = chargingOrderAccountingStrategy.getPeriodServicePrice();
+ BigDecimal multiply = couponDiscountAmount.multiply(periodServicePrice.divide(periodServicePrice_total, new MathContext(4, RoundingMode.HALF_EVEN)));
+ periodServicePrice = periodServicePrice.subtract(multiply);
+ chargingOrderAccountingStrategy.setPeriodServicePrice(periodServicePrice);
+ chargingOrderAccountingStrategy.setCouponDiscountAmount(multiply);
+ }
+ chargingOrderAccountingStrategyService.updateBatchById(list);
+ }
// 将枪状态重置为空闲
TChargingGun chargingGun = new TChargingGun();
@@ -2058,7 +2078,7 @@
model.setNotify_url("/order/t-shopping-order/cancelShoppingOrderWxRefund");
WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
amount.setRefund(payOrderQueryDto.getRefundAmount().multiply(new BigDecimal(100)).intValue());
- amount.setTotal(tChargingOrder.getPaymentAmount().multiply(new BigDecimal(100)).intValue());
+ amount.setTotal(tChargingOrder.getRechargeAmount().multiply(new BigDecimal(100)).intValue());
amount.setCurrency("CNY");
model.setAmount(amount);
R<String> orderR = wxPaymentClient.refundOrderR(model);
--
Gitblit v1.7.1