mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
优化结算订单逻辑
This commit is contained in:
@@ -277,7 +277,7 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
* @return 查询并更新过数据的orderDetail
|
||||
*/
|
||||
public OrderDetail returnUpdateOrderDetail(OrderBasicInfo orderBasicInfo, TransactionRecordsData data) {
|
||||
logger.info("获取更新数据后的orderDetail对象, orderBasicInfo:{}, TransactionRecordsData:{}", JSON.toJSONString(orderBasicInfo), JSON.toJSONString(data));
|
||||
logger.info("start更新订单详情:【{}】, orderBasicInfo:{}, TransactionRecordsData:{}", orderBasicInfo.getOrderCode(), JSON.toJSONString(orderBasicInfo), JSON.toJSONString(data));
|
||||
String orderCode = orderBasicInfo.getOrderCode();
|
||||
BigDecimal orderAmount = orderBasicInfo.getOrderAmount();
|
||||
// 更新订单详情 查询订单详情 修改订单数据
|
||||
@@ -472,6 +472,7 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
orderDetail.setTotalUsedElectricity(totalElectricity.max(sumUsedElectricity));
|
||||
// 订单总金额
|
||||
orderDetail.setTotalOrderAmount(orderAmount);
|
||||
logger.info("end更新订单详情:【{}】, 电费总金额:{}, 服务费总金额:{}, 总用电量:{}, 订单总金额:{}", orderCode, totalElectricityAmount, totalServiceAmount, orderDetail.getTotalUsedElectricity(), orderAmount);
|
||||
} catch (Exception e) {
|
||||
logger.error("orderCode:{}, 设置订单详情参数发生异常", orderCode, e);
|
||||
}
|
||||
@@ -724,10 +725,10 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
String memberId = orderBasicInfo.getMemberId(); // 会员id
|
||||
String stationId = orderBasicInfo.getStationId(); // 站点id
|
||||
String merchantId = orderBasicInfo.getMerchantId(); // 运营商id
|
||||
String orderCode = orderBasicInfo.getOrderCode(); // 订单号
|
||||
|
||||
if (orderDetail == null) {
|
||||
logger.info("计算订单折扣V2, OrderDetail为空(orderCode:{}, transactionCode:{}), 直接返回!",
|
||||
orderBasicInfo.getOrderCode(), orderBasicInfo.getTransactionCode());
|
||||
logger.info("计算订单折扣V2, OrderDetail为空(orderCode:{}, transactionCode:{}), 直接返回!", orderCode, orderBasicInfo.getTransactionCode());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -760,69 +761,70 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
// 尖时段用电量
|
||||
BigDecimal sharpUsedElectricity = orderDetail.getSharpUsedElectricity();
|
||||
if (sharpUsedElectricity != null) {
|
||||
// 计算该时段电费单价
|
||||
BigDecimal electricityPrice = billingTemplateVO.getSharpElectricityPrice();
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal sharpElectricityAmount = billingTemplateVO.getSharpElectricityPrice()
|
||||
.multiply(sharpUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费单价
|
||||
BigDecimal servicePrice = billingTemplateVO.getSharpServicePrice();
|
||||
// 计算该时段服务费
|
||||
BigDecimal sharpServiceAmount = billingTemplateVO.getSharpServicePrice()
|
||||
.multiply(sharpUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(sharpElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(sharpServiceAmount);
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(serviceAmount);
|
||||
// logger.info("计算订单折扣V2:【{}】, 当前为尖时段, 电费单价:{}, 服务费单价:{}, 耗电量:{}, 平台计算该时段消费金额:{}, 桩传的单价:{}, 桩传的金额:{}");
|
||||
}
|
||||
|
||||
// 峰时段用电量
|
||||
BigDecimal peakUsedElectricity = orderDetail.getPeakUsedElectricity();
|
||||
if (peakUsedElectricity != null) {
|
||||
// 计算该时段电费单价
|
||||
BigDecimal electricityPrice = billingTemplateVO.getPeakElectricityPrice();
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal peakElectricityAmount = billingTemplateVO.getPeakElectricityPrice()
|
||||
.multiply(peakUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费
|
||||
BigDecimal peakServiceAmount = billingTemplateVO.getPeakServicePrice()
|
||||
.multiply(peakUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal servicePrice = billingTemplateVO.getPeakServicePrice();
|
||||
// 计算该时段服务费 = 服务费单价 x 用电量
|
||||
BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(peakElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(peakServiceAmount);
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(serviceAmount);
|
||||
}
|
||||
|
||||
// 平时段用电量
|
||||
BigDecimal flatUsedElectricity = orderDetail.getFlatUsedElectricity();
|
||||
if (flatUsedElectricity != null) {
|
||||
// 计算该时段电费单价
|
||||
BigDecimal electricityPrice = billingTemplateVO.getFlatElectricityPrice();
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal flatElectricityAmount = billingTemplateVO.getFlatElectricityPrice()
|
||||
.multiply(flatUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费单价
|
||||
BigDecimal servicePrice = billingTemplateVO.getFlatServicePrice();
|
||||
// 计算该时段服务费
|
||||
BigDecimal flatServiceAmount = billingTemplateVO.getFlatServicePrice()
|
||||
.multiply(flatUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(flatElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(flatServiceAmount);
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(serviceAmount);
|
||||
}
|
||||
|
||||
// 谷时段用电量
|
||||
BigDecimal valleyUsedElectricity = orderDetail.getValleyUsedElectricity();
|
||||
if (valleyUsedElectricity != null) {
|
||||
// 计算该时段电费单价
|
||||
BigDecimal electricityPrice = billingTemplateVO.getValleyElectricityPrice();
|
||||
// 计算该时段电费 = 电费单价 x 用电量
|
||||
BigDecimal valleyElectricityAmount = billingTemplateVO.getValleyElectricityPrice()
|
||||
.multiply(valleyUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
// 计算该时段服务费单价
|
||||
BigDecimal servicePrice = billingTemplateVO.getValleyServicePrice();
|
||||
// 计算该时段服务费
|
||||
BigDecimal valleyServiceAmount = billingTemplateVO.getValleyServicePrice()
|
||||
.multiply(valleyUsedElectricity)
|
||||
.setScale(2, RoundingMode.DOWN);
|
||||
BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN);
|
||||
|
||||
// 汇总
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(valleyElectricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(valleyServiceAmount);
|
||||
afterDiscountElectricityAmount = afterDiscountElectricityAmount.add(electricityAmount);
|
||||
afterDiscountServiceAmount = afterDiscountServiceAmount.add(serviceAmount);
|
||||
}
|
||||
|
||||
// 计算优惠了多少钱
|
||||
@@ -830,6 +832,9 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
electricityAmountDiscount = originalTotalElectricityAmount.subtract(afterDiscountElectricityAmount);
|
||||
// 服务费折扣金额 = 优惠前服务费 - 优惠后服务费
|
||||
serviceAmountDiscount = originalTotalServiceAmount.subtract(afterDiscountServiceAmount);
|
||||
|
||||
logger.info("计算订单折扣, orderCode:{}, 原始电费金额:{}, 折扣后电费金额:{}, 电费折扣金额:{}, 原始服务费金额:{}, 折扣后服务费金额:{}, 服务费折扣金额:{}",
|
||||
orderCode, originalTotalElectricityAmount, afterDiscountElectricityAmount, electricityAmountDiscount, originalTotalServiceAmount, afterDiscountServiceAmount, serviceAmountDiscount);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -858,7 +863,7 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
||||
// 服务费折扣金额(服务费便宜了多少钱)
|
||||
orderDetail.setDiscountServiceAmount(serviceAmountDiscount);
|
||||
logger.info("计算订单折扣, orderCode:{}, memberId:{}, 订单折扣金额:{}, 电费折扣金额:{}, 服务费折扣金额:{}, 优惠后总消费金额:{}",
|
||||
orderBasicInfo.getOrderCode(), memberId, discountAmount, electricityAmountDiscount, serviceAmountDiscount, totalConsumeAmount);
|
||||
orderCode, memberId, discountAmount, electricityAmountDiscount, serviceAmountDiscount, totalConsumeAmount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user