diff --git a/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java b/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java index 5511a2fef..91671e806 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/SplitBillService.java @@ -5,10 +5,15 @@ import com.google.common.collect.Maps; import com.huifu.adapay.core.exception.BaseAdaPayException; import com.jsowell.adapay.service.AdapayService; import com.jsowell.common.constant.Constants; +import com.jsowell.common.util.DateUtils; +import com.jsowell.pile.domain.PileStationInfo; import com.jsowell.pile.dto.DebugOrderDTO; import com.jsowell.pile.dto.QueryOrderSplitRecordDTO; import com.jsowell.pile.service.OrderBasicInfoService; +import com.jsowell.pile.service.PileStationInfoService; +import com.jsowell.pile.service.SettleOrderReportService; import com.jsowell.pile.vo.web.OrderPaymentDetailVO; +import com.jsowell.pile.vo.web.PileStationVO; import org.apache.commons.collections4.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +22,7 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; @Service public class SplitBillService { @@ -32,11 +38,19 @@ public class SplitBillService { @Autowired private AdapayService adapayService; + @Autowired + private PileStationInfoService pileStationInfoService; + + @Autowired + private SettleOrderReportService settleOrderReportService; + /** * 重试运营商分账 * @param dto */ public void retryMerchantSplit(QueryOrderSplitRecordDTO dto) throws BaseAdaPayException { + String startTime = dto.getStartTime(); + String endTime = dto.getEndTime(); // 首先根据 merchantId、startTime、endTime 查出日期区间内所有订单信息(包括 paymentId) // 格式化 startTime 和 endTime dto.setStartTime(dto.getStartTime() + " 00:00:00"); @@ -95,5 +109,38 @@ public class SplitBillService { } } + // 重新计算站点日报和运营商日报 + // 获取日期区间内所有日期 + List dateList = DateUtils.getAllDatesInTheDateRange(startTime, endTime); + // 根据 merchantId 获取所有 stationId + List pileStationInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId())); + List stationIdList = pileStationInfos.stream() + .map(PileStationInfo::getId) + .map(String::valueOf) + .collect(Collectors.toList()); + + stationIdList.parallelStream().forEach(stationId -> { + PileStationVO stationInfo = pileStationInfoService.getStationInfo(stationId); + for (String tradeDate : dateList) { + try { + settleOrderReportService.generateDailyOrderReports(stationInfo, tradeDate); + log.info("重试运营商分账-生成站点日报成功, param:{}", tradeDate); + }catch (Exception e) { + log.error("重试运营商分账-生成站点日报异常, param:{}", tradeDate, e); + } + } + }); + + // 重新计算运营商日报 + for (String tradeDate : dateList) { + try { + orderBasicInfoService.generateMerchantBill(dto.getMerchantId(), tradeDate); + log.info("重试运营商分账-生成运营商日报成功, param:{}", tradeDate); + }catch (Exception e) { + log.error("重试运营商分账-生成运营商日报异常, param:{}", tradeDate, e); + } + + } + } }