修改计费文档,加上客户代码

This commit is contained in:
wuweihua
2026-09-29 09:20:59 +08:00
parent b8e1f8cd40
commit d08758aa35
7 changed files with 78 additions and 6 deletions
@@ -17,6 +17,8 @@ public class PrcBillingTask extends BaseEntity
private String transferNo;
private String trackingNo;
private String orderNo;
/** Customer code snapshot for filter / rebill */
private String customerCode;
/** PENDING / REBILL / REFUND */
private String billType;
/** WAITING / SUCCESS / FAILED */
@@ -18,6 +18,8 @@ public class BillingTaskSubmitRequest implements Serializable
private String transferNo;
private String trackingNo;
private String orderNo;
/** Optional customer code; also filled from Oracle when task runs */
private String customerCode;
/** Billing time from mobile; persisted to prc_billing_task.bill_time */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date billTime;
@@ -86,6 +86,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
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());
@@ -93,8 +94,8 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
billingTaskMapper.insertPrcBillingTask(task);
billingTaskMqPublisher.publish(new BillingTaskMessage(task.getTaskId()));
log.info("billing task submitted taskId={} type={} billTime={} transferNo={} trackingNo={} orderNo={}",
task.getTaskId(), task.getBillType(), billTime, transferNo, trackingNo, orderNo);
log.info("billing task submitted taskId={} type={} billTime={} customerCode={} transferNo={} trackingNo={} orderNo={}",
task.getTaskId(), task.getBillType(), billTime, task.getCustomerCode(), transferNo, trackingNo, orderNo);
return task;
}
@@ -130,6 +131,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
{
String refundOrderNo = resolveRefundOrderNo(task);
log.info("billing task REFUND path taskId={} orderNo={}", taskId, refundOrderNo);
fillCustomerCodeFromBill(task, refundOrderNo);
TmsPriceQuoteResult result = refundWithDbRetry(taskId, refundOrderNo);
writeback(task, BillTaskSuccessStatus.SUCCESS, result == null ? null : result.getBillId(),
null);
@@ -175,6 +177,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
}
// Billing date from task.bill_time (mobile), not Oracle CREATE_DATE.
billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd").format(task.getBillTime()));
task.setCustomerCode(billReq.getCustomerCode());
TmsPriceQuoteResult result = billWithDbRetry(taskId, billReq);
writeback(task, BillTaskSuccessStatus.SUCCESS, result == null ? null : result.getBillId(),
@@ -381,6 +384,28 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
}
/** Write back status/billId/failCode/error only; keep inbound transfer/tracking/order/billTime untouched. */
/** Prefer existing bill customer when task has none (REFUND path). */
private void fillCustomerCodeFromBill(PrcBillingTask task, String orderNo)
{
if (task == null || StringUtils.isNotEmpty(task.getCustomerCode()))
{
return;
}
PrcOrderBill bill = null;
if (StringUtils.isNotEmpty(orderNo))
{
bill = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim());
}
if (bill == null && StringUtils.isNotEmpty(task.getBillId()))
{
bill = orderBillMapper.selectPrcOrderBillById(task.getBillId());
}
if (bill != null && StringUtils.isNotEmpty(bill.getCustomerCode()))
{
task.setCustomerCode(bill.getCustomerCode().trim());
}
}
private void writeback(PrcBillingTask task, BillTaskSuccessStatus status, String billId,
String errorMessage)
{
@@ -388,6 +413,10 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
upd.setTaskId(task.getTaskId());
upd.setSuccessStatus(status.getCode());
upd.setBillId(billId);
if (StringUtils.isNotEmpty(task.getCustomerCode()))
{
upd.setCustomerCode(task.getCustomerCode());
}
if (BillTaskSuccessStatus.FAILED == status)
{
upd.setFailCode(BillTaskFailCode.resolveCode(errorMessage));