Files
workspace/code/fms/FMS业务表设计.md
T
2026-09-14 22:49:48 +08:00

587 lines
27 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FMS 业务表设计
## 往来单位(合作伙伴)
```sql
create table dbo.b_othercompany (
b_id bigint not null primary key,
b_ywid varchar(50) not null,
b_pycode nvarchar(50) null,
b_type varchar(200) null,
b_name nvarchar(500) null,
b_shortname nvarchar(50) null,
b_linkman nvarchar(200) null,
b_phone nvarchar(500) null,
b_addr nvarchar(500) null,
b_firstlinkdate datetime null,
b_htno varchar(50) null,
b_htdate date null,
b_htexpiredate date null,
b_black tinyint not null default 0,
b_canuse tinyint not null default 0,
b_zl int null,
b_tel nvarchar(50) null,
b_fax nvarchar(500) null,
b_www varchar(50) null,
b_email varchar(50) null,
b_bankacount nvarchar(500) null,
b_invaccount nvarchar(500) null,
b_cate_id varchar(150) null,
b_bz1 nvarchar(500) null,
b_bz2 nvarchar(500) null,
b_bz3 nvarchar(500) null,
b_bz4 nvarchar(500) null,
b_province nvarchar(50) null,
b_city nvarchar(50) null,
b_area nvarchar(50) null,
b_country nvarchar(50) null,
b_edicode varchar(50) null,
b_showcolor int null,
b_type_id nvarchar(200) null,
b_from_id nvarchar(50) null,
b_type1_id nvarchar(50) null,
b_type2_id nvarchar(50) null,
b_type3_id nvarchar(50) null,
b_type4_id nvarchar(50) null,
b_type5_id nvarchar(50) null,
b_owner_id varchar(50) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null,
b_password varchar(50) null,
b_state nvarchar(50) null,
b_bankacount_e varchar(500) null,
b_addr_e varchar(500) null,
b_name_e nvarchar(500) null
);
create unique index ux_b_othercompany_ywid on dbo.b_othercompany (b_ywid);
create index ix_b_othercompany_cate on dbo.b_othercompany (b_cate_id, b_canuse, b_id);
create index ix_b_othercompany_name on dbo.b_othercompany (b_name, b_canuse, b_id);
create table dbo.b_othercompany_partner_type (
b_id varchar(50) not null primary key,
b_name nvarchar(50) null,
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(50) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_othercompany_category (
b_id varchar(150) not null primary key,
b_parent_id varchar(150) null,
b_depth int not null default 0,
b_path varchar(1000) not null,
b_name nvarchar(200) not null,
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create index ix_b_othercompany_category_parent
on dbo.b_othercompany_category (b_parent_id, b_canuse, b_depth, b_xh, b_id);
create index ix_b_othercompany_category_path
on dbo.b_othercompany_category (b_path, b_canuse, b_id);
-- 注:b_grade 由「其他数据」迁移重建为雪花主键(原为级别编码)
create table dbo.b_grade (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 级别名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(50) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
-- 注:b_from 由「其他数据」迁移重建为雪花主键(原为来源编码)
create table dbo.b_from (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 来源名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(50) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_othercompany_accountbank (
subid bigint not null primary key,
mx_xh int null,
father bigint null,
mx_bank nvarchar(800) null,
mx_bz1 nvarchar(200) null,
mx_created_by varchar(50) null,
mx_created_at datetime2 null,
mx_updated_by varchar(50) null,
mx_updated_at datetime2 null
);
create index ix_b_othercompany_accountbank_father
on dbo.b_othercompany_accountbank (father, mx_xh, subid);
create or alter view dbo.v_b_othercompany as
select o.b_id, o.b_ywid, o.b_pycode, o.b_type, o.b_name, o.b_shortname,
o.b_linkman, o.b_phone, o.b_addr, o.b_firstlinkdate,
o.b_htno, o.b_htdate, o.b_htexpiredate, o.b_black, o.b_canuse,
o.b_zl, o.b_tel, o.b_fax, o.b_www, o.b_email,
o.b_bankacount, o.b_invaccount, o.b_cate_id,
o.b_bz1, o.b_bz2, o.b_bz3, o.b_bz4,
o.b_province, o.b_city, o.b_area, o.b_country,
o.b_edicode, o.b_showcolor, o.b_type_id, o.b_from_id,
o.b_type1_id, o.b_type2_id, o.b_type3_id, o.b_type4_id, o.b_type5_id,
o.b_owner_id, o.b_created_by, o.b_created_at,
o.b_updated_by, o.b_updated_at,
o.b_password, o.b_state,
o.b_bankacount_e, o.b_addr_e, o.b_name_e,
u.b_name as v_ownername
from dbo.b_othercompany o
left join dbo.b_user u on u.b_id = o.b_owner_id;
```
## 联系人
```sql
create table dbo.b_contact (
b_id bigint not null primary key,
b_ywid varchar(50) not null,
b_name_ch nvarchar(50) null,
b_name_en nvarchar(50) null,
b_sex nvarchar(50) null,
b_birthday date null,
b_duty nvarchar(50) null,
b_departmentname nvarchar(50) null,
b_phone nvarchar(50) null,
b_mobilephone nvarchar(50) null,
b_fax nvarchar(50) null,
b_email varchar(50) null,
b_homephone nvarchar(50) null,
b_homeaddr nvarchar(255) null,
b_taste nvarchar(50) null,
b_habit nvarchar(50) null,
b_homesituation nvarchar(50) null,
b_picture varchar(500) null,
b_cate_id varchar(50) null,
b_type1_id varchar(50) null,
b_customer_id bigint null,
b_owner_id varchar(50) null,
b_isdefault tinyint not null default 0,
b_showcolor int null,
b_htbegindate date null,
b_htenddate date null,
b_state varchar(50) null,
b_bz nvarchar(1000) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create unique index ux_b_contact_ywid on dbo.b_contact (b_ywid);
create index ix_b_contact_customer on dbo.b_contact (b_customer_id, b_id);
create index ix_b_contact_name on dbo.b_contact (b_name_ch, b_id);
create table dbo.b_contact_type (
b_id varchar(50) not null primary key,
b_name nvarchar(50) null,
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create or alter view dbo.v_b_contact as
select c.b_id, c.b_ywid, c.b_name_ch, c.b_name_en, c.b_sex, c.b_phone,
c.b_mobilephone, c.b_fax, c.b_email,
c.b_duty, c.b_homephone, c.b_cate_id, c.b_homeaddr, c.b_bz,
c.b_departmentname, c.b_picture,
c.b_customer_id, c.b_owner_id, c.b_isdefault,
c.b_taste, c.b_habit, c.b_homesituation,
u.b_name as v_ownername,
d.b_name as v_ownerdepartment,
c.b_showcolor,
o.b_name as v_customer_name,
c.b_birthday,
case when isnull(c.b_name_ch, '') = '' then c.b_name_en
when isnull(c.b_name_en, '') = '' then c.b_name_ch
else isnull(c.b_name_ch, '') + isnull(c.b_name_en, '') end as b_name,
c.b_type1_id,
c.b_htbegindate, c.b_htenddate,
c.b_created_by, c.b_created_at, c.b_updated_by, c.b_updated_at,
c.b_state
from dbo.b_contact c
left join dbo.b_othercompany o on o.b_id = c.b_customer_id
left join dbo.b_user u on u.b_id = c.b_owner_id
left join dbo.b_dept d on d.b_id = u.b_dept_id
where isnull(o.b_ywid, '') <> 'b_employee';
```
## 其他数据(base_otherdata)
> 数据来源:旧库 `b_other_bmfl`(65 条模块清单,每条对应一张数据表)。
> 其中 3 张已在「往来单位」迁移中建过(`b_othercompany_partner_type`、`b_from`、`b_grade`):
> `b_from`、`b_grade` 随本次迁移**重建为纯雪花**(见下),`b_othercompany_partner_type` 保持编码主键
> (树形分类,由 othercompany 页面自研维护)。
> 本次待迁移 **62 张表**(启用 46 张)、数据合计 572 行;清单见 `fms-api/tools/migration/otherdata-modules.txt`。
> 新版不建 `b_other_bmfl` 表;模块树为三层:`base_otherdata`(其他数据,根)→ 6 个分组
> (常用 / 系统 / 仓库 / 物流 / 铁运 / 空运,`b_module_type = 'module'`)→ 62 个数据模块(`data`)。
> 数据模块编码 = 表名(如 `b_port`),`b_view_table` / `b_save_table` 都指向表本身:
> 字典表直接查表,不建 `v_` 直通视图(只有需要 join / 计算列的模块才用视图,如 `v_b_othercompany`)。
> 模块顺序 `b_xh` 按旧库「分组 + 组内序号」连续生成,保持原有排列(常用在前)。
>
> **主键模式**:`b_id` 为雪花主键(新增行由前端 `nextIdApi` 生成,通用列表组件的主键列只读)。
> 旧编号(`001`、`002` 等流水号)不保留 —— 它们没有业务含义,对外交换另有 `b_edicode` 等字段;
> 将来迁移引用这些字典的业务表时,按「旧编号 → 新雪花」映射替换字段值(映射由迁移脚本生成并留档)。
### `b_from` / `b_grade` 重建与引用转换
这两张表在「往来单位」迁移时按编码主键建好,随本次迁移改为纯雪花:
1. 备份旧行(旧 `b_id` + `b_name`)→ 重建表(雪花主键)→ 重导数据(`IdGenerator` 生成雪花);
2. 引用它们的字段按「名称」映射转换为新雪花:
- `b_othercompany.b_from_id`(客户来源)
- `b_othercompany.b_type_id`(客户级别)
3. `b_othercompany_partner_type` 保持编码主键不动(树形分类,由 othercompany 页面自研维护)。
### 字段转换规则
| 旧字段 | 新字段 | 说明 |
| --- | --- | --- |
| `b_id` varchar(50) 主键 | —(不保留) | 旧编号是流水号,无业务含义;引用方迁移时按映射替换为雪花 |
| —(新生成) | `b_id` bigint 主键 | 雪花,前端新增时自动生成 |
| `b_name` / `b_name_c` | `b_name` nvarchar(50) | 名称统一为 `b_name` |
| `b_name_e` | `b_name_e` nvarchar(50) | 英文名保留 |
| `b_bz` varchar(n) | `b_bz` nvarchar(200) | 备注改 nvarchar |
| `b_default` / `b_tz` / `b_isconvert` 等 varchar(1) | tinyint not null default 0 | 布尔标志按 0/1 |
| `b_canuse` varchar(1) | `b_canuse` tinyint not null default 1 | 按规范 |
| `b_xh` int | `b_xh` int not null default 0 | 按规范 |
| `b_inputuser_id` / `b_inputdatetime` / `b_updateuser_id` / `b_updatedatetime` | `b_created_by` / `b_created_at` / `b_updated_by` / `b_updated_at` | 审计字段,datetime → datetime2 |
| 编码 / EDI 代码 / 状态类字段 | 类型保留 varchar | |
| — | `b_i18n` varchar(150) | 新增多语言资源键 |
### 常用(旧分组「1.常用」,9 张)
```sql
create table dbo.b_feetype (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_name_e nvarchar(50) null, -- 英文名
b_default tinyint not null default 0, -- 默认类别(0/1)
b_amount decimal(18,2) null, -- 默认金额
b_tax decimal(18,4) null, -- 税额/税率
b_money_id varchar(50) null, -- 币种(b_money.b_id,雪花)
b_i18n varchar(150) null, -- 多语言资源键
b_canuse tinyint not null default 1, -- 是否启用(0/1)
b_xh int not null default 0, -- 显示顺序
b_bz nvarchar(200) null, -- 备注
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_oceanline (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_edicode varchar(50) null, -- EDI 代码
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_goodssource (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_dailyfeetype (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_dailytype (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_ywtype (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_ysfs (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_port (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称(原 b_name_c)
b_name_e nvarchar(50) null, -- 英文名
b_country nvarchar(50) null, -- 国家
b_oceanline varchar(50) null, -- 所属航线(b_oceanline.b_id,雪花)
b_edicode varchar(50) null, -- EDI 代码
b_tz tinyint not null default 0, -- 标志位(0/1,待确认含义)
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_money (
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_edicode varchar(50) null, -- EDI 代码
b_hl decimal(18,4) null, -- 汇率
b_symbol nvarchar(50) null, -- 货币符号
b_isconvert tinyint not null default 0, -- 是否参与折算(0/1)
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
```
### 系统(旧分组「2.系统」,35 张)
其中 29 张结构完全一致(`b_id` 雪花主键、`b_name`、`b_i18n`、`b_canuse`、`b_xh`、`b_bz`、审计四字段),按下面这个模板建(表名与注释替换即可):
```sql
create table dbo.b_cargo_damage_status ( -- 货损状态
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_i18n varchar(150) null, -- 多语言资源键
b_canuse tinyint not null default 1, -- 是否启用(0/1)
b_xh int not null default 0, -- 显示顺序
b_bz nvarchar(200) null, -- 备注
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
```
29 张同构表:
| 表名 | 名称 | 表名 | 名称 |
| --- | --- | --- | --- |
| `b_cargo_damage_status` | 货损状态 | `b_sys_level` | 级别 |
| `b_bulkforkliftpersonname` | 散货铲车人员 | `b_sys_operator` | 条件设置操作符 |
| `b_bulktype` | 散货类型 | `b_blstate` | 提单方式 |
| `b_bulkpersonname` | 散货理货人员 | `b_sys_state` | 审核状态 |
| `b_bulkstevedorepersonname` | 散货装卸人员 | `b_sys_feesf` | 费用收付 |
| `b_charging_method` | 收费方式 | `bc_priceList_type` | 价目表类型 |
| `b_unloading_method` | 卸货方式 | `b_sys_yesno` | 是否 |
| `b_sys_b_lessfull` | 装箱 | `b_ystype` | 付款类型 |
| `b_sys_edittype` | 字段编辑选择 | `b_billtype` | 账单类型 |
| `b_freightpayment` | 运费条款 | `b_bgtype` | 报关方式 |
| `b_jsfs` | 结算方式 | `b_httype` | 合同类型 |
| `b_ivtype` | 发票类型 | `b_sys_hdtype` | 回单类型 |
| `b_sys_sex` | 性别 | `b_progress` | 进度情况 |
| `b_sys_copies` | 提单份数 | `b_zxstate` | 执行状态 |
| `b_cztype` | 称重方式 | | |
另外 6 张有差异字段(完整写出):
```sql
create table dbo.b_vessel ( -- 船名船次
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(100) null, -- 船名(原 b_vessel_name)
b_edicode varchar(50) null, -- EDI 代码
b_voy nvarchar(100) null, -- 船次
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_con_type ( -- 箱型管理
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 箱型(40GP / 20GP / 45HQ)
b_edicode varchar(50) null, -- EDI 代码
b_type nvarchar(50) null, -- 箱类(大箱/小箱)
b_linkcon nvarchar(50) null, -- 关联箱型
b_default tinyint not null default 0, -- 默认箱型(0/1)
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_city ( -- 城市
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 中文名(原 b_name_c)
b_name_e nvarchar(50) null, -- 英文名
b_country_name_c nvarchar(50) null, -- 国家(中文)
b_country_name_e nvarchar(50) null, -- 国家(英文)
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_sys_pricelisttype ( -- 合作伙伴类型(委托单位/订舱单位/报关行…)
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 名称
b_dw_id varchar(50) null, -- 关联单位字段名(如 b_customer_id)
b_dw_name varchar(50) null, -- 关联单位视图名(如 v_customer_company)
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_transway ( -- 运输条款(CY-CY / DOOR-DOOR / CFS-CFS)
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(100) null, -- 条款
b_edicode varchar(50) null, -- EDI 代码
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
create table dbo.b_package ( -- 包装单位(BAGS / BALES / CASES…)
b_id bigint not null primary key, -- 主键(雪花)
b_name nvarchar(50) null, -- 包装代码
b_edicode varchar(50) null, -- EDI 代码
b_i18n varchar(150) null,
b_canuse tinyint not null default 1,
b_xh int not null default 0,
b_bz nvarchar(200) null,
b_created_by varchar(50) null,
b_created_at datetime2 null,
b_updated_by varchar(50) null,
b_updated_at datetime2 null
);
```
### 仓库、物流、铁运、空运(18 张)
这 18 张全部是标准结构(同系统组模板,仅 `b_name` 即名称):
| 分组 | 表名 | 名称 |
| --- | --- | --- |
| 3.仓库 | `b_depot` | 仓库 |
| 3.仓库 | `b_depotouttype` | 出库类型 |
| 3.仓库 | `b_depotintype` | 入库类型 |
| 5.物流 | `car_daily_feetype` | 费用报销-费用类型 |
| 5.物流 | `car_jiayou_jsfs` | 计算方式 |
| 5.物流 | `car_jiayou_type` | 加油类型 |
| 5.物流 | `car_jiayou_youliao` | 燃油种类 |
| 5.物流 | `b_cdtype` | 派车类型 |
| 5.物流 | `b_shfs` | 派送方式 |
| 5.物流 | `b_thfs` | 提货方式 |
| 5.物流 | `b_wangdian` | 网点 |
| 5.物流 | `b_ywfrom` | 业务来源 |
| 5.物流 | `b_ywtype_tc` | 业务类型(拖车) |
| 6.铁运 | `b_servicetype` | 服务内容 |
| 6.铁运 | `b_contype` | 箱属 |
| 6.铁运 | `b_ywtype_ht` | 业务类型(铁运) |
| 7.空运 | `b_dcterm` | 订舱条款 |
| 7.空运 | `b_ywtype_ky` | 业务类型(空运) |
### 实施记录(2026-09-14)
| 步骤 | 产物 | 状态 |
| --- | --- | --- |
| 建表 | `sql/fms_business_otherdata.sql`(62 张表;字典模块直接查表,不建视图) | 已执行 |
| 模块注册 | `sql/fms_module_otherdata.sql`(`base_otherdata` 根 + 6 个分组 + 64 个数据模块,编码 = 表名 + s_field) | 已执行 |
| 数据导入 | `fms-api/tools/migration/OtherDataMigrate.java`(555 行,雪花主键);映射留档 `otherdata-id-map.tsv` | 已执行 |
| `b_from` / `b_grade` 重建 | 工具内完成(雪花主键) | 已执行 |
| 引用转换 | `b_othercompany.b_from_id` / `b_type_id` | **待执行**:`b_othercompany` 目前是空表,数据迁入后重跑 `OtherDataMigrate` 即可(旧编号未匹配时脚本无副作用) |
| 字段中文名与界面配置 | `FieldNameSync --all-otherdata --force`:64 个模块全部同步(中文名 + view/edit 配置,含字段别名 `b_vessel_name`→`b_name`、`b_name_c`→`b_name`);通用字段名由注册脚本补齐(668 字段全部有中文名);旧库无配置的 44 个模块补默认列(名称 + 备注) | 已执行 |