修改同步计费
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
+46
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user