增加修改客户重新同步功能

This commit is contained in:
wuweihua
2026-09-29 11:58:01 +08:00
parent b9746e3801
commit 2d002e7291
13 changed files with 1098 additions and 167 deletions
@@ -2,6 +2,8 @@ package com.bms.price.service;
import java.util.List;
import com.bms.price.domain.PrcBillingTask;
import com.bms.price.domain.PrcBillingTaskRetryTask;
import com.bms.price.domain.vo.BillingTaskRetryByFilterRequest;
import com.bms.price.domain.vo.BillingTaskSubmitRequest;
public interface IPrcBillingTaskService
@@ -22,4 +24,12 @@ public interface IPrcBillingTaskService
* @return task after retry
*/
PrcBillingTask retryTask(Long taskId);
/**
* Start async filter retry (customer + bill_time). Returns async task id for progress poll.
*/
String startRetryByFilter(BillingTaskRetryByFilterRequest request);
/** Poll async filter-retry progress. */
PrcBillingTaskRetryTask getRetryByFilterTask(String asyncTaskId);
}
@@ -4,6 +4,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,7 +14,9 @@ import com.bms.common.exception.ServiceException;
import com.bms.common.utils.StringUtils;
import com.bms.price.config.BillingProperties;
import com.bms.price.domain.PrcBillingTask;
import com.bms.price.domain.PrcBillingTaskRetryTask;
import com.bms.price.domain.PrcOrderBill;
import com.bms.price.domain.vo.BillingTaskRetryByFilterRequest;
import com.bms.price.domain.vo.BillingTaskSubmitRequest;
import com.bms.price.domain.vo.TmsPriceBillRequest;
import com.bms.price.domain.vo.TmsPriceQuoteResult;
@@ -28,6 +31,7 @@ import com.bms.price.oracle.OracleOrderBillMapper;
import com.bms.price.oracle.OracleUpstreamOrderService;
import com.bms.price.service.IPrcBillingTaskService;
import com.bms.price.service.IPrcOrderBillService;
import com.bms.price.task.PrcBillingTaskRetryAsyncRunner;
@Service
public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
@@ -55,6 +59,9 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
@Autowired
private BillingProperties billingProperties;
@Autowired
private PrcBillingTaskRetryAsyncRunner retryAsyncRunner;
@Override
@Transactional(rollbackFor = Exception.class)
public PrcBillingTask submitInbound(BillingTaskSubmitRequest request)
@@ -359,6 +366,50 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
return billingTaskMapper.selectPrcBillingTaskById(taskId);
}
@Override
public String startRetryByFilter(BillingTaskRetryByFilterRequest request)
{
if (request == null)
{
throw new ServiceException("request required");
}
String customerCode = trim(request.getCustomerCode());
String beginTime = trim(request.getBeginTime());
String endTime = trim(request.getEndTime());
if (StringUtils.isEmpty(customerCode))
{
throw new ServiceException("customerCode required");
}
if (StringUtils.isEmpty(beginTime) || StringUtils.isEmpty(endTime))
{
throw new ServiceException("beginTime and endTime required");
}
PrcBillingTask query = new PrcBillingTask();
query.setCustomerCode(customerCode);
query.setParams(PrcBillingTaskRetryAsyncRunner.timeParams(beginTime, endTime));
String status = trim(request.getSuccessStatus());
if (StringUtils.isNotEmpty(status) && !"ALL".equalsIgnoreCase(status))
{
query.setSuccessStatus(status);
}
String asyncTaskId = UUID.randomUUID().toString().replace("-", "");
retryAsyncRunner.put(asyncTaskId, PrcBillingTaskRetryTask.STATUS_PENDING, 0, "queued",
0, 0, 0, 0, null);
retryAsyncRunner.run(asyncTaskId, query,
PrcBillingTaskRetryAsyncRunner.clampBatch(request.getBatchSize()));
return asyncTaskId;
}
@Override
public PrcBillingTaskRetryTask getRetryByFilterTask(String asyncTaskId)
{
if (StringUtils.isEmpty(asyncTaskId))
{
return null;
}
return retryAsyncRunner.get(asyncTaskId.trim());
}
private BillTaskType resolveAutoType(String transferNo, String trackingNo, String orderNo)
{
PrcOrderBill existed = null;