diff --git a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java index 12e7eec65..c1515f446 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/util/YKCUtils.java @@ -22,6 +22,7 @@ import java.math.BigDecimal; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; +import java.util.stream.Stream; @Slf4j public class YKCUtils { @@ -474,4 +475,17 @@ public class YKCUtils { return stationIdList; } + /** + * 两个BigDecimal, 取出大于0的最小值 + * @param settleAmount 结算金额 + * @param actualReceivedAmount 实收金额 + */ + public static BigDecimal getMinBigDecimal(BigDecimal settleAmount, BigDecimal actualReceivedAmount) { + BigDecimal minValue = Stream.of(settleAmount, actualReceivedAmount) + .filter(v -> v.compareTo(BigDecimal.ZERO) > 0) // 过滤出大于 0 的值 + .min(BigDecimal::compareTo) // 取最小值 + .orElse(settleAmount); // 如果没有大于 0 的值,则返回结算金额 + return minValue; + } + } 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 ec535eaa1..9c3e5a033 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 @@ -17,6 +17,7 @@ import com.jsowell.common.exception.BusinessException; import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.StringUtils; +import com.jsowell.common.util.YKCUtils; import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.SettleOrderReport; @@ -682,10 +683,9 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { BigDecimal settleAmount = StringUtils.isBlank(vo.getSettleAmount()) ? BigDecimal.ZERO : new BigDecimal(vo.getSettleAmount()); - // if (settleAmount.compareTo(BigDecimal.ZERO) <= 0) { - // // 只统计用电量大于0的 - // continue; - // } + + // 实收金额 + BigDecimal actualReceivedAmount = vo.getActualReceivedAmount(); // 用电度数 BigDecimal chargingDegree = StringUtils.isBlank(vo.getChargingDegree()) @@ -704,6 +704,9 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService { continue; } + // 结算金额与实收金额取大于0的最小值 + settleAmount = YKCUtils.getMinBigDecimal(settleAmount, actualReceivedAmount); + String orderAmount = vo.getOrderAmount(); // 订单消费金额 useElectricity = useElectricity.add(chargingDegree); // 充电度数累计 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderListVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderListVO.java index c2cb29f12..a7eddbc3f 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderListVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderListVO.java @@ -248,6 +248,11 @@ public class OrderListVO { @Excel(name = "结算金额") private String settleAmount; + /** + * 实收金额 + */ + private BigDecimal actualReceivedAmount; + /** * 交易服务费/通道手续费 */ diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index ba473c02e..cb81e34aa 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -1765,6 +1765,7 @@ t1.virtual_amount as virtualAmount, t1.discount_amount as discountAmount, t1.settle_amount as settleAmount, + ifnull(t1.actual_received_amount, '0') as actualReceivedAmount, t1.settlement_time as settlementTime, t1.start_soc as startSoc, t1.end_soc as endSoc, @@ -3181,4 +3182,4 @@ LIMIT 1; - \ No newline at end of file +