生成运营商日报表

This commit is contained in:
Guoqs
2025-02-20 14:25:36 +08:00
parent 7e20995b28
commit df848f0eb0
5 changed files with 111 additions and 0 deletions

View File

@@ -32,4 +32,11 @@ public interface OrderSplitRecordMapper {
List<OrderSplitRecord> queryOrderSplitRecordList(@Param("adapayMemberId") String adapayMemberId,
@Param("startTime") String startTime,
@Param("endTime") String endTime);
/**
* 根据订单号list查询订单分账记录
* @param orderCodeList
* @return
*/
List<OrderSplitRecord> queryByOrderCodeList(@Param("orderCodeList") List<String> orderCodeList);
}

View File

@@ -202,6 +202,12 @@ public interface OrderBasicInfoService{
*/
OrderSplitResult doPaymentConfirmWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
/**
* 生成运营商日账单
* 适用于实时分账后,第二天凌晨生成前一天的账单
*/
void generateMerchantBill(String merchantId, String tradeDate);
OrderSplitResult doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException;

View File

@@ -9,6 +9,7 @@ import com.jsowell.pile.vo.web.OrderSplitDailySummaryData;
import com.jsowell.pile.vo.web.OrderSplitRecordVO;
import java.util.List;
import java.util.Map;
public interface OrderSplitRecordService {
@@ -52,6 +53,8 @@ public interface OrderSplitRecordService {
*/
List<OrderSplitRecord> queryOrderSplitRecordList(String merchantId, String stationId, String startTime, String endTime);
Map<String, List<OrderSplitRecord>> queryOrderSplitRecordMap(List<String> orderCodeList);
/**
* 查询时间段内的订单分账记录
*/

View File

@@ -1419,6 +1419,85 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
orderSplittingOperations(merchantId, adapayMemberAccount, stationReportList);
}
/**
* 生成运营商日账单
*/
@Override
public void generateMerchantBill(String merchantId, String tradeDate) {
if (StringUtils.isBlank(merchantId) || StringUtils.isBlank(tradeDate)) {
logger.error("生成运营商日账单, 参数为空生成失败, merchantId:{}, tradeDate:{}", merchantId, tradeDate);
return;
}
// 根据交易日期查询运营商下面所有站点的交易日报
List<SettleOrderReport> stationReportList = settleOrderReportService.selectByMerchantIdAndDate(merchantId, tradeDate);
if (CollectionUtils.isEmpty(stationReportList)) {
logger.error("订单分账逻辑error-stationReportList为空");
return;
}
// 从stationReportList中去除orderCodes并根据逗号切割组成List<String> orderCodeList
List<String> orderCodeList = stationReportList.stream()
.map(SettleOrderReport::getOrderCodes)
.flatMap(orderCodes -> Arrays.stream(orderCodes.split(",")))
.collect(Collectors.toList());
Map<String, List<OrderSplitRecord>> orderSplitRecordMap = orderSplitRecordService.queryOrderSplitRecordMap(orderCodeList);
// 根据运营商id和结算日期查询清分账单
ClearingBillInfo queryBillInfo = clearingBillInfoService.selectByMerchantIdAndTradeDate(merchantId, tradeDate);
// 清分账单信息
ClearingBillInfo clearingBillInfo = new ClearingBillInfo();
String clearingBillCode = "CLE" + IdUtils.getOrderCode();
if (queryBillInfo != null) {
clearingBillInfo.setId(queryBillInfo.getId());
clearingBillCode = queryBillInfo.getClearingBillCode();
}
clearingBillInfo.setBillStatus("1");
clearingBillInfo.setClearingBillCode(clearingBillCode);
clearingBillInfo.setClearingTime(DateUtils.getNowDate());
clearingBillInfo.setMerchantId(merchantId);
clearingBillInfo.setOrderSource("1");
// 应收金额
BigDecimal receivableAmount = BigDecimal.ZERO;
// 应清分金额
BigDecimal shouldClearingAmount = BigDecimal.ZERO;
// 实际清分金额
BigDecimal actualClearingAmount = BigDecimal.ZERO;
// 手续费金额
BigDecimal feeAmount = BigDecimal.ZERO;
// 可提现金额
BigDecimal withdrawableAmount = BigDecimal.ZERO;
// 清分账单详情列表
List<ClearingBillDetail> billDetailList = Lists.newArrayList();
// 统计订单数据
for (String orderCode : orderCodeList) {
for (Map.Entry<String, List<OrderSplitRecord>> entry : orderSplitRecordMap.entrySet()) {
List<OrderSplitRecord> value = entry.getValue();
if (CollectionUtils.isNotEmpty(value)) {
}
}
}
clearingBillInfo.setBillStatus("2");
clearingBillInfo.setTradeDate(tradeDate);
clearingBillInfo.setReceivableAmount(receivableAmount);
clearingBillInfo.setShouldClearingAmount(shouldClearingAmount);
clearingBillInfo.setFeeAmount(feeAmount);
clearingBillInfo.setWithdrawableAmount(withdrawableAmount);
clearingBillInfo.setActualClearingAmount(actualClearingAmount);
clearingBillInfo.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 保存清分账单
ClearingBillTransactionDTO dto = new ClearingBillTransactionDTO();
dto.setClearingBillInfo(clearingBillInfo);
dto.setBillDetailList(billDetailList);
transactionService.saveClearingBill(dto);
}
/**
* 余额支付订单,使用余额分账
*

View File

@@ -143,6 +143,22 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
return orderSplitRecordMapper.queryOrderSplitDataList(merchantId, stationId, startTime, endTime);
}
/**
* 查询时间段内的订单分账记录
* @return
*/
@Override
public Map<String, List<OrderSplitRecord>> queryOrderSplitRecordMap(List<String> orderCodeList) {
List<OrderSplitRecord> orderSplitRecords = orderSplitRecordMapper.queryByOrderCodeList(orderCodeList);
if (CollectionUtils.isEmpty(orderSplitRecords)) {
return Maps.newHashMap();
}
// 根据orderCode分组
Map<String, List<OrderSplitRecord>> resultMap = orderSplitRecords.stream()
.collect(Collectors.groupingBy(OrderSplitRecord::getOrderCode));
return resultMap;
}
/**
* 查询时间段内的订单分账记录
*/