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 5ba7bd8e..f14bc4ab 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") String billId) + public AjaxResult orderBillFailReason(@PathVariable("billId") Long 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 String billId) + public AjaxResult getBill(@PathVariable Long 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") String billId) + public TableDataInfo billHistory(@PathVariable("billId") Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { return getDataTable(new ArrayList()); } - TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId.trim()); + TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId); 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") String billId) + public AjaxResult refundBill(@PathVariable("billId") Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { return error("billId required"); } - TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId.trim()); + TmsPriceQuoteResult bill = prcOrderBillService.getBill(billId); 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 (String billId : billIds) + for (Long 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 String feeId) + public AjaxResult deleteIncomeFee(@PathVariable Long 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 db133039..5925ab50 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 String billId) + public AjaxResult generateOrderCost(@PathVariable Long 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 ef789233..ca0fa5b5 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 String billId; + private Long 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 ecf42012..fa6cbba9 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 String feeId; + private Long feeId; private BigDecimal ourAmount; @@ -28,7 +28,7 @@ public class PayBillDiff /** OPEN ACCEPT_OURS ACCEPT_THEIRS */ private String handleType; - private String adjustFeeId; + private Long 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 70275661..4ce3802c 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 String feeId; + private Long feeId; - private String orderBillId; + private Long 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 886908e3..cb0eefcd 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 String feeId; + private Long 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 a03d392e..33668407 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 String billId; + private Long 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 0ddb8b5d..2b6c8548 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 String billId; + private Long 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 4ad15145..065940f9 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 String billId; + private Long 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 b3c6d7f3..faab8621 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 String incomeBillId; + private Long incomeBillId; /** 计费订单ID */ - private String billId; + private Long 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 3f007200..050f4cbf 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 String feeId; - private String billId; + private Long feeId; + private Long billId; /** 应收主表ID */ - private String incomeBillId; + private Long 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 b8cdaece..6fbf94e3 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 String billId; + private Long 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 df033c76..0d093134 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 String billId; + private Long 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 1140f401..a0cea814 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 String payBillId; + private Long payBillId; /** 计费订单ID */ - private String billId; + private Long 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 35011024..1fefd470 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 String feeId; - private String billId; + private Long feeId; + private Long billId; /** 应付主表ID */ - private String payBillId; + private Long 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 6828a4cd..62e06871 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 String billId; + private Long 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 be68fb19..d9420052 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 c65a7e1b..0b98cc3e 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 4728de1a..24786837 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 String billId; + private Long 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 295f6be7..a614eeb0 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 751b440a..d4d1fc54 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 String billId; + private Long 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 6f5445b2..2edcc59d 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 String billId; + private Long 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 19f67e8a..6dc799db 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 String billId; + private Long 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 3a2413f9..824307df 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 String feeId; + private Long 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 ec93452b..b9232793 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") String billId); + int countCalcFees(@Param("billId") Long billId); /** * 插入一张草稿应付账单。 @@ -122,7 +122,7 @@ public interface PayBillMapper * @param lineId 账单行ID * @return 影响行数 */ - int bindFeeLine(@Param("feeId") String feeId, @Param("lineId") Long lineId); + int bindFeeLine(@Param("feeId") Long 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 535c8add..9495fb80 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") String feeId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); + int stampFee(@Param("feeId") Long feeId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); - int stampCalc(@Param("billId") String billId, @Param("supplierId") Long supplierId, @Param("supplierName") String supplierName); + int stampCalc(@Param("billId") Long 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 abfaa2fd..793a59e7 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(String billId); + public List selectByBillId(Long 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(String feeId); + public PrcIncomeBillFee selectByFeeId(Long feeId); /** 按唯一键 uk_bill_fee_item(bill_id、fee_type、sc_id)查询。 */ - public PrcIncomeBillFee selectByBillIdAndFeeTypeAndScId(@Param("billId") String billId, + public PrcIncomeBillFee selectByBillIdAndFeeTypeAndScId(@Param("billId") Long billId, @Param("feeType") String feeType, @Param("scId") Long scId); /** 统计某账单在指定 ar_bill_status 和 fee_type 下的费用数(例如 BILLED + BASIC_FREIGHT)。 */ - public int countByBillIdAndArBillStatusAndFeeType(@Param("billId") String billId, + public int countByBillIdAndArBillStatusAndFeeType(@Param("billId") Long 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(String feeId); + public int deleteByFeeId(Long feeId); - public int deleteByBillId(String billId); + public int deleteByBillId(Long billId); /** 重新出账:只删除自动费用;保留 manual_flag=1 的行。 */ - public int deleteAutoFeesByBillId(String billId); + public int deleteAutoFeesByBillId(Long 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 472fdfb1..78156aee 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(String billId); + PrcIncomeBill selectByBillId(Long billId); - List selectByBillIds(@Param("billIds") List billIds); + List selectByBillIds(@Param("billIds") List billIds); - PrcIncomeBill selectByIncomeBillId(String incomeBillId); + PrcIncomeBill selectByIncomeBillId(Long incomeBillId); int insertPrcIncomeBill(PrcIncomeBill row); @@ -19,5 +19,5 @@ public interface PrcIncomeBillMapper int upsertPrcIncomeBill(PrcIncomeBill row); - int deleteByBillId(String billId); + int deleteByBillId(Long 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 784e42d4..9f196dbd 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(String billId); + public PrcOrderBillExt selectByBillId(Long 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 d052959a..841e4671 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(String billId); + public PrcOrderBill selectPrcOrderBillById(Long 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") String lastSourceBillId, @Param("billIds") List billIds, - @Param("excludedBillIds") List excludedBillIds, + @Param("lastSourceBillId") Long 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") String billId, + int updateCreditArrearsStatus(@Param("billId") Long billId, @Param("creditArrearsStatus") String creditArrearsStatus, @Param("updateBy") String updateBy); - public int updateOrderBillAmounts(@Param("billId") String billId, + public int updateOrderBillAmounts(@Param("billId") Long billId, @Param("surchargeAmount") BigDecimal surchargeAmount, @Param("incomeTotal") BigDecimal incomeTotal, @Param("payTotal") BigDecimal payTotal); /** 只更新应付合计,不改应收。 */ - int updatePayTotal(@Param("billId") String billId, @Param("payTotal") BigDecimal payTotal); + int updatePayTotal(@Param("billId") Long 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 505ceb68..aa3fb0ff 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(String billId); + public List selectByBillId(Long billId); /** * 插入一条订单应付费用。 @@ -37,7 +37,7 @@ public interface PrcPayBillFeeMapper * @param billId 计费订单ID * @return 影响行数 */ - public int deleteByBillId(String billId); + public int deleteByBillId(Long billId); /** * 逻辑删除某一条提单费用分摊到订单上的明细。 @@ -48,10 +48,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 1b1b880a..a57aa0db 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(String billId); + PrcPayBill selectByBillId(Long billId); /** * 按应付主表ID读取。 @@ -21,7 +21,7 @@ public interface PrcPayBillMapper * @param payBillId 订单应付ID * @return 订单应付,没有时为 null */ - PrcPayBill selectByPayBillId(String payBillId); + PrcPayBill selectByPayBillId(Long payBillId); /** * 新增一票订单的应付主表。 @@ -53,7 +53,7 @@ public interface PrcPayBillMapper * @param billId 计费订单ID * @return 影响行数 */ - int deleteByBillId(String billId); + int deleteByBillId(Long 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 fb9d5186..9d0698a4 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 cb68728e..31c0dfee 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(String billId, String cardName) + public void stampCalc(Long billId, String cardName) { BmsSupplier supplier = match(cardName); - if (supplier == null || billId == null || billId.isBlank()) + if (supplier == null || billId == null) { 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 4f5ed862..2ab86d1c 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(String billId); + PayOrderCostResult generate(Long billId); /** * 单独提交一票尾程。失败时只回滚这一票,不影响外面的对账单事务。 @@ -21,7 +21,7 @@ public interface IPayOrderCostService * @param billId 计费订单ID * @return 本次算出的产品、版本、币种和费用明细 */ - PayOrderCostResult generateIsolated(String billId); + PayOrderCostResult generateIsolated(Long billId); /** * 这票订单当前尾程价卡上的归属供应商名称。没有价卡时返回空字符串。 @@ -29,5 +29,5 @@ public interface IPayOrderCostService * @param billId 计费订单ID * @return 价卡归属名称 */ - String cardSupplierName(String billId); + String cardSupplierName(Long 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 6efa663b..5bd40f39 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 */ - String syncUpstreamOverwrite(java.util.Map upstreamRow); + Long syncUpstreamOverwrite(java.util.Map upstreamRow); /** * 计费无法生成报价时,仍然落库 prc_order_bill 及其扩展表。 @@ -59,10 +59,10 @@ public interface IPrcOrderBillService /** 转单号下拉搜索选项(模糊匹配,去重限量,带数据权限) */ List listTransferNoOptions(PrcOrderBill query); - TmsPriceQuoteResult getBill(String billId); + TmsPriceQuoteResult getBill(Long billId); /** 订单列表弹窗使用的计费失败原因(带数据权限)。 */ - OrderBillFailReasonVo getBillingFailReason(String billId); + OrderBillFailReasonVo getBillingFailReason(Long billId); TmsPriceQuoteResult getBillByOrderNo(String orderNo); @@ -73,7 +73,7 @@ public interface IPrcOrderBillService TmsPriceQuoteResult updateIncomeFee(UpdateIncomeBillFeeRequest request); /** 删除手工录入的 UNBILLED 收入费用;同时刷新应收合计。 */ - TmsPriceQuoteResult deleteIncomeFee(String feeId); + TmsPriceQuoteResult deleteIncomeFee(Long feeId); /** 预览批量添加费用命中的账单(带数据权限)。 */ BatchAddIncomeBillFeePreview previewBatchAddIncomeFee(BatchAddIncomeBillFeeRequest request); @@ -103,7 +103,7 @@ public interface IPrcOrderBillService * @param billId 订单计费ID * @return 更新后的计费结果 */ - TmsPriceQuoteResult updateCreditArrearsStatus(String billId); + TmsPriceQuoteResult updateCreditArrearsStatus(Long billId); /** * 更新 charge_weight(手工覆盖),保留原重量,并重新计费。 @@ -112,12 +112,12 @@ public interface IPrcOrderBillService * @param billId 账单 ID * @param chargeWeight 新的计费重量(kg) */ - TmsPriceQuoteResult updateChargeWeight(String billId, BigDecimal chargeWeight); + TmsPriceQuoteResult updateChargeWeight(Long billId, BigDecimal chargeWeight); /** * 更新 charge_weight,不做数据权限校验(供已校验的异步导入使用)。 */ - TmsPriceQuoteResult updateChargeWeightByBillId(String billId, BigDecimal chargeWeight); + TmsPriceQuoteResult updateChargeWeightByBillId(Long billId, BigDecimal chargeWeight); /** * 提交 charge_weight 更新的异步导入;返回 taskId。 @@ -151,7 +151,7 @@ public interface IPrcOrderBillService * 按模式(PRODUCT/REDLINE)重算并落库 product_amount 或 redline_amount。 * 要求 prc_order_bill 已存在;跳过应收可编辑校验。 */ - void recalcBillPriceByBillId(String billId, String mode); + void recalcBillPriceByBillId(Long 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(String billId); + TmsPriceQuoteResult rebillLocalByBillId(Long 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 e4c250cf..b3a1a722 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 e20e8115..d8ed9e76 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,7 +15,6 @@ 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; @@ -152,9 +151,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()); @@ -228,7 +227,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) @@ -260,7 +259,7 @@ public class PayBillServiceImpl implements IPayBillService { line.setBillId(bill.getBillId()); payBillMapper.insertLine(line); - if (line.getFeeId() != null && !line.getFeeId().isBlank() && payBillMapper.bindFeeLine(line.getFeeId(), line.getLineId()) != 1) + if (line.getFeeId() != null && payBillMapper.bindFeeLine(line.getFeeId(), line.getLineId()) != 1) { throw PaymentMesEnum.BMS_PAY_FEE_TAKEN.exception(); } @@ -574,7 +573,6 @@ 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("对账调整"); @@ -943,7 +941,7 @@ public class PayBillServiceImpl implements IPayBillService * @param billId 计费订单ID * @return 订单;对不上时返回 null */ - private PayBillOrder findOrder(List orders, String billId) + private PayBillOrder findOrder(List orders, Long billId) { for (PayBillOrder order : orders) { @@ -1107,11 +1105,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 ? fee.getBillId() : order.getOrderNo(); + String orderNo = order == null || order.getOrderNo() == null ? String.valueOf(fee.getBillId()) : order.getOrderNo(); String why = partyReason(fee, order, supplier, cards); if (why == null) { @@ -1127,7 +1125,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) { @@ -1263,7 +1261,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 9598f1c3..f1a31a21 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(String billId) + public PayOrderCostResult generateIsolated(Long billId) { return generate(billId); } @Override @Transactional(rollbackFor = Exception.class) - public PayOrderCostResult generate(String billId) + public PayOrderCostResult generate(Long billId) { - if (billId == null || billId.isBlank()) + if (billId == null) { throw PaymentMesEnum.BMS_PAY_PICK_ORDER.exception(); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw PaymentMesEnum.BMS_PAY_ORDER_MISS.exception(); @@ -146,15 +146,15 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService } @Override - public String cardSupplierName(String billId) + public String cardSupplierName(Long billId) { - if (billId == null || billId.isBlank()) + if (billId == null) { return ""; } try { - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { return ""; @@ -529,7 +529,6 @@ 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); } @@ -559,7 +558,7 @@ public class PayOrderCostServiceImpl implements IPayOrderCostService * @param payBillId 订单应付主表ID * @param fees 本次算出的费用 */ - private void saveFees(String billId, String payBillId, List fees) + private void saveFees(Long billId, Long payBillId, List fees) { payBillFeeMapper.deleteByBillId(billId); List rows = new java.util.ArrayList<>(); @@ -567,7 +566,6 @@ 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 f9c4a913..1048198e 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 && StringUtils.isNotEmpty(task.getBillId())) + if (bill == null && task.getBillId() != null) { bill = orderBillMapper.selectPrcOrderBillById(task.getBillId()); } @@ -645,7 +645,7 @@ public class PrcBillingTaskServiceImpl implements IPrcBillingTaskService } } - private void writeback(PrcBillingTask task, BillTaskSuccessStatus status, String billId, + private void writeback(PrcBillingTask task, BillTaskSuccessStatus status, Long 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 1fe05347..64f3f935 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,7 +12,6 @@ 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; @@ -297,7 +296,6 @@ 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; @@ -423,6 +421,19 @@ 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) { @@ -435,14 +446,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } @Override - public TmsPriceQuoteResult getBill(String billId) + public TmsPriceQuoteResult getBill(Long billId) { if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } PrcOrderBill query = new PrcOrderBill(); - query.setBillId(billId.trim()); + query.setBillId(billId); // 走 selectBillList,复用销售员/结算员数据权限,避免越权查详情 List list = self.selectBillList(query); if (list == null || list.isEmpty()) @@ -456,14 +467,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override - public OrderBillFailReasonVo getBillingFailReason(String billId) + public OrderBillFailReasonVo getBillingFailReason(Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } PrcOrderBill query = new PrcOrderBill(); - query.setBillId(billId.trim()); + query.setBillId(billId); List list = self.selectBillList(query); if (list == null || list.isEmpty()) { @@ -687,7 +698,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Transactional(rollbackFor = Exception.class) public TmsPriceQuoteResult addIncomeFee(AddIncomeBillFeeRequest request) { - if (request == null || StringUtils.isEmpty(request.getBillId())) + if (request == null || request.getBillId() == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } @@ -695,7 +706,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { throw new ServiceException(MessageUtils.message("price.bill.fee.scIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(request.getBillId().trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(request.getBillId()); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -734,7 +745,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService : surcharge.getRoundMode()); existing.setRemark(request.getRemark()); existing.setManualFlag("1"); - if (incomeBill != null && StringUtils.isEmpty(existing.getIncomeBillId())) + if (incomeBill != null && existing.getIncomeBillId() == null) { existing.setIncomeBillId(incomeBill.getIncomeBillId()); } @@ -743,7 +754,6 @@ 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); @@ -766,11 +776,11 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Transactional(rollbackFor = Exception.class) public TmsPriceQuoteResult updateIncomeFee(UpdateIncomeBillFeeRequest request) { - if (request == null || StringUtils.isEmpty(request.getFeeId())) + if (request == null || request.getFeeId() == null) { throw new ServiceException(MessageUtils.message("price.bill.fee.idRequired")); } - PrcIncomeBillFee fee = requireEditableManualFee(request.getFeeId().trim()); + PrcIncomeBillFee fee = requireEditableManualFee(request.getFeeId()); PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(fee.getBillId()); if (bill == null) { @@ -813,13 +823,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult deleteIncomeFee(String feeId) + public TmsPriceQuoteResult deleteIncomeFee(Long feeId) { - if (StringUtils.isEmpty(feeId)) + if (feeId == null) { throw new ServiceException(MessageUtils.message("price.bill.fee.idRequired")); } - PrcIncomeBillFee fee = requireEditableManualFee(feeId.trim()); + PrcIncomeBillFee fee = requireEditableManualFee(feeId); PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(fee.getBillId()); if (bill == null) { @@ -858,10 +868,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 && StringUtils.isNotEmpty(bill.getBillId())) + if (bill != null && bill.getBillId() != null) { billIds.add(bill.getBillId()); } @@ -913,10 +923,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 && StringUtils.isNotEmpty(bill.getBillId())) + if (bill != null && bill.getBillId() != null) { billIds.add(bill.getBillId()); } @@ -944,14 +954,14 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public void recalcBillPriceByBillId(String billId, String mode) + public void recalcBillPriceByBillId(Long billId, String mode) { boolean productMode = "PRODUCT".equals(normalizeRecalcMode(mode)); - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -980,13 +990,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService * 其他情况走正常的 {@link #bill}。 */ @Override - public TmsPriceQuoteResult rebillLocalByBillId(String billId) + public TmsPriceQuoteResult rebillLocalByBillId(Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -1012,7 +1022,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return refundLocalWithDbRetry(bill.getOrderNo().trim()); } TmsPriceBillRequest req = buildBillRequestFromBill(bill); - return billLocalWithDbRetry(billId.trim(), req); + return billLocalWithDbRetry(billId, req); } /** order_status 为 9/10 或 refund_status=REFUNDED。 */ @@ -1029,9 +1039,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return BillRefundStatus.REFUNDED.getCode().equalsIgnoreCase(bill.getRefundStatus()); } - private boolean hasRefundFeeLine(String billId) + private boolean hasRefundFeeLine(Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { return false; } @@ -1050,7 +1060,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return false; } - private TmsPriceQuoteResult billLocalWithDbRetry(String billId, TmsPriceBillRequest billReq) + private TmsPriceQuoteResult billLocalWithDbRetry(Long billId, TmsPriceBillRequest billReq) { RuntimeException last = null; for (int attempt = 1; attempt <= LOCAL_REBILL_DB_RETRY_MAX; attempt++) @@ -1170,7 +1180,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")); @@ -1292,15 +1302,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 @@ -1321,7 +1331,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcOrderBill query = new PrcOrderBill(); if ("SELECTED".equals(scopeMode)) { - List billIds = normalizeCodeList(request.getBillIds()); + List billIds = normalizeIdList(request.getBillIds()); if (billIds == null || billIds.isEmpty()) { throw new ServiceException(MessageUtils.message("price.bill.recalc.selectedRequired")); @@ -1400,7 +1410,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService query.setTrackingNos(normalizeCodeList(query.getTrackingNos())); query.setTransferNos(normalizeCodeList(query.getTransferNos())); query.setOrderIdentifiers(normalizeOrderIdentifiers(query.getOrderIdentifiers())); - query.setBillIds(normalizeCodeList(query.getBillIds())); + query.setBillIds(normalizeIdList(query.getBillIds())); } private static String normalizeRecalcMode(String mode) @@ -1421,7 +1431,6 @@ 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())); @@ -1507,7 +1516,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, @@ -1556,7 +1565,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService PrcOrderBill query = new PrcOrderBill(); if ("SELECTED".equals(scopeMode)) { - List billIds = normalizeCodeList(billIdsRaw); + List billIds = normalizeIdList(billIdsRaw); if (billIds == null || billIds.isEmpty()) { throw new ServiceException(MessageUtils.message(msgSelected)); @@ -1624,7 +1633,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return surcharge; } - private PrcIncomeBillFee requireEditableManualFee(String feeId) + private PrcIncomeBillFee requireEditableManualFee(Long feeId) { PrcIncomeBillFee fee = incomeBillFeeMapper.selectByFeeId(feeId); if (fee == null) @@ -1832,13 +1841,13 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService */ @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateCreditArrearsStatus(String billId) + public TmsPriceQuoteResult updateCreditArrearsStatus(Long billId) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -1999,10 +2008,6 @@ 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); // 上游表头覆盖(不做校验)。 @@ -2140,7 +2145,6 @@ 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()); @@ -2175,6 +2179,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService // 应付暂不在范围内:跳过 prc_pay_bill_fee 的清理/写入。 // payBillFeeMapper.deleteByBillId(bill.getBillId()); } + result.setBillId(bill.getBillId()); PrcIncomeBill incomeBill = null; if (storeIncome) { @@ -2236,9 +2241,9 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService * 丢弃在 uk_bill_fee_item(bill_id, fee_type, sc_id)上与保留的人工行冲突的自动费用行。 * 重算时以人工费用优先。 */ - private List filterAutoFeesAgainstManual(String billId, List autoFees) + private List filterAutoFeesAgainstManual(Long billId, List autoFees) { - if (autoFees == null || autoFees.isEmpty() || StringUtils.isEmpty(billId)) + if (autoFees == null || autoFees.isEmpty() || billId == null) { return autoFees == null ? new ArrayList() : autoFees; } @@ -2439,7 +2444,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService private boolean isAlreadyInArBill(PrcOrderBill existed) { - if (existed == null || StringUtils.isEmpty(existed.getBillId())) + if (existed == null || existed.getBillId() == null) { return false; } @@ -2462,7 +2467,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return v == null ? BigDecimal.ZERO : v; } - private List toFeeRows(String billId, String incomeBillId, TmsPriceQuoteResult result) + private List toFeeRows(Long billId, Long incomeBillId, TmsPriceQuoteResult result) { List fees = new ArrayList(); if (result.getFeeDetails() == null) @@ -2472,7 +2477,6 @@ 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()); @@ -2494,7 +2498,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 应收主表与订单计费一对一落库;销售价=套餐计费,产品价=产品目录价,红线价=红线目录价(含 REDLINE 附加费)。 */ private PrcIncomeBill persistIncomeBill(PrcOrderBill bill, TmsPriceQuoteResult result) { - if (bill == null || StringUtils.isEmpty(bill.getBillId())) + if (bill == null || bill.getBillId() == null) { return null; } @@ -2503,7 +2507,6 @@ 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()); } @@ -2532,7 +2535,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService } - private List toPayFeeRows(String billId, String payBillId, TmsPriceQuoteResult result) + private List toPayFeeRows(Long billId, Long payBillId, TmsPriceQuoteResult result) { List fees = new ArrayList(); if (result.getPayFeeDetails() == null) @@ -2542,7 +2545,6 @@ 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()); @@ -2560,7 +2562,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 应付主表与订单计费一对一落库;product_amount 取产品目录价、redline_amount 取红线价;应付/成本价留空待接入真实成本源。 */ private PrcPayBill persistPayBill(PrcOrderBill bill, TmsPriceQuoteResult result) { - if (bill == null || StringUtils.isEmpty(bill.getBillId())) + if (bill == null || bill.getBillId() == null) { return null; } @@ -2568,7 +2570,6 @@ 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()); } @@ -2655,7 +2656,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService /** 仅在存在上游 TAB_ORDER 行时写入 prc_order_bill_ext。 */ private void persistBillExt(PrcOrderBill bill, java.util.Map upstreamRow) { - if (bill == null || StringUtils.isEmpty(bill.getBillId())) + if (bill == null || bill.getBillId() == null) { return; } @@ -2680,7 +2681,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService for (PrcIncomeBillFee fee : fees) { TmsPriceQuoteFeeLine line = new TmsPriceQuoteFeeLine(); - line.setFeeId(fee.getFeeId()); + line.setFeeId(fee.getFeeId() == null ? null : String.valueOf(fee.getFeeId())); line.setFeeType(fee.getFeeType()); line.setFeeName(fee.getFeeName()); line.setScId(fee.getScId()); @@ -2792,26 +2793,26 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateChargeWeight(String billId, BigDecimal chargeWeight) + public TmsPriceQuoteResult updateChargeWeight(Long billId, BigDecimal chargeWeight) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } // 通过列表查询做数据范围校验 - self.getBill(billId.trim()); - return self.updateChargeWeightByBillId(billId.trim(), chargeWeight); + self.getBill(billId); + return self.updateChargeWeightByBillId(billId, chargeWeight); } @Override @Transactional(rollbackFor = Exception.class) - public TmsPriceQuoteResult updateChargeWeightByBillId(String billId, BigDecimal chargeWeight) + public TmsPriceQuoteResult updateChargeWeightByBillId(Long billId, BigDecimal chargeWeight) { - if (StringUtils.isEmpty(billId)) + if (billId == null) { throw new ServiceException(MessageUtils.message("price.bill.billIdRequired")); } - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) { throw new ServiceException(MessageUtils.message("price.bill.notFound")); @@ -3058,7 +3059,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService return rows; } - private TmsPriceQuoteResult toResult(String billId) + private TmsPriceQuoteResult toResult(Long billId) { PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill == null) @@ -3220,7 +3221,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService { return name; } - if (StringUtils.isEmpty(bill.getBillId()) || orderBillExtMapper == null) + if (bill.getBillId() == null || orderBillExtMapper == null) { return StringUtils.isNotEmpty(name) ? name : null; } @@ -3264,7 +3265,7 @@ public class PrcOrderBillServiceImpl implements IPrcOrderBillService */ @Override @Transactional(rollbackFor = Exception.class) - public String syncUpstreamOverwrite(java.util.Map upstreamRow) + public Long syncUpstreamOverwrite(java.util.Map upstreamRow) { if (upstreamRow == null || upstreamRow.isEmpty()) { @@ -3312,7 +3313,6 @@ 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,7 +3430,6 @@ 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 49ef88a3..697bdaba 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,16 +38,16 @@ 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); for (PrcPayBillFee fee : chunk) { - if (fee != null && fee.getBillId() != null && !fee.getBillId().isBlank()) + if (fee != null && fee.getBillId() != null) { - billIds.add(fee.getBillId().trim()); + billIds.add(fee.getBillId()); } } } @@ -55,25 +55,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 (String billId : billIds) + LinkedHashSet unique = new LinkedHashSet<>(); + for (Long billId : billIds) { - if (billId != null && !billId.isBlank()) + if (billId != null) { - unique.add(billId.trim()); + unique.add(billId); } } - 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 60cbb67f..cffaf1c8 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,7 +8,6 @@ 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; @@ -95,7 +94,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) @@ -168,7 +167,7 @@ public class SrvBillAirAllocServiceImpl implements ISrvBillAirAllocService Map> grouped = new LinkedHashMap<>(); for (SrvBillAirAllocOrder order : allocMapper.selectOrders(codes)) { - if (order.getBillId() == null || order.getBillId().isBlank()) + if (order.getBillId() == null) { continue; } @@ -177,9 +176,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) @@ -187,10 +186,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) @@ -231,10 +230,9 @@ 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 e5783b1f..90de96cc 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 947786d9..af9e2415 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++) { - String billId = billIds.get(i); + Long 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 298d1775..ecc3d6a1 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 String billId; + private Long billId; private String orderNo; private BigDecimal chargeWeight; @@ -208,19 +208,19 @@ public class PrcChargeWeightImportAsyncRunner { } - public ChargeWeightImportWorkItem(String billId, String orderNo, BigDecimal chargeWeight) + public ChargeWeightImportWorkItem(Long billId, String orderNo, BigDecimal chargeWeight) { this.billId = billId; this.orderNo = orderNo; this.chargeWeight = chargeWeight; } - public String getBillId() + public Long getBillId() { return billId; } - public void setBillId(String billId) + public void setBillId(Long 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 2d8c9809..602f6d3e 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; } - String one = ids.get(i); + Long 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, String billId, Exception e) + private void collectFailDetail(List> failDetails, Long billId, Exception e) { collectFailDetail(failDetails, billId, errorMessage(e)); } - private void collectFailDetail(List> failDetails, String billId, String message) + private void collectFailDetail(List> failDetails, Long billId, String message) { if (failDetails == null) { @@ -293,8 +293,8 @@ public class PrcOrderBillLocalRebillAsyncRunner String trackingNo = null; try { - PrcOrderBill bill = orderBillMapper == null || StringUtils.isEmpty(billId) - ? null : orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper == null || billId == null + ? null : orderBillMapper.selectPrcOrderBillById(billId); if (bill != null) { orderNo = bill.getOrderNo(); @@ -475,19 +475,19 @@ public class PrcOrderBillLocalRebillAsyncRunner } /** UI 提示优先用 transferNo;没有则退回 orderNo,再退回 billId。 */ - private String failTransferLabel(String billId, String transferNoHint) + private String failTransferLabel(Long billId, String transferNoHint) { if (StringUtils.isNotEmpty(transferNoHint)) { return transferNoHint.trim(); } - if (StringUtils.isEmpty(billId) || orderBillMapper == null) + if (billId == null || orderBillMapper == null) { - return billId; + return billId == null ? null : String.valueOf(billId); } try { - PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId.trim()); + PrcOrderBill bill = orderBillMapper.selectPrcOrderBillById(billId); if (bill != null) { if (StringUtils.isNotEmpty(bill.getTransferNo())) @@ -504,7 +504,7 @@ public class PrcOrderBillLocalRebillAsyncRunner { // 提示标签尽力而为 } - return billId; + return billId == null ? null : String.valueOf(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 aaa30abd..232fb1db 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++) { - String billId = billIds.get(i); + Long 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, String billId, Exception e) + private static void appendFail(StringBuilder failTips, Long 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 9fb86c25..5c89be1f 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 { - String billId = overwriteOne(one); + Long billId = overwriteOne(one); item.put("successStatus", "SUCCESS"); item.put("billId", billId); ok.incrementAndGet(); @@ -317,7 +317,7 @@ public class TabOrderSyncAsyncRunner } /** 解析出 Oracle 行后覆盖本地账单及其扩展信息(不计费)。 */ - private String overwriteOne(com.bms.price.oracle.TabOrderRow row) + private Long 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 15dedf01..00411adf 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 String prcOrderBillId; + private Long 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 e0d0240e..1d8b7744 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 String prcIncomeBillFeeId; + private Long 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 a76fab07..9115ac49 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 String lastSourceBillId; + private Long 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 3d0a0ee7..cb74bf7b 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 b6a39366..88f07e5b 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 4facb2ca..849a6fbd 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") String lastSourceBillId, + int updateProgress(@Param("taskId") Long taskId, @Param("lastSourceBillId") Long 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 b2ecc664..7e7a81a5 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 7f127021..97b7e8f8 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 f9fbf150..c2d641d9 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()); - String lastSourceBillId = sources.get(sources.size() - 1).getBillId(); + Long 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 (String billId : sourceBillIds) { - if (!StringUtils.isEmpty(billId) && billId.trim().length() <= 36) { - uniqueIds.add(billId.trim()); + for (Long billId : sourceBillIds) { + if (billId != null) { + uniqueIds.add(billId); } } } 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 3c32e45e..c7aef50f 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 or l.fee_id = '') + and l.fee_id is null 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 or l.fee_id = '') + and l.fee_id is null 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 dea6e05d..20ef2f32 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 ( - fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, + 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 ( - #{feeId}, #{billId}, #{incomeBillId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{productAmount}, #{redlineAmount}, #{currency}, #{roundMode}, #{remark}, + #{billId}, #{incomeBillId}, #{feeType}, #{feeName}, #{scId}, #{amount}, #{productAmount}, #{redlineAmount}, #{currency}, #{roundMode}, #{remark}, #{arBillStatus}, #{manualFlag}, sysdate() ) - + insert into prc_income_bill_fee ( - fee_id, bill_id, income_bill_id, fee_type, fee_name, sc_id, amount, product_amount, redline_amount, currency, round_mode, remark, + 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.feeId}, #{item.billId}, #{item.incomeBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.amount}, + (#{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 474a5293..b58c00e4 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 ( - income_bill_id, bill_id, currency, product_amount, redline_amount, + 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 ( - #{incomeBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{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 ( - income_bill_id, bill_id, currency, product_amount, redline_amount, + 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 ( - #{incomeBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{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 1cafd5ec..d8bb472b 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 8da108aa..7ad08a31 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_id, bill_key, order_no, tracking_no, transfer_no, + 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 ( - #{billId}, #{billKey}, #{orderNo}, #{trackingNo}, #{transferNo}, + #{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 626bfd7b..97c4d892 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 ( - fee_id, bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, + 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 ( - #{feeId}, #{billId}, #{payBillId}, #{feeType}, #{feeName}, #{scId}, #{feeLevel}, #{amount}, #{currency}, #{roundMode}, #{remark}, + #{billId}, #{payBillId}, #{feeType}, #{feeName}, #{scId}, #{feeLevel}, #{amount}, #{currency}, #{roundMode}, #{remark}, ifnull(#{feeSource}, 'CALC'), #{sourceId}, ifnull(#{isDeleted}, '0'), sysdate() ) - + insert into prc_pay_bill_fee ( - fee_id, bill_id, pay_bill_id, fee_type, fee_name, sc_id, fee_level, amount, currency, round_mode, remark, + 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.feeId}, #{item.billId}, #{item.payBillId}, #{item.feeType}, #{item.feeName}, #{item.scId}, #{item.feeLevel}, + (#{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,19 +69,18 @@ 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 or f.pay_bill_id = '') + where f.pay_bill_id is null 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 != '' @@ -92,7 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and ifnull(is_deleted, '0') = '0' - + 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 60d134be..2d696c05 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 ( - pay_bill_id, bill_id, currency, product_amount, redline_amount, + 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 ( - #{payBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{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 ( - pay_bill_id, bill_id, currency, product_amount, redline_amount, + 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 ( - #{payBillId}, #{billId}, #{currency}, #{productAmount}, #{redlineAmount}, + #{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 ( - pay_bill_id, bill_id, currency, pay_total, + bill_id, currency, pay_total, belong_saler, belong_saler_code, settlement_man, settlement_man_code, create_by, create_time, update_by, update_time ) - select replace(uuid(), '-', ''), o.bill_id, ifnull(nullif(o.currency, ''), 'CNY'), 0, + select 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 new file mode 100644 index 00000000..846bc160 --- /dev/null +++ b/bms-back/sql/20261113_uuid_to_bigint_order_bill.sql @@ -0,0 +1,409 @@ +-- 夜间停机:计费/应收/应付 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 +-- 回滚:见文末;更稳妥为整库备份恢复 + 旧后端包 +-- +-- 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; + +-- ========== 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. 备份关键表 ========== +DROP TABLE IF EXISTS `prc_order_bill_bak_uuid`; +CREATE TABLE `prc_order_bill_bak_uuid` AS SELECT * FROM `prc_order_bill`; +DROP TABLE IF EXISTS `prc_order_bill_ext_bak_uuid`; +CREATE TABLE `prc_order_bill_ext_bak_uuid` AS SELECT * FROM `prc_order_bill_ext`; +DROP TABLE IF EXISTS `prc_income_bill_bak_uuid`; +CREATE TABLE `prc_income_bill_bak_uuid` AS SELECT * FROM `prc_income_bill`; +DROP TABLE IF EXISTS `prc_income_bill_fee_bak_uuid`; +CREATE TABLE `prc_income_bill_fee_bak_uuid` AS SELECT * FROM `prc_income_bill_fee`; +DROP TABLE IF EXISTS `prc_pay_bill_bak_uuid`; +CREATE TABLE `prc_pay_bill_bak_uuid` AS SELECT * FROM `prc_pay_bill`; +DROP TABLE IF EXISTS `prc_pay_bill_fee_bak_uuid`; +CREATE TABLE `prc_pay_bill_fee_bak_uuid` AS SELECT * FROM `prc_pay_bill_fee`; + +-- ========== 2. 映射表 ========== +DROP TABLE IF EXISTS `mig_map_order_bill`; +CREATE TABLE `mig_map_order_bill` ( + `old_id` varchar(36) 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; +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) 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; +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) 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; +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) 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; +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) 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; +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. 重建核心表(动态列) ========== +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`', + IF(@cols_rest IS NULL OR @cols_rest = '', '', CONCAT(', ', @cols_rest)), ') ', + 'SELECT mo.new_id', + IF(@sels_rest IS NULL OR @sels_rest = '', '', CONCAT(', ', @sels_rest)), ' ', + 'FROM `prc_order_bill` t ', + 'JOIN `mig_map_order_bill` mo ON mo.old_id = t.`bill_id` ' +); +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`', + IF(@cols_rest IS NULL OR @cols_rest = '', '', CONCAT(', ', @cols_rest)), ') ', + 'SELECT mi.new_id, mo.new_id', + IF(@sels_rest IS NULL OR @sels_rest = '', '', CONCAT(', ', @sels_rest)), ' ', + 'FROM `prc_income_bill` t ', + 'JOIN `mig_map_income_bill` mi ON mi.old_id = t.`income_bill_id` ' + ,'JOIN `mig_map_order_bill` mo ON mo.old_id = t.`bill_id` ' +); +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`', + IF(@cols_rest IS NULL OR @cols_rest = '', '', CONCAT(', ', @cols_rest)), ') ', + 'SELECT mf.new_id, mo.new_id, mi.new_id', + IF(@sels_rest IS NULL OR @sels_rest = '', '', CONCAT(', ', @sels_rest)), ' ', + 'FROM `prc_income_bill_fee` t ', + 'JOIN `mig_map_income_fee` mf ON mf.old_id = t.`fee_id` ' + ,'JOIN `mig_map_order_bill` mo ON mo.old_id = t.`bill_id` ' + ,'LEFT JOIN `mig_map_income_bill` mi ON mi.old_id = t.`income_bill_id` ' +); +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`', + IF(@cols_rest IS NULL OR @cols_rest = '', '', CONCAT(', ', @cols_rest)), ') ', + 'SELECT mp.new_id, mo.new_id', + IF(@sels_rest IS NULL OR @sels_rest = '', '', CONCAT(', ', @sels_rest)), ' ', + 'FROM `prc_pay_bill` t ', + 'JOIN `mig_map_pay_bill` mp ON mp.old_id = t.`pay_bill_id` ' + ,'JOIN `mig_map_order_bill` mo ON mo.old_id = t.`bill_id` ' +); +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`', + IF(@cols_rest IS NULL OR @cols_rest = '', '', CONCAT(', ', @cols_rest)), ') ', + 'SELECT mf.new_id, mo.new_id, mp.new_id', + IF(@sels_rest IS NULL OR @sels_rest = '', '', CONCAT(', ', @sels_rest)), ' ', + 'FROM `prc_pay_bill_fee` t ', + 'JOIN `mig_map_pay_fee` mf ON mf.old_id = t.`fee_id` ' + ,'JOIN `mig_map_order_bill` mo ON mo.old_id = t.`bill_id` ' + ,'LEFT JOIN `mig_map_pay_bill` mp ON mp.old_id = t.`pay_bill_id` ' +); +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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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 m.old_id = 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. 回滚说明(勿自动执行) ========== +-- 推荐:整库从备份恢复 + 部署旧后端包 +-- 或:SET FOREIGN_KEY_CHECKS=0; RENAME 把 *_bak_uuid 换回主表名(引用列需另外恢复) +-- +-- ========== 10. 次日清理 ========== +-- DROP TABLE IF EXISTS prc_order_bill_old_uuid, prc_order_bill_bak_uuid, prc_income_bill_old_uuid, prc_income_bill_bak_uuid, +-- prc_income_bill_fee_old_uuid, prc_income_bill_fee_bak_uuid, prc_pay_bill_old_uuid, prc_pay_bill_bak_uuid, +-- prc_pay_bill_fee_old_uuid, prc_pay_bill_fee_bak_uuid, prc_order_bill_ext_bak_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 new file mode 100644 index 00000000..c2a1576a --- /dev/null +++ b/bms-back/sql/20261113_uuid_to_bigint_run.sh @@ -0,0 +1,118 @@ +#!/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) 已做全库/关键表备份" +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 new file mode 100644 index 00000000..0e27baf7 --- /dev/null +++ b/bms-back/sql/20261113_uuid_to_bigint_runbook.md @@ -0,0 +1,64 @@ +# UUID -> bigint 夜间执行与冒烟清单 + +脚本:`bms-back/sql/20261113_uuid_to_bigint_order_bill.sql` + +## 必须顺序(不要飞) + +1. **先停 Java / BMS 服务**(含计费、出账、导出等异步 worker) +2. 全库或关键表备份 +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. 全库备份(或至少:prc_order_bill*、prc_income*、prc_pay_bill*、ar_bill_detail*、prc_billing_task、pay_bill_line) +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. 或:`SET FOREIGN_KEY_CHECKS=0` 后将 `*_bak_uuid` RENAME 回主表名(引用列需额外处理) +4. 部署旧后端包 + +## 次日 +- 确认无误后 DROP `*_old_uuid` / `*_bak_uuid` / `mig_map_*` diff --git a/bms-back/sql/bms_init.sql b/bms-back/sql/bms_init.sql index f527d4cb..7f255677 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` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源计费订单ID,对应 prc_order_bill.bill_id', + `prc_order_bill_id` bigint(20) 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` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '来源收入费用ID,对应 prc_income_bill_fee.fee_id', + `prc_income_bill_fee_id` bigint(20) 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` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '来源订单游标', + `last_source_bill_id` bigint(20) 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` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '计费订单ID prc_order_bill.bill_id', + `bill_id` bigint(20) 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` 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,一对一', + `income_bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应收主表ID', + `bill_id` bigint(20) 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` 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_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_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` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费ID', + `bill_id` bigint(20) NOT NULL AUTO_INCREMENT 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` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '计费订单ID,对应 prc_order_bill.bill_id', + `bill_id` bigint(20) 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` 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,一对一', + `pay_bill_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '应付主表ID', + `bill_id` bigint(20) 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` 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_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_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 c097d8ee..1cc6ae5f 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` varchar(36) DEFAULT NULL COMMENT '订单ID', + `order_bill_id` bigint(20) 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 b3e96eb2..da2cc884 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` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '应付费用明细ID' AFTER `bill_id`; +ALTER TABLE `bms`.`pay_bill_line` ADD COLUMN `fee_id` bigint(20) 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` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费用明细ID' AFTER `line_id`; +ALTER TABLE `bms`.`pay_bill_log` ADD COLUMN `fee_id` bigint(20) 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` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '费用明细ID', + `fee_id` bigint(20) 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` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '接受对方时新增的调整费用', + `adjust_fee_id` bigint(20) 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`),