txw/docs/superpowers/plans/2026-04-22-gxzx-migration-plan.md
2026-04-22 16:46:33 +08:00

18 KiB
Raw Blame History

gxzx 服务迁移至 mhzc - 完整执行方案

For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.

Goal:txw-gxzx 微服务(供需大厅/绿色金融/绿色交易/企业入驻)的全部代码和数据库迁移到 txw-mhzc 服务

Architecture: 代码迁移采用"整体迁移+批量修改包名"的策略先迁移文件再统一修改import数据库采用"目标库创建表+数据同步"的方案

Tech Stack: Java/Spring Boot, MyBatis, MySQL/达梦数据库, Maven多模块


一、文件迁移清单共62个文件

1.1 Controller层4个

# 源文件 目标路径
1 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/GxdtController.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/GxdtController.java
2 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/LsjrController.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/LsjrController.java
3 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/LsjyController.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/LsjyController.java
4 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/controller/QyRzController.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/QyRzController.java

1.2 Service接口层10个

# 源文件 目标路径
5 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxbqbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxbqbService.java
6 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxscbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxscbService.java
7 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxGxxxbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxGxxxbService.java
8 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxQybqbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxQybqbService.java
9 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxRzsqjlbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxRzsqjlbService.java
10 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/TxwGxzxShqkbService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/TxwGxzxShqkbService.java
11 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxDkbxsqxxService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxDkbxsqxxService.java
12 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxLsjrService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxLsjrService.java
13 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/GxzxLsjrcpxxService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/GxzxLsjrcpxxService.java
14 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjy/GxzxLsjyZcxxService.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/GxzxLsjyZcxxService.java

1.3 Service实现层10个

# 源文件 目标路径
15 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxbqbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxbqbServiceImpl.java
16 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxscbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxscbServiceImpl.java
17 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxGxxxbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxGxxxbServiceImpl.java
18 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxQybqbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxQybqbServiceImpl.java
19 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxRzsqjlbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxRzsqjlbServiceImpl.java
20 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/impl/TxwGxzxShqkbServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/TxwGxzxShqkbServiceImpl.java
21 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxDkbxsqxxServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxDkbxsqxxServiceImpl.java
22 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxLsjrcpxxServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxLsjrcpxxServiceImpl.java
23 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjr/impl/GxzxLsjrServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/GxzxLsjrServiceImpl.java
24 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/service/lsjy/impl/GxzxLsjyZcxxServiceImpl.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/impl/GxzxLsjyZcxxServiceImpl.java

1.4 Mapper接口层9个

# 源文件 目标路径
25 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxbqbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxbqbMapper.java
26 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxscbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxscbMapper.java
27 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxGxxxbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxGxxxbMapper.java
28 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxQybqbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxQybqbMapper.java
29 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxRzsqjlbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxRzsqjlbMapper.java
30 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/TxwGxzxShqkbMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/TxwGxzxShqkbMapper.java
31 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjr/GxzxDkbxsqxxMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/GxzxDkbxsqxxMapper.java
32 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjr/GxzxLsjrcpxxMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/GxzxLsjrcpxxMapper.java
33 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/mapper/lsjy/GxzxLsjyZcxxMapper.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjy/GxzxLsjyZcxxMapper.java

1.5 Domain层6个

# 源文件 目标路径
34 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxbqbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxbqbDO.java
35 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxscbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxscbDO.java
36 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxGxxxbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxGxxxbDO.java
37 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxQybqbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxQybqbDO.java
38 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxRzsqjlbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxRzsqjlbDO.java
39 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/domain/TxwGxzxShqkbDO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/TxwGxzxShqkbDO.java

1.6 VO层13个

