交易分账 重构

This commit is contained in:
2023-08-28 19:48:46 +08:00
parent 5ff4336830
commit 2a5651a42e
2 changed files with 115 additions and 115 deletions

View File

@@ -303,7 +303,7 @@ public interface IOrderBasicInfoService {
/** /**
* 生成订单日报 * 生成订单日报
*/ */
void generateDailyOrderReports(String stationId, String tradeDate); // void generateDailyOrderReports(String stationId, String tradeDate);
/** /**
* 获取运营商订单列表 * 获取运营商订单列表

View File

@@ -2563,120 +2563,120 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService {
* @param stationId 站点id * @param stationId 站点id
* @param tradeDate 交易日期 * @param tradeDate 交易日期
*/ */
@Override // @Override
public void generateDailyOrderReports(String stationId, String tradeDate) { // public void generateDailyOrderReports(String stationId, String tradeDate) {
// logger.info("线程名===={}", Thread.currentThread().getName()); // // logger.info("线程名===={}", Thread.currentThread().getName());
if (StringUtils.isBlank(stationId)) { // if (StringUtils.isBlank(stationId)) {
return;
}
if (StringUtils.isBlank(tradeDate)) {
// 日期为空默认昨天
tradeDate = LocalDate.now().plusDays(-1).toString();
}
PileStationVO stationInfo = pileStationInfoService.getStationInfo(stationId);
// 查询站点前一天结算完成的订单
QueryOrderDTO dto = new QueryOrderDTO();
dto.setStationId(stationId);
LocalDate parse = LocalDate.parse(tradeDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
String startTime = DateUtils.formatDateTime(LocalDateTime.of(parse, LocalTime.MIN));
String endTime = DateUtils.formatDateTime(LocalDateTime.of(parse, LocalTime.MAX));
dto.setStartSettleTime(startTime);
dto.setEndSettleTime(endTime);
// 查询结算完成的订单
List<OrderListVO> orderListVOS = orderBasicInfoMapper.selectOrderBasicInfoList(dto);
// if (CollectionUtils.isEmpty(orderListVOS)) {
// logger.info("站点:{}, 在{}-{}没有查询到订单数据", stationInfo.getStationName(), startTime, endTime);
// return; // return;
// } // }
List<String> collect = orderListVOS.stream().map(OrderListVO::getOrderCode).collect(Collectors.toList()); // if (StringUtils.isBlank(tradeDate)) {
logger.info("站点:{}, 在{}-{}查询到订单数据{}条,订单编号:{}", stationInfo.getStationName(), startTime, endTime, orderListVOS.size(), collect); // // 日期为空默认昨天
// 统计出日报信息 // tradeDate = LocalDate.now().plusDays(-1).toString();
BigDecimal useElectricity = BigDecimal.ZERO; // }
int chargeNum = 0; // PileStationVO stationInfo = pileStationInfoService.getStationInfo(stationId);
long chargeTime = 0L; // // 查询站点前一天结算完成的订单
BigDecimal totalElectricityAmount = BigDecimal.ZERO; // QueryOrderDTO dto = new QueryOrderDTO();
BigDecimal totalServiceAmount = BigDecimal.ZERO; // dto.setStationId(stationId);
BigDecimal totalOrderAmount = BigDecimal.ZERO; // LocalDate parse = LocalDate.parse(tradeDate, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
BigDecimal totalVirtualAmount = BigDecimal.ZERO; // String startTime = DateUtils.formatDateTime(LocalDateTime.of(parse, LocalTime.MIN));
BigDecimal totalSettleAmount = BigDecimal.ZERO; // String endTime = DateUtils.formatDateTime(LocalDateTime.of(parse, LocalTime.MAX));
List<String> orderCodeList = Lists.newArrayList(); // dto.setStartSettleTime(startTime);
for (OrderListVO vo : orderListVOS) { // dto.setEndSettleTime(endTime);
// 统计结算金额大于0的 // // 查询结算完成的订单
BigDecimal settleAmount = StringUtils.isBlank(vo.getSettleAmount()) // List<OrderListVO> orderListVOS = orderBasicInfoMapper.selectOrderBasicInfoList(dto);
? BigDecimal.ZERO // // if (CollectionUtils.isEmpty(orderListVOS)) {
: new BigDecimal(vo.getSettleAmount()); // // logger.info("站点:{}, 在{}-{}没有查询到订单数据", stationInfo.getStationName(), startTime, endTime);
if (settleAmount.compareTo(BigDecimal.ZERO) <= 0) { // // return;
// 只统计用电量大于0的 // // }
continue; // List<String> collect = orderListVOS.stream().map(OrderListVO::getOrderCode).collect(Collectors.toList());
} // logger.info("站点:{}, 在{}-{}查询到订单数据{}条,订单编号:{}", stationInfo.getStationName(), startTime, endTime, orderListVOS.size(), collect);
// // 统计出日报信息
// 订单消费金额 // BigDecimal useElectricity = BigDecimal.ZERO;
String orderAmount = vo.getOrderAmount(); // int chargeNum = 0;
// long chargeTime = 0L;
// 用电度数 // BigDecimal totalElectricityAmount = BigDecimal.ZERO;
BigDecimal chargingDegree = StringUtils.isBlank(vo.getChargingDegree()) // BigDecimal totalServiceAmount = BigDecimal.ZERO;
? BigDecimal.ZERO // BigDecimal totalOrderAmount = BigDecimal.ZERO;
: new BigDecimal(vo.getChargingDegree()); // BigDecimal totalVirtualAmount = BigDecimal.ZERO;
// BigDecimal totalSettleAmount = BigDecimal.ZERO;
// 充电度数累计 // List<String> orderCodeList = Lists.newArrayList();
useElectricity = useElectricity.add(chargingDegree); // for (OrderListVO vo : orderListVOS) {
// // 统计结算金额大于0的
// 充电次数 // BigDecimal settleAmount = StringUtils.isBlank(vo.getSettleAmount())
chargeNum += 1; // ? BigDecimal.ZERO
orderCodeList.add(vo.getOrderCode()); // : new BigDecimal(vo.getSettleAmount());
// if (settleAmount.compareTo(BigDecimal.ZERO) <= 0) {
// 充电时间累计 // // 只统计用电量大于0的
if (StringUtils.isNotBlank(vo.getChargeStartTime()) && StringUtils.isNotBlank(vo.getChargeEndTime())) { // continue;
long l = DateUtils.intervalTime(vo.getChargeStartTime(), vo.getChargeEndTime()); // }
chargeTime += l; //
} // // 订单消费金额
// String orderAmount = vo.getOrderAmount();
// 电费金额 //
BigDecimal e = vo.getTotalElectricityAmount() != null ? vo.getTotalElectricityAmount() : BigDecimal.ZERO; // // 用电度数
totalElectricityAmount = totalElectricityAmount.add(e); // BigDecimal chargingDegree = StringUtils.isBlank(vo.getChargingDegree())
// ? BigDecimal.ZERO
// 服务费金额 // : new BigDecimal(vo.getChargingDegree());
BigDecimal serviceAmount = vo.getTotalServiceAmount() != null ? vo.getTotalServiceAmount() : BigDecimal.ZERO; //
totalServiceAmount = totalServiceAmount.add(serviceAmount); // // 充电度数累计
// useElectricity = useElectricity.add(chargingDegree);
// 订单金额 //
totalOrderAmount = totalOrderAmount.add(new BigDecimal(orderAmount)); // // 充电次数
// chargeNum += 1;
// 虚拟金额 // orderCodeList.add(vo.getOrderCode());
String virtualAmount = StringUtils.isNotBlank(vo.getVirtualAmount()) ? vo.getVirtualAmount() : Constants.ZERO; //
totalVirtualAmount = totalVirtualAmount.add(new BigDecimal(virtualAmount)); // // 充电时间累计
// if (StringUtils.isNotBlank(vo.getChargeStartTime()) && StringUtils.isNotBlank(vo.getChargeEndTime())) {
// 结算金额 // long l = DateUtils.intervalTime(vo.getChargeStartTime(), vo.getChargeEndTime());
totalSettleAmount = totalSettleAmount.add(settleAmount); // chargeTime += l;
} // }
//
// 计算报表 // // 电费金额
SettleOrderReport settleOrderReport = new SettleOrderReport(); // BigDecimal e = vo.getTotalElectricityAmount() != null ? vo.getTotalElectricityAmount() : BigDecimal.ZERO;
String settleCode = "SETTLE_" + IdUtils.getOrderCode(); // totalElectricityAmount = totalElectricityAmount.add(e);
settleOrderReport.setSettleCode(settleCode); //
settleOrderReport.setMerchantId(stationInfo.getMerchantId()); // // 服务费金额
settleOrderReport.setStationId(stationId); // BigDecimal serviceAmount = vo.getTotalServiceAmount() != null ? vo.getTotalServiceAmount() : BigDecimal.ZERO;
settleOrderReport.setUseElectricity(useElectricity); // totalServiceAmount = totalServiceAmount.add(serviceAmount);
settleOrderReport.setChargeNum(chargeNum + ""); //
settleOrderReport.setChargeTime(chargeTime + ""); // // 订单金额
settleOrderReport.setElectricityAmount(totalElectricityAmount); // totalOrderAmount = totalOrderAmount.add(new BigDecimal(orderAmount));
settleOrderReport.setServiceAmount(totalServiceAmount); //
settleOrderReport.setTotalAmount(totalOrderAmount); // // 虚拟金额
settleOrderReport.setVirtualAmount(totalVirtualAmount); // String virtualAmount = StringUtils.isNotBlank(vo.getVirtualAmount()) ? vo.getVirtualAmount() : Constants.ZERO;
settleOrderReport.setTradeDate(tradeDate); // totalVirtualAmount = totalVirtualAmount.add(new BigDecimal(virtualAmount));
settleOrderReport.setOrderCodes(Joiner.on(",").join(orderCodeList)); //
// 计算手续费 = 结算金额 * 0.55% // // 结算金额
SplitSettleAmountVO splitSettleAmountVO = splitSettleAmount(totalSettleAmount); // totalSettleAmount = totalSettleAmount.add(settleAmount);
settleOrderReport.setTradeFee(splitSettleAmountVO.getFeeAmount()); // }
settleOrderReport.setTradeAmount(splitSettleAmountVO.getTradeAmount()); //
// 根据站点id和交易日期查询 // // 计算报表
SettleOrderReport selectResult = settleOrderReportService.selectByStationIdAndDate(stationId, tradeDate); // SettleOrderReport settleOrderReport = new SettleOrderReport();
if (selectResult != null) { // String settleCode = "SETTLE_" + IdUtils.getOrderCode();
settleOrderReport.setId(selectResult.getId()); // settleOrderReport.setSettleCode(settleCode);
} // settleOrderReport.setMerchantId(stationInfo.getMerchantId());
// 订单日报 新增或更新 // settleOrderReport.setStationId(stationId);
settleOrderReportService.insertOrUpdate(settleOrderReport); // settleOrderReport.setUseElectricity(useElectricity);
} // settleOrderReport.setChargeNum(chargeNum + "");
// settleOrderReport.setChargeTime(chargeTime + "");
// settleOrderReport.setElectricityAmount(totalElectricityAmount);
// settleOrderReport.setServiceAmount(totalServiceAmount);
// settleOrderReport.setTotalAmount(totalOrderAmount);
// settleOrderReport.setVirtualAmount(totalVirtualAmount);
// settleOrderReport.setTradeDate(tradeDate);
// settleOrderReport.setOrderCodes(Joiner.on(",").join(orderCodeList));
// // 计算手续费 = 结算金额 * 0.55%
// SplitSettleAmountVO splitSettleAmountVO = splitSettleAmount(totalSettleAmount);
// settleOrderReport.setTradeFee(splitSettleAmountVO.getFeeAmount());
// settleOrderReport.setTradeAmount(splitSettleAmountVO.getTradeAmount());
// // 根据站点id和交易日期查询
// SettleOrderReport selectResult = settleOrderReportService.selectByStationIdAndDate(stationId, tradeDate);
// if (selectResult != null) {
// settleOrderReport.setId(selectResult.getId());
// }
// // 订单日报 新增或更新
// settleOrderReportService.insertOrUpdate(settleOrderReport);
// }
/** /**
* 通过结算金额,计算客户到账金额和手续费 * 通过结算金额,计算客户到账金额和手续费