Use existing menu permissions for management actions, preserve shared list styles in teleported detail dialogs, and align project attribution column collations with the project primary key. Record isolated MySQL and browser validation while retaining the real-device acceptance gate.
198 lines
9.7 KiB
SQL
198 lines
9.7 KiB
SQL
-- Issue #13: MySQL 5.7 增量迁移。已在隔离 MySQL 5.7 验证;上线前仍须备份并在目标副本验证。
|
|
-- DDL 隐式提交;该脚本不作为自动应用启动步骤。
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project_team (
|
|
id VARCHAR(64) NOT NULL,
|
|
team_name VARCHAR(200) NOT NULL,
|
|
leader_user_id VARCHAR(64) NOT NULL,
|
|
enabled SMALLINT NOT NULL DEFAULT 1,
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project_team_member (
|
|
id VARCHAR(64) NOT NULL,
|
|
team_id VARCHAR(64) NOT NULL,
|
|
user_id VARCHAR(64) NOT NULL,
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag),
|
|
KEY ix_team (tenant_no, team_id, del_flag)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project_team_region (
|
|
id VARCHAR(64) NOT NULL,
|
|
team_id VARCHAR(64) NOT NULL,
|
|
region_id VARCHAR(64) NOT NULL,
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag),
|
|
KEY ix_team (tenant_no, team_id, del_flag)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project_team_hospital (
|
|
id VARCHAR(64) NOT NULL,
|
|
team_id VARCHAR(64) NOT NULL,
|
|
hospital_id VARCHAR(64) NOT NULL,
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag),
|
|
KEY ix_team (tenant_no, team_id, del_flag)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project (
|
|
id VARCHAR(64) NOT NULL,
|
|
project_no VARCHAR(64) NOT NULL,
|
|
project_name VARCHAR(200) NOT NULL,
|
|
team_id VARCHAR(64) NOT NULL,
|
|
leader_user_id VARCHAR(64) NOT NULL,
|
|
biz_types VARCHAR(255) NOT NULL,
|
|
start_date DATE NULL,
|
|
end_date DATE NULL,
|
|
status VARCHAR(16) NOT NULL DEFAULT 'pending',
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag),
|
|
KEY ix_team (tenant_no, team_id, del_flag),
|
|
UNIQUE KEY uk_project_tenant_no (tenant_no, project_no)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
CREATE TABLE IF NOT EXISTS biz_project_assignment_audit (
|
|
id VARCHAR(64) NOT NULL,
|
|
biz_type VARCHAR(32) NOT NULL,
|
|
biz_id VARCHAR(64) NOT NULL,
|
|
old_project_id VARCHAR(64) NULL,
|
|
new_project_id VARCHAR(64) NULL,
|
|
old_project_name VARCHAR(200) NULL,
|
|
new_project_name VARCHAR(200) NULL,
|
|
reason VARCHAR(512) NOT NULL,
|
|
operator_name VARCHAR(100) NULL,
|
|
tenant_no VARCHAR(64) NOT NULL,
|
|
order_num INT NULL,
|
|
remark VARCHAR(512) NULL,
|
|
create_by VARCHAR(64) NULL,
|
|
create_dept_id VARCHAR(64) NOT NULL DEFAULT '',
|
|
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
update_by VARCHAR(64) NULL,
|
|
update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
del_flag SMALLINT NOT NULL DEFAULT 0,
|
|
PRIMARY KEY (id),
|
|
KEY ix_tenant_active (tenant_no, del_flag),
|
|
KEY ix_business (tenant_no, biz_type, biz_id, create_time)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
|
|
|
-- 原业务表可能使用不同的默认排序规则;关联列必须与实际项目主键一致。
|
|
-- 同时修复已执行旧版迁移的列,不更改原表其他业务列或整库排序规则。
|
|
SELECT character_set_name, collation_name INTO @project_charset, @project_collation
|
|
FROM information_schema.columns
|
|
WHERE table_schema=DATABASE() AND table_name='biz_project' AND column_name='id';
|
|
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_presign_order' AND column_name='project_id')=0,
|
|
CONCAT('ALTER TABLE biz_presign_order ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_presign_order' AND column_name='project_id') <> @project_collation,
|
|
CONCAT('ALTER TABLE biz_presign_order MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
'SELECT 1'));
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='biz_presign_order' AND index_name='ix_project_scope')=0,
|
|
'ALTER TABLE biz_presign_order ADD INDEX ix_project_scope (tenant_no, project_id, del_flag, create_time)',
|
|
'SELECT 1');
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_collection_protocol' AND column_name='project_id')=0,
|
|
CONCAT('ALTER TABLE biz_collection_protocol ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_collection_protocol' AND column_name='project_id') <> @project_collation,
|
|
CONCAT('ALTER TABLE biz_collection_protocol MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
'SELECT 1'));
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='biz_collection_protocol' AND index_name='ix_project_scope')=0,
|
|
'ALTER TABLE biz_collection_protocol ADD INDEX ix_project_scope (tenant_no, project_id, del_flag, create_time)',
|
|
'SELECT 1');
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_research_donation' AND column_name='project_id')=0,
|
|
CONCAT('ALTER TABLE biz_research_donation ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_research_donation' AND column_name='project_id') <> @project_collation,
|
|
CONCAT('ALTER TABLE biz_research_donation MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
'SELECT 1'));
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='biz_research_donation' AND index_name='ix_project_scope')=0,
|
|
'ALTER TABLE biz_research_donation ADD INDEX ix_project_scope (tenant_no, project_id, del_flag, create_time)',
|
|
'SELECT 1');
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_pilot_application' AND column_name='project_id')=0,
|
|
CONCAT('ALTER TABLE biz_pilot_application ADD COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
IF((SELECT collation_name FROM information_schema.columns WHERE table_schema=DATABASE() AND table_name='biz_pilot_application' AND column_name='project_id') <> @project_collation,
|
|
CONCAT('ALTER TABLE biz_pilot_application MODIFY COLUMN project_id VARCHAR(64) CHARACTER SET ', @project_charset, ' COLLATE ', @project_collation, ' NULL'),
|
|
'SELECT 1'));
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|
|
SET @project_ddl = IF(
|
|
(SELECT COUNT(*) FROM information_schema.statistics WHERE table_schema=DATABASE() AND table_name='biz_pilot_application' AND index_name='ix_project_scope')=0,
|
|
'ALTER TABLE biz_pilot_application ADD INDEX ix_project_scope (tenant_no, project_id, del_flag, create_time)',
|
|
'SELECT 1');
|
|
PREPARE project_stmt FROM @project_ddl;
|
|
EXECUTE project_stmt;
|
|
DEALLOCATE PREPARE project_stmt;
|