# 源文件 目标路径
40 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GetGxSqListReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GetGxSqListReqVO.java
41 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxfbReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxfbReqVO.java
42 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxscReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxscReqVO.java
43 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxsjReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxsjReqVO.java
44 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxspReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxspReqVO.java
45 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxsqResVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxsqResVO.java
46 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxxxReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxxxReqVO.java
47 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/GxxxVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/GxxxVO.java
48 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyrzListReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyrzListReqVO.java
49 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSpReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSpReqVO.java
50 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSqReqVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSqReqVO.java
51 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/QyRzSqxxVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/QyRzSqxxVO.java
52 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/vo/ShqkxxVO.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/ShqkxxVO.java

1.7 Dto层1个

# 源文件 目标路径
53 txw-gxzx-service-biz/src/main/java/com/css/txw/gxzx/pojo/dto/GxzxLsjrcpImportDto.java txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/dto/gxzx/GxzxLsjrcpImportDto.java

1.8 Mapper XML层9个

# 源文件 目标路径
54 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxbqbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxbqbMapper.xml
55 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxscbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxscbMapper.xml
56 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxGxxxbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxGxxxbMapper.xml
57 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxQybqbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxQybqbMapper.xml
58 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxRzsqjlbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxRzsqjlbMapper.xml
59 txw-gxzx-service-biz/src/main/resources/mapper/TxwGxzxShqkbMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/TxwGxzxShqkbMapper.xml
60 txw-gxzx-service-biz/src/main/resources/mapper/lsjr/GxzxDkbxsqxxMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/GxzxDkbxsqxxMapper.xml
61 txw-gxzx-service-biz/src/main/resources/mapper/lsjr/GxzxLsjrcpxxMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/GxzxLsjrcpxxMapper.xml
62 txw-gxzx-service-biz/src/main/resources/mapper/lsjy/GxzxLsjyZcxxMapper.xml txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjy/GxzxLsjyZcxxMapper.xml

二、数据库表9张

# 表名 说明
1 txw_gxzx_gxxxb 供需信息表
2 txw_gxzx_shqkb 审核情况表
3 txw_gxzx_gxscb 供需收藏表
4 txw_gxzx_gxbqb 供需标签表
5 txw_gxzx_qybqb 企业标签表
6 txw_gxzx_rzsqjlb 入驻申请记录表
7 txw_gxzx_lsjrcpxx 绿色金融产品信息表
8 txw_gxzx_dkbxsqxx 贷款保险申请信息表
9 txw_gxzx_lsjy_zcxx 绿色交易资产信息表

三、执行步骤

Phase 1: 数据库迁移(生产环境执行)

  • 3.1 备份原库 gxzx 相关9张表
  • 3.2 在 mhzc 库创建目标表
  • 3.3 迁移数据
  • 3.4 验证数据完整性

Phase 2: 代码迁移(开发环境执行)

目录创建

  • 3.5 创建目标目录结构

文件迁移(按层级)

  • 3.6 迁移 Domain 层6个文件
  • 3.7 迁移 VO/Req 层14个文件
  • 3.8 迁移 Mapper 接口层9个文件
  • 3.9 迁移 Mapper XML 层9个文件
  • 3.10 迁移 Service 接口层10个文件
  • 3.11 迁移 Service 实现层10个文件
  • 3.12 迁移 Controller 层4个文件

包名修改

  • 3.13 修改所有文件的 package 声明
  • 3.14 修改所有文件的 import 语句

Phase 3: 配置更新

  • 3.15 更新 MapperScan 配置
  • 3.16 检查 pom.xml 依赖

Phase 4: 编译验证

  • 3.17 编译验证
  • 3.18 启动测试

四、生产环境升级步骤(详细)

4.1 升级前准备

# 1. 备份数据库
mysqldump -h host -u user -p gxzx_db txw_gxzx_gxxxb txw_gxzx_shqkb txw_gxzx_gxscb txw_gxzx_gxbqb txw_gxzx_qybqb txw_gxzx_rzsqjlb txw_gxzx_lsjrcpxx txw_gxzx_dkbxsqxx txw_gxzx_lsjy_zcxx > gxzx_backup_$(date +%Y%m%d).sql

