mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-22 03:55:17 +08:00
生成运营商日报表
This commit is contained in:
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 查询时间段内的订单分账记录
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 余额支付订单,使用余额分账
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询时间段内的订单分账记录
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user