mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-15 11:40:44 +08:00
生成运营商日报表
This commit is contained in:
@@ -32,4 +32,11 @@ public interface OrderSplitRecordMapper {
|
|||||||
List<OrderSplitRecord> queryOrderSplitRecordList(@Param("adapayMemberId") String adapayMemberId,
|
List<OrderSplitRecord> queryOrderSplitRecordList(@Param("adapayMemberId") String adapayMemberId,
|
||||||
@Param("startTime") String startTime,
|
@Param("startTime") String startTime,
|
||||||
@Param("endTime") String endTime);
|
@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;
|
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 doBalancePaymentWithDelay(OrderBasicInfo orderBasicInfo, AdapayMemberAccount adapayMemberAccount, String wechatAppId) throws BaseAdaPayException;
|
||||||
|
|
||||||
OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) 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 com.jsowell.pile.vo.web.OrderSplitRecordVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public interface OrderSplitRecordService {
|
public interface OrderSplitRecordService {
|
||||||
|
|
||||||
@@ -52,6 +53,8 @@ public interface OrderSplitRecordService {
|
|||||||
*/
|
*/
|
||||||
List<OrderSplitRecord> queryOrderSplitRecordList(String merchantId, String stationId, String startTime, String endTime);
|
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);
|
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 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