-- ============================================================ -- 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='合同公司';