hr-system/sql/hr_org.sql

95 lines
4.6 KiB
SQL

-- ============================================================
-- hr-org 组织管理模块 DDL (F01 + 合同公司)
-- 说明: 与 models/hr_org/*.json 契约一致; 应用启动时由 sqlor
-- 根据 json 模型自动建表, 本文件为基线 SQL(可独立执行)。
-- ============================================================
-- 1. 组织 org_unit
CREATE TABLE IF NOT EXISTS org_unit (
id VARCHAR(32) NOT NULL COMMENT '主键',
org_code VARCHAR(32) NOT NULL COMMENT '组织编码',
org_name VARCHAR(128) NOT NULL COMMENT '组织名称',
parent_id VARCHAR(32) NULL COMMENT '上级组织(自引用)',
org_type VARCHAR(16) NULL COMMENT '组织类型(字典ORG_TYPE)',
leader_id VARCHAR(32) NULL COMMENT '负责人',
effective_date DATE NULL COMMENT '生效日期',
expire_date DATE NULL COMMENT '失效日期(空=长期)',
status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态 active/inactive',
sort_no INT NULL DEFAULT 0 COMMENT '排序号',
remark TEXT NULL COMMENT '备注',
created_by VARCHAR(32) NULL COMMENT '创建人',
updated_by VARCHAR(32) NULL COMMENT '更新人',
created_at TIMESTAMP NULL COMMENT '创建时间',
updated_at TIMESTAMP NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_org_code (org_code),
KEY idx_parent_id (parent_id),
KEY idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织';
-- 2. 组织自定义字段定义 org_field_def
CREATE TABLE IF NOT EXISTS org_field_def (
id VARCHAR(32) NOT NULL COMMENT '主键',
field_code VARCHAR(64) NOT NULL COMMENT '字段编码',
field_name VARCHAR(128) NOT NULL COMMENT '字段名称',
field_type VARCHAR(16) NULL COMMENT '字段类型 text/number/date/select',
entity_type VARCHAR(32) NULL DEFAULT 'org_unit' COMMENT '实体类型',
options TEXT NULL COMMENT '选项(JSON, select 用)',
required TINYINT NULL DEFAULT 0 COMMENT '是否必填',
sort_no INT NULL DEFAULT 0 COMMENT '排序号',
status VARCHAR(16) NULL DEFAULT 'active' COMMENT '状态',
created_by VARCHAR(32) NULL,
updated_by VARCHAR(32) NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_field_code (field_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织自定义字段定义';
-- 3. 组织自定义字段值 org_field_value (EAV)
CREATE TABLE IF NOT EXISTS org_field_value (
id VARCHAR(32) NOT NULL COMMENT '主键',
org_id VARCHAR(32) NOT NULL COMMENT '组织ID',
field_def_id VARCHAR(32) NOT NULL COMMENT '字段定义ID',
field_value TEXT NULL COMMENT '字段值',
created_by VARCHAR(32) NULL,
updated_by VARCHAR(32) NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_org_field (org_id, field_def_id),
KEY idx_field_def (field_def_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织自定义字段值';
-- 4. 组织变更时间轴 org_unit_change
CREATE TABLE IF NOT EXISTS org_unit_change (
id VARCHAR(32) NOT NULL COMMENT '主键',
org_id VARCHAR(32) NOT NULL COMMENT '组织ID',
change_type VARCHAR(16) NOT NULL COMMENT 'create/delete/split/merge/modify',
change_date DATE NULL COMMENT '变更日期',
before_data TEXT NULL COMMENT '变更前(JSON)',
after_data TEXT NULL COMMENT '变更后(JSON)',
operator VARCHAR(32) NULL COMMENT '操作人',
created_at TIMESTAMP NULL COMMENT '记录时间',
PRIMARY KEY (id),
KEY idx_org (org_id),
KEY idx_change_date (change_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='组织变更时间轴';
-- 5. 合同公司 org_contract_company
CREATE TABLE IF NOT EXISTS org_contract_company (
id VARCHAR(32) NOT NULL COMMENT '主键',
company_code VARCHAR(32) NOT NULL COMMENT '公司编码',
company_name VARCHAR(128) NOT NULL COMMENT '公司名称',
credit_code VARCHAR(32) NULL COMMENT '统一社会信用代码',
legal_person VARCHAR(64) NULL COMMENT '法人',
contact_info VARCHAR(128) NULL COMMENT '联系方式',
status VARCHAR(16) NOT NULL DEFAULT 'active' COMMENT '状态',
created_by VARCHAR(32) NULL,
updated_by VARCHAR(32) NULL,
created_at TIMESTAMP NULL,
updated_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_company_code (company_code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='合同公司';