修改同步计费

This commit is contained in:
wuweihua
2026-10-13 10:21:28 +08:00
parent 26bdd3ba87
commit 4d27887d4a
14 changed files with 1231 additions and 12 deletions
@@ -11,6 +11,9 @@ public interface IPrcBillingTaskService
/** Warehouse inbound: create task + publish MQ. */
PrcBillingTask submitInbound(BillingTaskSubmitRequest request);
/** Monitor sync: create task then process immediately (no extra MQ). */
PrcBillingTask submitAndProcess(BillingTaskSubmitRequest request);
/** MQ consumer entry: Oracle query -> bill -> writeback success status. */
void processTask(Long taskId);
@@ -106,6 +106,52 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
return task;
}
@Override
public PrcBillingTask submitAndProcess(BillingTaskSubmitRequest request)
{
PrcBillingTask task = createWaitingTask(request, "monitor");
processTask(task.getTaskId());
return billingTaskMapper.selectPrcBillingTaskById(task.getTaskId());
}
private PrcBillingTask createWaitingTask(BillingTaskSubmitRequest request, String createBy)
{
if (request == null)
{
throw new ServiceException("billing task request required");
}
String transferNo = trim(request.getTransferNo());
String trackingNo = trim(request.getTrackingNo());
String orderNo = trim(request.getOrderNo());
Date billTime = request.getBillTime();
if (StringUtils.isEmpty(transferNo) && StringUtils.isEmpty(trackingNo) && StringUtils.isEmpty(orderNo))
{
throw new ServiceException("transferNo or trackingNo or orderNo required");
}
if (billTime == null)
{
throw new ServiceException("billTime required (billing time from mobile)");
}
BillTaskType type = BillTaskType.fromCode(request.getBillType());
if (type == null)
{
type = resolveAutoType(transferNo, trackingNo, orderNo);
}
PrcBillingTask task = new PrcBillingTask();
task.setTransferNo(transferNo);
task.setTrackingNo(trackingNo);
task.setOrderNo(orderNo);
task.setCustomerCode(trim(request.getCustomerCode()));
task.setBillTime(billTime);
task.setBillType(type.getCode());
task.setSuccessStatus(BillTaskSuccessStatus.WAITING.getCode());
task.setCreateBy(StringUtils.isEmpty(createBy) ? "tms" : createBy);
billingTaskMapper.insertPrcBillingTask(task);
log.info("billing task created taskId={} type={} billTime={} customerCode={} transferNo={} trackingNo={} orderNo={}",
task.getTaskId(), task.getBillType(), billTime, task.getCustomerCode(), transferNo, trackingNo, orderNo);
return task;
}
private static final int BILL_DB_RETRY_MAX = 3;
private static final long BILL_DB_RETRY_BASE_MS = 80L;