计算站点日报, 实付金额大于0小于结算金额, 按照实付金额汇总

This commit is contained in:
Guoqs
2025-06-23 16:36:47 +08:00
parent dcb09557b7
commit a81b1392d1
4 changed files with 28 additions and 5 deletions

View File

@@ -22,6 +22,7 @@ import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;
@Slf4j @Slf4j
public class YKCUtils { public class YKCUtils {
@@ -474,4 +475,17 @@ public class YKCUtils {
return stationIdList; 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;
}
} }

View File

@@ -17,6 +17,7 @@ import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils; import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.PageUtils; import com.jsowell.common.util.PageUtils;
import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.StringUtils;
import com.jsowell.common.util.YKCUtils;
import com.jsowell.common.util.id.IdUtils; import com.jsowell.common.util.id.IdUtils;
import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.domain.PileStationInfo;
import com.jsowell.pile.domain.SettleOrderReport; import com.jsowell.pile.domain.SettleOrderReport;
@@ -682,10 +683,9 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
BigDecimal settleAmount = StringUtils.isBlank(vo.getSettleAmount()) BigDecimal settleAmount = StringUtils.isBlank(vo.getSettleAmount())
? BigDecimal.ZERO ? BigDecimal.ZERO
: new BigDecimal(vo.getSettleAmount()); : new BigDecimal(vo.getSettleAmount());
// if (settleAmount.compareTo(BigDecimal.ZERO) <= 0) {
// // 只统计用电量大于0的 // 实收金额
// continue; BigDecimal actualReceivedAmount = vo.getActualReceivedAmount();
// }
// 用电度数 // 用电度数
BigDecimal chargingDegree = StringUtils.isBlank(vo.getChargingDegree()) BigDecimal chargingDegree = StringUtils.isBlank(vo.getChargingDegree())
@@ -704,6 +704,9 @@ public class SettleOrderReportServiceImpl implements SettleOrderReportService {
continue; continue;
} }
// 结算金额与实收金额取大于0的最小值
settleAmount = YKCUtils.getMinBigDecimal(settleAmount, actualReceivedAmount);
String orderAmount = vo.getOrderAmount(); // 订单消费金额 String orderAmount = vo.getOrderAmount(); // 订单消费金额
useElectricity = useElectricity.add(chargingDegree); // 充电度数累计 useElectricity = useElectricity.add(chargingDegree); // 充电度数累计

View File

@@ -248,6 +248,11 @@ public class OrderListVO {
@Excel(name = "结算金额") @Excel(name = "结算金额")
private String settleAmount; private String settleAmount;
/**
* 实收金额
*/
private BigDecimal actualReceivedAmount;
/** /**
* 交易服务费/通道手续费 * 交易服务费/通道手续费
*/ */

View File

@@ -1765,6 +1765,7 @@
t1.virtual_amount as virtualAmount, t1.virtual_amount as virtualAmount,
t1.discount_amount as discountAmount, t1.discount_amount as discountAmount,
t1.settle_amount as settleAmount, t1.settle_amount as settleAmount,
ifnull(t1.actual_received_amount, '0') as actualReceivedAmount,
t1.settlement_time as settlementTime, t1.settlement_time as settlementTime,
t1.start_soc as startSoc, t1.start_soc as startSoc,
t1.end_soc as endSoc, t1.end_soc as endSoc,