检查订单分账记录

This commit is contained in:
Guoqs
2025-10-11 15:29:29 +08:00
parent da5664b7bf
commit 17873f5405
6 changed files with 275 additions and 94 deletions

View File

@@ -126,6 +126,11 @@ public class SplitBillService {
}
/**
* 重试运营商分账V2
* @param dto
* @throws BaseAdaPayException
*/
public void retryMerchantSplitV2(QueryOrderSplitRecordDTO dto) throws BaseAdaPayException {
String startTime = dto.getStartTime();
String endTime = dto.getEndTime();
@@ -147,36 +152,64 @@ public class SplitBillService {
}
// 判断订单是否已经成功分账, 将未分账的订单进行筛选、汇总
List<String> unSplitPaymentIdList = adapayService.getSplitInfoByPaymentIdList(paymentIdList);
if (CollectionUtils.isEmpty(unSplitPaymentIdList)) {
log.info("重试运营商分账-所有订单都已经成功分账");
Map<String, List<String>> splitInfoMap = adapayService.getSplitInfoMapByPaymentIdList(paymentIdList);
if (splitInfoMap == null || splitInfoMap.isEmpty()) {
return;
}
// paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList
List<String> orderCodeList = Lists.newArrayList();
for (String unSplitPaymentId : unSplitPaymentIdList) {
OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId);
if (orderPaymentDetailVO != null) {
orderCodeList.add(orderPaymentDetailVO.getOrderCode());
// 未分帐paymentId列表
List<String> unSplitPaymentIdList = splitInfoMap.get("unSplitList");
// 已分帐paymentId列表
List<String> splitPaymentIdList = splitInfoMap.get("splitList");
/*
如果未分帐paymentId列表不为空则循环每个paymentId进行debugOrder
*/
if (CollectionUtils.isNotEmpty(unSplitPaymentIdList)) {
// 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList
List<String> orderCodeList = Lists.newArrayList();
for (String unSplitPaymentId : unSplitPaymentIdList) {
OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId);
if (orderPaymentDetailVO != null) {
orderCodeList.add(orderPaymentDetailVO.getOrderCode());
}
}
// 调用 debugOrder 接口进行重新分账
for (String orderCode : orderCodeList) {
DebugOrderDTO debugOrderDTO = new DebugOrderDTO();
debugOrderDTO.setOrderCode(orderCode);
debugOrderDTO.setReSplitFlag(Constants.ONE);
try {
Map<String, Object> stringObjectMap = tempService.debugOrder(debugOrderDTO);
log.info("重试运营商分账-debugOrder接口调用成功, param:{}, result:{}", debugOrderDTO, stringObjectMap);
} catch (Exception e) {
log.error("重试运营商分账-debugOrder接口调用异常, param:{}", debugOrderDTO, e);
}
}
}
// 调用 debugOrder 接口进行重新分账
for (String orderCode : orderCodeList) {
DebugOrderDTO debugOrderDTO = new DebugOrderDTO();
debugOrderDTO.setOrderCode(orderCode);
debugOrderDTO.setReSplitFlag(Constants.ONE);
try {
Map<String, Object> stringObjectMap = tempService.debugOrder(debugOrderDTO);
log.info("重试运营商分账-debugOrder接口调用成功, param:{}, result:{}", debugOrderDTO, stringObjectMap);
} catch (Exception e) {
log.error("重试运营商分账-debugOrder接口调用异常, param:{}", debugOrderDTO, e);
/*
如果已分帐paymentId列表不为空则循环每个paymentId进行校验OrderSplitRecord数据是否正确
*/
if (CollectionUtils.isNotEmpty(splitPaymentIdList)) {
// 将 paymentIdList 与 recordList 进行匹配,筛选出 orderCodeList
List<String> orderCodeList = Lists.newArrayList();
for (String unSplitPaymentId : splitPaymentIdList) {
OrderPaymentDetailVO orderPaymentDetailVO = paymentIdMap.get(unSplitPaymentId);
if (orderPaymentDetailVO != null) {
orderCodeList.add(orderPaymentDetailVO.getOrderCode());
}
}
for (String orderCode : orderCodeList) {
tempService.checkOrderSplitRecord(orderCode);
}
}
// 重新计算站点日报和运营商日报
/*
重新计算站点日报和运营商日报
*/
// 获取日期区间内所有日期
List<String> dateList = DateUtils.getAllDatesInTheDateRange(startTime, endTime);
stationIdSet.parallelStream().forEach(stationId -> {
@@ -201,6 +234,5 @@ public class SplitBillService {
}
}
}
}

View File

@@ -1422,7 +1422,35 @@ public class TempService {
.orderBasicInfo(orderBasicInfo)
.build();
orderBasicInfoService.splittingMethodTemp(afterSettleOrderDTO);
orderBasicInfoService.checkOrUpdateOrderSplitRecord(afterSettleOrderDTO);
}
/**
* 检查订单分账记录
* @param orderCode
*/
public void checkOrderSplitRecord(String orderCode) {
// 根据订单号查询订单信息
OrderBasicInfo orderBasicInfo = orderBasicInfoService.getOrderInfoByOrderCode(orderCode);
OrderDetail orderDetail = orderBasicInfoService.getOrderDetailByOrderCode(orderCode);
// 组装after参数
AfterSettleOrderDTO afterSettleOrderDTO = AfterSettleOrderDTO.builder()
.orderCode(orderBasicInfo.getOrderCode())
.merchantId(orderBasicInfo.getMerchantId())
.stationId(orderBasicInfo.getStationId())
.orderPayAmount(orderBasicInfo.getPayAmount()) // 支付金额
.orderConsumeAmount(orderBasicInfo.getOrderAmount()) // 消费金额
.orderSettleAmount(orderBasicInfo.getSettleAmount()) // 结算金额
.orderElectricityAmount(orderDetail.getTotalElectricityAmount()) // 电费金额
.orderElectricityDiscountAmount(orderDetail.getDiscountElectricityAmount()) // 电费折扣金额
.orderServiceAmount(orderDetail.getTotalServiceAmount()) // 服务费金额
.orderServiceDiscountAmount(orderDetail.getDiscountServiceAmount()) // 服务费折扣金额
.orderRefundAmount(orderBasicInfo.getRefundAmount()) // 退款金额
.orderBasicInfo(orderBasicInfo)
.build();
orderBasicInfoService.checkOrUpdateOrderSplitRecord(afterSettleOrderDTO);
}
}