diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java index c2f877db4..ec535eaa1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/SettleOrderReportServiceImpl.java @@ -399,6 +399,12 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { return vo; } + /** + * 查询运营商订单报告 + * 财务中心-财务详情-运营汇总 + * @param dto + * @return + */ private OrderReportDetail queryMerchantOrderReport(MerchantOrderReportDTO dto) { // 进行数据汇总 OrderReportDetail report = new OrderReportDetail(); @@ -420,6 +426,10 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { BigDecimal amount = settleOrderReportVO.getSettleAmount() != null ? settleOrderReportVO.getSettleAmount() : settleOrderReportVO.getTotalAmount(); + + // 2025年6月19日15点11分 修改逻辑, 使用实收金额进行计算 + + totalAmount = totalAmount.add(amount); virtualAmount = virtualAmount.add(settleOrderReportVO.getVirtualAmount()); } @@ -437,10 +447,6 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { report.setTotalAmount(totalAmount); // 虚拟金额 report.setVirtualAmount(virtualAmount); - // 交易金额 - // report.setTradeAmount(list.stream().map(SettleOrderReportVO::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); - // 交易手续费 - // report.setTradeFee(list.stream().map(SettleOrderReportVO::getTradeFee).reduce(BigDecimal.ZERO, BigDecimal::add)); // 从清分账单中计算交易金额,交易手续费 GetClearingBillDTO clearingBillDTO = GetClearingBillDTO.builder() diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 1791b2b9f..6215cd872 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -495,11 +495,13 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 该时段电费单价 BigDecimal electricityPrice = orderDetail.getSharpElectricityPrice(); // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal electricityAmount = electricityPrice.multiply(sharpUsedElectricity); // 该时段服务费单价 BigDecimal servicePrice = orderDetail.getSharpServicePrice(); // 计算该时段服务费 = 服务费单价 x 用电量 - BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal serviceAmount = servicePrice.multiply(sharpUsedElectricity); // 汇总 totalElectricityAmount = totalElectricityAmount.add(electricityAmount); totalServiceAmount = totalServiceAmount.add(serviceAmount); @@ -519,11 +521,13 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 该时段电费单价 BigDecimal electricityPrice = orderDetail.getPeakElectricityPrice(); // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal electricityAmount = electricityPrice.multiply(peakUsedElectricity); // 该时段服务费单价 BigDecimal servicePrice = orderDetail.getPeakServicePrice(); // 计算该时段服务费 = 服务费单价 x 用电量 - BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal serviceAmount = servicePrice.multiply(peakUsedElectricity); // 汇总 totalElectricityAmount = totalElectricityAmount.add(electricityAmount); totalServiceAmount = totalServiceAmount.add(serviceAmount); @@ -543,11 +547,13 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 该时段电费单价 BigDecimal electricityPrice = orderDetail.getFlatElectricityPrice(); // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal electricityAmount = electricityPrice.multiply(flatUsedElectricity); // 该时段服务费单价 BigDecimal servicePrice = orderDetail.getFlatServicePrice(); // 计算该时段服务费 = 服务费单价 x 用电量 - BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal serviceAmount = servicePrice.multiply(flatUsedElectricity); // 汇总 totalElectricityAmount = totalElectricityAmount.add(electricityAmount); totalServiceAmount = totalServiceAmount.add(serviceAmount); @@ -567,11 +573,13 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 该时段电费单价 BigDecimal electricityPrice = orderDetail.getValleyElectricityPrice(); // 计算该时段电费 = 电费单价 x 用电量 - BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal electricityAmount = electricityPrice.multiply(valleyUsedElectricity); // 该时段服务费单价 BigDecimal servicePrice = orderDetail.getValleyServicePrice(); // 计算该时段服务费 = 服务费单价 x 用电量 - BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + // BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity).setScale(2, RoundingMode.DOWN); + BigDecimal serviceAmount = servicePrice.multiply(valleyUsedElectricity); // 汇总 totalElectricityAmount = totalElectricityAmount.add(electricityAmount); totalServiceAmount = totalServiceAmount.add(serviceAmount); @@ -588,8 +596,8 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 尖峰平谷用电量汇总 BigDecimal sumUsedElectricity = sharpUsedElectricity.add(peakUsedElectricity).add(flatUsedElectricity).add(valleyUsedElectricity); - // 平台计算的总消费金额 平台计算总电费金额 + 平台计算总服务费金额 - BigDecimal computeTotalAmount = totalElectricityAmount.add(totalServiceAmount); + // 平台计算的总消费金额 平台计算总电费金额 + 平台计算总服务费金额, 保留2位小数 + BigDecimal computeTotalAmount = totalElectricityAmount.add(totalServiceAmount).setScale(2, RoundingMode.DOWN); /* 如果算出来的 电费金额 + 服务费金额 != 总消费金额,并且尖峰平谷总用电量大于0, 则使用平台计算金额 @@ -623,6 +631,8 @@ public abstract class AbstractProgramLogic implements InitializingBean { // 如果totalElectricityAmount + totalServiceAmount != dataOrderAmount,则totalElectricityAmount = dataOrderAmount - totalServiceAmount if (totalElectricityAmount.add(totalServiceAmount).compareTo(dataOrderAmount) != 0) { logger.info("updateOrderBasicInfoAndOrderDetail结算订单:【{}】, 电费金额({}) + 服务费金额({}) != 订单金额({}), 电费金额设置为订单金额- 服务费金额", orderCode, totalElectricityAmount, totalServiceAmount, dataOrderAmount); + // 订单总服务费金额保留2位小数 + totalServiceAmount = totalServiceAmount.setScale(2, RoundingMode.DOWN); totalElectricityAmount = dataOrderAmount.subtract(totalServiceAmount); }