新增ar_bill_detail_fee表的income_fee_id字段,更新UUID到新同步逻辑
This commit is contained in:
+4
-1
@@ -8,7 +8,7 @@ import com.bms.price.migration.domain.UuidToNewIdHolder;
|
|||||||
import com.bms.price.migration.domain.UuidToNewProgressVo;
|
import com.bms.price.migration.domain.UuidToNewProgressVo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UUID -> bigint 阴影同步 Mapper(订单+income *_new + 关联表 order_id)
|
* UUID -> bigint 阴影同步 Mapper(订单+income *_new + order_id / income_fee_id)
|
||||||
*/
|
*/
|
||||||
public interface UuidToNewSyncMapper
|
public interface UuidToNewSyncMapper
|
||||||
{
|
{
|
||||||
@@ -39,6 +39,9 @@ public interface UuidToNewSyncMapper
|
|||||||
|
|
||||||
int insertIncomeFeeNew(UuidToNewIdHolder holder);
|
int insertIncomeFeeNew(UuidToNewIdHolder holder);
|
||||||
|
|
||||||
|
/** 回写 ar_bill_detail_fee.income_fee_id(= prc_income_bill_fee_new.fee_id) */
|
||||||
|
int updateArDetailFeeIncomeFeeId(@Param("oldFeeId") String oldFeeId, @Param("newFeeId") Long newFeeId);
|
||||||
|
|
||||||
/** 回写现网关联表 order_id(= prc_order_bill_new.bill_id) */
|
/** 回写现网关联表 order_id(= prc_order_bill_new.bill_id) */
|
||||||
|
|
||||||
int updatePayBillOrderId(@Param("oldBillId") String oldBillId, @Param("newBillId") Long newBillId);
|
int updatePayBillOrderId(@Param("oldBillId") String oldBillId, @Param("newBillId") Long newBillId);
|
||||||
|
|||||||
+4
-1
@@ -351,10 +351,13 @@ public class UuidToNewSyncServiceImpl implements IUuidToNewSyncService
|
|||||||
h.setNewBillId(newBillId);
|
h.setNewBillId(newBillId);
|
||||||
h.setNewIncomeId(newIncomeId);
|
h.setNewIncomeId(newIncomeId);
|
||||||
syncMapper.insertIncomeFeeNew(h);
|
syncMapper.insertIncomeFeeNew(h);
|
||||||
if (h.getNewId() == null)
|
Long newFeeId = h.getNewId();
|
||||||
|
if (newFeeId == null)
|
||||||
{
|
{
|
||||||
throw new IllegalStateException("insert income_fee_new no id for " + row.getFeeId());
|
throw new IllegalStateException("insert income_fee_new no id for " + row.getFeeId());
|
||||||
}
|
}
|
||||||
|
// 回写现网 AR 费用行:旧 UUID 列不动,income_fee_id=新 fee_id
|
||||||
|
syncMapper.updateArDetailFeeIncomeFeeId(row.getFeeId(), newFeeId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -234,6 +234,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
where f.fee_id = #{oldId}
|
where f.fee_id = #{oldId}
|
||||||
</insert>
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateArDetailFeeIncomeFeeId">
|
||||||
|
update ar_bill_detail_fee
|
||||||
|
set income_fee_id = #{newFeeId}
|
||||||
|
where prc_income_bill_fee_id = #{oldFeeId}
|
||||||
|
</update>
|
||||||
|
|
||||||
<!-- 现网关联表回写 order_id(旧 UUID 列不动) -->
|
<!-- 现网关联表回写 order_id(旧 UUID 列不动) -->
|
||||||
|
|
||||||
<update id="updatePayBillOrderId">
|
<update id="updatePayBillOrderId">
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
| `prc_income_bill` | `prc_income_bill_new` | `income_bill_id` -> bigint AI;`bill_id`=新订单 |
|
| `prc_income_bill` | `prc_income_bill_new` | `income_bill_id` -> bigint AI;`bill_id`=新订单 |
|
||||||
| `prc_income_bill_fee` | `prc_income_bill_fee_new` | `fee_id` -> bigint AI;`income_bill_id`=新主表 |
|
| `prc_income_bill_fee` | `prc_income_bill_fee_new` | `fee_id` -> bigint AI;`income_bill_id`=新主表 |
|
||||||
|
|
||||||
### 3.2 现网表增加 `order_id`(income 现网表不加,甠 *_new)
|
### 3.2 现网表补列(income 现网表不加 order_id,甠 *_new)
|
||||||
|
|
||||||
| 表 | 用哪列定位旧订单 | 新列 |
|
| 表 | 用哪列定位旧订单 | 新列 |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
@@ -55,10 +55,11 @@
|
|||||||
| `pay_bill_line` | `order_bill_id` varchar36 | `order_id` bigint |
|
| `pay_bill_line` | `order_bill_id` varchar36 | `order_id` bigint |
|
||||||
| `prc_billing_task` | `bill_id` varchar36 | `order_id` bigint |
|
| `prc_billing_task` | `bill_id` varchar36 | `order_id` bigint |
|
||||||
| `ar_bill_generate_task` | `last_source_bill_id` varchar36 | `order_id` bigint |
|
| `ar_bill_generate_task` | `last_source_bill_id` varchar36 | `order_id` bigint |
|
||||||
|
| `ar_bill_detail_fee` | `prc_income_bill_fee_id` varchar36 | `income_fee_id` bigint(= `prc_income_bill_fee_new.fee_id`) |
|
||||||
|
|
||||||
说明:
|
说明:
|
||||||
|
|
||||||
- `ar_bill_detail_fee` **不直接**挂订单,本期**不加** `order_id`(可经 `detail` 关联)。
|
- `ar_bill_detail_fee` **不加** `order_id`(可经 `detail.order_id`);改加 `income_fee_id` 映射新费用 ID。
|
||||||
- `order_id` 允许 NULL;未同步订单为 NULL。
|
- `order_id` 允许 NULL;未同步订单为 NULL。
|
||||||
- 建议索引:`KEY idx_<table>_order_id (order_id)`。
|
- 建议索引:`KEY idx_<table>_order_id (order_id)`。
|
||||||
|
|
||||||
@@ -100,9 +101,9 @@
|
|||||||
3) UPDATE mig_bi_order_done -> SUCCESS + new_bill_id
|
3) UPDATE mig_bi_order_done -> SUCCESS + new_bill_id
|
||||||
4) INSERT prc_order_bill_ext_new (bill_id = new_bill_id)
|
4) INSERT prc_order_bill_ext_new (bill_id = new_bill_id)
|
||||||
5) INSERT prc_income_bill_new / prc_income_bill_fee_new(income/fee UUID -> bigint)
|
5) INSERT prc_income_bill_new / prc_income_bill_fee_new(income/fee UUID -> bigint)
|
||||||
6) UPDATE 关联表 order_id = new_bill_id
|
6) UPDATE ar_bill_detail_fee.income_fee_id = 新 fee_id
|
||||||
WHERE 旧 UUID 列 = old_bill_id
|
7) UPDATE 关联表 order_id = new_bill_id
|
||||||
7) return SUCCESS
|
8) return SUCCESS
|
||||||
```
|
```
|
||||||
|
|
||||||
不再:拷贝 pay/AR/billing 到 `*_new`。
|
不再:拷贝 pay/AR/billing 到 `*_new`。
|
||||||
@@ -116,7 +117,7 @@ flowchart TD
|
|||||||
C -->|是| D[空转睡眠]
|
C -->|是| D[空转睡眠]
|
||||||
C -->|否| E[逐单事务]
|
C -->|否| E[逐单事务]
|
||||||
E --> F[INSERT order/ext/income *_new]
|
E --> F[INSERT order/ext/income *_new]
|
||||||
F --> G[UPDATE 各表 order_id]
|
F --> G[UPDATE income_fee_id / order_id]
|
||||||
G --> H[mig_bi_order_done SUCCESS]
|
G --> H[mig_bi_order_done SUCCESS]
|
||||||
H --> I[下一单/下一批]
|
H --> I[下一单/下一批]
|
||||||
D --> A
|
D --> A
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
-- 方案文档:20261114_uuid_to_bi_shadow_dev.md
|
||||||
|
-- 适用:已执行过 20261115_uuid_order_id_scheme.sql、仅缺 income_fee_id 时
|
||||||
|
-- 可重入(列已存在则跳过)
|
||||||
|
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
|
||||||
|
DROP PROCEDURE IF EXISTS `mig_add_income_fee_id_col`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `mig_add_income_fee_id_col`()
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt INT DEFAULT 0;
|
||||||
|
SELECT COUNT(*) INTO cnt
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE()
|
||||||
|
AND table_name = 'ar_bill_detail_fee'
|
||||||
|
AND column_name = 'income_fee_id';
|
||||||
|
IF cnt = 0 THEN
|
||||||
|
ALTER TABLE `ar_bill_detail_fee`
|
||||||
|
ADD COLUMN `income_fee_id` bigint DEFAULT NULL COMMENT '对应 prc_income_bill_fee_new.fee_id' AFTER `prc_income_bill_fee_id`,
|
||||||
|
ADD KEY `idx_ar_detail_fee_income_fee_id` (`income_fee_id`);
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
CALL mig_add_income_fee_id_col();
|
||||||
|
DROP PROCEDURE IF EXISTS `mig_add_income_fee_id_col`;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
-- 方案文档:20261114_uuid_to_bi_shadow_dev.md
|
-- 方案文档:20261114_uuid_to_bi_shadow_dev.md
|
||||||
-- order_id 方案:删除多余 *_new(保留订单/收入);关联表增加 order_id(对应 prc_order_bill_new.bill_id)
|
-- order_id 方案:删除多余 *_new(保留订单/收入);关联表增加 order_id; ar_bill_detail_fee 增加 income_fee_id
|
||||||
-- 可重入(列已存在则跳过)
|
-- 可重入(列已存在则跳过)
|
||||||
-- 注意:会改生产/测试库现网表结构(仅增列,不改旧 UUID 列)
|
-- 注意:会改生产/测试库现网表结构(仅增列,不改旧 UUID 列)
|
||||||
|
|
||||||
@@ -100,6 +100,28 @@ CALL mig_add_order_id_col('ar_bill_generate_task', 'last_source_bill_id', '对
|
|||||||
|
|
||||||
DROP PROCEDURE IF EXISTS `mig_add_order_id_col`;
|
DROP PROCEDURE IF EXISTS `mig_add_order_id_col`;
|
||||||
|
|
||||||
|
-- ========== 3. ar_bill_detail_fee 增加 income_fee_id(= prc_income_bill_fee_new.fee_id) ==========
|
||||||
|
DROP PROCEDURE IF EXISTS `mig_add_income_fee_id_col`;
|
||||||
|
DELIMITER $$
|
||||||
|
CREATE PROCEDURE `mig_add_income_fee_id_col`()
|
||||||
|
BEGIN
|
||||||
|
DECLARE cnt INT DEFAULT 0;
|
||||||
|
SELECT COUNT(*) INTO cnt
|
||||||
|
FROM information_schema.columns
|
||||||
|
WHERE table_schema = DATABASE()
|
||||||
|
AND table_name = 'ar_bill_detail_fee'
|
||||||
|
AND column_name = 'income_fee_id';
|
||||||
|
IF cnt = 0 THEN
|
||||||
|
ALTER TABLE `ar_bill_detail_fee`
|
||||||
|
ADD COLUMN `income_fee_id` bigint DEFAULT NULL COMMENT '对应 prc_income_bill_fee_new.fee_id' AFTER `prc_income_bill_fee_id`,
|
||||||
|
ADD KEY `idx_ar_detail_fee_income_fee_id` (`income_fee_id`);
|
||||||
|
END IF;
|
||||||
|
END$$
|
||||||
|
DELIMITER ;
|
||||||
|
|
||||||
|
CALL mig_add_income_fee_id_col();
|
||||||
|
DROP PROCEDURE IF EXISTS `mig_add_income_fee_id_col`;
|
||||||
|
|
||||||
-- 说明:同步一单成功后更新(旧 UUID 列不动):
|
-- 说明:同步一单成功后更新(旧 UUID 列不动):
|
||||||
-- UPDATE prc_pay_bill SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
-- UPDATE prc_pay_bill SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
||||||
-- UPDATE prc_pay_bill_fee SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
-- UPDATE prc_pay_bill_fee SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
||||||
@@ -107,3 +129,4 @@ DROP PROCEDURE IF EXISTS `mig_add_order_id_col`;
|
|||||||
-- UPDATE pay_bill_line SET order_id=#{new} WHERE order_bill_id=#{oldUuid};
|
-- UPDATE pay_bill_line SET order_id=#{new} WHERE order_bill_id=#{oldUuid};
|
||||||
-- UPDATE prc_billing_task SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
-- UPDATE prc_billing_task SET order_id=#{new} WHERE bill_id=#{oldUuid};
|
||||||
-- UPDATE ar_bill_generate_task SET order_id=#{new} WHERE last_source_bill_id=#{oldUuid};
|
-- UPDATE ar_bill_generate_task SET order_id=#{new} WHERE last_source_bill_id=#{oldUuid};
|
||||||
|
-- UPDATE ar_bill_detail_fee SET income_fee_id=#{newFeeId} WHERE prc_income_bill_fee_id=#{oldFeeUuid};
|
||||||
|
|||||||
Reference in New Issue
Block a user