update 重试运营商分账接口

This commit is contained in:
Lemon
2025-10-11 11:26:55 +08:00
parent 2099fe688e
commit d8c1cdebcd

View File

@@ -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<String> dateList = DateUtils.getAllDatesInTheDateRange(startTime, endTime);
// 根据 merchantId 获取所有 stationId
List<PileStationInfo> pileStationInfos = pileStationInfoService.selectStationListByMerchantId(Long.parseLong(dto.getMerchantId()));
List<String> 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);
}
}
}
}