Files
workspace/code/fms/sql/fms_business_othercompany.sql
T
2026-09-14 17:28:20 +08:00

236 lines
11 KiB
Transact-SQL
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 新系统业务表建表脚本 — 往来单位(合作伙伴)
依据文档:FMS业务表设计.md
使用说明:
1. 执行前先切换到目标数据库(USE [数据库名])。
2. 脚本只建表、索引和查询视图,不含初始化数据和迁移数据。
3. 不使用外键、CHECK、触发器;关联完整性和业务校验由业务层处理。
4. 表已存在时先用「重建」段落删除旧对象,再执行建表段落。
============================================================================ */
SET NOCOUNT ON;
GO
/* ============================================================================
重建(仅旧结构需要重建时执行,会删除这些表及其数据)
============================================================================ */
drop view if exists dbo.v_b_othercompany;
GO
drop table if exists dbo.b_othercompany_accountbank;
GO
drop table if exists dbo.b_othercompany_bmfl;
GO
drop table if exists dbo.b_othercompany_partner_type;
GO
drop table if exists dbo.b_othercompany;
GO
drop table if exists dbo.b_grade;
GO
drop table if exists dbo.b_from;
GO
/* ============================================================================
主表
============================================================================ */
create table dbo.b_othercompany (
b_id bigint not null primary key, -- 主键(雪花)
b_ywid varchar(50) not null, -- 业务ID
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, -- 黑名单(0/1)
b_canuse tinyint not null default 0, -- 开通自助(0/1)
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, -- 备注1
b_bz2 nvarchar(500) null, -- 备注2
b_bz3 nvarchar(500) null, -- 备注3
b_bz4 nvarchar(500) null, -- 备注4
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, -- EDI 代码
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 -- 英文名称
);
GO
create unique index ux_b_othercompany_ywid on dbo.b_othercompany (b_ywid);
GO
create index ix_b_othercompany_cate on dbo.b_othercompany (b_cate_id, b_canuse, b_id);
GO
create index ix_b_othercompany_name on dbo.b_othercompany (b_name, b_canuse, b_id);
GO
/* ============================================================================
伙伴类型字典
============================================================================ */
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, -- 是否启用(0/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
);
GO
/* ============================================================================
分类树
============================================================================ */
create table dbo.b_othercompany_bmfl (
b_id varchar(150) not null primary key, -- 节点编码(创建后不可改)
b_parent_id varchar(150) null, -- 父节点编码,NULL 表示根节点
b_depth int not null default 0, -- 树层级,根节点为 0
b_path varchar(1000) not null, -- 根到当前节点的路径,例如 /dl/dl_NOVCC/
b_name nvarchar(200) not null, -- 节点名称
b_i18n varchar(150) null, -- 多语言资源键
b_canuse tinyint not null default 1, -- 是否启用(0/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
);
GO
create index ix_b_othercompany_bmfl_parent
on dbo.b_othercompany_bmfl (b_parent_id, b_canuse, b_depth, b_xh, b_id);
GO
create index ix_b_othercompany_bmfl_path
on dbo.b_othercompany_bmfl (b_path, b_canuse, b_id);
GO
/* ============================================================================
客户级别字典
============================================================================ */
create table dbo.b_grade (
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, -- 是否启用(0/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
);
GO
/* ============================================================================
客户来源字典
============================================================================ */
create table dbo.b_from (
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, -- 是否启用(0/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
);
GO
/* ============================================================================
银行账号明细子表
============================================================================ */
create table dbo.b_othercompany_accountbank (
subid bigint not null primary key, -- 主键(雪花)
mx_xh int null, -- 序号
father bigint null, -- 主表 b_othercompany.b_id
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
);
GO
create index ix_b_othercompany_accountbank_father
on dbo.b_othercompany_accountbank (father, mx_xh, subid);
GO
/* ============================================================================
查询视图
用途:作为 s_module.b_view_table 的数据源。列表查询直接 select ... from 该视图,
s_field.b_field 必须是视图里真实存在的列。
说明:视图只供查询,写库仍走 s_module.b_save_table = b_othercompany。
============================================================================ */
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;
GO