新增活动电子档案模块;

This commit is contained in:
2026-07-28 15:59:45 +08:00
parent 785b9a4b80
commit a8a4052c45
11 changed files with 1975 additions and 0 deletions
+192
View File
@@ -0,0 +1,192 @@
-- 活动电子档案模块初始化脚本(MySQL 8)。
-- 表结构、索引和菜单均可独立部署,不包含数据库名限定。
CREATE TABLE IF NOT EXISTS act_archive_doc_type (
id VARCHAR(32) NOT NULL COMMENT '主键',
name VARCHAR(150) NOT NULL COMMENT '类型名称',
projectStage VARCHAR(32) NOT NULL COMMENT '项目阶段:PREPARE/PROCESS/SUMMARY',
sortNo INT NOT NULL DEFAULT 0 COMMENT '排序编号',
requiredFlag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否必选',
remark VARCHAR(600) NULL COMMENT '备注',
createdBy VARCHAR(32) NULL COMMENT '创建人',
createdAt BIGINT NULL COMMENT '创建时间',
updatedBy VARCHAR(32) NULL COMMENT '修改人',
updatedAt BIGINT NULL COMMENT '修改时间',
delFlag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
UNIQUE KEY uk_archive_doc_type_stage_name (projectStage, name),
KEY idx_archive_doc_type_stage_sort (projectStage, sortNo, createdAt)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动电子档案文档类型';
CREATE TABLE IF NOT EXISTS act_archive_project (
id VARCHAR(32) NOT NULL COMMENT '主键',
year INT NOT NULL COMMENT '年度',
projectName VARCHAR(300) NOT NULL COMMENT '项目名称',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0草稿、1归档中、2已完成',
unionId VARCHAR(32) NOT NULL COMMENT '所属工会ID',
unionName VARCHAR(150) NOT NULL COMMENT '所属工会名称',
createdBy VARCHAR(32) NULL COMMENT '创建人',
createdAt BIGINT NULL COMMENT '创建时间',
updatedBy VARCHAR(32) NULL COMMENT '修改人',
updatedAt BIGINT NULL COMMENT '修改时间',
delFlag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
UNIQUE KEY uk_archive_project_year_name_union (year, projectName, unionId),
KEY idx_archive_project_year_created (year, createdAt),
KEY idx_archive_project_union (unionId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动电子档案项目';
CREATE TABLE IF NOT EXISTS act_archive_document (
id VARCHAR(32) NOT NULL COMMENT '主键',
projectId VARCHAR(32) NOT NULL COMMENT '归档项目ID',
documentName VARCHAR(300) NOT NULL COMMENT '文档名称',
projectStage VARCHAR(32) NOT NULL COMMENT '项目阶段:PREPARE/PROCESS/SUMMARY',
docTypeId VARCHAR(32) NULL COMMENT '文档类型ID',
status TINYINT NOT NULL DEFAULT 0 COMMENT '状态:0草稿、1已提交归档',
uploader VARCHAR(100) NULL COMMENT '上传人',
uploadTime BIGINT NULL COMMENT '上传时间',
files JSON NULL COMMENT '附件上传结果',
remark VARCHAR(600) NULL COMMENT '备注',
createdBy VARCHAR(32) NULL COMMENT '创建人',
createdAt BIGINT NULL COMMENT '创建时间',
updatedBy VARCHAR(32) NULL COMMENT '修改人',
updatedAt BIGINT NULL COMMENT '修改时间',
delFlag TINYINT(1) NOT NULL DEFAULT 0 COMMENT '删除标记',
PRIMARY KEY (id),
KEY idx_archive_document_query (projectId, projectStage, docTypeId, uploadTime),
KEY idx_archive_document_project_status (projectId, status),
CONSTRAINT fk_archive_document_project
FOREIGN KEY (projectId) REFERENCES act_archive_project (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='活动电子档案归档文档';
-- 一级菜单。
INSERT INTO sys_menu (
id, parentId, path, name, aliasName, type, href, target, icon, showit,
disabled, permission, note, location, hasChildren, createdBy, createdAt,
updatedBy, updatedAt, delFlag, platform, moduleId, picIcon,
initialPinyinName, isRecommendApp, isRecommendService
)
SELECT
'9a7d8d84b14f4d6e8ab2000000000001',
'',
LPAD(IFNULL(MAX(CAST(path AS UNSIGNED)), 0) + 1, 4, '0'),
'活动电子档案',
'Archive',
'menu',
'',
'',
'ti-folder',
1,
0,
'archive',
NULL,
992,
1,
'',
UNIX_TIMESTAMP(NOW()) * 1000,
'',
UNIX_TIMESTAMP(NOW()) * 1000,
0,
'PC',
NULL,
NULL,
'h',
0,
0
FROM sys_menu
WHERE (parentId = '' OR parentId IS NULL)
AND CHAR_LENGTH(path) = 4
HAVING NOT EXISTS (
SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'archive') t
);
-- 文档类型设置。
INSERT INTO sys_menu (
id, parentId, path, name, aliasName, type, href, target, icon, showit,
disabled, permission, note, location, hasChildren, createdBy, createdAt,
updatedBy, updatedAt, delFlag, platform, moduleId, picIcon,
initialPinyinName, isRecommendApp, isRecommendService
)
SELECT
'9a7d8d84b14f4d6e8ab2000000000002', p.id, CONCAT(p.path, '0001'),
'文档类型设置', 'Archive Doc Type', 'menu', '/platform/archive/docType',
'data-pjax', '', 1, 0, 'archive.docType', NULL, 1, 0, '',
UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0,
'PC', NULL, NULL, 'w', 0, 0
FROM sys_menu p
WHERE p.permission = 'archive'
AND NOT EXISTS (
SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'archive.docType') t
);
-- 创建项目。
INSERT INTO sys_menu (
id, parentId, path, name, aliasName, type, href, target, icon, showit,
disabled, permission, note, location, hasChildren, createdBy, createdAt,
updatedBy, updatedAt, delFlag, platform, moduleId, picIcon,
initialPinyinName, isRecommendApp, isRecommendService
)
SELECT
'9a7d8d84b14f4d6e8ab2000000000003', p.id, CONCAT(p.path, '0002'),
'创建项目', 'Archive Project', 'menu', '/platform/archive/project',
'data-pjax', '', 1, 0, 'archive.project', NULL, 2, 0, '',
UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0,
'PC', NULL, NULL, 'c', 0, 0
FROM sys_menu p
WHERE p.permission = 'archive'
AND NOT EXISTS (
SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'archive.project') t
);
-- 资料归档。
INSERT INTO sys_menu (
id, parentId, path, name, aliasName, type, href, target, icon, showit,
disabled, permission, note, location, hasChildren, createdBy, createdAt,
updatedBy, updatedAt, delFlag, platform, moduleId, picIcon,
initialPinyinName, isRecommendApp, isRecommendService
)
SELECT
'9a7d8d84b14f4d6e8ab2000000000004', p.id, CONCAT(p.path, '0003'),
'资料归档', 'Archive Filing', 'menu', '/platform/archive/filing',
'data-pjax', '', 1, 0, 'archive.filing', NULL, 3, 0, '',
UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0,
'PC', NULL, NULL, 'z', 0, 0
FROM sys_menu p
WHERE p.permission = 'archive'
AND NOT EXISTS (
SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'archive.filing') t
);
-- 档案台账。
INSERT INTO sys_menu (
id, parentId, path, name, aliasName, type, href, target, icon, showit,
disabled, permission, note, location, hasChildren, createdBy, createdAt,
updatedBy, updatedAt, delFlag, platform, moduleId, picIcon,
initialPinyinName, isRecommendApp, isRecommendService
)
SELECT
'9a7d8d84b14f4d6e8ab2000000000005', p.id, CONCAT(p.path, '0004'),
'档案台账', 'Archive Ledger', 'menu', '/platform/archive/ledger',
'data-pjax', '', 1, 0, 'archive.ledger', NULL, 4, 0, '',
UNIX_TIMESTAMP(NOW()) * 1000, '', UNIX_TIMESTAMP(NOW()) * 1000, 0,
'PC', NULL, NULL, 'd', 0, 0
FROM sys_menu p
WHERE p.permission = 'archive'
AND NOT EXISTS (
SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'archive.ledger') t
);
-- 系统管理员默认授权,其他角色可在角色管理中按需分配。
INSERT INTO sys_role_menu (roleId, menuId)
SELECT r.id, m.id
FROM sys_role r
JOIN sys_menu m ON m.permission IN (
'archive',
'archive.docType',
'archive.project',
'archive.filing',
'archive.ledger'
)
LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id
WHERE r.code = 'SYSADMIN'
AND rm.roleId IS NULL;