# 2. 确认 mhzc 服务最新代码已部署
# 3. 通知相关团队停机维护时间窗口

4.2 数据迁移

-- 在 mhzc 数据库执行
-- 1. 创建表DDL 从 gxzx 库导出)
CREATE TABLE txw_gxzx_gxxxb LIKE gxzx_db.txw_gxzx_gxxxb;
CREATE TABLE txw_gxzx_shqkb LIKE gxzx_db.txw_gxzx_shqkb;
-- ... 其他7张表同理

-- 2. 数据迁移
INSERT INTO mhzc_db.txw_gxzx_gxxxb SELECT * FROM gxzx_db.txw_gxzx_gxxxb;
INSERT INTO mhzc_db.txw_gxzx_shqkb SELECT * FROM gxzx_db.txw_gxzx_shqkb;
-- ... 其他7张表同理

-- 3. 验证
SELECT COUNT(*) FROM txw_gxzx_gxxxb;  -- 源库和目标库应该一致
SELECT COUNT(*) FROM txw_gxzx_shqkb;
-- ... 其他表验证

4.3 应用部署

# 1. 停止 gxzx 服务
# 2. 部署新 mhzc 服务(包含 gxzx 代码)
# 3. 启动 mhzc 服务
# 4. 验证接口

五、回滚方案

如果迁移失败,执行以下回滚:

-- 恢复原状
-- 1. 停止 mhzc 服务
-- 2. 恢复 gxzx 服务
-- 3. 如果需要,回滚数据库
DROP TABLE IF EXISTS mhzc_db.txw_gxzx_gxxxb;
-- 使用备份恢复

六、验证清单

# 验证项 验证方法
1 数据库表记录数一致 SELECT COUNT(*) FROM txw_gxzx_gxxxb 对比
2 Controller 注入正常 启动应用无报错
3 接口路径可访问 curl http://mhzc:9002/gxdt/gxxxList
4 供需发布功能正常 实际测试发布流程
5 绿色金融功能正常 测试信贷/保险产品查询
6 企业入驻功能正常 测试入驻申请流程
7 搜索服务聚合供需 调用搜索接口验证

七、文件变更汇总

新增目录

txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/gxzx/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/impl/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjr/impl/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/gxzx/lsjy/impl/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjr/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/gxzx/lsjy/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/gxzx/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/gxzx/
txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/dto/gxzx/
txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjr/
txw-mhzc-service-biz/src/main/resources/mapper/gxzx/lsjy/

修改文件

txw-mhzc/pom.xml可能需要新增依赖
txw-mhzc/.../MhzcServiceConfiguration.javaMapperScan 更新)

包名映射规则

com.css.txw.gxzx.controller  → com.css.txw.mhzc.controller.gxzx
com.css.txw.gxzx.service    → com.css.txw.mhzc.service.gxzx
com.css.txw.gxzx.service.impl → com.css.txw.mhzc.service.gxzx.impl
com.css.txw.gxzx.service.lsjr.impl → com.css.txw.mhzc.service.gxzx.lsjr.impl
com.css.txw.gxzx.service.lsjy.impl → com.css.txw.mhzc.service.gxzx.lsjy.impl
com.css.txw.gxzx.mapper    → com.css.txw.mhzc.mapper.gxzx
com.css.txw.gxzx.mapper.lsjr → com.css.txw.mhzc.mapper.gxzx.lsjr
com.css.txw.gxzx.mapper.lsjy → com.css.txw.mhzc.mapper.gxzx.lsjy
com.css.txw.gxzx.pojo.domain → com.css.txw.mhzc.pojo.domain.gxzx
com.css.txw.gxzx.pojo.vo   → com.css.txw.mhzc.pojo.vo.gxzx
com.css.txw.gxzx.pojo.dto   → com.css.txw.mhzc.pojo.dto.gxzx