mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-04 22:18:02 +08:00
交易分账 重构
This commit is contained in:
@@ -303,7 +303,7 @@ public interface IOrderBasicInfoService {
|
|||||||
/**
|
/**
|
||||||
* 生成订单日报
|
* 生成订单日报
|
||||||
*/
|
*/
|
||||||
void generateDailyOrderReports(String stationId, String tradeDate);
|
// void generateDailyOrderReports(String stationId, String tradeDate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取运营商订单列表
|
* 获取运营商订单列表
|
||||||
|
|||||||
@@ -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);
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过结算金额,计算客户到账金额和手续费
|
* 通过结算金额,计算客户到账金额和手续费
|
||||||
|
|||||||
Reference in New Issue
Block a user