# 表清单(静态抽取自 `zteits-clouds`) > 生成方式:`sql/tools/extract_table_inventory.py`,扫全仓 mapper XML 的 > `FROM/JOIN/INTO/UPDATE` 与实体的 `@Table`/`@TableName`。 > 不含:只由 DDL 变更日志新增、代码从未引用的表。 ## 1. 总量与模块归属 共 **400** 张表:单模块归属 387 张,被多个模块触碰 13 张。 | 模块 | 表数 | 说明 | |---|---:|---| | `zteits-park` | 122 | 停车场、车位、设备、进出场 | | `zteits-order` | 85 | 停车订单、共享订单 | | `zteits-pay` | 78 | 账户、客户、结算 | | `zteits-bill` | 55 | 计费规则、活动优惠、黑白名单、会员卡 —— `t_*` 前缀几乎全是它的 | | `zteits-sys` | 32 | 组织、用户、权限、字典 | | `zteits-business` | 11 | 商户/业务域 | | `zteits-charge` | 4 | 充电桩 | ## 2. ⚠️ 跨模块表(合并后必须逐个定归属) 这 13 张表被**多个模块的 SQL 直接引用**。老系统靠"各模块连自己的库"侥幸隔离, 合库后它们变成真正可写,必须指定唯一归属模块,其余模块改走 `parking-module-api`: | 表 | 引用它的模块 | 建议归属 | |---|---|---| | `td_b_pay_blncac` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `td_b_pay_blncac_wx` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `td_b_settlement_record` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `td_b_settlement_share_record` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `td_b_wx_config` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `td_c_cust_business` | `zteits-business`、`zteits-pay` | `zteits-pay`(客户) | | `td_c_cust_business_pic` | `zteits-business`、`zteits-pay` | `zteits-pay`(客户) | | `td_p_parking_share_order_temp` | `zteits-order`、`zteits-pay` | `zteits-pay`(结算/账户) | | `tp_p_eqp` | `zteits-data-collection`、`zteits-glock-collection`、`zteits-park` | `zteits-park` | | `tp_p_eqp_error_record` | `zteits-glock-collection`、`zteits-park` | `zteits-park` | | `tp_p_eqp_gateway` | `zteits-data-collection`、`zteits-park` | `zteits-park` | | `tp_p_exception_log` | `zteits-data-collection`、`zteits-glock-collection`、`zteits-park` | `zteits-park` | | `tp_p_interface_log` | `zteits-data-collection`、`zteits-glock-collection`、`zteits-park` | `zteits-park` | ## 3. 前缀 → 归属对照 合并六库时**表名不改**,靠前缀区分业务域。前缀与模块**不是**一一对应,此表是证据: | 前缀 | 表数 | 主要归属模块 | |---|---:|---| | `td_` | 127 | `zteits-pay`(77)、`zteits-order`(30)、`zteits-business`(11) | | `t_` | 41 | `zteits-bill`(39)、`zteits-park`(2) | | `tp_` | 39 | `zteits-park`(39)、`zteits-data-collection`(4)、`zteits-glock-collection`(4) | | `order_` | 27 | `zteits-order`(25)、`zteits-business`(2) | | `sys_` | 26 | `zteits-sys`(26) | | `income_` | 21 | `zteits-order`(21) | | `parking_` | 21 | `zteits-park`(21) | | `charger_` | 17 | `zteits-park`(13)、`zteits-pay`(3)、`zteits-order`(1) | | `tb_` | 11 | `zteits-bill`(6)、`zteits-sys`(4)、`zteits-order`(1) | | `park_` | 10 | `zteits-park`(8)、`zteits-order`(2) | | `eqp_` | 7 | `zteits-park`(7) | | `hub_` | 6 | `zteits-park`(6) | | `duty_` | 5 | `zteits-park`(5) | | `enclosed_` | 4 | `zteits-park`(4) | | `pay_` | 3 | `zteits-order`(3) | | `duration_` | 3 | `zteits-order`(3) | | `employee_` | 3 | `zteits-park`(3) | | `arrearage_` | 2 | `zteits-order`(2) | | `app_` | 2 | `zteits-pay`(2) | | `special_` | 2 | `zteits-pay`(2) | | `parkinglot_` | 2 | `zteits-park`(2) | | `sms_` | 2 | `zteits-park`(2) | | `rocketmq_` | 2 | `zteits-park`(2) | | `connector_` | 1 | `zteits-charge`(1) | | `equipment_` | 1 | `zteits-charge`(1) | | `operator_` | 1 | `zteits-charge`(1) | | `station_` | 1 | `zteits-charge`(1) | | `aliyun_` | 1 | `zteits-sys`(1) | | `vip_` | 1 | `zteits-order`(1) | | `cash_` | 1 | `zteits-order`(1) | | `inspection_` | 1 | `zteits-order`(1) | | `cust_` | 1 | `zteits-pay`(1) | | `car_` | 1 | `zteits-pay`(1) | | `outpark_` | 1 | `zteits-park`(1) | | `illegal_` | 1 | `zteits-park`(1) | | `inpark_` | 1 | `zteits-park`(1) | | `xc_` | 1 | `zteits-park`(1) | | `generate_` | 1 | `zteits-park`(1) | | `nbtemp_` | 1 | `zteits-park`(1) | | `irain_` | 1 | `zteits-park`(1) | ## 4. 疑似测试/遗留表(迁移时确认后丢弃) - `duty_roster_base_temp` —— `zteits-park` - `generate_test_table` —— `zteits-park` - `nbtemp` —— `zteits-park` - `sys_export_temp_file` —— `zteits-sys` - `td_b_temp_parklot` —— `zteits-pay` - `td_p_parking_share_order_temp` —— `zteits-order`、`zteits-pay` - `tp_p_eqp_inout_record_temp` —— `zteits-park` ## 5. ⚠️ 分表族(运行期拼后缀,静态数不出真实表名) 下列 SQL 的表名后缀是**调用方在运行时拼出来的**,所以: - 真实物理表**比本清单的表名多得多**(每月/每年一张),`SHOW TABLES` 会看到一批 "代码里搜不到"的表——它们正是这里拼出来的 - 建表/清理脚本在仓库外(或定时任务里),合库时要连着这些**分表族**一起搬 - 迁移改造时**不能**把 `${...}` 写死成某个月,要保留动态拼名逻辑 | 表名前缀 | 变量 | 后缀格式 | 涉及模块 | |---|---|---|---| | `pay_order` | `year` | `yyyy`(`DateUtil.year(startDate)`) | `zteits-order` | | `tp_p_eqp_inout_record` | `monthStr` | `yyyyMM`(`DateUtil.format(queryMonth,"yyyyMM")`) | `zteits-park` | | `tp_p_eqp_inout_record` | `recordDateStr` | `yyyyMM`(`DateUtil.date().toString("yyyyMM")`) | `zteits-park` | | `tp_p_eqp_inout_record` | `tableName` | `yyyyMM`(`SimpleDateFormat("yyyyMM")`) | `zteits-park` | | `tp_p_eqp_inout_record` | `tableStr` | `yyyyMM`(`DateUtil.format(endTime,"yyyyMM")`) | `zteits-park` | > ⚠️ 顺带查出的**存量缺陷**:`ParkingLotUseStatisticDaoImpl:169` 的 > `recordStr` 用的是 `DateUtil.date()`(**当前时间**)而不是入参 `endDate` 所在月份。 > 也就是说它查"任意历史区间的路侧 20 分钟数据"时,实际只查**本月**那张分表 —— > 跨月/历史区间查询会静默返回空或错数据。迁移时**不要原样搬**,要么修, > 要么明确记录为已知缺陷(修它属于业务逻辑变更,需单独确认)。 ## 6. 本抽取**不能**回答的问题(需只读连生产库) | 问题 | 为什么代码答不了 | |---|---| | 六库各有哪些表(含代码从未引用的) | 代码只暴露"用到过的表" | | 重名表的结构是否一致 | 需要 `SHOW CREATE TABLE` 逐个比对 | | 每张表的字符集是否 `utf8mb4` | 非 utf8mb4 的表合并后中文/emoji 会截断 | | `dev_park` / `dev_charge` 与正式库的差异 | 需要两个库各导一份结构 | | 各表的实际行数(决定迁移窗口) | 需要 `information_schema.TABLES` | > ⚠️ 老库是**生产库**。上表一律走**只读账号**导出,禁止任何写操作。