From 87ae3e6674ed0ea2f675650e657bae0d9dc0398f Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Sat, 14 Nov 2026 08:08:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E9=80=80=20UUID=20=E8=BD=AC=20bigint?= =?UTF-8?q?=20=E7=9B=B8=E5=85=B3=E6=94=B9=E5=8A=A8=EF=BC=88=E5=B7=B2?= =?UTF-8?q?=E8=BF=81=E8=87=B3=20feature/uuid-to-bigint=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- .../controller/price/BillingController.java | 22 +- .../price/PayProductController.java | 2 +- .../airbill/domain/SrvBillAirAllocOrder.java | 2 +- .../com/bms/price/domain/PayBillDiff.java | 4 +- .../com/bms/price/domain/PayBillLine.java | 4 +- .../java/com/bms/price/domain/PayBillLog.java | 2 +- .../com/bms/price/domain/PayBillOrder.java | 2 +- .../bms/price/domain/PayOrderCostResult.java | 2 +- .../com/bms/price/domain/PrcBillingTask.java | 2 +- .../com/bms/price/domain/PrcIncomeBill.java | 4 +- .../bms/price/domain/PrcIncomeBillFee.java | 6 +- .../com/bms/price/domain/PrcOrderBill.java | 4 +- .../com/bms/price/domain/PrcOrderBillExt.java | 2 +- .../java/com/bms/price/domain/PrcPayBill.java | 4 +- .../com/bms/price/domain/PrcPayBillFee.java | 6 +- .../domain/vo/AddIncomeBillFeeRequest.java | 2 +- .../vo/BatchAddIncomeBillFeeRequest.java | 2 +- .../price/domain/vo/LocalRebillRequest.java | 2 +- .../domain/vo/OrderBillFailReasonVo.java | 2 +- .../domain/vo/RecalcBillPriceRequest.java | 2 +- .../domain/vo/TmsOrderBillStatusResult.java | 2 +- .../price/domain/vo/TmsPriceQuoteResult.java | 2 +- .../domain/vo/UpdateChargeWeightRequest.java | 2 +- .../domain/vo/UpdateIncomeBillFeeRequest.java | 2 +- .../com/bms/price/mapper/PayBillMapper.java | 8 +- .../bms/price/mapper/PayFinanceMapper.java | 4 +- .../price/mapper/PrcIncomeBillFeeMapper.java | 24 +- .../bms/price/mapper/PrcIncomeBillMapper.java | 8 +- .../price/mapper/PrcOrderBillExtMapper.java | 2 +- .../bms/price/mapper/PrcOrderBillMapper.java | 28 +- .../bms/price/mapper/PrcPayBillFeeMapper.java | 10 +- .../bms/price/mapper/PrcPayBillMapper.java | 10 +- .../price/mapper/SrvBillAirAllocMapper.java | 2 +- .../com/bms/price/pay/PaySettleSupport.java | 4 +- .../price/service/IPayOrderCostService.java | 6 +- .../price/service/IPrcOrderBillService.java | 20 +- .../price/service/IPrcPayBillFeeService.java | 2 +- .../service/impl/PayBillServiceImpl.java | 22 +- .../service/impl/PayOrderCostServiceImpl.java | 18 +- .../impl/PrcBillingTaskServiceImpl.java | 4 +- .../service/impl/PrcOrderBillServiceImpl.java | 147 +++---- .../impl/PrcPayBillFeeServiceImpl.java | 24 +- .../impl/SrvBillAirAllocServiceImpl.java | 16 +- .../impl/SrvBillAirFeeServiceImpl.java | 2 +- .../task/PrcBatchAddIncomeFeeAsyncRunner.java | 4 +- .../PrcChargeWeightImportAsyncRunner.java | 8 +- .../PrcOrderBillLocalRebillAsyncRunner.java | 26 +- .../task/PrcRecalcBillPriceAsyncRunner.java | 6 +- .../price/task/TabOrderSyncAsyncRunner.java | 4 +- .../bms/receivable/domain/ArBillDetail.java | 2 +- .../receivable/domain/ArBillDetailFee.java | 2 +- .../receivable/domain/ArBillGenerateTask.java | 2 +- .../domain/vo/ArBillGenerateRequest.java | 4 +- .../receivable/mapper/ArBillDetailMapper.java | 2 +- .../mapper/ArBillGenerateTaskMapper.java | 2 +- .../receivable/mapper/ArBillScopeMapper.java | 2 +- .../security/ArBillScopeResolver.java | 2 +- .../service/impl/ArBillServiceImpl.java | 36 +- .../resources/mapper/price/PayBillMapper.xml | 4 +- .../mapper/price/PrcIncomeBillFeeMapper.xml | 22 +- .../mapper/price/PrcIncomeBillMapper.xml | 18 +- .../mapper/price/PrcOrderBillExtMapper.xml | 2 +- .../mapper/price/PrcOrderBillMapper.xml | 12 +- .../mapper/price/PrcPayBillFeeMapper.xml | 23 +- .../mapper/price/PrcPayBillMapper.xml | 22 +- .../20261113_uuid_to_bigint_order_bill.sql | 391 ------------------ bms-back/sql/20261113_uuid_to_bigint_run.sh | 118 ------ .../sql/20261113_uuid_to_bigint_runbook.md | 63 --- bms-back/sql/bms_init.sql | 32 +- bms-back/sql/price/pay_bill.sql | 2 +- bms-back/sql/price/pay_bill_ap.sql | 8 +- 71 files changed, 351 insertions(+), 915 deletions(-) delete mode 100644 bms-back/sql/20261113_uuid_to_bigint_order_bill.sql delete mode 100644 bms-back/sql/20261113_uuid_to_bigint_run.sh delete mode 100644 bms-back/sql/20261113_uuid_to_bigint_runbook.md diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java index f14bc4ab..5ba7bd8e 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/BillingController.java @@ -253,7 +253,7 @@ public class BillingController extends BaseController /** 订单列表弹窗:按 billId 查询计费失败原因(受数据权限控制)。 */ @PreAuthorize("@ss.hasPermi('price:orderBill:list')") @GetMapping("/orderBill/{billId}/failReason") - public AjaxResult orderBillFailReason(@PathVariable("billId") Long billId) + public AjaxResult orderBillFailReason(@PathVariable("billId") String billId) { return success(prcOrderBillService.getBillingFailReason(billId)); } @@ -380,7 +380,7 @@ public class BillingController extends BaseController @PreAuthorize("@ss.hasPermi('price:billing:bill') or @ss.hasPermi('price:orderBill:list')") @GetMapping("/bill/{billId}") - public AjaxResult getBill(@PathVariable Long billId) + public AjaxResult getBill(@PathVariable String billId) { return success(prcOrderBillService.getBill(billId)); } @@ -391,13 +391,13 @@ public class BillingController extends BaseController */ @PreAuthorize("@ss.hasPermi('price:billing:bill') or @ss.hasPermi('price:orderBill:list')") @GetMapping("/bill/{billId}/history") - public TableDataInfo billHistory(@PathVariable("billId") Long billId) + public TableDataInfo billHistory(@PathVariable("billId") String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { return getDataTable(new ArrayList()); } - TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId); + TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId.trim()); if (bill == null) { TableDataInfo empty = new TableDataInfo(); @@ -482,13 +482,13 @@ public class BillingController extends BaseController @PreAuthorize("@ss.hasPermi('price:billing:refund')") @Log(title = "Billing refund", businessType = BusinessType.UPDATE) @PostMapping("/bill/{billId}/refund") - public AjaxResult refundBill(@PathVariable("billId") Long billId) + public AjaxResult refundBill(@PathVariable("billId") String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { return error("billId required"); } - TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId); + TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId.trim()); if (bill == null || StringUtils.isEmpty(bill.getOrderNo())) { return error("bill not found"); @@ -519,7 +519,7 @@ public class BillingController extends BaseController @PreAuthorize("@ss.hasPermi('price:billing:arrearsUpdate')") @Log(title = "Billing credit arrears", businessType = BusinessType.UPDATE) @PutMapping("/bill/creditArrears") - public AjaxResult updateCreditArrears(@RequestBody java.util.List billIds) + public AjaxResult updateCreditArrears(@RequestBody java.util.List billIds) { if (billIds == null || billIds.isEmpty()) { @@ -527,7 +527,7 @@ public class BillingController extends BaseController } int success = 0; java.util.List fails = new java.util.ArrayList(); - for (Long billId : billIds) + for (String billId : billIds) { try { @@ -664,7 +664,7 @@ public class BillingController extends BaseController @PreAuthorize("@ss.hasPermi('price:billing:feeRemove')") @Log(title = "Billing income fee", businessType = BusinessType.DELETE) @DeleteMapping("/bill/fee/{feeId}") - public AjaxResult deleteIncomeFee(@PathVariable Long feeId) + public AjaxResult deleteIncomeFee(@PathVariable String feeId) { return success(prcOrderBillService.deleteIncomeFee(feeId)); } diff --git a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PayProductController.java b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PayProductController.java index 5925ab50..db133039 100644 --- a/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PayProductController.java +++ b/bms-back/bms-admin/src/main/java/com/bms/web/controller/price/PayProductController.java @@ -89,7 +89,7 @@ public class PayProductController extends BaseController @PreAuthorize("@ss.hasAnyPermi('price:billing:bill,price:pay:edit')") @Log(title = "应付账单", businessType = BusinessType.INSERT) @PostMapping("/order/{billId}") - public AjaxResult generateOrderCost(@PathVariable Long billId) + public AjaxResult generateOrderCost(@PathVariable String billId) { payOrderCostService.generate(billId); return success("操作成功"); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/airbill/domain/SrvBillAirAllocOrder.java b/bms-back/bms-system/src/main/java/com/bms/price/airbill/domain/SrvBillAirAllocOrder.java index ca0fa5b5..ef789233 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/airbill/domain/SrvBillAirAllocOrder.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/airbill/domain/SrvBillAirAllocOrder.java @@ -12,7 +12,7 @@ public class SrvBillAirAllocOrder private String orderNo; /** 计费订单 ID,对应 prc_order_bill.bill_id */ - private Long billId; + private String billId; /** 计费重,没有计费重时依次取实际重量、收货重量 */ private BigDecimal chargeWeight; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillDiff.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillDiff.java index fa6cbba9..ecf42012 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillDiff.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillDiff.java @@ -15,7 +15,7 @@ public class PayBillDiff private Long lineId; - private Long feeId; + private String feeId; private BigDecimal ourAmount; @@ -28,7 +28,7 @@ public class PayBillDiff /** OPEN ACCEPT_OURS ACCEPT_THEIRS */ private String handleType; - private Long adjustFeeId; + private String adjustFeeId; private String createBy; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLine.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLine.java index 4ce3802c..70275661 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLine.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLine.java @@ -13,9 +13,9 @@ public class PayBillLine private Long billId; - private Long feeId; + private String feeId; - private Long orderBillId; + private String orderBillId; private String orderNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLog.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLog.java index cb0eefcd..886908e3 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLog.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillLog.java @@ -19,7 +19,7 @@ public class PayBillLog private Long lineId; - private Long feeId; + private String feeId; private String operationType; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillOrder.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillOrder.java index 33668407..a03d392e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillOrder.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayBillOrder.java @@ -9,7 +9,7 @@ import lombok.Data; @Data public class PayBillOrder { - private Long billId; + private String billId; private String orderNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayOrderCostResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayOrderCostResult.java index 2b6c8548..0ddb8b5d 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PayOrderCostResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PayOrderCostResult.java @@ -8,7 +8,7 @@ import lombok.Data; @Data public class PayOrderCostResult { - private Long billId; + private String billId; private String channelId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java index 065940f9..4ad15145 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcBillingTask.java @@ -26,7 +26,7 @@ public class PrcBillingTask extends BaseEntity /** 移动端传入的计费时间(非 Oracle 订单时间;回写时不会被覆盖) */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date billTime; - private Long billId; + private String billId; /** 用于查询的稳定失败码,例如 NO_CUSTOMER_PACKAGE */ private String failCode; private String errorMessage; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBill.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBill.java index faab8621..b3c6d7f3 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBill.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBill.java @@ -13,9 +13,9 @@ public class PrcIncomeBill implements Serializable private static final long serialVersionUID = 1L; /** 应收主表ID */ - private Long incomeBillId; + private String incomeBillId; /** 计费订单ID */ - private Long billId; + private String billId; /** 币种 */ private String currency; /** 产品价合计 */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBillFee.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBillFee.java index 050f4cbf..3f007200 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBillFee.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcIncomeBillFee.java @@ -12,10 +12,10 @@ public class PrcIncomeBillFee implements Serializable { private static final long serialVersionUID = 1L; - private Long feeId; - private Long billId; + private String feeId; + private String billId; /** 应收主表ID */ - private Long incomeBillId; + private String incomeBillId; private String feeType; private String feeName; private Long scId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java index 6fbf94e3..b8cdaece 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBill.java @@ -15,9 +15,9 @@ public class PrcOrderBill extends BaseEntity { private static final long serialVersionUID = 1L; - private Long billId; + private String billId; /** 批量查询:多个账单ID精确匹配(仅查询用,非表字段) */ - private List billIds; + private List billIds; private String billKey; private String orderNo; /** 批量查询:多个订单号精确匹配(仅查询用,非表字段) */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java index 0d093134..df033c76 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcOrderBillExt.java @@ -12,7 +12,7 @@ public class PrcOrderBillExt implements Serializable { private static final long serialVersionUID = 1L; - private Long billId; + private String billId; private String orderNo; private String upstreamId; private String lineNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBill.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBill.java index a0cea814..1140f401 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBill.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBill.java @@ -13,9 +13,9 @@ public class PrcPayBill implements Serializable private static final long serialVersionUID = 1L; /** 应付主表ID */ - private Long payBillId; + private String payBillId; /** 计费订单ID */ - private Long billId; + private String billId; /** 币种 */ private String currency; /** 产品价合计 */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBillFee.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBillFee.java index 1fefd470..35011024 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBillFee.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/PrcPayBillFee.java @@ -12,10 +12,10 @@ public class PrcPayBillFee implements Serializable { private static final long serialVersionUID = 1L; - private Long feeId; - private Long billId; + private String feeId; + private String billId; /** 应付主表ID */ - private Long payBillId; + private String payBillId; private String feeType; private String feeName; private Long scId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java index 62e06871..6828a4cd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/AddIncomeBillFeeRequest.java @@ -13,7 +13,7 @@ public class AddIncomeBillFeeRequest implements Serializable private static final long serialVersionUID = 1L; @NotBlank(message = "billId required") - private Long billId; + private String billId; /** 附加费配置ID(prc_surcharge.sc_id)。 */ @NotNull(message = "scId required") diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java index d9420052..be68fb19 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/BatchAddIncomeBillFeeRequest.java @@ -19,7 +19,7 @@ public class BatchAddIncomeBillFeeRequest implements Serializable private String scopeMode; /** scopeMode=SELECTED 时选中的账单ID。 */ - private List billIds; + private List billIds; /** 与计费列表搜索相同的筛选条件。 */ private List orderNos; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java index 0b98cc3e..c65a7e1b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/LocalRebillRequest.java @@ -15,7 +15,7 @@ public class LocalRebillRequest implements Serializable /** ALL | SELECTED */ private String scopeMode; - private List billIds; + private List billIds; private List orderNos; private List trackingNos; private List transferNos; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillFailReasonVo.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillFailReasonVo.java index 24786837..4728de1a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillFailReasonVo.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/OrderBillFailReasonVo.java @@ -14,7 +14,7 @@ public class OrderBillFailReasonVo implements Serializable { private static final long serialVersionUID = 1L; - private Long billId; + private String billId; private String orderNo; private String transferNo; private String trackingNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java index a614eeb0..295f6be7 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/RecalcBillPriceRequest.java @@ -15,7 +15,7 @@ public class RecalcBillPriceRequest implements Serializable /** ALL = 筛选条件;SELECTED = billIds。 */ private String scopeMode; - private List billIds; + private List billIds; private List orderNos; private List trackingNos; private List transferNos; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsOrderBillStatusResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsOrderBillStatusResult.java index d4d1fc54..751b440a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsOrderBillStatusResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsOrderBillStatusResult.java @@ -27,7 +27,7 @@ public class TmsOrderBillStatusResult { /** * 计费订单标识,仅在唯一命中时返回。 */ - private Long billId; + private String billId; private String orderNo; private String trackingNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java index 2edcc59d..6f5445b2 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/TmsPriceQuoteResult.java @@ -82,7 +82,7 @@ public class TmsPriceQuoteResult implements Serializable /** 应付费用明细 */ private List payFeeDetails; private String quoteId; - private Long billId; + private String billId; private String orderNo; private String trackingNo; /** 转单号 */ diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java index 6dc799db..19f67e8a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateChargeWeightRequest.java @@ -14,7 +14,7 @@ public class UpdateChargeWeightRequest implements Serializable private static final long serialVersionUID = 1L; @NotBlank(message = "billId is required") - private Long billId; + private String billId; @NotNull(message = "chargeWeight is required") @DecimalMin(value = "0.001", message = "chargeWeight must be > 0") diff --git a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java index 824307df..3a2413f9 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/domain/vo/UpdateIncomeBillFeeRequest.java @@ -12,7 +12,7 @@ public class UpdateIncomeBillFeeRequest implements Serializable private static final long serialVersionUID = 1L; @NotBlank(message = "feeId required") - private Long feeId; + private String feeId; /** 可选:更换附加费配置。 */ private Long scId; diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayBillMapper.java index b9232793..ec93452b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayBillMapper.java @@ -65,7 +65,7 @@ public interface PayBillMapper * @param billIds 计费订单ID * @return 订单应付费用 */ - List selectOrderFees(@Param("billIds") List billIds); + List selectOrderFees(@Param("billIds") List billIds); /** * 读取还没被未作废账单占用的费用。旧账单没有费用行号时,整票视为已占用。 @@ -73,7 +73,7 @@ public interface PayBillMapper * @param billIds 计费订单ID * @return 可抄进本次账单的费用 */ - List selectFreeFees(@Param("billIds") List billIds); + List selectFreeFees(@Param("billIds") List billIds); /** * 这票订单还有没有未删除的计算费用。 @@ -81,7 +81,7 @@ public interface PayBillMapper * @param billId 计费订单ID * @return 计算费用条数 */ - int countCalcFees(@Param("billId") Long billId); + int countCalcFees(@Param("billId") String billId); /** * 插入一张草稿应付账单。 @@ -122,7 +122,7 @@ public interface PayBillMapper * @param lineId 账单行ID * @return 影响行数 */ - int bindFeeLine(@Param("feeId") Long feeId, @Param("lineId") Long lineId); + int bindFeeLine(@Param("feeId") String feeId, @Param("lineId") Long lineId); /** * 释放一张账单占用的费用明细。 diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayFinanceMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayFinanceMapper.java index 9495fb80..535c8add 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayFinanceMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PayFinanceMapper.java @@ -22,7 +22,7 @@ public interface PayFinanceMapper Long selectLadingSupplier(@Param("ladingNo") String ladingNo); - int stampFee(@Param("feeId") Long feeId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); + int stampFee(@Param("feeId") String feeId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); - int stampCalc(@Param("billId") Long billId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); + int stampCalc(@Param("billId") String billId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java index 793a59e7..abfaa2fd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillFeeMapper.java @@ -7,22 +7,22 @@ import com.bms.price.domain.PrcIncomeBillFee; /** 应收账单费用 mapper */ public interface PrcIncomeBillFeeMapper { - public List selectByBillId(Long billId); + public List selectByBillId(String billId); - public List selectByBillIds(@Param("billIds") List billIds); + public List selectByBillIds(@Param("billIds") List billIds); /** 查询指定计费订单中尚未生成应收账单的费用。 */ - public List selectUnbilledByBillIds(@Param("billIds") List billIds, + public List selectUnbilledByBillIds(@Param("billIds") List billIds, @Param("arBillStatus") String arBillStatus); - public PrcIncomeBillFee selectByFeeId(Long feeId); + public PrcIncomeBillFee selectByFeeId(String feeId); /** 按唯一键 uk_bill_fee_item(bill_id、fee_type、sc_id)查询。 */ - public PrcIncomeBillFee selectByBillIdAndFeeTypeAndScId(@Param("billId") Long billId, + public PrcIncomeBillFee selectByBillIdAndFeeTypeAndScId(@Param("billId") String billId, @Param("feeType") String feeType, @Param("scId") Long scId); /** 统计某账单在指定 ar_bill_status 和 fee_type 下的费用数(例如 BILLED + BASIC_FREIGHT)。 */ - public int countByBillIdAndArBillStatusAndFeeType(@Param("billId") Long billId, + public int countByBillIdAndArBillStatusAndFeeType(@Param("billId") String billId, @Param("arBillStatus") String arBillStatus, @Param("feeType") String feeType); public int insertPrcIncomeBillFee(PrcIncomeBillFee fee); @@ -31,23 +31,23 @@ public interface PrcIncomeBillFeeMapper public int updatePrcIncomeBillFee(PrcIncomeBillFee fee); - public int updateArBillStatusByBillIds(@Param("billIds") List billIds, + public int updateArBillStatusByBillIds(@Param("billIds") List billIds, @Param("fromStatus") String fromStatus, @Param("toStatus") String toStatus); /** 按费用明细 ID 精确更新状态,避免误更新同一订单的历史费用。 */ - public int updateArBillStatusByFeeIds(@Param("feeIds") List feeIds, + public int updateArBillStatusByFeeIds(@Param("feeIds") List feeIds, @Param("fromStatus") String fromStatus, @Param("toStatus") String toStatus); /** 作废或失败清理后,仅在不存在其他有效账单关联时恢复为未出账。 */ - public int restoreUnbilledIfNoActiveArBill(@Param("feeIds") List feeIds); + public int restoreUnbilledIfNoActiveArBill(@Param("feeIds") List feeIds); /** 按应收账单批量恢复其关联费用,避免大账单组装超大的费用 ID 列表。 */ public int restoreUnbilledIfNoActiveArBillByArBillId(@Param("arBillId") Long arBillId); - public int deleteByFeeId(Long feeId); + public int deleteByFeeId(String feeId); - public int deleteByBillId(Long billId); + public int deleteByBillId(String billId); /** 重新出账:只删除自动费用;保留 manual_flag=1 的行。 */ - public int deleteAutoFeesByBillId(Long billId); + public int deleteAutoFeesByBillId(String billId); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java index 78156aee..472fdfb1 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcIncomeBillMapper.java @@ -7,11 +7,11 @@ import org.apache.ibatis.annotations.Param; /** 应收账单 prc_income_bill 的 mapper */ public interface PrcIncomeBillMapper { - PrcIncomeBill selectByBillId(Long billId); + PrcIncomeBill selectByBillId(String billId); - List selectByBillIds(@Param("billIds") List billIds); + List selectByBillIds(@Param("billIds") List billIds); - PrcIncomeBill selectByIncomeBillId(Long incomeBillId); + PrcIncomeBill selectByIncomeBillId(String incomeBillId); int insertPrcIncomeBill(PrcIncomeBill row); @@ -19,5 +19,5 @@ public interface PrcIncomeBillMapper int upsertPrcIncomeBill(PrcIncomeBill row); - int deleteByBillId(Long billId); + int deleteByBillId(String billId); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java index 9f196dbd..784e42d4 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillExtMapper.java @@ -5,7 +5,7 @@ import com.bms.price.domain.PrcOrderBillExt; /** 订单账单扩展 prc_order_bill_ext 的 mapper */ public interface PrcOrderBillExtMapper { - public PrcOrderBillExt selectByBillId(Long billId); + public PrcOrderBillExt selectByBillId(String billId); public PrcOrderBillExt selectByOrderNo(String orderNo); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java index 841e4671..d052959a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcOrderBillMapper.java @@ -17,12 +17,12 @@ public interface PrcOrderBillMapper /** TMS 状态查询:按订单号、运单号或转单号精确匹配,最多返回两条用于识别歧义。 */ List selectPrcOrderBillByTmsIdentifier(@Param("identifier") String identifier); - public PrcOrderBill selectPrcOrderBillById(Long billId); + public PrcOrderBill selectPrcOrderBillById(String billId); public List selectPrcOrderBillList(PrcOrderBill bill); /** 只取 bill_id(筛选条件/数据权限与列表一致),用于本地大批量重新出账。 */ - List selectPrcOrderBillIds(PrcOrderBill bill); + List selectPrcOrderBillIds(PrcOrderBill bill); /** 统计匹配的账单数(筛选条件/数据权限与列表一致)。 */ int countPrcOrderBillIds(PrcOrderBill bill); @@ -65,7 +65,7 @@ public interface PrcOrderBillMapper @Param("excludeOrderIdentifiers") List excludeOrderIdentifiers, @Param("cutoffDate") Date cutoffDate, @Param("dateType") String dateType, @Param("currency") String currency, @Param("arBillStatuses") List arBillStatuses, @Param("feeArBillStatus") String feeArBillStatus, - @Param("excludedBillIds") List excludedBillIds); + @Param("excludedBillIds") List excludedBillIds); /** 统计应收账单预览结果金额,供全选模式展示。 */ BigDecimal sumPrcOrderBillIncomeByCustomerPeriod(@Param("customerId") Long customerId, @@ -80,8 +80,8 @@ public interface PrcOrderBillMapper @Param("cutoffDate") Date cutoffDate, @Param("dateType") String dateType, @Param("currency") String currency, @Param("arBillStatuses") List arBillStatuses, @Param("feeArBillStatus") String feeArBillStatus, @Param("snapshotCreateTime") Date snapshotCreateTime, - @Param("lastSourceBillId") Long lastSourceBillId, @Param("billIds") List billIds, - @Param("excludedBillIds") List excludedBillIds, + @Param("lastSourceBillId") String lastSourceBillId, @Param("billIds") List billIds, + @Param("excludedBillIds") List excludedBillIds, @Param("excludedOrderIdentifiers") List excludedOrderIdentifiers, @Param("limit") int limit); int countPrcOrderBillByCustomerPeriod(@Param("customerId") Long customerId, @@ -89,29 +89,29 @@ public interface PrcOrderBillMapper @Param("cutoffDate") Date cutoffDate, @Param("dateType") String dateType, @Param("currency") String currency, @Param("arBillStatuses") List arBillStatuses, @Param("feeArBillStatus") String feeArBillStatus, @Param("snapshotCreateTime") Date snapshotCreateTime, - @Param("billIds") List billIds, @Param("excludedBillIds") List excludedBillIds, + @Param("billIds") List billIds, @Param("excludedBillIds") List excludedBillIds, @Param("excludedOrderIdentifiers") List excludedOrderIdentifiers); /** 按生成账单时用户勾选的订单读取,并再次校验账单筛选条件。 */ public List selectPrcOrderBillByCustomerCutoffAndIds(@Param("customerId") Long customerId, @Param("customerCode") String customerCode, @Param("orderIdentifiers") List orderIdentifiers, @Param("cutoffDate") Date cutoffDate, @Param("dateType") String dateType, - @Param("currency") String currency, @Param("billIds") List billIds, + @Param("currency") String currency, @Param("billIds") List billIds, @Param("arBillStatuses") List arBillStatuses, @Param("feeArBillStatus") String feeArBillStatus); /** 原子占用订单,防止同一订单被并发生成到多张应收账单。 */ - public int claimArBillOrders(@Param("billIds") List billIds, @Param("operator") String operator, + public int claimArBillOrders(@Param("billIds") List billIds, @Param("operator") String operator, @Param("arBillStatuses") List arBillStatuses, @Param("toStatus") String toStatus); /** 作废账单后释放订单,允许后续重新生成新版本账单。 */ - public int releaseArBillOrders(@Param("billIds") List billIds, @Param("operator") String operator, + public int releaseArBillOrders(@Param("billIds") List billIds, @Param("operator") String operator, @Param("fromStatus") String fromStatus, @Param("toStatus") String toStatus); int releaseArBillOrdersByArBillId(@Param("arBillId") Long arBillId, @Param("operator") String operator, @Param("fromStatus") String fromStatus, @Param("toStatus") String toStatus); /** 根据费用明细状态及无费用失败订单的有效账单快照汇总订单出账状态。 */ - int refreshArBillStatusByBillIds(@Param("billIds") List billIds); + int refreshArBillStatusByBillIds(@Param("billIds") List billIds); /** 清理或作废时批量释放来源订单;无费用失败订单的占用判断排除当前账单。 */ int refreshArBillStatusByArBillId(@Param("arBillId") Long arBillId); @@ -126,20 +126,20 @@ public interface PrcOrderBillMapper @Param("creditArrearsStatus") String creditArrearsStatus); /** 更新订单额度欠费状态 */ - int updateCreditArrearsStatus(@Param("billId") Long billId, + int updateCreditArrearsStatus(@Param("billId") String billId, @Param("creditArrearsStatus") String creditArrearsStatus, @Param("updateBy") String updateBy); - public int updateOrderBillAmounts(@Param("billId") Long billId, + public int updateOrderBillAmounts(@Param("billId") String billId, @Param("surchargeAmount") BigDecimal surchargeAmount, @Param("incomeTotal") BigDecimal incomeTotal, @Param("payTotal") BigDecimal payTotal); /** 只更新应付合计,不改应收。 */ - int updatePayTotal(@Param("billId") Long billId, @Param("payTotal") BigDecimal payTotal); + int updatePayTotal(@Param("billId") String billId, @Param("payTotal") BigDecimal payTotal); /** 按未删除应付明细合计回写订单上的应付总额。单次不超过 1000 个订单。 */ - int refreshPayTotalFromFees(@Param("billIds") List billIds); + int refreshPayTotalFromFees(@Param("billIds") List billIds); /** 统计引用该销售套餐版本的订单账单数。 */ int countByPsvId(@Param("psvId") Long psvId); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java index 1f63e115..9c540059 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillFeeMapper.java @@ -13,7 +13,7 @@ public interface PrcPayBillFeeMapper * @param billId 计费订单ID * @return 费用明细 */ - public List selectByBillId(Long billId); + public List selectByBillId(String billId); /** * 插入一条订单应付费用。 @@ -32,7 +32,7 @@ public interface PrcPayBillFeeMapper public int insertBatch(@Param("list") List fees); /** 把还没标明来源的费用,关联到本行主键 id。 */ - public int fillSourceIdByFeeIds(@Param("feeIds") List feeIds); + public int fillSourceIdByFeeIds(@Param("feeIds") List feeIds); /** * 删除一票订单上来源为计算的费用。提单分摊和人工费用保留。 @@ -40,7 +40,7 @@ public interface PrcPayBillFeeMapper * @param billId 计费订单ID * @return 影响行数 */ - public int deleteByBillId(Long billId); + public int deleteByBillId(String billId); /** * 逻辑删除某一条提单费用分摊到订单上的明细。 @@ -51,10 +51,10 @@ public interface PrcPayBillFeeMapper public int markLadingFeeDeleted(@Param("feeId") Long feeId); /** 这条提单费用已经分摊到的订单。作废前取出,用来重算应付总额。 */ - public List selectBillIdsByLadingFee(@Param("feeId") Long feeId); + public List selectBillIdsByLadingFee(@Param("feeId") Long feeId); /** 明细还没挂上应付主表时,按订单补上主表 ID。单次不超过 1000 个订单。 */ - public int bindPayBillId(@Param("billIds") List billIds); + public int bindPayBillId(@Param("billIds") List billIds); /** * 这条提单费用分摊到的订单里,取一个已经生成应付账单的订单号。 diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillMapper.java index a57aa0db..1b1b880a 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/PrcPayBillMapper.java @@ -13,7 +13,7 @@ public interface PrcPayBillMapper * @param billId 计费订单ID * @return 订单应付,没有时为 null */ - PrcPayBill selectByBillId(Long billId); + PrcPayBill selectByBillId(String billId); /** * 按应付主表ID读取。 @@ -21,7 +21,7 @@ public interface PrcPayBillMapper * @param payBillId 订单应付ID * @return 订单应付,没有时为 null */ - PrcPayBill selectByPayBillId(Long payBillId); + PrcPayBill selectByPayBillId(String payBillId); /** * 新增一票订单的应付主表。 @@ -53,7 +53,7 @@ public interface PrcPayBillMapper * @param billId 计费订单ID * @return 影响行数 */ - int deleteByBillId(Long billId); + int deleteByBillId(String billId); /** * 按未删除的应付明细合计,回写这些订单的应付总额。 @@ -61,8 +61,8 @@ public interface PrcPayBillMapper * @param billIds 计费订单 ID,单次不超过 1000 个 * @return 影响行数 */ - int refreshPayTotal(@Param("billIds") List billIds); + int refreshPayTotal(@Param("billIds") List billIds); /** 订单还没有应付主表时补一行,总额随后按明细重算。单次不超过 1000 个订单。 */ - int insertMissingPayBills(@Param("billIds") List billIds, @Param("operator") String operator); + int insertMissingPayBills(@Param("billIds") List billIds, @Param("operator") String operator); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirAllocMapper.java b/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirAllocMapper.java index 9d0698a4..fb9d5186 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirAllocMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/mapper/SrvBillAirAllocMapper.java @@ -34,7 +34,7 @@ public interface SrvBillAirAllocMapper * @param billIds 计费订单 ID * @return 应付主表编号 */ - List selectPayBills(@Param("billIds") List billIds); + List selectPayBills(@Param("billIds") List billIds); /** * 把仍是未分摊的费用改为已分摊。已经不是未分摊的行不会被改到。 diff --git a/bms-back/bms-system/src/main/java/com/bms/price/pay/PaySettleSupport.java b/bms-back/bms-system/src/main/java/com/bms/price/pay/PaySettleSupport.java index 31c0dfee..cb68728e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/pay/PaySettleSupport.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/pay/PaySettleSupport.java @@ -24,10 +24,10 @@ public class PaySettleSupport * @param billId 计费订单ID * @param cardName 价卡归属名称 */ - public void stampCalc(Long billId, String cardName) + public void stampCalc(String billId, String cardName) { BmsSupplier supplier = match(cardName); - if (supplier == null || billId == null) + if (supplier == null || billId == null || billId.isBlank()) { return; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPayOrderCostService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPayOrderCostService.java index 2ab86d1c..4f5ed862 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPayOrderCostService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPayOrderCostService.java @@ -13,7 +13,7 @@ public interface IPayOrderCostService * @param billId 计费订单ID,对应 prc_order_bill.bill_id * @return 本次算出的产品、版本、币种和费用明细 */ - PayOrderCostResult generate(Long billId); + PayOrderCostResult generate(String billId); /** * 单独提交一票尾程。失败时只回滚这一票,不影响外面的对账单事务。 @@ -21,7 +21,7 @@ public interface IPayOrderCostService * @param billId 计费订单ID * @return 本次算出的产品、版本、币种和费用明细 */ - PayOrderCostResult generateIsolated(Long billId); + PayOrderCostResult generateIsolated(String billId); /** * 这票订单当前尾程价卡上的归属供应商名称。没有价卡时返回空字符串。 @@ -29,5 +29,5 @@ public interface IPayOrderCostService * @param billId 计费订单ID * @return 价卡归属名称 */ - String cardSupplierName(Long billId); + String cardSupplierName(String billId); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java index 5bd40f39..6efa663b 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcOrderBillService.java @@ -33,7 +33,7 @@ public interface IPrcOrderBillService * @param upstreamRow Oracle TAB_ORDER 整行数据 * @return billId */ - Long syncUpstreamOverwrite(java.util.Map upstreamRow); + String syncUpstreamOverwrite(java.util.Map upstreamRow); /** * 计费无法生成报价时,仍然落库 prc_order_bill 及其扩展表。 @@ -59,10 +59,10 @@ public interface IPrcOrderBillService /** 转单号下拉搜索选项(模糊匹配,去重限量,带数据权限) */ List listTransferNoOptions(PrcOrderBill query); - TmsPriceQuoteResult getBill(Long billId); + TmsPriceQuoteResult getBill(String billId); /** 订单列表弹窗使用的计费失败原因(带数据权限)。 */ - OrderBillFailReasonVo getBillingFailReason(Long billId); + OrderBillFailReasonVo getBillingFailReason(String billId); TmsPriceQuoteResult getBillByOrderNo(String orderNo); @@ -73,7 +73,7 @@ public interface IPrcOrderBillService TmsPriceQuoteResult updateIncomeFee(UpdateIncomeBillFeeRequest request); /** 删除手工录入的 UNBILLED 收入费用;同时刷新应收合计。 */ - TmsPriceQuoteResult deleteIncomeFee(Long feeId); + TmsPriceQuoteResult deleteIncomeFee(String feeId); /** 预览批量添加费用命中的账单(带数据权限)。 */ BatchAddIncomeBillFeePreview previewBatchAddIncomeFee(BatchAddIncomeBillFeeRequest request); @@ -103,7 +103,7 @@ public interface IPrcOrderBillService * @param billId 订单计费ID * @return 更新后的计费结果 */ - TmsPriceQuoteResult updateCreditArrearsStatus(Long billId); + TmsPriceQuoteResult updateCreditArrearsStatus(String billId); /** * 更新 charge_weight(手工覆盖),保留原重量,并重新计费。 @@ -112,12 +112,12 @@ public interface IPrcOrderBillService * @param billId 账单 ID * @param chargeWeight 新的计费重量(kg) */ - TmsPriceQuoteResult updateChargeWeight(Long billId, BigDecimal chargeWeight); + TmsPriceQuoteResult updateChargeWeight(String billId, BigDecimal chargeWeight); /** * 更新 charge_weight,不做数据权限校验(供已校验的异步导入使用)。 */ - TmsPriceQuoteResult updateChargeWeightByBillId(Long billId, BigDecimal chargeWeight); + TmsPriceQuoteResult updateChargeWeightByBillId(String billId, BigDecimal chargeWeight); /** * 提交 charge_weight 更新的异步导入;返回 taskId。 @@ -151,7 +151,7 @@ public interface IPrcOrderBillService * 按模式(PRODUCT/REDLINE)重算并落库 product_amount 或 redline_amount。 * 要求 prc_order_bill 已存在;跳过应收可编辑校验。 */ - void recalcBillPriceByBillId(Long billId, String mode); + void recalcBillPriceByBillId(String billId, String mode); /** * 仅基于本地 prc_order_bill 做完整重算(不调 Oracle 上游)。 @@ -159,7 +159,7 @@ public interface IPrcOrderBillService * 若 prc_income_bill_fee 已有 fee_type=REFUND 则跳过,否则走 {@link #refund}。 * 其余情况用账单行重建请求后走 {@link #bill}。 */ - TmsPriceQuoteResult rebillLocalByBillId(Long billId); + TmsPriceQuoteResult rebillLocalByBillId(String billId); /** * 按选中的 billId 或列表筛选条件做异步本地重算。返回 taskId 用于进度轮询。 @@ -174,7 +174,7 @@ public interface IPrcOrderBillService BatchAddIncomeBillFeeTask cancelLocalRebill(String taskId); /** 本地重算用的带数据权限的 bill_id 列表(筛选条件与订单账单列表一致)。 */ - List selectBillIdsForLocalRebill(PrcOrderBill query); + List selectBillIdsForLocalRebill(PrcOrderBill query); /** 本地重算的带数据权限的数量统计。 */ int countBillIdsForLocalRebill(PrcOrderBill query); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPayBillFeeService.java b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPayBillFeeService.java index b3a1a722..e4c250cf 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPayBillFeeService.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/IPrcPayBillFeeService.java @@ -21,5 +21,5 @@ public interface IPrcPayBillFeeService * * @param billIds 计费订单 ID */ - void refreshTotals(List billIds); + void refreshTotals(List billIds); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayBillServiceImpl.java index 1d60762d..33527f3e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayBillServiceImpl.java @@ -15,6 +15,7 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; +import java.util.UUID; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; @@ -151,9 +152,9 @@ public class PayBillServiceImpl implements IPayBillService throw new ServiceException(preview.getMissingNos().isEmpty() ? PaymentMesEnum.BMS_PAY_NO_GEN.getCnMes() : "订单号没有对上:" + String.join("、", preview.getMissingNos())); } String currency = currencyOf(orders); - Map versions = new HashMap<>(); + Map versions = new HashMap<>(); List skipped = new ArrayList<>(); - List billIds = new ArrayList<>(); + List billIds = new ArrayList<>(); for (PayBillOrder order : orders) { billIds.add(order.getBillId()); @@ -227,7 +228,7 @@ public class PayBillServiceImpl implements IPayBillService bill.setSourceType(mode(command)); bill.setPeriodStart(parseDay(command.getBeginDate())); bill.setPeriodEnd(parseDay(command.getEndDate())); - Set orderIds = new HashSet<>(); + Set orderIds = new HashSet<>(); for (PayBillLine line : lines) { if (line.getOrderBillId() != null) @@ -259,7 +260,7 @@ public class PayBillServiceImpl implements IPayBillService { line.setBillId(bill.getBillId()); payBillMapper.insertLine(line); - if (line.getFeeId() != null && payBillMapper.bindFeeLine(line.getFeeId(), line.getLineId()) != 1) + if (line.getFeeId() != null && !line.getFeeId().isBlank() && payBillMapper.bindFeeLine(line.getFeeId(), line.getLineId()) != 1) { throw PaymentMesEnum.BMS_PAY_FEE_TAKEN.exception(); } @@ -573,6 +574,7 @@ public class PayBillServiceImpl implements IPayBillService } } PrcPayBillFee adjust = new PrcPayBillFee(); + adjust.setFeeId(UUID.randomUUID().toString()); adjust.setBillId(line.getOrderBillId()); adjust.setPayBillId(source == null ? null : source.getPayBillId()); adjust.setFeeType("对账调整"); @@ -582,7 +584,7 @@ public class PayBillServiceImpl implements IPayBillService adjust.setAmount(delta); adjust.setCurrency(line.getCurrency()); adjust.setFeeSource("MANUAL"); - adjust.setSourceId(source != null && source.getFeeId() != null ? String.valueOf(source.getFeeId()) : null); + adjust.setSourceId(source != null && source.getId() != null ? String.valueOf(source.getId()) : null); adjust.setRemark(open.getReason()); adjust.setSettleSupplierId(bill.getSupplierId()); adjust.setSettleSupplierName(bill.getSupplierName()); @@ -945,7 +947,7 @@ public class PayBillServiceImpl implements IPayBillService * @param billId 计费订单ID * @return 订单;对不上时返回 null */ - private PayBillOrder findOrder(List orders, Long billId) + private PayBillOrder findOrder(List orders, String billId) { for (PayBillOrder order : orders) { @@ -1109,11 +1111,11 @@ public class PayBillServiceImpl implements IPayBillService { List kept = new ArrayList<>(); Set notes = new LinkedHashSet<>(); - Map cards = new HashMap<>(); + Map cards = new HashMap<>(); for (PrcPayBillFee fee : fees) { PayBillOrder order = findOrder(orders, fee.getBillId()); - String orderNo = order == null || order.getOrderNo() == null ? String.valueOf(fee.getBillId()) : order.getOrderNo(); + String orderNo = order == null || order.getOrderNo() == null ? fee.getBillId() : order.getOrderNo(); String why = partyReason(fee, order, supplier, cards); if (why == null) { @@ -1129,7 +1131,7 @@ public class PayBillServiceImpl implements IPayBillService return kept; } - private String partyReason(PrcPayBillFee fee, PayBillOrder order, BmsSupplier supplier, Map cards) + private String partyReason(PrcPayBillFee fee, PayBillOrder order, BmsSupplier supplier, Map cards) { if (fee.getSettleSupplierId() != null) { @@ -1265,7 +1267,7 @@ public class PayBillServiceImpl implements IPayBillService List lines = payBillMapper.selectLines(billId); BigDecimal total = BigDecimal.ZERO; BigDecimal supplier = BigDecimal.ZERO; - Set orders = new HashSet<>(); + Set orders = new HashSet<>(); for (PayBillLine line : lines) { BigDecimal amount = line.getAmount() == null ? BigDecimal.ZERO : line.getAmount(); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayOrderCostServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayOrderCostServiceImpl.java index 3d25833a..fd123062 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayOrderCostServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PayOrderCostServiceImpl.java @@ -84,20 +84,20 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService */ @Override @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) - public PayOrderCostResult generateIsolated(Long billId) + public PayOrderCostResult generateIsolated(String billId) { return generate(billId); } @Override @Transactional(rollbackFor = Exception.class) - public PayOrderCostResult generate(Long billId) + public PayOrderCostResult generate(String billId) { - if (billId == null) + if (billId == null || billId.isBlank()) { throw PaymentMesEnum.BMS_PAY_PICK_ORDER.exception(); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { throw PaymentMesEnum.BMS_PAY_ORDER_MISS.exception(); @@ -142,15 +142,15 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService } @Override - public String cardSupplierName(Long billId) + public String cardSupplierName(String billId) { - if (billId == null) + if (billId == null || billId.isBlank()) { return ""; } try { - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { return ""; @@ -555,6 +555,7 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService PrcPayBill row = existed == null ? new PrcPayBill() : existed; if (existed == null) { + row.setPayBillId(UUID.randomUUID().toString()); row.setBillId(bill.getBillId()); row.setCreateBy(operator); } @@ -584,7 +585,7 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService * @param payBillId 订单应付主表ID * @param fees 本次算出的费用 */ - private void saveFees(Long billId, Long payBillId, List fees) + private void saveFees(String billId, String payBillId, List fees) { payBillFeeMapper.deleteByBillId(billId); List rows = new java.util.ArrayList<>(); @@ -592,6 +593,7 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService for (PayCostLine fee : fees) { PrcPayBillFee row = new PrcPayBillFee(); + row.setFeeId(UUID.randomUUID().toString()); row.setBillId(billId); row.setPayBillId(payBillId); row.setFeeType(fee.getFeeType()); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java index 1048198e..f9c4a913 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcBillingTaskServiceImpl.java @@ -635,7 +635,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService { bill = orderBillMapper.selectPrcOrderBillByOrderNo(orderNo.trim()); } - if (bill == null && task.getBillId() != null) + if (bill == null && StringUtils.isNotEmpty(task.getBillId())) { bill = orderBillMapper.selectPrcOrderBillById(task.getBillId()); } @@ -645,7 +645,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService } } - private void writeback(PrcBillingTask task, BillTaskSuccessStatus status, Long billId, + private void writeback(PrcBillingTask task, BillTaskSuccessStatus status, String billId, String errorMessage, String failCode) { PrcBillingTask upd = new PrcBillingTask(); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java index 64f3f935..1fe05347 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcOrderBillServiceImpl.java @@ -12,6 +12,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; +import java.util.UUID; import java.util.stream.Collectors; import jakarta.servlet.http.HttpServletResponse; import org.slf4j.Logger; @@ -296,6 +297,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } PrcIncomeBillFee refundFee = new PrcIncomeBillFee(); + refundFee.setFeeId(UUID.randomUUID().toString()); refundFee.setBillId(bill.getBillId()); refundFee.setIncomeBillId(incomeBill == null ? null : incomeBill.getIncomeBillId()); String refundFeeType = FEE_TYPE_REFUND; @@ -421,19 +423,6 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return cleaned.isEmpty() ? null : cleaned; } - /** 账单ID去空去重。 */ - private List normalizeIdList(List ids) - { - if (ids == null || ids.isEmpty()) - { - return null; - } - List cleaned = ids.stream().filter(java.util.Objects::nonNull).distinct() - .collect(Collectors.toList()); - return cleaned.isEmpty() ? null : cleaned; - } - - /** 单号筛选按去重后的订单号/运单号/转单号数量限制,避免过大的 IN 参数。 */ private List normalizeOrderIdentifiers(List identifiers) { @@ -446,14 +435,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } @Override - public TmsPriceQuoteResult getBill(Long billId) + public TmsPriceQuoteResult getBill(String billId) { if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } PrcOrderBill query = new PrcOrderBill(); - query.setBillId(billId); + query.setBillId(billId.trim()); // 走 selectBillList,复用销售员/结算员数据权限,避免越权查详情 List list = self.selectBillList(query); if (list == null || list.isEmpty()) @@ -467,14 +456,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override - public OrderBillFailReasonVo getBillingFailReason(Long billId) + public OrderBillFailReasonVo getBillingFailReason(String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } PrcOrderBill query = new PrcOrderBill(); - query.setBillId(billId); + query.setBillId(billId.trim()); List list = self.selectBillList(query); if (list == null || list.isEmpty()) { @@ -698,7 +687,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Transactional(rollbackFor = Exception.class) public TmsPriceQuoteResult addIncomeFee(AddIncomeBillFeeRequest request) { - if (request == null || request.getBillId() == null) + if (request == null || StringUtils.isEmpty(request.getBillId())) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } @@ -706,7 +695,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { throw new ServiceException(MessageUtils.message("price.bill.fee.scIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(request.getBillId()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(request.getBillId().trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -745,7 +734,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService : surcharge.getRoundMode()); existing.setRemark(request.getRemark()); existing.setManualFlag("1"); - if (incomeBill != null && existing.getIncomeBillId() == null) + if (incomeBill != null && StringUtils.isEmpty(existing.getIncomeBillId())) { existing.setIncomeBillId(incomeBill.getIncomeBillId()); } @@ -754,6 +743,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService else { PrcIncomeBillFee fee = new PrcIncomeBillFee(); + fee.setFeeId(UUID.randomUUID().toString()); fee.setBillId(bill.getBillId()); fee.setIncomeBillId(incomeBill == null ? null : incomeBill.getIncomeBillId()); fee.setFeeType(feeType); @@ -776,11 +766,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Transactional(rollbackFor = Exception.class) public TmsPriceQuoteResult updateIncomeFee(UpdateIncomeBillFeeRequest request) { - if (request == null || request.getFeeId() == null) + if (request == null || StringUtils.isEmpty(request.getFeeId())) { throw new ServiceException(MessageUtils.message("price.bill.fee.idRequired")); } - PrcIncomeBillFee fee = requireEditableManualFee(request.getFeeId()); + PrcIncomeBillFee fee = requireEditableManualFee(request.getFeeId().trim()); PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(fee.getBillId()); if (bill == null) { @@ -823,13 +813,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult deleteIncomeFee(Long feeId) + public TmsPriceQuoteResult deleteIncomeFee(String feeId) { - if (feeId == null) + if (StringUtils.isEmpty(feeId)) { throw new ServiceException(MessageUtils.message("price.bill.fee.idRequired")); } - PrcIncomeBillFee fee = requireEditableManualFee(feeId); + PrcIncomeBillFee fee = requireEditableManualFee(feeId.trim()); PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(fee.getBillId()); if (bill == null) { @@ -868,10 +858,10 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService throw new ServiceException(MessageUtils.message("price.bill.fee.batch.tooMany", Integer.valueOf(BATCH_ADD_FEE_MAX))); } - List billIds = new ArrayList(); + List billIds = new ArrayList(); for (PrcOrderBill bill : bills) { - if (bill != null && bill.getBillId() != null) + if (bill != null && StringUtils.isNotEmpty(bill.getBillId())) { billIds.add(bill.getBillId()); } @@ -923,10 +913,10 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService throw new ServiceException(MessageUtils.message("price.bill.recalc.tooMany", Integer.valueOf(RECALC_PRICE_MAX))); } - List billIds = new ArrayList(); + List billIds = new ArrayList(); for (PrcOrderBill bill : bills) { - if (bill != null && bill.getBillId() != null) + if (bill != null && StringUtils.isNotEmpty(bill.getBillId())) { billIds.add(bill.getBillId()); } @@ -954,14 +944,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public void recalcBillPriceByBillId(Long billId, String mode) + public void recalcBillPriceByBillId(String billId, String mode) { boolean productMode = "PRODUCT".equals(normalizeRecalcMode(mode)); - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -990,13 +980,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService * 其他情况走正常的 {@link #bill}。 */ @Override - public TmsPriceQuoteResult rebillLocalByBillId(Long billId) + public TmsPriceQuoteResult rebillLocalByBillId(String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -1022,7 +1012,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return refundLocalWithDbRetry(bill.getOrderNo().trim()); } TmsPriceBillRequest req = buildBillRequestFromBill(bill); - return billLocalWithDbRetry(billId, req); + return billLocalWithDbRetry(billId.trim(), req); } /** order_status 为 9/10 或 refund_status=REFUNDED。 */ @@ -1039,9 +1029,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return BillRefundStatus.REFUNDED.getCode().equalsIgnoreCase(bill.getRefundStatus()); } - private boolean hasRefundFeeLine(Long billId) + private boolean hasRefundFeeLine(String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { return false; } @@ -1060,7 +1050,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return false; } - private TmsPriceQuoteResult billLocalWithDbRetry(Long billId, TmsPriceBillRequest billReq) + private TmsPriceQuoteResult billLocalWithDbRetry(String billId, TmsPriceBillRequest billReq) { RuntimeException last = null; for (int attempt = 1; attempt <= LOCAL_REBILL_DB_RETRY_MAX; attempt++) @@ -1180,7 +1170,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService Integer.valueOf(LOCAL_REBILL_MAX))); } // 仅取 ID:大数据量任务避免加载完整的 prc_order_bill 行。 - List billIds = self.selectBillIdsForLocalRebill(query); + List billIds = self.selectBillIdsForLocalRebill(query); if (billIds == null || billIds.isEmpty()) { throw new ServiceException(MessageUtils.message("price.bill.recalc.noMatch")); @@ -1302,15 +1292,15 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @DataScope(deptAlias = "su", deptField = "dept_id", userAlias = "su", userField = "user_id", permission = "price:billing:bill") - public List selectBillIdsForLocalRebill(PrcOrderBill query) + public List selectBillIdsForLocalRebill(PrcOrderBill query) { if (query == null) { - return new ArrayList(); + return new ArrayList(); } normalizeLocalRebillQuery(query); - List ids = orderBillMapper.selectPrcOrderBillIds(query); - return ids == null ? new ArrayList() : ids; + List ids = orderBillMapper.selectPrcOrderBillIds(query); + return ids == null ? new ArrayList() : ids; } @Override @@ -1331,7 +1321,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcOrderBill query = new PrcOrderBill(); if ("SELECTED".equals(scopeMode)) { - List billIds = normalizeIdList(request.getBillIds()); + List billIds = normalizeCodeList(request.getBillIds()); if (billIds == null || billIds.isEmpty()) { throw new ServiceException(MessageUtils.message("price.bill.recalc.selectedRequired")); @@ -1410,7 +1400,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService query.setTrackingNos(normalizeCodeList(query.getTrackingNos())); query.setTransferNos(normalizeCodeList(query.getTransferNos())); query.setOrderIdentifiers(normalizeOrderIdentifiers(query.getOrderIdentifiers())); - query.setBillIds(normalizeIdList(query.getBillIds())); + query.setBillIds(normalizeCodeList(query.getBillIds())); } private static String normalizeRecalcMode(String mode) @@ -1431,6 +1421,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService if (insert) { incomeBill = new PrcIncomeBill(); + incomeBill.setIncomeBillId(UUID.randomUUID().toString()); incomeBill.setBillId(bill.getBillId()); incomeBill.setCurrency(StringUtils.isEmpty(bill.getCurrency()) ? "CNY" : bill.getCurrency()); incomeBill.setSalesAmount(nz(bill.getIncomeTotal())); @@ -1516,7 +1507,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService * scopeMode:SELECTED 使用 billIds;ALL 使用筛选条件(至少需要一个)。 * 仅传 orderStatuses 不算有效筛选(与导出规则一致)。 */ - private List resolveListScopedBills(String scopeModeRaw, List billIdsRaw, + private List resolveListScopedBills(String scopeModeRaw, List billIdsRaw, List orderNosRaw, List trackingNosRaw, List transferNosRaw, List orderIdentifiersRaw, List customerCodesRaw, List productCodesRaw, String countryCodeRaw, String creditArrearsStatusRaw, List orderStatusesRaw, List billingFailStatusesRaw, @@ -1565,7 +1556,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcOrderBill query = new PrcOrderBill(); if ("SELECTED".equals(scopeMode)) { - List billIds = normalizeIdList(billIdsRaw); + List billIds = normalizeCodeList(billIdsRaw); if (billIds == null || billIds.isEmpty()) { throw new ServiceException(MessageUtils.message(msgSelected)); @@ -1633,7 +1624,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return surcharge; } - private PrcIncomeBillFee requireEditableManualFee(Long feeId) + private PrcIncomeBillFee requireEditableManualFee(String feeId) { PrcIncomeBillFee fee = incomeBillFeeMapper.selectByFeeId(feeId); if (fee == null) @@ -1841,13 +1832,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService */ @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateCreditArrearsStatus(Long billId) + public TmsPriceQuoteResult updateCreditArrearsStatus(String billId) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -2008,6 +1999,10 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService 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.setBillKey(billKey); bill.setOrderNo(orderNo); // 上游表头覆盖(不做校验)。 @@ -2145,6 +2140,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { bill.setRefundStatus(BillRefundStatus.NONE.getCode()); } + result.setBillId(bill.getBillId()); result.setOrderNo(orderNo); result.setTransferNo(bill.getTransferNo()); result.setCustomerId(bill.getCustomerId()); @@ -2179,7 +2175,6 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService // 应付暂不在范围内:跳过 prc_pay_bill_fee 的清理/写入。 // payBillFeeMapper.deleteByBillId(bill.getBillId()); } - result.setBillId(bill.getBillId()); PrcIncomeBill incomeBill = null; if (storeIncome) { @@ -2241,9 +2236,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService * 丢弃在 uk_bill_fee_item(bill_id, fee_type, sc_id)上与保留的人工行冲突的自动费用行。 * 重算时以人工费用优先。 */ - private List filterAutoFeesAgainstManual(Long billId, List autoFees) + private List filterAutoFeesAgainstManual(String billId, List autoFees) { - if (autoFees == null || autoFees.isEmpty() || billId == null) + if (autoFees == null || autoFees.isEmpty() || StringUtils.isEmpty(billId)) { return autoFees == null ? new ArrayList() : autoFees; } @@ -2444,7 +2439,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService private boolean isAlreadyInArBill(PrcOrderBill existed) { - if (existed == null || existed.getBillId() == null) + if (existed == null || StringUtils.isEmpty(existed.getBillId())) { return false; } @@ -2467,7 +2462,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return v == null ? BigDecimal.ZERO : v; } - private List toFeeRows(Long billId, Long incomeBillId, TmsPriceQuoteResult result) + private List toFeeRows(String billId, String incomeBillId, TmsPriceQuoteResult result) { List fees = new ArrayList(); if (result.getFeeDetails() == null) @@ -2477,6 +2472,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService for (TmsPriceQuoteFeeLine line : result.getFeeDetails()) { PrcIncomeBillFee fee = new PrcIncomeBillFee(); + fee.setFeeId(UUID.randomUUID().toString()); fee.setBillId(billId); fee.setIncomeBillId(incomeBillId); fee.setFeeType(line.getFeeType()); @@ -2498,7 +2494,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 应收主表与订单计费一对一落库;销售价=套餐计费,产品价=产品目录价,红线价=红线目录价(含 REDLINE 附加费)。 */ private PrcIncomeBill persistIncomeBill(PrcOrderBill bill, TmsPriceQuoteResult result) { - if (bill == null || bill.getBillId() == null) + if (bill == null || StringUtils.isEmpty(bill.getBillId())) { return null; } @@ -2507,6 +2503,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcIncomeBill row = existed == null ? new PrcIncomeBill() : existed; if (existed == null) { + row.setIncomeBillId(UUID.randomUUID().toString()); row.setBillId(bill.getBillId()); row.setCreateBy(bill.getCreateBy()); } @@ -2535,7 +2532,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } - private List toPayFeeRows(Long billId, Long payBillId, TmsPriceQuoteResult result) + private List toPayFeeRows(String billId, String payBillId, TmsPriceQuoteResult result) { List fees = new ArrayList(); if (result.getPayFeeDetails() == null) @@ -2545,6 +2542,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService for (TmsPriceQuoteFeeLine line : result.getPayFeeDetails()) { PrcPayBillFee fee = new PrcPayBillFee(); + fee.setFeeId(UUID.randomUUID().toString()); fee.setBillId(billId); fee.setPayBillId(payBillId); fee.setFeeType(line.getFeeType()); @@ -2562,7 +2560,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 应付主表与订单计费一对一落库;product_amount 取产品目录价、redline_amount 取红线价;应付/成本价留空待接入真实成本源。 */ private PrcPayBill persistPayBill(PrcOrderBill bill, TmsPriceQuoteResult result) { - if (bill == null || bill.getBillId() == null) + if (bill == null || StringUtils.isEmpty(bill.getBillId())) { return null; } @@ -2570,6 +2568,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcPayBill row = existed == null ? new PrcPayBill() : existed; if (existed == null) { + row.setPayBillId(UUID.randomUUID().toString()); row.setBillId(bill.getBillId()); row.setCreateBy(bill.getCreateBy()); } @@ -2656,7 +2655,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 仅在存在上游 TAB_ORDER 行时写入 prc_order_bill_ext。 */ private void persistBillExt(PrcOrderBill bill, java.util.Map upstreamRow) { - if (bill == null || bill.getBillId() == null) + if (bill == null || StringUtils.isEmpty(bill.getBillId())) { return; } @@ -2681,7 +2680,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService for (PrcIncomeBillFee fee : fees) { TmsPriceQuoteFeeLine line = new TmsPriceQuoteFeeLine(); - line.setFeeId(fee.getFeeId() == null ? null : String.valueOf(fee.getFeeId())); + line.setFeeId(fee.getFeeId()); line.setFeeType(fee.getFeeType()); line.setFeeName(fee.getFeeName()); line.setScId(fee.getScId()); @@ -2793,26 +2792,26 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateChargeWeight(Long billId, BigDecimal chargeWeight) + public TmsPriceQuoteResult updateChargeWeight(String billId, BigDecimal chargeWeight) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } // 通过列表查询做数据范围校验 - self.getBill(billId); - return self.updateChargeWeightByBillId(billId, chargeWeight); + self.getBill(billId.trim()); + return self.updateChargeWeightByBillId(billId.trim(), chargeWeight); } @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateChargeWeightByBillId(Long billId, BigDecimal chargeWeight) + public TmsPriceQuoteResult updateChargeWeightByBillId(String billId, BigDecimal chargeWeight) { - if (billId == null) + if (StringUtils.isEmpty(billId)) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -3059,7 +3058,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return rows; } - private TmsPriceQuoteResult toResult(Long billId) + private TmsPriceQuoteResult toResult(String billId) { PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) @@ -3221,7 +3220,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { return name; } - if (bill.getBillId() == null || orderBillExtMapper == null) + if (StringUtils.isEmpty(bill.getBillId()) || orderBillExtMapper == null) { return StringUtils.isNotEmpty(name) ? name : null; } @@ -3265,7 +3264,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService */ @Override @Transactional(rollbackFor = Exception.class) - public Long syncUpstreamOverwrite(java.util.Map upstreamRow) + public String syncUpstreamOverwrite(java.util.Map upstreamRow) { if (upstreamRow == null || upstreamRow.isEmpty()) { @@ -3313,6 +3312,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcOrderBill bill = creating ? new PrcOrderBill() : existed; if (creating) { + bill.setBillId(UUID.randomUUID().toString()); bill.setArBillStatus(ArOrderBillStatus.UNBILLED.getCode()); bill.setRefundStatus(BillRefundStatus.NONE.getCode()); // 仅订单来源同步:在报价/计费执行前标记为未计费。 @@ -3430,6 +3430,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService 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()); } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPayBillFeeServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPayBillFeeServiceImpl.java index ba0a56d4..05cff2b5 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPayBillFeeServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/PrcPayBillFeeServiceImpl.java @@ -38,15 +38,15 @@ public class PrcPayBillFeeServiceImpl implements IPrcPayBillFeeService { return; } - LinkedHashSet billIds = new LinkedHashSet<>(); + LinkedHashSet billIds = new LinkedHashSet<>(); for (int from = 0; from < fees.size(); from += BATCH_SIZE) { List chunk = fees.subList(from, Math.min(from + BATCH_SIZE, fees.size())); payBillFeeMapper.insertBatch(chunk); - List ownIds = new ArrayList<>(); + List ownIds = new ArrayList<>(); for (PrcPayBillFee fee : chunk) { - if (fee != null && fee.getFeeId() != null + if (fee != null && fee.getFeeId() != null && !fee.getFeeId().isBlank() && (fee.getSourceId() == null || fee.getSourceId().isBlank())) { ownIds.add(fee.getFeeId()); @@ -58,9 +58,9 @@ public class PrcPayBillFeeServiceImpl implements IPrcPayBillFeeService } for (PrcPayBillFee fee : chunk) { - if (fee != null && fee.getBillId() != null) + if (fee != null && fee.getBillId() != null && !fee.getBillId().isBlank()) { - billIds.add(fee.getBillId()); + billIds.add(fee.getBillId().trim()); } } } @@ -68,25 +68,25 @@ public class PrcPayBillFeeServiceImpl implements IPrcPayBillFeeService } @Override - public void refreshTotals(List billIds) + public void refreshTotals(List billIds) { if (billIds == null || billIds.isEmpty()) { return; } - LinkedHashSet unique = new LinkedHashSet<>(); - for (Long billId : billIds) + LinkedHashSet unique = new LinkedHashSet<>(); + for (String billId : billIds) { - if (billId != null) + if (billId != null && !billId.isBlank()) { - unique.add(billId); + unique.add(billId.trim()); } } - List ids = new ArrayList<>(unique); + List ids = new ArrayList<>(unique); String operator = currentOperator(); for (int from = 0; from < ids.size(); from += BATCH_SIZE) { - List chunk = ids.subList(from, Math.min(from + BATCH_SIZE, ids.size())); + List chunk = ids.subList(from, Math.min(from + BATCH_SIZE, ids.size())); payBillMapper.insertMissingPayBills(chunk, operator); payBillFeeMapper.bindPayBillId(chunk); payBillMapper.refreshPayTotal(chunk); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirAllocServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirAllocServiceImpl.java index e6395da7..5795f947 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirAllocServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirAllocServiceImpl.java @@ -8,6 +8,7 @@ import java.util.LinkedHashMap; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -94,7 +95,7 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService throw new ServiceException(fee.getBillCode() + " " + blankName(fee) + ":" + reason); } } - Map payBillIds = payBillIds(orders); + Map payBillIds = payBillIds(orders); List batch = new ArrayList<>(BATCH_SIZE); int lineCount = 0; for (SrvBillAirAllocFee fee : fees) @@ -167,7 +168,7 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService Map> grouped = new LinkedHashMap<>(); for (SrvBillAirAllocOrder order : allocMapper.selectOrders(codes)) { - if (order.getBillId() == null) + if (order.getBillId() == null || order.getBillId().isBlank()) { continue; } @@ -176,9 +177,9 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService return grouped; } - private Map payBillIds(Map> orders) + private Map payBillIds(Map> orders) { - List billIds = new ArrayList<>(); + List billIds = new ArrayList<>(); for (List rows : orders.values()) { for (SrvBillAirAllocOrder order : rows) @@ -186,10 +187,10 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService billIds.add(order.getBillId()); } } - Map payIds = new LinkedHashMap<>(); + Map payIds = new LinkedHashMap<>(); for (int from = 0; from < billIds.size(); from += BATCH_SIZE) { - List chunk = billIds.subList(from, Math.min(from + BATCH_SIZE, billIds.size())); + List chunk = billIds.subList(from, Math.min(from + BATCH_SIZE, billIds.size())); for (PrcPayBill payBill : allocMapper.selectPayBills(chunk)) { if (payBill.getBillId() != null && payBill.getPayBillId() != null) @@ -230,9 +231,10 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService return ""; } - private PrcPayBillFee toOrderFee(SrvBillAirAllocFee fee, SrvBillAirAllocOrder order, BigDecimal amount, Map payBillIds) + private PrcPayBillFee toOrderFee(SrvBillAirAllocFee fee, SrvBillAirAllocOrder order, BigDecimal amount, Map payBillIds) { PrcPayBillFee row = new PrcPayBillFee(); + row.setFeeId(UUID.randomUUID().toString()); row.setBillId(order.getBillId()); row.setPayBillId(payBillIds.get(order.getBillId())); String name = blankName(fee); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirFeeServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirFeeServiceImpl.java index 90de96cc..e5783b1f 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirFeeServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/service/impl/SrvBillAirFeeServiceImpl.java @@ -409,7 +409,7 @@ public class SrvBillAirFeeServiceImpl implements ISrvBillAirFeeService } Operator operator = operator(); Date now = DateUtils.getNowDate(); - List affectedBills = payBillFeeMapper.selectBillIdsByLadingFee(feeId); + List affectedBills = payBillFeeMapper.selectBillIdsByLadingFee(feeId); payBillFeeMapper.markLadingFeeDeleted(feeId); payBillFeeService.refreshTotals(affectedBills); if (feeMapper.voidFee(feeId, code, operator.account, now) != 1) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java index af9e2415..947786d9 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcBatchAddIncomeFeeAsyncRunner.java @@ -34,7 +34,7 @@ public class PrcBatchAddIncomeFeeAsyncRunner private RedisCache redisCache; @Async("threadPoolTaskExecutor") - public void run(String taskId, List billIds, Long scId, String feeType, BigDecimal amount, + public void run(String taskId, List billIds, Long scId, String feeType, BigDecimal amount, String currency, String remark) { int total = billIds == null ? 0 : billIds.size(); @@ -51,7 +51,7 @@ public class PrcBatchAddIncomeFeeAsyncRunner } for (int i = 0; i < total; i++) { - Long billId = billIds.get(i); + String billId = billIds.get(i); try { AddIncomeBillFeeRequest req = new AddIncomeBillFeeRequest(); diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java index ecc3d6a1..298d1775 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcChargeWeightImportAsyncRunner.java @@ -200,7 +200,7 @@ public class PrcChargeWeightImportAsyncRunner public static class ChargeWeightImportWorkItem implements java.io.Serializable { private static final long serialVersionUID = 1L; - private Long billId; + private String billId; private String orderNo; private BigDecimal chargeWeight; @@ -208,19 +208,19 @@ public class PrcChargeWeightImportAsyncRunner { } - public ChargeWeightImportWorkItem(Long billId, String orderNo, BigDecimal chargeWeight) + public ChargeWeightImportWorkItem(String billId, String orderNo, BigDecimal chargeWeight) { this.billId = billId; this.orderNo = orderNo; this.chargeWeight = chargeWeight; } - public Long getBillId() + public String getBillId() { return billId; } - public void setBillId(Long billId) + public void setBillId(String billId) { this.billId = billId; } diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java index 602f6d3e..2d8c9809 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcOrderBillLocalRebillAsyncRunner.java @@ -74,13 +74,13 @@ public class PrcOrderBillLocalRebillAsyncRunner private PrcOrderBillMapper orderBillMapper; @Async("threadPoolTaskExecutor") - public void run(String taskId, List billIds) + public void run(String taskId, List billIds) { run(taskId, billIds, null); } @Async("threadPoolTaskExecutor") - public void run(String taskId, List billIds, LocalRebillRequest request) + public void run(String taskId, List billIds, LocalRebillRequest request) { int total = billIds == null ? 0 : billIds.size(); AtomicInteger success = new AtomicInteger(0); @@ -110,7 +110,7 @@ public class PrcOrderBillLocalRebillAsyncRunner return; } // 连续拉取:N 个工作线程取下一个 billId —— 没有分页屏障式空等。 - final List ids = billIds; + final List ids = billIds; List> workers = new ArrayList>(threads); for (int w = 0; w < threads; w++) { @@ -122,7 +122,7 @@ public class PrcOrderBillLocalRebillAsyncRunner { return Boolean.TRUE; } - Long one = ids.get(i); + String one = ids.get(i); try { TmsPriceQuoteResult result = orderBillService.rebillLocalByBillId(one); @@ -269,12 +269,12 @@ public class PrcOrderBillLocalRebillAsyncRunner TabOrderSyncEsLog.save(billSearchStore, taskId, "LOCAL_REBILL_DONE", request, resp, status, errorMessage); } - private void collectFailDetail(List> failDetails, Long billId, Exception e) + private void collectFailDetail(List> failDetails, String billId, Exception e) { collectFailDetail(failDetails, billId, errorMessage(e)); } - private void collectFailDetail(List> failDetails, Long billId, String message) + private void collectFailDetail(List> failDetails, String billId, String message) { if (failDetails == null) { @@ -293,8 +293,8 @@ public class PrcOrderBillLocalRebillAsyncRunner String trackingNo = null; try { - PrcOrderBill bill = orderBillMapper == null || billId == null - ? null : orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper == null || StringUtils.isEmpty(billId) + ? null : orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill != null) { orderNo = bill.getOrderNo(); @@ -475,19 +475,19 @@ public class PrcOrderBillLocalRebillAsyncRunner } /** UI 提示优先用 transferNo;没有则退回 orderNo,再退回 billId。 */ - private String failTransferLabel(Long billId, String transferNoHint) + private String failTransferLabel(String billId, String transferNoHint) { if (StringUtils.isNotEmpty(transferNoHint)) { return transferNoHint.trim(); } - if (billId == null || orderBillMapper == null) + if (StringUtils.isEmpty(billId) || orderBillMapper == null) { - return billId == null ? null : String.valueOf(billId); + return billId; } try { - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); if (bill != null) { if (StringUtils.isNotEmpty(bill.getTransferNo())) @@ -504,7 +504,7 @@ public class PrcOrderBillLocalRebillAsyncRunner { // 提示标签尽力而为 } - return billId == null ? null : String.valueOf(billId); + return billId; } private static String softFailMessage(TmsPriceQuoteResult result) diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java index 232fb1db..aaa30abd 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/PrcRecalcBillPriceAsyncRunner.java @@ -29,7 +29,7 @@ public class PrcRecalcBillPriceAsyncRunner private RedisCache redisCache; @Async("threadPoolTaskExecutor") - public void run(String taskId, String mode, List billIds) + public void run(String taskId, String mode, List billIds) { int total = billIds == null ? 0 : billIds.size(); int success = 0; @@ -45,7 +45,7 @@ public class PrcRecalcBillPriceAsyncRunner } for (int i = 0; i < total; i++) { - Long billId = billIds.get(i); + String billId = billIds.get(i); try { orderBillService.recalcBillPriceByBillId(billId, mode); @@ -94,7 +94,7 @@ public class PrcRecalcBillPriceAsyncRunner return redisCache.getCacheObject(CACHE_KEY_PREFIX + taskId); } - private static void appendFail(StringBuilder failTips, Long billId, Exception e) + private static void appendFail(StringBuilder failTips, String billId, Exception e) { if (failTips.length() >= 800) { diff --git a/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java b/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java index 5c89be1f..9fb86c25 100644 --- a/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java +++ b/bms-back/bms-system/src/main/java/com/bms/price/task/TabOrderSyncAsyncRunner.java @@ -250,7 +250,7 @@ public class TabOrderSyncAsyncRunner item.put("transferOrderId", vo == null ? null : vo.getTransferOrderId()); try { - Long billId = overwriteOne(one); + String billId = overwriteOne(one); item.put("successStatus", "SUCCESS"); item.put("billId", billId); ok.incrementAndGet(); @@ -317,7 +317,7 @@ public class TabOrderSyncAsyncRunner } /** 解析出 Oracle 行后覆盖本地账单及其扩展信息(不计费)。 */ - private Long overwriteOne(com.bms.price.oracle.TabOrderRow row) + private String overwriteOne(com.bms.price.oracle.TabOrderRow row) { Map raw = row == null ? null : row.getRaw(); TabOrderMonitorVo vo = row == null ? null : row.getVo(); diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetail.java b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetail.java index 00411adf..15dedf01 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetail.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetail.java @@ -17,7 +17,7 @@ public class ArBillDetail implements Serializable { private Long detailId; private Long arBillId; - private Long prcOrderBillId; + private String prcOrderBillId; private Integer detailNo; private String orderNo; private String trackingNo; diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetailFee.java b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetailFee.java index 1d8b7744..e0d0240e 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetailFee.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillDetailFee.java @@ -16,7 +16,7 @@ public class ArBillDetailFee implements Serializable { private Long detailFeeId; private Long detailId; - private Long prcIncomeBillFeeId; + private String prcIncomeBillFeeId; private Integer feeNo; private String feeType; private String feeName; diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillGenerateTask.java b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillGenerateTask.java index 9115ac49..a76fab07 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillGenerateTask.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/ArBillGenerateTask.java @@ -42,7 +42,7 @@ public class ArBillGenerateTask implements Serializable { /** * 按 bill_id 字典序处理的游标。 */ - private Long lastSourceBillId; + private String lastSourceBillId; /** * 待处理总数;全选模式统计完成前使用 -1。 */ diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/vo/ArBillGenerateRequest.java b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/vo/ArBillGenerateRequest.java index cb74bf7b..3d0a0ee7 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/domain/vo/ArBillGenerateRequest.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/domain/vo/ArBillGenerateRequest.java @@ -29,11 +29,11 @@ public class ArBillGenerateRequest /** 截止日筛选字段:BIZ_DATE=计费时间,PICKUP_DATE=收货时间;历史任务默认计费时间。 */ private String dateType = "BIZ_DATE"; /** 手动模式选中的来源订单 ID;全选模式为空。 */ - private List sourceBillIds; + private List sourceBillIds; /** 选择模式:EXPLICIT 手动选择,ALL_MATCHED 全选查询结果。 */ private String selectionMode = ArBillSelectionMode.EXPLICIT.getCode(); /** 全选模式中用户明确排除的来源订单 ID。 */ - private List excludedSourceBillIds; + private List excludedSourceBillIds; /** 全选模式下按订单号、运单号或转单号排除;后台生成任务按批次应用该条件。 */ private String excludedOrderOrTrackingNo; @JsonFormat(pattern = "yyyy-MM-dd") diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillDetailMapper.java b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillDetailMapper.java index 88f07e5b..b6a39366 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillDetailMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillDetailMapper.java @@ -14,7 +14,7 @@ public interface ArBillDetailMapper { List selectByBillId(Long arBillId); List selectByBillIdAndSourceIds(@Param("arBillId") Long arBillId, - @Param("sourceBillIds") List sourceBillIds); + @Param("sourceBillIds") List sourceBillIds); List selectExportPage(@Param("arBillId") Long arBillId, @Param("lastDetailNo") Integer lastDetailNo, @Param("pageSize") Integer pageSize); diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillGenerateTaskMapper.java b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillGenerateTaskMapper.java index 849a6fbd..4facb2ca 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillGenerateTaskMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillGenerateTaskMapper.java @@ -27,7 +27,7 @@ public interface ArBillGenerateTaskMapper { int updateTotalCount(@Param("taskId") Long taskId, @Param("totalCount") Integer totalCount); - int updateProgress(@Param("taskId") Long taskId, @Param("lastSourceBillId") Long lastSourceBillId, + int updateProgress(@Param("taskId") Long taskId, @Param("lastSourceBillId") String lastSourceBillId, @Param("processedCount") Integer processedCount, @Param("successCount") Integer successCount, @Param("totalAmount") java.math.BigDecimal totalAmount, @Param("heartbeatTime") Date heartbeatTime); diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillScopeMapper.java b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillScopeMapper.java index 7e7a81a5..b2ecc664 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillScopeMapper.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/mapper/ArBillScopeMapper.java @@ -6,7 +6,7 @@ import com.bms.receivable.security.ArBillRowScope; import com.bms.customer.customerinfo.domain.BmsCustomerOption; public interface ArBillScopeMapper { - int countCustomerSourceBills(@Param("customerId") Long customerId, @Param("sourceIds") List sourceIds); + int countCustomerSourceBills(@Param("customerId") Long customerId, @Param("sourceIds") List sourceIds); int countAccessibleBill(@Param("arBillId") Long arBillId, @Param("scope") ArBillRowScope scope); diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/security/ArBillScopeResolver.java b/bms-back/bms-system/src/main/java/com/bms/receivable/security/ArBillScopeResolver.java index 97b7e8f8..7f127021 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/security/ArBillScopeResolver.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/security/ArBillScopeResolver.java @@ -86,7 +86,7 @@ public class ArBillScopeResolver { return mapper.selectCustomerOptions(values, resolve()); } - public void requireCustomerSourceBills(Long customerId, List sourceIds) { + public void requireCustomerSourceBills(Long customerId, List sourceIds) { if (!sourceIds.isEmpty() && withoutPagination(() -> mapper.countCustomerSourceBills(customerId, sourceIds)) != sourceIds.size()) { throw new ServiceException("所选订单不存在或不属于当前客户"); } diff --git a/bms-back/bms-system/src/main/java/com/bms/receivable/service/impl/ArBillServiceImpl.java b/bms-back/bms-system/src/main/java/com/bms/receivable/service/impl/ArBillServiceImpl.java index c2d641d9..f9fbf150 100644 --- a/bms-back/bms-system/src/main/java/com/bms/receivable/service/impl/ArBillServiceImpl.java +++ b/bms-back/bms-system/src/main/java/com/bms/receivable/service/impl/ArBillServiceImpl.java @@ -419,8 +419,8 @@ public class ArBillServiceImpl implements IArBillService { } String selectionMode = selectionModeEnum.getCode(); boolean allMatched = selectionModeEnum == ArBillSelectionMode.ALL_MATCHED; - List sourceBillIds = normalizeSourceBillIds(request.getSourceBillIds()); - List excludedSourceBillIds = normalizeSourceBillIds(request.getExcludedSourceBillIds()); + List sourceBillIds = normalizeSourceBillIds(request.getSourceBillIds()); + List excludedSourceBillIds = normalizeSourceBillIds(request.getExcludedSourceBillIds()); if (!allMatched && sourceBillIds.isEmpty()) { throw failure(null, ArLogObjectType.BILL, "", ArLogOperationType.GENERATE, null, "请至少选择一条有效订单", operator, requestId); @@ -638,8 +638,8 @@ public class ArBillServiceImpl implements IArBillService { log.info("开始执行应收账单生成任务,taskId={}, arBillId={}, selectionMode={}", taskId, task.getArBillId(), task.getSelectionMode()); ArBillGenerateRequest request = JSON.parseObject(task.getRequestPayload(), ArBillGenerateRequest.class); - List sourceBillIds = normalizeSourceBillIds(request.getSourceBillIds()); - List excludedSourceBillIds = normalizeSourceBillIds(request.getExcludedSourceBillIds()); + List sourceBillIds = normalizeSourceBillIds(request.getSourceBillIds()); + List excludedSourceBillIds = normalizeSourceBillIds(request.getExcludedSourceBillIds()); List excludedOrderIdentifiers = ArBillSelectionMode.ALL_MATCHED.getCode().equals(task.getSelectionMode()) ? normalizeOrderIdentifiers(request.getExcludedOrderOrTrackingNo()) : new ArrayList<>(); TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); @@ -766,13 +766,13 @@ public class ArBillServiceImpl implements IArBillService { * 每批最多 GENERATE_PAGE_SIZE 条,成功后原子更新任务进度。 */ private GenerateBatchResult processGenerateBatch(ArBillGenerateTask task, ArBillGenerateRequest request, - List sourceBillIds, List excludedSourceBillIds, + List sourceBillIds, List excludedSourceBillIds, List excludedOrderIdentifiers) { ArBillSelectionMode selectionMode = ArBillSelectionMode.of(task.getSelectionMode()); if (selectionMode == null) { throw new ServiceException("账单生成任务的订单选择模式无效"); } - List explicitIds = selectionMode == ArBillSelectionMode.EXPLICIT + List explicitIds = selectionMode == ArBillSelectionMode.EXPLICIT ? sourceBillIds : null; List sources = sourceBillMapper.selectPrcOrderBillByCustomerPeriodCursor( request.getCustomerId(), request.getCustomerCode(), @@ -792,7 +792,7 @@ public class ArBillServiceImpl implements IArBillService { if (bill == null) { throw new ServiceException("应收账单不存在"); } - List currentSourceBillIds = new ArrayList<>(); + List currentSourceBillIds = new ArrayList<>(); for (PrcOrderBill source : sources) { currentSourceBillIds.add(source.getBillId()); if (source.getCurrency() != null && !bill.getCurrency().equalsIgnoreCase(source.getCurrency())) { @@ -800,7 +800,7 @@ public class ArBillServiceImpl implements IArBillService { } } - Map sourceIncomeBillsByBillId = new HashMap<>(); + Map sourceIncomeBillsByBillId = new HashMap<>(); List sourceIncomeBills = sourceIncomeBillMapper.selectByBillIds(currentSourceBillIds); if (sourceIncomeBills != null) { for (PrcIncomeBill sourceIncomeBill : sourceIncomeBills) { @@ -814,8 +814,8 @@ public class ArBillServiceImpl implements IArBillService { if (sourceFees == null) { sourceFees = new ArrayList<>(); } - Map sourceFeeCounts = new HashMap<>(); - List sourceFeeIds = new ArrayList<>(sourceFees.size()); + Map sourceFeeCounts = new HashMap<>(); + List sourceFeeIds = new ArrayList<>(sourceFees.size()); for (PrcIncomeBillFee sourceFee : sourceFees) { sourceFeeCounts.merge(sourceFee.getBillId(), 1, Integer::sum); sourceFeeIds.add(sourceFee.getFeeId()); @@ -853,7 +853,7 @@ public class ArBillServiceImpl implements IArBillService { // 失败订单先落快照,再汇总占用状态,避免无费用订单被错误恢复为 UNBILLED。 sourceBillMapper.refreshArBillStatusByBillIds(currentSourceBillIds); - Map detailsBySourceBill = new HashMap<>(); + Map detailsBySourceBill = new HashMap<>(); for (ArBillDetail detail : detailMapper.selectByBillIdAndSourceIds(bill.getArBillId(), currentSourceBillIds)) { detailsBySourceBill.put(detail.getPrcOrderBillId(), detail); } @@ -862,7 +862,7 @@ public class ArBillServiceImpl implements IArBillService { } List detailFees = new ArrayList<>(sourceFees == null ? 0 : sourceFees.size()); - Map feeNumbers = new HashMap<>(); + Map feeNumbers = new HashMap<>(); if (sourceFees != null) { for (PrcIncomeBillFee sourceFee : sourceFees) { ArBillDetail detail = detailsBySourceBill.get(sourceFee.getBillId()); @@ -886,7 +886,7 @@ public class ArBillServiceImpl implements IArBillService { Date periodStart = earliestDate(sources, request.getDateType()); billMapper.updateArBillProgress(bill.getArBillId(), processedCount, totalAmount, totalAmount, periodStart, task.getCreateBy()); - Long lastSourceBillId = sources.get(sources.size() - 1).getBillId(); + String lastSourceBillId = sources.get(sources.size() - 1).getBillId(); if (generateTaskMapper.updateProgress(task.getTaskId(), lastSourceBillId, processedCount, processedCount, totalAmount, new Date()) != 1) { throw new ServiceException("账单生成任务状态已发生变化,请稍后重试"); @@ -2312,12 +2312,12 @@ public class ArBillServiceImpl implements IArBillService { return type.getCode(); } - private List normalizeSourceBillIds(List sourceBillIds) { - LinkedHashSet uniqueIds = new LinkedHashSet<>(); + private List normalizeSourceBillIds(List sourceBillIds) { + LinkedHashSet uniqueIds = new LinkedHashSet<>(); if (sourceBillIds != null) { - for (Long billId : sourceBillIds) { - if (billId != null) { - uniqueIds.add(billId); + for (String billId : sourceBillIds) { + if (!StringUtils.isEmpty(billId) && billId.trim().length() <= 36) { + uniqueIds.add(billId.trim()); } } } diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PayBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PayBillMapper.xml index c7aef50f..3c32e45e 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PayBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PayBillMapper.xml @@ -70,7 +70,7 @@ select 1 from pay_bill_line l inner join pay_bill b on b.bill_id = l.bill_id where l.order_bill_id = o.bill_id - and l.fee_id is null + and (l.fee_id is null or l.fee_id = '') and b.status not in ('VOID', 'RED') )) as unbilledCount, (select b.bill_no from pay_bill_line l @@ -240,7 +240,7 @@ select 1 from pay_bill_line l inner join pay_bill b on b.bill_id = l.bill_id where l.order_bill_id = f.bill_id - and l.fee_id is null + and (l.fee_id is null or l.fee_id = '') and b.status not in ('VOID', 'RED') ) order by f.bill_id, f.fee_id diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml index 20ef2f32..dea6e05d 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillFeeMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, ar_bill_status, manual_flag, create_time from prc_income_bill_fee @@ -53,7 +53,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by bill_id, field(fee_type, 'BASIC_FREIGHT', 'REGISTRATION_FEE', 'SURCHARGE', 'REFUND'), fee_id - select fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, ar_bill_status, manual_flag, create_time from prc_income_bill_fee @@ -78,23 +78,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and fee_type = #{feeType} - + insert into prc_income_bill_fee ( - bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, + fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, ar_bill_status, manual_flag, create_time ) values ( - #{billId}, #{incomeBillId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{productAmount}, #{redlineAmount}, #{currency}, #{roundMode}, #{remark}, + #{feeId}, #{billId}, #{incomeBillId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{productAmount}, #{redlineAmount}, #{currency}, #{roundMode}, #{remark}, #{arBillStatus}, #{manualFlag}, sysdate() ) - + insert into prc_income_bill_fee ( - bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, + fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, ar_bill_status, manual_flag, create_time ) values - (#{item.billId}, #{item.incomeBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.amount}, + (#{item.feeId}, #{item.billId}, #{item.incomeBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.amount}, #{item.productAmount}, #{item.redlineAmount}, #{item.currency}, #{item.roundMode}, #{item.remark}, #{item.arBillStatus}, #{item.manualFlag}, sysdate()) @@ -173,15 +173,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ) - + delete from prc_income_bill_fee where fee_id = #{feeId} - + delete from prc_income_bill_fee where bill_id = #{billId} - + delete from prc_income_bill_fee where bill_id = #{billId} and (manual_flag is null or manual_flag <> '1') diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillMapper.xml index b58c00e4..474a5293 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcIncomeBillMapper.xml @@ -31,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from prc_income_bill - where bill_id = #{billId} @@ -44,19 +44,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - where income_bill_id = #{incomeBillId} - + insert into prc_income_bill ( - bill_id, currency, product_amount, redline_amount, + income_bill_id, bill_id, currency, product_amount, redline_amount, sales_amount, income_total, refund_status, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time ) values ( - #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{incomeBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, #{salesAmount}, #{incomeTotal}, #{refundStatus}, #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{createBy}, sysdate() @@ -80,14 +80,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where bill_id = #{billId} - + insert into prc_income_bill ( - bill_id, currency, product_amount, redline_amount, + income_bill_id, bill_id, currency, product_amount, redline_amount, sales_amount, income_total, refund_status, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time ) values ( - #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{incomeBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, #{salesAmount}, #{incomeTotal}, #{refundStatus}, #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{createBy}, sysdate() @@ -107,7 +107,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time = sysdate() - + delete from prc_income_bill where bill_id = #{billId} diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml index d8bb472b..1cafd5ec 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillExtMapper.xml @@ -189,7 +189,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from prc_order_bill_ext - where bill_id = #{billId} diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml index 7ad08a31..8da108aa 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcOrderBillMapper.xml @@ -157,7 +157,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit 2 - where bill_id = #{billId} @@ -578,7 +578,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select p.bill_id from prc_order_bill p @@ -785,7 +785,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + insert into prc_order_bill ( - bill_key, order_no, tracking_no, transfer_no, + bill_id, bill_key, order_no, tracking_no, transfer_no, belong_saler, belong_saler_code, settlement_man, settlement_man_code, service_man, service_man_code, customer_id, customer_code, customer_name, pieces, actual_weight, receive_weight, volume, volume_weight, pkg_length, pkg_width, pkg_height, @@ -845,7 +845,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" customer_active_status, credit_arrears_status, refund_status, billing_fail_status, error_message, round_mode, create_time ) values ( - #{billKey}, #{orderNo}, #{trackingNo}, #{transferNo}, + #{billId}, #{billKey}, #{orderNo}, #{trackingNo}, #{transferNo}, #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{serviceMan}, #{serviceManCode}, #{customerId}, #{customerCode}, #{customerName}, #{pieces}, #{actualWeight}, #{receiveWeight}, #{volume}, #{volumeWeight}, #{pkgLength}, #{pkgWidth}, #{pkgHeight}, diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml index a85492a3..a050fa34 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillFeeMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select fee_id, bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, fee_source, source_id, is_deleted, create_time from prc_pay_bill_fee @@ -31,23 +31,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order by field(fee_type, 'BASIC_FREIGHT', 'REGISTRATION_FEE', 'SURCHARGE', 'REFUND'), fee_id - + insert into prc_pay_bill_fee ( - bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, + fee_id, bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, fee_source, source_id, is_deleted, create_time ) values ( - #{billId}, #{payBillId}, #{feeType}, #{feeName}, #{scId}, #{feeLevel}, #{amount}, #{currency}, #{roundMode}, #{remark}, + #{feeId}, #{billId}, #{payBillId}, #{feeType}, #{feeName}, #{scId}, #{feeLevel}, #{amount}, #{currency}, #{roundMode}, #{remark}, ifnull(#{feeSource}, 'CALC'), #{sourceId}, ifnull(#{isDeleted}, '0'), sysdate() ) - + insert into prc_pay_bill_fee ( - bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, + fee_id, bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, fee_source, source_id, is_deleted, create_time ) values - (#{item.billId}, #{item.payBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.feeLevel}, + (#{item.feeId}, #{item.billId}, #{item.payBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.feeLevel}, #{item.amount}, #{item.currency}, #{item.roundMode}, #{item.remark}, ifnull(#{item.feeSource}, 'CALC'), #{item.sourceId}, ifnull(#{item.isDeleted}, '0'), sysdate()) @@ -69,18 +69,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update prc_pay_bill_fee f inner join prc_pay_bill b on b.bill_id = f.bill_id set f.pay_bill_id = b.pay_bill_id - where f.pay_bill_id is null + where (f.pay_bill_id is null or f.pay_bill_id = '') and f.bill_id in #{billId} - select distinct bill_id from prc_pay_bill_fee where fee_source = 'LADING' and sc_id = #{feeId} and ifnull(is_deleted, '0') = '0' and bill_id is not null + and bill_id != '' @@ -93,13 +94,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update prc_pay_bill_fee - set source_id = cast(fee_id as char) + set source_id = id where (source_id is null or source_id = '') and fee_id in #{feeId} - + delete from prc_pay_bill_fee where bill_id = #{billId} and (fee_source is null or fee_source = '' or fee_source = 'CALC') diff --git a/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillMapper.xml b/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillMapper.xml index 2d696c05..60d134be 100644 --- a/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillMapper.xml +++ b/bms-back/bms-system/src/main/resources/mapper/price/PrcPayBillMapper.xml @@ -30,24 +30,24 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from prc_pay_bill - where bill_id = #{billId} - where pay_bill_id = #{payBillId} - + insert into prc_pay_bill ( - bill_id, currency, product_amount, redline_amount, + pay_bill_id, bill_id, currency, product_amount, redline_amount, cost_amount, pay_total, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time ) values ( - #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{payBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, #{costAmount}, #{payTotal}, #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{createBy}, sysdate() @@ -70,14 +70,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where bill_id = #{billId} - + insert into prc_pay_bill ( - bill_id, currency, product_amount, redline_amount, + pay_bill_id, bill_id, currency, product_amount, redline_amount, cost_amount, pay_total, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time ) values ( - #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{payBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, #{costAmount}, #{payTotal}, #{belongSaler}, #{belongSalerCode}, #{settlementMan}, #{settlementManCode}, #{createBy}, sysdate() @@ -98,11 +98,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into prc_pay_bill ( - bill_id, currency, pay_total, + pay_bill_id, bill_id, currency, pay_total, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time, update_by, update_time ) - select o.bill_id, ifnull(nullif(o.currency, ''), 'CNY'), 0, + select replace(uuid(), '-', ''), o.bill_id, ifnull(nullif(o.currency, ''), 'CNY'), 0, o.belong_saler, o.belong_saler_code, o.settlement_man, o.settlement_man_code, #{operator}, sysdate(), #{operator}, sysdate() from prc_order_bill o @@ -129,7 +129,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{billId} - + delete from prc_pay_bill where bill_id = #{billId} diff --git a/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql b/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql deleted file mode 100644 index 6e1fa102..00000000 --- a/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql +++ /dev/null @@ -1,391 +0,0 @@ --- 夜间停机:计费/应收/应付 UUID(varchar36) -> bigint AUTO_INCREMENT --- 执行前:1)停 BMS 应用与异步任务 2)全库或至少关键表备份 3)建议先在从库/备份库干跑 --- 范围 PK:prc_order_bill.bill_id / prc_income_bill.income_bill_id / prc_income_bill_fee.fee_id / prc_pay_bill.pay_bill_id / prc_pay_bill_fee.fee_id --- 范围 FK/引用:prc_order_bill_ext、income/pay 上 bill_id、prc_billing_task、ar_bill_detail*、ar_bill_generate_task、pay_bill_line/log/diff --- 不动:ar_bill 等已 bigint;prc_quote* 报价 UUID;任务 taskId --- 回滚:用宝塔/整库备份恢复 + 旧后端包(本脚本不再做同库 *_bak_uuid 拷贝) --- --- FK盘点: fk_income_bill_order_bill, fk_income_bill_fee_order, fk_order_bill_ext_bill, fk_pay_bill_order_bill, fk_pay_bill_fee_order -SET NAMES utf8mb4; -SET FOREIGN_KEY_CHECKS = 0; --- 提高 GROUP_CONCAT 长度,避免动态拼 SQL 被截断(默认 1024 会报 1064) -SET SESSION group_concat_max_len = 1024000; --- 若上次中途失败/校对规则报错,先: --- DROP TABLE IF EXISTS prc_order_bill_new, prc_income_bill_new, prc_income_bill_fee_new, prc_pay_bill_new, prc_pay_bill_fee_new; --- DROP TABLE IF EXISTS mig_map_order_bill, mig_map_income_bill, mig_map_income_fee, mig_map_pay_bill, mig_map_pay_fee; - --- ========== 0. 前置检查 ========== -SELECT 'prc_order_bill' AS tbl, COUNT(*) AS cnt FROM prc_order_bill -UNION ALL SELECT 'prc_order_bill_ext', COUNT(*) FROM prc_order_bill_ext -UNION ALL SELECT 'prc_income_bill', COUNT(*) FROM prc_income_bill -UNION ALL SELECT 'prc_income_bill_fee', COUNT(*) FROM prc_income_bill_fee -UNION ALL SELECT 'prc_pay_bill', COUNT(*) FROM prc_pay_bill -UNION ALL SELECT 'prc_pay_bill_fee', COUNT(*) FROM prc_pay_bill_fee -UNION ALL SELECT 'ar_bill_detail', COUNT(*) FROM ar_bill_detail -UNION ALL SELECT 'ar_bill_detail_fee', COUNT(*) FROM ar_bill_detail_fee; - -SELECT CONSTRAINT_NAME, TABLE_NAME, COLUMN_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME -FROM information_schema.KEY_COLUMN_USAGE -WHERE TABLE_SCHEMA = DATABASE() - AND REFERENCED_TABLE_NAME IN ('prc_order_bill','prc_income_bill','prc_income_bill_fee','prc_pay_bill','prc_pay_bill_fee') -ORDER BY TABLE_NAME, CONSTRAINT_NAME; - --- ========== 1. 跳过同库 bak(已在宝塔做整库备份,避免再拷一份占盘/耗时) ========== --- 回滚请用宝塔备份恢复,不再依赖 *_bak_uuid - --- ========== 2. 映射表 ========== -DROP TABLE IF EXISTS `mig_map_order_bill`; -CREATE TABLE `mig_map_order_bill` ( - `old_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `new_id` bigint NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`old_id`), - UNIQUE KEY `uk_new_id` (`new_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -INSERT INTO `mig_map_order_bill` (`old_id`) -SELECT `bill_id` FROM `prc_order_bill` ORDER BY IFNULL(`create_time`, '1970-01-01'), `bill_id`; - -DROP TABLE IF EXISTS `mig_map_income_bill`; -CREATE TABLE `mig_map_income_bill` ( - `old_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `new_id` bigint NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`old_id`), - UNIQUE KEY `uk_new_id` (`new_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -INSERT INTO `mig_map_income_bill` (`old_id`) -SELECT `income_bill_id` FROM `prc_income_bill` ORDER BY IFNULL(`create_time`, '1970-01-01'), `income_bill_id`; - -DROP TABLE IF EXISTS `mig_map_income_fee`; -CREATE TABLE `mig_map_income_fee` ( - `old_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `new_id` bigint NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`old_id`), - UNIQUE KEY `uk_new_id` (`new_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -INSERT INTO `mig_map_income_fee` (`old_id`) -SELECT `fee_id` FROM `prc_income_bill_fee` ORDER BY IFNULL(`create_time`, '1970-01-01'), `fee_id`; - -DROP TABLE IF EXISTS `mig_map_pay_bill`; -CREATE TABLE `mig_map_pay_bill` ( - `old_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `new_id` bigint NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`old_id`), - UNIQUE KEY `uk_new_id` (`new_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -INSERT INTO `mig_map_pay_bill` (`old_id`) -SELECT `pay_bill_id` FROM `prc_pay_bill` ORDER BY IFNULL(`create_time`, '1970-01-01'), `pay_bill_id`; - -DROP TABLE IF EXISTS `mig_map_pay_fee`; -CREATE TABLE `mig_map_pay_fee` ( - `old_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, - `new_id` bigint NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`old_id`), - UNIQUE KEY `uk_new_id` (`new_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -INSERT INTO `mig_map_pay_fee` (`old_id`) -SELECT `fee_id` FROM `prc_pay_bill_fee` ORDER BY IFNULL(`create_time`, '1970-01-01'), `fee_id`; - --- ========== 3. 重建核心表(动态列,需 group_concat_max_len) ========== -DROP TABLE IF EXISTS `prc_order_bill_new`; -CREATE TABLE `prc_order_bill_new` LIKE `prc_order_bill`; -ALTER TABLE `prc_order_bill_new` MODIFY COLUMN `bill_id` bigint NOT NULL AUTO_INCREMENT; -SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @cols_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_order_bill' AND COLUMN_NAME NOT IN ('bill_id'); -SELECT GROUP_CONCAT(CONCAT('t.`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @sels_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_order_bill' AND COLUMN_NAME NOT IN ('bill_id'); -SET @sql := CONCAT( - 'INSERT INTO `prc_order_bill_new`(`bill_id`,', @cols_rest, ') ', - 'SELECT mo.new_id,', @sels_rest, ' ', - 'FROM `prc_order_bill` t ', - 'JOIN `mig_map_order_bill` mo ON BINARY mo.old_id = BINARY t.`bill_id` ' -); --- 若仍报错可先:SELECT LEFT(@sql, 500), LENGTH(@cols_rest), LENGTH(@sels_rest); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -DROP TABLE IF EXISTS `prc_income_bill_new`; -CREATE TABLE `prc_income_bill_new` LIKE `prc_income_bill`; -ALTER TABLE `prc_income_bill_new` MODIFY COLUMN `income_bill_id` bigint NOT NULL AUTO_INCREMENT; -ALTER TABLE `prc_income_bill_new` MODIFY COLUMN `bill_id` bigint NOT NULL; -SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @cols_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill' AND COLUMN_NAME NOT IN ('income_bill_id','bill_id'); -SELECT GROUP_CONCAT(CONCAT('t.`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @sels_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill' AND COLUMN_NAME NOT IN ('income_bill_id','bill_id'); -SET @sql := CONCAT( - 'INSERT INTO `prc_income_bill_new`(`income_bill_id`, `bill_id`,', @cols_rest, ') ', - 'SELECT mi.new_id, mo.new_id,', @sels_rest, ' ', - 'FROM `prc_income_bill` t ', - 'JOIN `mig_map_income_bill` mi ON BINARY mi.old_id = BINARY t.`income_bill_id` ' - ,'JOIN `mig_map_order_bill` mo ON BINARY mo.old_id = BINARY t.`bill_id` ' -); --- 若仍报错可先:SELECT LEFT(@sql, 500), LENGTH(@cols_rest), LENGTH(@sels_rest); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -DROP TABLE IF EXISTS `prc_income_bill_fee_new`; -CREATE TABLE `prc_income_bill_fee_new` LIKE `prc_income_bill_fee`; -ALTER TABLE `prc_income_bill_fee_new` MODIFY COLUMN `fee_id` bigint NOT NULL AUTO_INCREMENT; -ALTER TABLE `prc_income_bill_fee_new` MODIFY COLUMN `bill_id` bigint NOT NULL; -ALTER TABLE `prc_income_bill_fee_new` MODIFY COLUMN `income_bill_id` bigint NULL; -SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @cols_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill_fee' AND COLUMN_NAME NOT IN ('fee_id','bill_id','income_bill_id'); -SELECT GROUP_CONCAT(CONCAT('t.`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @sels_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill_fee' AND COLUMN_NAME NOT IN ('fee_id','bill_id','income_bill_id'); -SET @sql := CONCAT( - 'INSERT INTO `prc_income_bill_fee_new`(`fee_id`, `bill_id`, `income_bill_id`,', @cols_rest, ') ', - 'SELECT mf.new_id, mo.new_id, mi.new_id,', @sels_rest, ' ', - 'FROM `prc_income_bill_fee` t ', - 'JOIN `mig_map_income_fee` mf ON BINARY mf.old_id = BINARY t.`fee_id` ' - ,'JOIN `mig_map_order_bill` mo ON BINARY mo.old_id = BINARY t.`bill_id` ' - ,'LEFT JOIN `mig_map_income_bill` mi ON BINARY mi.old_id = BINARY t.`income_bill_id` ' -); --- 若仍报错可先:SELECT LEFT(@sql, 500), LENGTH(@cols_rest), LENGTH(@sels_rest); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -DROP TABLE IF EXISTS `prc_pay_bill_new`; -CREATE TABLE `prc_pay_bill_new` LIKE `prc_pay_bill`; -ALTER TABLE `prc_pay_bill_new` MODIFY COLUMN `pay_bill_id` bigint NOT NULL AUTO_INCREMENT; -ALTER TABLE `prc_pay_bill_new` MODIFY COLUMN `bill_id` bigint NOT NULL; -SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @cols_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill' AND COLUMN_NAME NOT IN ('pay_bill_id','bill_id'); -SELECT GROUP_CONCAT(CONCAT('t.`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @sels_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill' AND COLUMN_NAME NOT IN ('pay_bill_id','bill_id'); -SET @sql := CONCAT( - 'INSERT INTO `prc_pay_bill_new`(`pay_bill_id`, `bill_id`,', @cols_rest, ') ', - 'SELECT mp.new_id, mo.new_id,', @sels_rest, ' ', - 'FROM `prc_pay_bill` t ', - 'JOIN `mig_map_pay_bill` mp ON BINARY mp.old_id = BINARY t.`pay_bill_id` ' - ,'JOIN `mig_map_order_bill` mo ON BINARY mo.old_id = BINARY t.`bill_id` ' -); --- 若仍报错可先:SELECT LEFT(@sql, 500), LENGTH(@cols_rest), LENGTH(@sels_rest); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -DROP TABLE IF EXISTS `prc_pay_bill_fee_new`; -CREATE TABLE `prc_pay_bill_fee_new` LIKE `prc_pay_bill_fee`; -ALTER TABLE `prc_pay_bill_fee_new` MODIFY COLUMN `fee_id` bigint NOT NULL AUTO_INCREMENT; -ALTER TABLE `prc_pay_bill_fee_new` MODIFY COLUMN `bill_id` bigint NOT NULL; -ALTER TABLE `prc_pay_bill_fee_new` MODIFY COLUMN `pay_bill_id` bigint NULL; -SELECT GROUP_CONCAT(CONCAT('`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @cols_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill_fee' AND COLUMN_NAME NOT IN ('fee_id','bill_id','pay_bill_id'); -SELECT GROUP_CONCAT(CONCAT('t.`', COLUMN_NAME, '`') ORDER BY ORDINAL_POSITION SEPARATOR ',') INTO @sels_rest -FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill_fee' AND COLUMN_NAME NOT IN ('fee_id','bill_id','pay_bill_id'); -SET @sql := CONCAT( - 'INSERT INTO `prc_pay_bill_fee_new`(`fee_id`, `bill_id`, `pay_bill_id`,', @cols_rest, ') ', - 'SELECT mf.new_id, mo.new_id, mp.new_id,', @sels_rest, ' ', - 'FROM `prc_pay_bill_fee` t ', - 'JOIN `mig_map_pay_fee` mf ON BINARY mf.old_id = BINARY t.`fee_id` ' - ,'JOIN `mig_map_order_bill` mo ON BINARY mo.old_id = BINARY t.`bill_id` ' - ,'LEFT JOIN `mig_map_pay_bill` mp ON BINARY mp.old_id = BINARY t.`pay_bill_id` ' -); --- 若仍报错可先:SELECT LEFT(@sql, 500), LENGTH(@cols_rest), LENGTH(@sels_rest); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; --- --- prc_order_bill_ext 阴影列 --- -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_order_bill_ext' AND COLUMN_NAME='bill_id_bi')=0, - 'ALTER TABLE `prc_order_bill_ext` ADD COLUMN `bill_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -UPDATE `prc_order_bill_ext` e JOIN `mig_map_order_bill` m ON BINARY m.old_id = BINARY e.bill_id SET e.bill_id_bi = m.new_id; - --- ========== 4. 引用表阴影列 ========== -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail' AND COLUMN_NAME='prc_order_bill_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail' AND COLUMN_NAME='prc_order_bill_id_bi')=0, - 'ALTER TABLE `ar_bill_detail` ADD COLUMN `prc_order_bill_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail' AND COLUMN_NAME='prc_order_bill_id')>0, - 'UPDATE `ar_bill_detail` x JOIN `mig_map_order_bill` m ON BINARY m.old_id = BINARY x.`prc_order_bill_id` SET x.`prc_order_bill_id_bi` = m.new_id', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail_fee' AND COLUMN_NAME='prc_income_bill_fee_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail_fee' AND COLUMN_NAME='prc_income_bill_fee_id_bi')=0, - 'ALTER TABLE `ar_bill_detail_fee` ADD COLUMN `prc_income_bill_fee_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail_fee' AND COLUMN_NAME='prc_income_bill_fee_id')>0, - 'UPDATE `ar_bill_detail_fee` x JOIN `mig_map_income_fee` m ON BINARY m.old_id = BINARY x.`prc_income_bill_fee_id` SET x.`prc_income_bill_fee_id_bi` = m.new_id', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_generate_task' AND COLUMN_NAME='last_source_bill_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_generate_task' AND COLUMN_NAME='last_source_bill_id_bi')=0, - 'ALTER TABLE `ar_bill_generate_task` ADD COLUMN `last_source_bill_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_generate_task' AND COLUMN_NAME='last_source_bill_id')>0, - 'UPDATE `ar_bill_generate_task` x JOIN `mig_map_order_bill` m ON BINARY m.old_id = BINARY x.`last_source_bill_id` SET x.`last_source_bill_id_bi` = m.new_id WHERE x.`last_source_bill_id` IS NOT NULL AND x.`last_source_bill_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_billing_task' AND COLUMN_NAME='bill_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_billing_task' AND COLUMN_NAME='bill_id_bi')=0, - 'ALTER TABLE `prc_billing_task` ADD COLUMN `bill_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_billing_task' AND COLUMN_NAME='bill_id')>0, - 'UPDATE `prc_billing_task` x JOIN `mig_map_order_bill` m ON BINARY m.old_id = BINARY x.`bill_id` SET x.`bill_id_bi` = m.new_id WHERE x.`bill_id` IS NOT NULL AND x.`bill_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='order_bill_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='order_bill_id_bi')=0, - 'ALTER TABLE `pay_bill_line` ADD COLUMN `order_bill_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='order_bill_id')>0, - 'UPDATE `pay_bill_line` x JOIN `mig_map_order_bill` m ON BINARY m.old_id = BINARY x.`order_bill_id` SET x.`order_bill_id_bi` = m.new_id WHERE x.`order_bill_id` IS NOT NULL AND x.`order_bill_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='fee_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='fee_id_bi')=0, - 'ALTER TABLE `pay_bill_line` ADD COLUMN `fee_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='fee_id')>0, - 'UPDATE `pay_bill_line` x JOIN `mig_map_pay_fee` m ON BINARY m.old_id = BINARY x.`fee_id` SET x.`fee_id_bi` = m.new_id WHERE x.`fee_id` IS NOT NULL AND x.`fee_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_log' AND COLUMN_NAME='fee_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_log' AND COLUMN_NAME='fee_id_bi')=0, - 'ALTER TABLE `pay_bill_log` ADD COLUMN `fee_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_log' AND COLUMN_NAME='fee_id')>0, - 'UPDATE `pay_bill_log` x JOIN `mig_map_pay_fee` m ON BINARY m.old_id = BINARY x.`fee_id` SET x.`fee_id_bi` = m.new_id WHERE x.`fee_id` IS NOT NULL AND x.`fee_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='fee_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='fee_id_bi')=0, - 'ALTER TABLE `pay_bill_diff` ADD COLUMN `fee_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='fee_id')>0, - 'UPDATE `pay_bill_diff` x JOIN `mig_map_pay_fee` m ON BINARY m.old_id = BINARY x.`fee_id` SET x.`fee_id_bi` = m.new_id WHERE x.`fee_id` IS NOT NULL AND x.`fee_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='adjust_fee_id')>0 - AND (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='adjust_fee_id_bi')=0, - 'ALTER TABLE `pay_bill_diff` ADD COLUMN `adjust_fee_id_bi` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='adjust_fee_id')>0, - 'UPDATE `pay_bill_diff` x JOIN `mig_map_pay_fee` m ON BINARY m.old_id = BINARY x.`adjust_fee_id` SET x.`adjust_fee_id_bi` = m.new_id WHERE x.`adjust_fee_id` IS NOT NULL AND x.`adjust_fee_id` <> \'\'', - 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- ========== 5. 校验(bad 必须为 0,行数必须一致) ========== -SELECT 'ar_detail_orphan' AS chk, COUNT(*) AS bad FROM ar_bill_detail WHERE prc_order_bill_id_bi IS NULL; -SELECT 'ar_fee_orphan' AS chk, COUNT(*) AS bad FROM ar_bill_detail_fee WHERE prc_income_bill_fee_id_bi IS NULL; -SELECT 'ext_orphan' AS chk, COUNT(*) AS bad FROM prc_order_bill_ext WHERE bill_id_bi IS NULL; -SELECT 'order_cnt' AS chk, (SELECT COUNT(*) FROM mig_map_order_bill) m, (SELECT COUNT(*) FROM prc_order_bill) s, (SELECT COUNT(*) FROM prc_order_bill_new) n; -SELECT 'income_cnt' AS chk, (SELECT COUNT(*) FROM mig_map_income_bill) m, (SELECT COUNT(*) FROM prc_income_bill) s, (SELECT COUNT(*) FROM prc_income_bill_new) n; -SELECT 'income_fee_cnt' AS chk, (SELECT COUNT(*) FROM mig_map_income_fee) m, (SELECT COUNT(*) FROM prc_income_bill_fee) s, (SELECT COUNT(*) FROM prc_income_bill_fee_new) n; -SELECT 'pay_cnt' AS chk, (SELECT COUNT(*) FROM mig_map_pay_bill) m, (SELECT COUNT(*) FROM prc_pay_bill) s, (SELECT COUNT(*) FROM prc_pay_bill_new) n; -SELECT 'pay_fee_cnt' AS chk, (SELECT COUNT(*) FROM mig_map_pay_fee) m, (SELECT COUNT(*) FROM prc_pay_bill_fee) s, (SELECT COUNT(*) FROM prc_pay_bill_fee_new) n; --- 若校验失败:STOP,不执行第 6 步 - --- ========== 6. 掉旧 FK 后换表 ========== -SET @sql := IF((SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill' AND CONSTRAINT_NAME='fk_income_bill_order_bill')>0, - 'ALTER TABLE `prc_income_bill` DROP FOREIGN KEY `fk_income_bill_order_bill`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_income_bill_fee' AND CONSTRAINT_NAME='fk_income_bill_fee_order')>0, - 'ALTER TABLE `prc_income_bill_fee` DROP FOREIGN KEY `fk_income_bill_fee_order`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_order_bill_ext' AND CONSTRAINT_NAME='fk_order_bill_ext_bill')>0, - 'ALTER TABLE `prc_order_bill_ext` DROP FOREIGN KEY `fk_order_bill_ext_bill`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill' AND CONSTRAINT_NAME='fk_pay_bill_order_bill')>0, - 'ALTER TABLE `prc_pay_bill` DROP FOREIGN KEY `fk_pay_bill_order_bill`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.TABLE_CONSTRAINTS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_pay_bill_fee' AND CONSTRAINT_NAME='fk_pay_bill_fee_order')>0, - 'ALTER TABLE `prc_pay_bill_fee` DROP FOREIGN KEY `fk_pay_bill_fee_order`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -RENAME TABLE - `prc_order_bill` TO `prc_order_bill_old_uuid`, - `prc_order_bill_new` TO `prc_order_bill`, - `prc_income_bill` TO `prc_income_bill_old_uuid`, - `prc_income_bill_new` TO `prc_income_bill`, - `prc_income_bill_fee` TO `prc_income_bill_fee_old_uuid`, - `prc_income_bill_fee_new` TO `prc_income_bill_fee`, - `prc_pay_bill` TO `prc_pay_bill_old_uuid`, - `prc_pay_bill_new` TO `prc_pay_bill`, - `prc_pay_bill_fee` TO `prc_pay_bill_fee_old_uuid`, - `prc_pay_bill_fee_new` TO `prc_pay_bill_fee`; - --- --- ext / AR / task 引用列落地 --- -ALTER TABLE `prc_order_bill_ext` DROP PRIMARY KEY; -ALTER TABLE `prc_order_bill_ext` DROP COLUMN `bill_id`; -ALTER TABLE `prc_order_bill_ext` CHANGE COLUMN `bill_id_bi` `bill_id` bigint NOT NULL; -ALTER TABLE `prc_order_bill_ext` ADD PRIMARY KEY (`bill_id`); - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail' AND INDEX_NAME='uk_ar_bill_detail_source')>0, - 'ALTER TABLE `ar_bill_detail` DROP INDEX `uk_ar_bill_detail_source`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail' AND INDEX_NAME='idx_ar_bill_detail_source')>0, - 'ALTER TABLE `ar_bill_detail` DROP INDEX `idx_ar_bill_detail_source`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -ALTER TABLE `ar_bill_detail` DROP COLUMN `prc_order_bill_id`; -ALTER TABLE `ar_bill_detail` CHANGE COLUMN `prc_order_bill_id_bi` `prc_order_bill_id` bigint NOT NULL; -ALTER TABLE `ar_bill_detail` ADD UNIQUE KEY `uk_ar_bill_detail_source` (`ar_bill_id`,`prc_order_bill_id`); -ALTER TABLE `ar_bill_detail` ADD KEY `idx_ar_bill_detail_source` (`prc_order_bill_id`); - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail_fee' AND INDEX_NAME='uk_ar_detail_prc_income_fee')>0, - 'ALTER TABLE `ar_bill_detail_fee` DROP INDEX `uk_ar_detail_prc_income_fee`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_detail_fee' AND INDEX_NAME='idx_ar_detail_prc_income_fee')>0, - 'ALTER TABLE `ar_bill_detail_fee` DROP INDEX `idx_ar_detail_prc_income_fee`', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -ALTER TABLE `ar_bill_detail_fee` DROP COLUMN `prc_income_bill_fee_id`; -ALTER TABLE `ar_bill_detail_fee` CHANGE COLUMN `prc_income_bill_fee_id_bi` `prc_income_bill_fee_id` bigint NOT NULL; -ALTER TABLE `ar_bill_detail_fee` ADD UNIQUE KEY `uk_ar_detail_prc_income_fee` (`detail_id`,`prc_income_bill_fee_id`); -ALTER TABLE `ar_bill_detail_fee` ADD KEY `idx_ar_detail_prc_income_fee` (`prc_income_bill_fee_id`); - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='ar_bill_generate_task' AND COLUMN_NAME='last_source_bill_id_bi')>0, - 'ALTER TABLE `ar_bill_generate_task` DROP COLUMN `last_source_bill_id`, CHANGE COLUMN `last_source_bill_id_bi` `last_source_bill_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='prc_billing_task' AND COLUMN_NAME='bill_id_bi')>0, - 'ALTER TABLE `prc_billing_task` DROP COLUMN `bill_id`, CHANGE COLUMN `bill_id_bi` `bill_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='order_bill_id_bi')>0, - 'ALTER TABLE `pay_bill_line` DROP COLUMN `order_bill_id`, CHANGE COLUMN `order_bill_id_bi` `order_bill_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_line' AND COLUMN_NAME='fee_id_bi')>0, - 'ALTER TABLE `pay_bill_line` DROP COLUMN `fee_id`, CHANGE COLUMN `fee_id_bi` `fee_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_log' AND COLUMN_NAME='fee_id_bi')>0, - 'ALTER TABLE `pay_bill_log` DROP COLUMN `fee_id`, CHANGE COLUMN `fee_id_bi` `fee_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='fee_id_bi')>0, - 'ALTER TABLE `pay_bill_diff` DROP COLUMN `fee_id`, CHANGE COLUMN `fee_id_bi` `fee_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @sql := IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='pay_bill_diff' AND COLUMN_NAME='adjust_fee_id_bi')>0, - 'ALTER TABLE `pay_bill_diff` DROP COLUMN `adjust_fee_id`, CHANGE COLUMN `adjust_fee_id_bi` `adjust_fee_id` bigint NULL', 'SELECT 1'); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - --- ========== 7. 重建 FK + AUTO_INCREMENT ========== -ALTER TABLE `prc_order_bill_ext` ADD CONSTRAINT `fk_order_bill_ext_bill` FOREIGN KEY (`bill_id`) REFERENCES `prc_order_bill` (`bill_id`) ON DELETE CASCADE; -ALTER TABLE `prc_income_bill` ADD CONSTRAINT `fk_income_bill_order_bill` FOREIGN KEY (`bill_id`) REFERENCES `prc_order_bill` (`bill_id`) ON DELETE CASCADE; -ALTER TABLE `prc_income_bill_fee` ADD CONSTRAINT `fk_income_bill_fee_order` FOREIGN KEY (`bill_id`) REFERENCES `prc_order_bill` (`bill_id`) ON DELETE CASCADE; -ALTER TABLE `prc_pay_bill` ADD CONSTRAINT `fk_pay_bill_order_bill` FOREIGN KEY (`bill_id`) REFERENCES `prc_order_bill` (`bill_id`) ON DELETE CASCADE; -ALTER TABLE `prc_pay_bill_fee` ADD CONSTRAINT `fk_pay_bill_fee_order` FOREIGN KEY (`bill_id`) REFERENCES `prc_order_bill` (`bill_id`) ON DELETE CASCADE; - -SET @ai := (SELECT IFNULL(MAX(`bill_id`),0)+1 FROM `prc_order_bill`); -SET @sql := CONCAT('ALTER TABLE `prc_order_bill` AUTO_INCREMENT=', @ai); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @ai := (SELECT IFNULL(MAX(`income_bill_id`),0)+1 FROM `prc_income_bill`); -SET @sql := CONCAT('ALTER TABLE `prc_income_bill` AUTO_INCREMENT=', @ai); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @ai := (SELECT IFNULL(MAX(`fee_id`),0)+1 FROM `prc_income_bill_fee`); -SET @sql := CONCAT('ALTER TABLE `prc_income_bill_fee` AUTO_INCREMENT=', @ai); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @ai := (SELECT IFNULL(MAX(`pay_bill_id`),0)+1 FROM `prc_pay_bill`); -SET @sql := CONCAT('ALTER TABLE `prc_pay_bill` AUTO_INCREMENT=', @ai); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -SET @ai := (SELECT IFNULL(MAX(`fee_id`),0)+1 FROM `prc_pay_bill_fee`); -SET @sql := CONCAT('ALTER TABLE `prc_pay_bill_fee` AUTO_INCREMENT=', @ai); -PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; - -SET FOREIGN_KEY_CHECKS = 1; - --- ========== 8. 抽查 ========== -SELECT d.detail_id, d.prc_order_bill_id, o.order_no FROM ar_bill_detail d JOIN prc_order_bill o ON o.bill_id = d.prc_order_bill_id LIMIT 5; -SELECT f.detail_fee_id, f.prc_income_bill_fee_id, i.fee_type FROM ar_bill_detail_fee f JOIN prc_income_bill_fee i ON i.fee_id = f.prc_income_bill_fee_id LIMIT 5; - --- ========== 9. 回滚说明(勿自动执行) ========== --- 用宝塔/整库备份恢复 + 部署旧后端包 --- --- ========== 10. 次日清理 ========== --- DROP TABLE IF EXISTS prc_order_bill_old_uuid, prc_income_bill_old_uuid, --- prc_income_bill_fee_old_uuid, prc_pay_bill_old_uuid, prc_pay_bill_fee_old_uuid; --- DROP TABLE IF EXISTS mig_map_order_bill, mig_map_income_bill, mig_map_income_fee, mig_map_pay_bill, mig_map_pay_fee; --- --- 冒烟:1)新建/重计费 2)出应收 3)查应付费用 4)旧 AR 明细关联订单 diff --git a/bms-back/sql/20261113_uuid_to_bigint_run.sh b/bms-back/sql/20261113_uuid_to_bigint_run.sh deleted file mode 100644 index 1b39ceed..00000000 --- a/bms-back/sql/20261113_uuid_to_bigint_run.sh +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env bash -# 夜间停机:仅在数据库服务器(或能连库的跳板机)执行 -# 依赖:mysql 客户端 -# -# export BMS_DB_HOST=127.0.0.1 -# export BMS_DB_PORT=3306 -# export BMS_DB_NAME=bms -# export BMS_DB_USER=root -# export BMS_DB_PASS='******' -# chmod +x 20261113_uuid_to_bigint_run.sh -# ./20261113_uuid_to_bigint_run.sh -# -# CONFIRM=YES ./20261113_uuid_to_bigint_run.sh - -set -euo pipefail - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -SQL_FILE="${SQL_FILE:-${SCRIPT_DIR}/20261113_uuid_to_bigint_order_bill.sql}" -LOG_DIR="${LOG_DIR:-${SCRIPT_DIR}/logs}" -TS="$(date +%Y%m%d_%H%M%S)" -LOG_FILE="${LOG_DIR}/uuid_to_bigint_${TS}.log" - -BMS_DB_HOST="${BMS_DB_HOST:-127.0.0.1}" -BMS_DB_PORT="${BMS_DB_PORT:-3306}" -BMS_DB_NAME="${BMS_DB_NAME:-bms}" -BMS_DB_USER="${BMS_DB_USER:-root}" - -if [[ -z "${BMS_DB_PASS:-}" ]]; then - echo "请先设置环境变量 BMS_DB_PASS(不要把密码写进脚本)" - exit 1 -fi - -if [[ ! -f "${SQL_FILE}" ]]; then - echo "找不到 SQL 文件: ${SQL_FILE}" - exit 1 -fi - -if ! command -v mysql >/dev/null 2>&1; then - echo "未找到 mysql 客户端,请先安装" - exit 1 -fi - -mkdir -p "${LOG_DIR}" - -echo "========================================" -echo " UUID -> bigint 迁移" -echo " host=${BMS_DB_HOST} port=${BMS_DB_PORT} db=${BMS_DB_NAME} user=${BMS_DB_USER}" -echo " sql=${SQL_FILE}" -echo " log=${LOG_FILE}" -echo "========================================" -echo -echo "【必须】先停 Java / BMS,再执行本脚本。" -echo "执行前请确认:" -echo " 1) Java / BMS 应用与异步 worker 已全部停掉(不要边跑边迁)" -echo " 2) 已在宝塔做整库备份(SQL 不再同库拷份)" -echo " 3) 磅盘空间足够(建议 >= 订单+ext+费用表 2~3 倍)" -echo " 4) SQL 成功后,再部署 Long 版后端并启动" -echo - -if [[ "${CONFIRM:-}" != "YES" ]]; then - read -r -p "已停 Java?输入 YES 开始执行 SQL: " ans - if [[ "${ans}" != "YES" ]]; then - echo "已取消(请先停 Java 再来)" - exit 1 - fi -else - echo "CONFIRM=YES:假定你已停 Java,直接开始 SQL..." -fi - -MYSQL_OPTS=( - -h "${BMS_DB_HOST}" - -P "${BMS_DB_PORT}" - -u "${BMS_DB_USER}" - "-p${BMS_DB_PASS}" - --default-character-set=utf8mb4 - --comments - "${BMS_DB_NAME}" -) - -echo -echo "[$(date '+%F %T')] 连接检查..." | tee -a "${LOG_FILE}" -mysql "${MYSQL_OPTS[@]}" -e "SELECT DATABASE() AS db, NOW() AS now_ts;" | tee -a "${LOG_FILE}" - -echo "[$(date '+%F %T')] 行数预览..." | tee -a "${LOG_FILE}" -mysql "${MYSQL_OPTS[@]}" -e " -SELECT 'prc_order_bill' AS tbl, COUNT(*) AS cnt FROM prc_order_bill -UNION ALL SELECT 'prc_order_bill_ext', COUNT(*) FROM prc_order_bill_ext -UNION ALL SELECT 'prc_income_bill', COUNT(*) FROM prc_income_bill -UNION ALL SELECT 'prc_income_bill_fee', COUNT(*) FROM prc_income_bill_fee -UNION ALL SELECT 'prc_pay_bill', COUNT(*) FROM prc_pay_bill -UNION ALL SELECT 'prc_pay_bill_fee', COUNT(*) FROM prc_pay_bill_fee; -" | tee -a "${LOG_FILE}" - -START_TS="$(date +%s)" -echo "[$(date '+%F %T')] 开始执行迁移 SQL..." | tee -a "${LOG_FILE}" - -set +e -mysql "${MYSQL_OPTS[@]}" < "${SQL_FILE}" 2>&1 | tee -a "${LOG_FILE}" -RC=${PIPESTATUS[0]} -set -e - -END_TS="$(date +%s)" -ELAPSED=$((END_TS - START_TS)) - -if [[ "${RC}" -ne 0 ]]; then - echo "[$(date '+%F %T')] 失败 exit=${RC} 耗时=${ELAPSED}s,请查日志: ${LOG_FILE}" | tee -a "${LOG_FILE}" - echo "若已换表中途失败:用宝塔备份恢复,不要部署新后端" - exit "${RC}" -fi - -echo "[$(date '+%F %T')] 成功耗时=${ELAPSED}s (约 $((ELAPSED/60)) 分钟)" | tee -a "${LOG_FILE}" -echo -echo "下一步:" -echo " 1) 抽查日志中校验/抽查结果" -echo " 2) 部署 Long 版后端并启应用" -echo " 3) 按 20261113_uuid_to_bigint_runbook.md 做冒烟" -echo "日志: ${LOG_FILE}" - diff --git a/bms-back/sql/20261113_uuid_to_bigint_runbook.md b/bms-back/sql/20261113_uuid_to_bigint_runbook.md deleted file mode 100644 index dc2afcfe..00000000 --- a/bms-back/sql/20261113_uuid_to_bigint_runbook.md +++ /dev/null @@ -1,63 +0,0 @@ -# UUID -> bigint 夜间执行与冒烟清单 - -脚本:`bms-back/sql/20261113_uuid_to_bigint_order_bill.sql` - -## 必须顺序(不要飞) - -1. **先停 Java / BMS 服务**(含计费、出账、导出等异步 worker) -2. **宝塔整库备份**(SQL 不再做同库 *_bak_uuid 拷贝) -3. 在服务器执行 SQL(下面一键脚本) -4. SQL 成功后,再部署 **Long 版** 后端并启动 -5. 冒烟 - ->旧包连新库或新包连旧库都会挂。**一定先停 Java,再跑 SQL。** - -## 服务器一键执行 - -把同目录下 `20261113_uuid_to_bigint_order_bill.sql` 与 `20261113_uuid_to_bigint_run.sh` 一起上传到服务器。 - -```bash -# 1) 先停 Java(按你们部署方式改,以下为示例) -# systemctl stop bms-admin -# 或:kill / docker stop / 停掉所有 java -jar bms-*.jar - -# 2) 再跑迁移 -export BMS_DB_HOST=127.0.0.1 -export BMS_DB_PORT=3306 -export BMS_DB_NAME=bms -export BMS_DB_USER=root -export BMS_DB_PASS='******' -chmod +x 20261113_uuid_to_bigint_run.sh -./20261113_uuid_to_bigint_run.sh -# 或非交互:CONFIRM=YES ./20261113_uuid_to_bigint_run.sh -``` - -日志写在 `sql/logs/uuid_to_bigint_*.log`。 - -## 执行前 -1. **已停 Java / BMS**(含计费/出账/导出异步) -2. **已在宝塔做整库备份** -3. 建议在从库/备份库先干跑校验 -4. 准备好 Long 版后端包(SQL 成功后再发) - -## 执行 -1. 确认 Java 已停 -2. 跑 `./20261113_uuid_to_bigint_run.sh`(内部会执行整份 SQL) -3. 查日志校验/抽查通过 -4. 部署新后端,启应用 - -## 冒烟 -- [ ] 订单列表能打开,billId 为数字 -- [ ] 新建/重计费一票,生成新 bigint bill_id -- [ ] 手动加一笔应收费用 / 查费用明细 -- [ ] 生成一笔应收账单,明细能关联订单 -- [ ] 旧应收账单明细 JOIN prc_order_bill 正常 -- [ ] 应付费用/应付账单查看正常 - -## 回滚 -1. 停新包 -2. **用宝塔整库备份恢复** -3. 部署旧后端包 - -## 次日 -- 确认无误后 DROP `*_old_uuid` / `mig_map_*` diff --git a/bms-back/sql/bms_init.sql b/bms-back/sql/bms_init.sql index 7f255677..f527d4cb 100644 --- a/bms-back/sql/bms_init.sql +++ b/bms-back/sql/bms_init.sql @@ -127,7 +127,7 @@ CREATE TABLE `ar_bill_void_task` ( CREATE TABLE `ar_bill_detail` ( `detail_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '账单订单明细ID', `ar_bill_id` bigint(20) NOT NULL COMMENT '应收账单ID', - `prc_order_bill_id` bigint(20) NOT NULL COMMENT '来源计费订单ID,对应 prc_order_bill.bill_id', + `prc_order_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源计费订单ID,对应 prc_order_bill.bill_id', `detail_no` int(11) NOT NULL COMMENT '账单内顺序号', `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单号快照', `tracking_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运单号快照', @@ -170,7 +170,7 @@ CREATE TABLE `ar_bill_detail` ( CREATE TABLE `ar_bill_detail_fee` ( `detail_fee_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '账单费用明细ID', `detail_id` bigint(20) NOT NULL COMMENT '账单订单明细ID', - `prc_income_bill_fee_id` bigint(20) NOT NULL COMMENT '来源收入费用ID,对应 prc_income_bill_fee.fee_id', + `prc_income_bill_fee_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源收入费用ID,对应 prc_income_bill_fee.fee_id', `fee_no` int(11) NOT NULL COMMENT '订单内费用顺序号', `fee_type` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用类型快照', `fee_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用名称快照', @@ -234,7 +234,7 @@ CREATE TABLE `ar_bill_generate_task` ( `selection_mode` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '选择模式:EXPLICIT=手动选择,ALL_MATCHED=全选查询结果', `request_payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '生成请求快照JSON', `snapshot_create_time` datetime DEFAULT NULL COMMENT '来源订单创建时间快照', - `last_source_bill_id` bigint(20) DEFAULT NULL COMMENT '来源订单游标', + `last_source_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单游标', `total_count` int(11) NOT NULL DEFAULT '-1' COMMENT '待处理订单数,-1表示尚未统计', `processed_count` int(11) NOT NULL DEFAULT '0' COMMENT '已处理订单数', `success_count` int(11) NOT NULL DEFAULT '0' COMMENT '成功订单数', @@ -789,7 +789,7 @@ CREATE TABLE `prc_billing_task` ( `bill_type` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费类型:PENDING待计费 REBILL重计费 REFUND退费', `success_status` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'WAITING' COMMENT '是否计费成功:WAITING待处理 SUCCESS成功 FAILED失败', `bill_time` datetime DEFAULT NULL COMMENT '计费时间', - `bill_id` bigint(20) DEFAULT NULL COMMENT '计费订单ID prc_order_bill.bill_id', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计费订单ID prc_order_bill.bill_id', `fail_code` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '失败码', `error_message` varchar(1000) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '失败原因', `create_by` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT '' COMMENT '创建者', @@ -834,8 +834,8 @@ CREATE TABLE `prc_customer_price_set` ( -- 表结构:`prc_income_bill` -- ---------------------------- CREATE TABLE `prc_income_bill` ( - `income_bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应收主表ID', - `bill_id` bigint(20) NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id,一对一', + `income_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '应收主表ID', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id,一对一', `currency` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'CNY' COMMENT '币种', `product_amount` decimal(18,4) DEFAULT NULL COMMENT '产品价合计', `redline_amount` decimal(18,4) DEFAULT NULL COMMENT '红线价合计', @@ -880,9 +880,9 @@ CREATE TABLE `prc_profit_commission_rate` ( -- 表结构:`prc_income_bill_fee` -- ---------------------------- CREATE TABLE `prc_income_bill_fee` ( - `fee_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '费用明细ID', - `bill_id` bigint(20) NOT NULL COMMENT '计费ID', - `income_bill_id` bigint(20) DEFAULT NULL COMMENT '应收主表ID,对应 prc_income_bill.income_bill_id', + `fee_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用明细ID', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费ID', + `income_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应收主表ID,对应 prc_income_bill.income_bill_id', `fee_type` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用类型(字典bms_fee_type)', `fee_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用名称', `sc_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '附加费配置ID', @@ -908,7 +908,7 @@ CREATE TABLE `prc_income_bill_fee` ( -- 表结构:`prc_order_bill` -- ---------------------------- CREATE TABLE `prc_order_bill` ( - `bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '计费ID', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费ID', `bill_key` char(32) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'MD5(order_no)', `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单号', `tracking_no` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '运单号', @@ -1003,7 +1003,7 @@ CREATE TABLE `prc_order_bill` ( -- 表结构:`prc_order_bill_ext` -- ---------------------------- CREATE TABLE `prc_order_bill_ext` ( - `bill_id` bigint(20) NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id', `order_no` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单号', `create_time` datetime NOT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '更新时间', @@ -1189,8 +1189,8 @@ CREATE TABLE `prc_order_bill_ext` ( -- 表结构:`prc_pay_bill` -- ---------------------------- CREATE TABLE `prc_pay_bill` ( - `pay_bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应付主表ID', - `bill_id` bigint(20) NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id,一对一', + `pay_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '应付主表ID', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id,一对一', `currency` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT 'CNY' COMMENT '币种', `product_amount` decimal(18,4) DEFAULT NULL COMMENT '产品价合计', `redline_amount` decimal(18,4) DEFAULT NULL COMMENT '红线价合计', @@ -1215,9 +1215,9 @@ CREATE TABLE `prc_pay_bill` ( -- 表结构:`prc_pay_bill_fee` -- ---------------------------- CREATE TABLE `prc_pay_bill_fee` ( - `fee_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '费用明细ID', - `bill_id` bigint(20) NOT NULL COMMENT '计费ID', - `pay_bill_id` bigint(20) DEFAULT NULL COMMENT '应付主表ID,对应 prc_pay_bill.pay_bill_id', + `fee_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用明细ID', + `bill_id` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费ID', + `pay_bill_id` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '应付主表ID,对应 prc_pay_bill.pay_bill_id', `fee_type` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '费用类型(字典bms_fee_type)', `fee_name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '费用名称', `sc_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '附加费配置ID', diff --git a/bms-back/sql/price/pay_bill.sql b/bms-back/sql/price/pay_bill.sql index 1cc6ae5f..c097d8ee 100644 --- a/bms-back/sql/price/pay_bill.sql +++ b/bms-back/sql/price/pay_bill.sql @@ -98,7 +98,7 @@ CREATE TABLE IF NOT EXISTS `pay_bill` ( CREATE TABLE IF NOT EXISTS `pay_bill_line` ( `line_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '账单行ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', - `order_bill_id` bigint(20) DEFAULT NULL COMMENT '订单ID', + `order_bill_id` varchar(36) DEFAULT NULL COMMENT '订单ID', `order_no` varchar(64) DEFAULT NULL COMMENT '订单号', `lading_no` varchar(64) DEFAULT NULL COMMENT '提单号', `lading_fee_id` bigint(20) DEFAULT NULL COMMENT '留在主单上的费用', diff --git a/bms-back/sql/price/pay_bill_ap.sql b/bms-back/sql/price/pay_bill_ap.sql index da2cc884..b3e96eb2 100644 --- a/bms-back/sql/price/pay_bill_ap.sql +++ b/bms-back/sql/price/pay_bill_ap.sql @@ -23,7 +23,7 @@ ALTER TABLE `bms`.`pay_bill` ADD COLUMN `confirm_by` varchar(64) CHARACTER SET u ALTER TABLE `bms`.`pay_bill` ADD COLUMN `confirm_time` datetime DEFAULT NULL COMMENT '审核时间' AFTER `confirm_by`; -- `pay_bill_line` 增加费用明细ID -ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_id` bigint(20) DEFAULT NULL COMMENT '应付费用明细ID' AFTER `bill_id`; +ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应付费用明细ID' AFTER `bill_id`; -- `pay_bill_line` 增加费用来源 ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_source` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'CALC计算 LADING提单分摊 MANUAL人工' AFTER `fee_name`; @@ -53,7 +53,7 @@ ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `biz_id` bigint(20) DEFAULT NULL COM ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `line_id` bigint(20) DEFAULT NULL COMMENT '账单行ID' AFTER `biz_id`; -- `pay_bill_log` 增加费用明细 -ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `fee_id` bigint(20) DEFAULT NULL COMMENT '费用明细ID' AFTER `line_id`; +ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `fee_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费用明细ID' AFTER `line_id`; -- `pay_bill_log` 增加改前金额 ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `amount_before` decimal(18,4) DEFAULT NULL COMMENT '改前金额' AFTER `operation_desc`; @@ -66,13 +66,13 @@ CREATE TABLE `bms`.`pay_bill_diff` ( `diff_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '差异ID', `bill_id` bigint(20) NOT NULL COMMENT '应付账单ID', `line_id` bigint(20) NOT NULL COMMENT '账单行ID', - `fee_id` bigint(20) DEFAULT NULL COMMENT '费用明细ID', + `fee_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费用明细ID', `our_amount` decimal(18,4) NOT NULL COMMENT '我方金额', `supplier_amount` decimal(18,4) NOT NULL COMMENT '对方金额', `diff_amount` decimal(18,4) NOT NULL COMMENT '差额,对方减我方', `reason` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '差异原因', `handle_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'OPEN未处理 ACCEPT_OURS接受我方 ACCEPT_THEIRS接受对方', - `adjust_fee_id` bigint(20) DEFAULT NULL COMMENT '接受对方时新增的调整费用', + `adjust_fee_id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接受对方时新增的调整费用', `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL COMMENT '创建时间', PRIMARY KEY (`diff_id`),