优化计费逻辑
This commit is contained in:
@@ -21,6 +21,12 @@ public interface IPrcOrderBillService
|
||||
{
|
||||
TmsPriceQuoteResult bill(TmsPriceBillRequest request);
|
||||
|
||||
/**
|
||||
* Persist prc_order_bill and ext when billing cannot produce a quote.
|
||||
* Status outside 0/1/2/3 does not write prc_income_bill.
|
||||
*/
|
||||
void persistFailedSnapshot(TmsPriceBillRequest request, int billingFailStatus, String errorMessage);
|
||||
|
||||
/**
|
||||
* 退费:保留原费用明细,在 prc_income_bill_fee 增加一条负金额(feeType=REFUND),重算应收并回补余额。
|
||||
*
|
||||
|
||||
+91
-39
@@ -112,7 +112,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
{
|
||||
PrcBillingTask task = createWaitingTask(request, "monitor");
|
||||
processTask(task.getTaskId());
|
||||
return billingTaskMapper.selectPrcBillingTaskById(task.getTaskId());
|
||||
return taskAfterProcess(task);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -129,7 +129,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
{
|
||||
processTaskWithUpstreamRow(task, upstreamRow);
|
||||
}
|
||||
return billingTaskMapper.selectPrcBillingTaskById(task.getTaskId());
|
||||
return taskAfterProcess(task);
|
||||
}
|
||||
|
||||
/** 订单列表已拉回 Oracle 全行时直接计费,跳过 findMainOrder 的多次公网往返。 */
|
||||
@@ -138,7 +138,8 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
Long taskId = task.getTaskId();
|
||||
if (BillTaskSuccessStatus.SUCCESS.getCode().equals(task.getSuccessStatus()))
|
||||
{
|
||||
log.info("billing task already success taskId={}", taskId);
|
||||
log.info("billing task already success, drop queue row taskId={}", taskId);
|
||||
deleteTaskAfterBillSaved(task);
|
||||
return;
|
||||
}
|
||||
try
|
||||
@@ -212,14 +213,19 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
}
|
||||
if (BillTaskSuccessStatus.SUCCESS.getCode().equals(task.getSuccessStatus()))
|
||||
{
|
||||
log.info("billing task already success taskId={}", taskId);
|
||||
log.info("billing task already success, drop queue row taskId={}", taskId);
|
||||
deleteTaskAfterBillSaved(task);
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
if (task.getBillTime() == null)
|
||||
{
|
||||
throw new ServiceException("task billTime empty (billing time from mobile required)");
|
||||
prcOrderBillService.persistFailedSnapshot(requestFromTask(task),
|
||||
BillBillingFailStatus.fromTaskFailCode(BillTaskFailCode.BILL_TIME_EMPTY.getCode()),
|
||||
"task billTime empty (billing time from mobile required)");
|
||||
deleteTaskAfterBillSaved(task);
|
||||
return;
|
||||
}
|
||||
BillTaskType type = BillTaskType.fromCode(task.getBillType());
|
||||
if (BillTaskType.REFUND == type)
|
||||
@@ -227,9 +233,8 @@ 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, null);
|
||||
refundWithDbRetry(taskId, refundOrderNo);
|
||||
deleteTaskAfterBillSaved(task);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -237,7 +242,11 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
task.getTransferNo(), task.getOrderNo(), task.getTrackingNo());
|
||||
if (row == null || row.isEmpty())
|
||||
{
|
||||
throw new ServiceException("Oracle main order not found");
|
||||
prcOrderBillService.persistFailedSnapshot(requestFromTask(task),
|
||||
BillBillingFailStatus.fromTaskFailCode(BillTaskFailCode.ORACLE_ORDER_NOT_FOUND.getCode()),
|
||||
"Oracle main order not found");
|
||||
deleteTaskAfterBillSaved(task);
|
||||
return;
|
||||
}
|
||||
billFromUpstreamRow(task, row);
|
||||
}
|
||||
@@ -257,23 +266,10 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
Long taskId = task.getTaskId();
|
||||
TmsPriceBillRequest billReq = oracleOrderBillMapper.toBillRequest(row,
|
||||
billingProperties.getOracle().getDefaultProductCode());
|
||||
if (billReq == null || StringUtils.isEmpty(billReq.getOrderNo()))
|
||||
if (billReq == null)
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped orderNo empty");
|
||||
billReq = requestFromTask(task);
|
||||
}
|
||||
if (StringUtils.isEmpty(billReq.getCustomerCode()))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped customerCode empty");
|
||||
}
|
||||
if (StringUtils.isEmpty(billReq.getProductCode()))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped productCode empty");
|
||||
}
|
||||
if (billReq.getWeight() == null || billReq.getWeight().signum() <= 0)
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped weight invalid");
|
||||
}
|
||||
// Identity keys from mobile inbound are source of truth; do not replace with Oracle remap.
|
||||
if (StringUtils.isNotEmpty(task.getTransferNo()))
|
||||
{
|
||||
billReq.setTransferNo(task.getTransferNo());
|
||||
@@ -286,26 +282,61 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
{
|
||||
billReq.setOrderNo(task.getOrderNo());
|
||||
}
|
||||
// Billing datetime from task.bill_time (keep HH:mm:ss), not Oracle CREATE_DATE.
|
||||
billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(task.getBillTime()));
|
||||
if (task.getBillTime() != null)
|
||||
{
|
||||
billReq.setBizDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(task.getBillTime()));
|
||||
}
|
||||
task.setCustomerCode(billReq.getCustomerCode());
|
||||
try
|
||||
{
|
||||
if (StringUtils.isEmpty(billReq.getOrderNo()) && StringUtils.isEmpty(billReq.getTransferNo()))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped orderNo empty");
|
||||
}
|
||||
if (StringUtils.isEmpty(billReq.getCustomerCode()))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped customerCode empty");
|
||||
}
|
||||
if (StringUtils.isEmpty(billReq.getProductCode()))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped productCode empty");
|
||||
}
|
||||
if (billReq.getWeight() == null || billReq.getWeight().signum() <= 0)
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped weight invalid");
|
||||
}
|
||||
billWithDbRetry(taskId, billReq);
|
||||
}
|
||||
catch (RuntimeException e)
|
||||
{
|
||||
int failStatus = BillBillingFailStatus.fromTaskFailCode(BillTaskFailCode.resolveCode(e.getMessage()));
|
||||
prcOrderBillService.persistFailedSnapshot(billReq, failStatus, cut(e.getMessage(), 900));
|
||||
}
|
||||
deleteTaskAfterBillSaved(task);
|
||||
}
|
||||
|
||||
TmsPriceQuoteResult result = billWithDbRetry(taskId, billReq);
|
||||
// Soft-fail (product/country/weight miss): order bill already persisted with zero amounts;
|
||||
// still mark task FAILED so it appears in abnormal-task list for retry/ops.
|
||||
if (result != null && BillBillingFailStatus.isFail(result.getBillingFailStatus()))
|
||||
private TmsPriceBillRequest requestFromTask(PrcBillingTask task)
|
||||
{
|
||||
TmsPriceBillRequest req = new TmsPriceBillRequest();
|
||||
req.setTransferNo(task.getTransferNo());
|
||||
req.setTrackingNo(task.getTrackingNo());
|
||||
req.setOrderNo(StringUtils.isNotEmpty(task.getOrderNo()) ? task.getOrderNo() : task.getTransferNo());
|
||||
req.setCustomerCode(task.getCustomerCode());
|
||||
if (task.getBillTime() != null)
|
||||
{
|
||||
String err = StringUtils.isNotEmpty(result.getMatchMessage())
|
||||
? result.getMatchMessage()
|
||||
: ("billingFailStatus=" + result.getBillingFailStatus());
|
||||
writeback(task, BillTaskSuccessStatus.FAILED, result.getBillId(), cut(err, 900),
|
||||
BillBillingFailStatus.toTaskFailCode(result.getBillingFailStatus()));
|
||||
req.setBizDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(task.getBillTime()));
|
||||
}
|
||||
else
|
||||
return req;
|
||||
}
|
||||
|
||||
/** Order bill is the failure record; drop the queue row by transfer_no. */
|
||||
private void deleteTaskAfterBillSaved(PrcBillingTask task)
|
||||
{
|
||||
if (task == null || StringUtils.isEmpty(task.getTransferNo()))
|
||||
{
|
||||
writeback(task, BillTaskSuccessStatus.SUCCESS, result == null ? null : result.getBillId(),
|
||||
null, null);
|
||||
throw new ServiceException("billing task transferNo empty, cannot delete after bill save");
|
||||
}
|
||||
billingTaskMapper.deleteByTransferNo(task.getTransferNo().trim());
|
||||
}
|
||||
|
||||
/** Resolve orderNo for REFUND from task keys or existing bill (no Oracle quote required). */
|
||||
@@ -474,7 +505,28 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService
|
||||
billingTaskMapper.updateBillingResult(reset);
|
||||
|
||||
processTask(taskId);
|
||||
return billingTaskMapper.selectPrcBillingTaskById(taskId);
|
||||
return taskAfterProcess(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bill save deletes the queue row. Callers still need a SUCCESS result when the row is gone.
|
||||
* A remaining row means the bill was not saved and the task was marked FAILED.
|
||||
*/
|
||||
private PrcBillingTask taskAfterProcess(PrcBillingTask task)
|
||||
{
|
||||
if (task == null || task.getTaskId() == null)
|
||||
{
|
||||
return task;
|
||||
}
|
||||
PrcBillingTask saved = billingTaskMapper.selectPrcBillingTaskById(task.getTaskId());
|
||||
if (saved != null)
|
||||
{
|
||||
return saved;
|
||||
}
|
||||
task.setSuccessStatus(BillTaskSuccessStatus.SUCCESS.getCode());
|
||||
task.setFailCode(null);
|
||||
task.setErrorMessage(null);
|
||||
return task;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+164
-8
@@ -272,6 +272,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
refundFee.setManualFlag("0");
|
||||
incomeBillFeeMapper.insertPrcIncomeBillFee(refundFee);
|
||||
bill.setRefundStatus(BillRefundStatus.REFUNDED.getCode());
|
||||
if (incomeBill != null)
|
||||
{
|
||||
incomeBill.setRefundStatus(BillRefundStatus.REFUNDED.getCode());
|
||||
incomeBillMapper.updatePrcIncomeBill(incomeBill);
|
||||
}
|
||||
|
||||
TmsPriceQuoteResult result = refreshBillIncomeTotals(bill);
|
||||
JSONObject req = new JSONObject();
|
||||
@@ -619,7 +624,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
}
|
||||
String mode = normalizeRecalcMode(request.getMode());
|
||||
List<PrcOrderBill> bills = resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(),
|
||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
||||
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
||||
request.getCreditArrearsStatus(), request.getBeginBizDate(), request.getEndBizDate(),
|
||||
"price.bill.recalc.filterRequired", "price.bill.recalc.scopeRequired",
|
||||
@@ -779,7 +784,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
throw new ServiceException(MessageUtils.message("price.bill.fee.batch.filterRequired"));
|
||||
}
|
||||
return resolveListScopedBills(request.getScopeMode(), request.getBillIds(),
|
||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(),
|
||||
request.getOrderNos(), request.getTrackingNos(), request.getTransferNos(), request.getOrderIdentifiers(),
|
||||
request.getCustomerCodes(), request.getProductCodes(), request.getCountryCode(),
|
||||
request.getCreditArrearsStatus(), request.getBeginBizDate(), request.getEndBizDate(),
|
||||
"price.bill.fee.batch.filterRequired", "price.bill.fee.batch.scopeRequired",
|
||||
@@ -791,7 +796,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
* scopeMode: SELECTED uses billIds; ALL uses filters (at least one required).
|
||||
*/
|
||||
private List<PrcOrderBill> resolveListScopedBills(String scopeModeRaw, List<String> billIdsRaw,
|
||||
List<String> orderNosRaw, List<String> trackingNosRaw, List<String> transferNosRaw,
|
||||
List<String> orderNosRaw, List<String> trackingNosRaw, List<String> transferNosRaw, List<String> orderIdentifiersRaw,
|
||||
List<String> customerCodesRaw, List<String> productCodesRaw, String countryCodeRaw,
|
||||
String creditArrearsStatusRaw, String beginBizDateRaw, String endBizDateRaw,
|
||||
String msgFilter, String msgScope, String msgSelected)
|
||||
@@ -804,6 +809,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
List<String> orderNos = normalizeCodeList(orderNosRaw);
|
||||
List<String> trackingNos = normalizeCodeList(trackingNosRaw);
|
||||
List<String> transferNos = normalizeCodeList(transferNosRaw);
|
||||
List<String> orderIdentifiers = normalizeCodeList(orderIdentifiersRaw);
|
||||
List<String> customerCodes = normalizeCodeList(customerCodesRaw);
|
||||
List<String> productCodes = normalizeCodeList(productCodesRaw);
|
||||
String creditArrearsStatus = StringUtils.isEmpty(creditArrearsStatusRaw) ? null
|
||||
@@ -815,6 +821,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
boolean hasFilter = (orderNos != null && !orderNos.isEmpty())
|
||||
|| (trackingNos != null && !trackingNos.isEmpty())
|
||||
|| (transferNos != null && !transferNos.isEmpty())
|
||||
|| (orderIdentifiers != null && !orderIdentifiers.isEmpty())
|
||||
|| (customerCodes != null && !customerCodes.isEmpty())
|
||||
|| (productCodes != null && !productCodes.isEmpty())
|
||||
|| StringUtils.isNotEmpty(creditArrearsStatus)
|
||||
@@ -840,6 +847,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
query.setOrderNos(orderNos);
|
||||
query.setTrackingNos(trackingNos);
|
||||
query.setTransferNos(transferNos);
|
||||
query.setOrderIdentifiers(orderIdentifiers);
|
||||
query.setCustomerCodes(customerCodes);
|
||||
query.setProductCodes(productCodes);
|
||||
query.setCreditArrearsStatus(creditArrearsStatus);
|
||||
@@ -1297,6 +1305,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
bill.setDestPostcode(request.getDestPostcode());
|
||||
bill.setWarehouseCode(request.getWarehouseCode());
|
||||
bill.setOrderTime(request.getOrderTime());
|
||||
bill.setOrderStatus(request.getOrderStatus());
|
||||
bill.setBlPickup(request.getBlPickup());
|
||||
bill.setPickupDate(request.getPickupDate());
|
||||
bill.setOrderRemark(request.getOrderRemark());
|
||||
bill.setProductCode(result.getProductCode());
|
||||
bill.setProductName(result.getProductName());
|
||||
@@ -1328,7 +1339,18 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
billingFailStatus = Integer.valueOf(BillBillingFailStatus.SUCCESS.getCode());
|
||||
}
|
||||
bill.setBillingFailStatus(billingFailStatus);
|
||||
boolean billingFailed = BillBillingFailStatus.isFail(billingFailStatus);
|
||||
boolean storeIncome = BillBillingFailStatus.storesIncomeBill(billingFailStatus);
|
||||
boolean storeFee = BillBillingFailStatus.storesIncomeFee(billingFailStatus);
|
||||
boolean billingFailed = !storeFee;
|
||||
if (billingFailed)
|
||||
{
|
||||
String failText = result.getMatchMessage();
|
||||
bill.setErrorMessage(failText == null ? null : (failText.length() > 1000 ? failText.substring(0, 1000) : failText));
|
||||
}
|
||||
else
|
||||
{
|
||||
bill.setErrorMessage(null);
|
||||
}
|
||||
if (billingFailed)
|
||||
{
|
||||
// Soft-fail: persist order snapshot with zero amounts; skip fee detail rows.
|
||||
@@ -1399,9 +1421,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
else
|
||||
{
|
||||
orderBillMapper.updatePrcOrderBill(bill);
|
||||
if (billingFailed)
|
||||
if (!storeFee)
|
||||
{
|
||||
// Soft-fail rebill: clear all fee details (no fee rows for failed billing).
|
||||
incomeBillFeeMapper.deleteByBillId(bill.getBillId());
|
||||
}
|
||||
else
|
||||
@@ -1412,8 +1433,17 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
// Payable not in scope yet: skip prc_pay_bill_fee cleanup/write.
|
||||
// payBillFeeMapper.deleteByBillId(bill.getBillId());
|
||||
}
|
||||
PrcIncomeBill incomeBill = persistIncomeBill(bill, result);
|
||||
if (!billingFailed)
|
||||
PrcIncomeBill incomeBill = null;
|
||||
if (storeIncome)
|
||||
{
|
||||
incomeBill = persistIncomeBill(bill, result);
|
||||
}
|
||||
else
|
||||
{
|
||||
incomeBillFeeMapper.deleteByBillId(bill.getBillId());
|
||||
incomeBillMapper.deleteByBillId(bill.getBillId());
|
||||
}
|
||||
if (storeFee)
|
||||
{
|
||||
List<PrcIncomeBillFee> fees = toFeeRows(bill.getBillId(),
|
||||
incomeBill == null ? null : incomeBill.getIncomeBillId(), result);
|
||||
@@ -1735,6 +1765,8 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
row.setRedlineAmount(result == null ? null : result.getRedlineAmount());
|
||||
row.setSalesAmount(sales);
|
||||
row.setIncomeTotal(sales);
|
||||
row.setRefundStatus(StringUtils.isEmpty(bill.getRefundStatus())
|
||||
? BillRefundStatus.NONE.getCode() : bill.getRefundStatus());
|
||||
row.setBelongSaler(bill.getBelongSaler());
|
||||
row.setBelongSalerCode(bill.getBelongSalerCode());
|
||||
row.setSettlementMan(bill.getSettlementMan());
|
||||
@@ -2213,6 +2245,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
boolean hasFilter = (orderNos != null && !orderNos.isEmpty())
|
||||
|| (trackingNos != null && !trackingNos.isEmpty())
|
||||
|| (transferNos != null && !transferNos.isEmpty())
|
||||
|| (request.getOrderIdentifiers() != null && !normalizeCodeList(request.getOrderIdentifiers()).isEmpty())
|
||||
|| (customerCodes != null && !customerCodes.isEmpty())
|
||||
|| (productCodes != null && !productCodes.isEmpty())
|
||||
|| StringUtils.isNotEmpty(creditArrearsStatus)
|
||||
@@ -2226,6 +2259,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
query.setOrderNos(orderNos);
|
||||
query.setTrackingNos(trackingNos);
|
||||
query.setTransferNos(transferNos);
|
||||
query.setOrderIdentifiers(normalizeCodeList(request.getOrderIdentifiers()));
|
||||
query.setCustomerCodes(customerCodes);
|
||||
query.setProductCodes(productCodes);
|
||||
query.setCreditArrearsStatus(creditArrearsStatus);
|
||||
@@ -2361,6 +2395,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
req.setConsigneeName(bill.getConsigneeName());
|
||||
req.setWarehouseCode(bill.getWarehouseCode());
|
||||
req.setOrderTime(bill.getOrderTime());
|
||||
req.setOrderStatus(bill.getOrderStatus());
|
||||
req.setBlPickup(bill.getBlPickup());
|
||||
req.setPickupDate(bill.getPickupDate());
|
||||
req.setOrderRemark(bill.getOrderRemark());
|
||||
if (bill.getTmsId() != null)
|
||||
{
|
||||
@@ -2389,4 +2426,123 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService
|
||||
}
|
||||
return parsed;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void persistFailedSnapshot(TmsPriceBillRequest request, int billingFailStatus, String errorMessage)
|
||||
{
|
||||
if (request == null)
|
||||
{
|
||||
throw new ServiceException("order snapshot request empty");
|
||||
}
|
||||
String orderNo = request.getOrderNo();
|
||||
if (StringUtils.isEmpty(orderNo))
|
||||
{
|
||||
orderNo = request.getTransferNo();
|
||||
}
|
||||
if (StringUtils.isEmpty(orderNo))
|
||||
{
|
||||
throw new ServiceException("Oracle order mapped orderNo empty");
|
||||
}
|
||||
orderNo = orderNo.trim();
|
||||
request.setOrderNo(orderNo);
|
||||
PrcOrderBill existed = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo);
|
||||
assertOrderBillEditable(existed);
|
||||
BigDecimal previousIncome = existed == null ? BigDecimal.ZERO : nz(existed.getIncomeTotal());
|
||||
PrcOrderBill bill = existed == null ? new PrcOrderBill() : existed;
|
||||
if (existed == null)
|
||||
{
|
||||
bill.setBillId(UUID.randomUUID().toString());
|
||||
bill.setArBillStatus(ArOrderBillStatus.UNBILLED.getCode());
|
||||
bill.setRefundStatus(BillRefundStatus.NONE.getCode());
|
||||
}
|
||||
bill.setBillKey(Md5Utils.hash(orderNo));
|
||||
bill.setOrderNo(orderNo);
|
||||
bill.setCustomerId(request.getCustomerId() == null ? Long.valueOf(0L) : request.getCustomerId());
|
||||
bill.setCustomerCode(request.getCustomerCode());
|
||||
bill.setCustomerName(request.getCustomerName());
|
||||
bill.setTrackingNo(request.getTrackingNo());
|
||||
bill.setTransferNo(request.getTransferNo());
|
||||
resolveOrderStaffFromSysUser(request);
|
||||
bill.setBelongSaler(request.getBelongSaler());
|
||||
bill.setBelongSalerCode(request.getBelongSalerCode());
|
||||
bill.setSettlementMan(request.getSettlementMan());
|
||||
bill.setSettlementManCode(request.getSettlementManCode());
|
||||
bill.setServiceMan(request.getServiceMan());
|
||||
bill.setServiceManCode(request.getServiceManCode());
|
||||
if (StringUtils.isEmpty(bill.getCustomerActiveStatus()))
|
||||
{
|
||||
bill.setCustomerActiveStatus(BillCustomerActiveStatus.ACTIVE.getCode());
|
||||
}
|
||||
bill.setPieces(request.getPieces());
|
||||
bill.setActualWeight(request.getActualWeight());
|
||||
bill.setReceiveWeight(request.getReceiveWeight());
|
||||
bill.setVolume(request.getVolume());
|
||||
bill.setVolumeWeight(request.getVolumeWeight());
|
||||
bill.setPkgLength(request.getPkgLength());
|
||||
bill.setPkgWidth(request.getPkgWidth());
|
||||
bill.setPkgHeight(request.getPkgHeight());
|
||||
bill.setShipperName(request.getShipperName());
|
||||
bill.setConsigneeName(request.getConsigneeName());
|
||||
bill.setDestPostcode(request.getDestPostcode());
|
||||
bill.setWarehouseCode(request.getWarehouseCode());
|
||||
bill.setOrderTime(request.getOrderTime());
|
||||
bill.setOrderStatus(request.getOrderStatus());
|
||||
bill.setBlPickup(request.getBlPickup());
|
||||
bill.setPickupDate(request.getPickupDate());
|
||||
bill.setOrderRemark(request.getOrderRemark());
|
||||
bill.setProductCode(request.getProductCode());
|
||||
bill.setCountryCode(request.getCountryCode());
|
||||
bill.setCountryName(request.getCountryName());
|
||||
bill.setWeight(request.getWeight());
|
||||
Date bizDate = StringUtils.isEmpty(request.getBizDate()) ? new Date() : resolveBizDate(request.getBizDate());
|
||||
bill.setBizDate(bizDate);
|
||||
if (StringUtils.isEmpty(bill.getCurrency()))
|
||||
{
|
||||
bill.setCurrency("CNY");
|
||||
}
|
||||
if (StringUtils.isEmpty(bill.getRoundMode()))
|
||||
{
|
||||
bill.setRoundMode("HALF_UP");
|
||||
}
|
||||
bill.setFreightRate(BigDecimal.ZERO);
|
||||
bill.setBaseFreightRate(BigDecimal.ZERO);
|
||||
bill.setRegistrationFee(BigDecimal.ZERO);
|
||||
bill.setFreightAmount(BigDecimal.ZERO);
|
||||
bill.setSurchargeAmount(BigDecimal.ZERO);
|
||||
bill.setIncomeTotal(BigDecimal.ZERO);
|
||||
bill.setPayTotal(BigDecimal.ZERO);
|
||||
bill.setBillingFailStatus(Integer.valueOf(billingFailStatus));
|
||||
String failText = errorMessage == null ? "" : errorMessage.trim();
|
||||
if (failText.length() > 1000)
|
||||
{
|
||||
failText = failText.substring(0, 1000);
|
||||
}
|
||||
bill.setErrorMessage(failText);
|
||||
bill.setMatchMessage(failText);
|
||||
if (StringUtils.isEmpty(bill.getRefundStatus()))
|
||||
{
|
||||
bill.setRefundStatus(BillRefundStatus.NONE.getCode());
|
||||
}
|
||||
syncOrderCredit(bill, previousIncome, bill.getCustomerActiveStatus());
|
||||
if (existed == null)
|
||||
{
|
||||
orderBillMapper.insertPrcOrderBill(bill);
|
||||
}
|
||||
else
|
||||
{
|
||||
orderBillMapper.updatePrcOrderBill(bill);
|
||||
}
|
||||
if (BillBillingFailStatus.storesIncomeBill(Integer.valueOf(billingFailStatus)))
|
||||
{
|
||||
incomeBillFeeMapper.deleteByBillId(bill.getBillId());
|
||||
persistIncomeBill(bill, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
incomeBillFeeMapper.deleteByBillId(bill.getBillId());
|
||||
incomeBillMapper.deleteByBillId(bill.getBillId());
|
||||
}
|
||||
persistBillExt(bill, request.getUpstreamRow());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user