-- ===================================================== -- 档案管理模块 - 来源模块增量脚本(跨模块改表) -- -- 背景:档案模块支持「课题申报书 / 会员 / 财务报销单」按来源单据手动归档。 -- 三张来源表各加一列 `archive_document_id`(指向 archive_document.id): -- ① 作为「已归档」的硬标记,列表页据此显示已归档并跳转档案; -- ② 归档重复校验的兜底(archive_document 侧另有 source_type+source_id 唯一性校验)。 -- 列可空,不影响既有业务数据。 -- -- 执行库:脚本用 DATABASE() 判定,与库名无关,故可对任意目标库执行。 -- 2026-09-29 已在 application-local.yaml 指向的 mom-jssm 执行并核对通过; -- 其余环境(dev/test 指向 ruoyi-vue-pro,yzfx/wtxc/zsjc/chdl/kyzn 指向各自 mom-* 库)按需另跑。 -- 本脚本幂等,可连续重复执行。 -- 前置:需先执行 archive_module.sql 建 `archive_document` 表。 -- 注意:本脚本不含 tenant_id(项目不使用多租户模式);ALTER TABLE ADD COLUMN 不支持 -- IF NOT EXISTS,统一用 information_schema 存在性守卫。 -- ===================================================== -- ----- 1. research_application 新增 archive_document_id ----- SET @c = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'research_application' AND column_name = 'archive_document_id'); SET @sql = IF(@c = 0, 'ALTER TABLE research_application ADD COLUMN archive_document_id bigint DEFAULT NULL COMMENT ''归档生成的档案 ID(archive_document.id,归档联动回写)'' AFTER notice_id', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ----- 2. ums_member 新增 archive_document_id ----- SET @c = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'ums_member' AND column_name = 'archive_document_id'); SET @sql = IF(@c = 0, 'ALTER TABLE ums_member ADD COLUMN archive_document_id bigint DEFAULT NULL COMMENT ''归档生成的档案 ID(archive_document.id,归档联动回写)'' AFTER status', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ----- 3. finance_reimbursement 新增 archive_document_id ----- SET @c = (SELECT COUNT(*) FROM information_schema.columns WHERE table_schema = DATABASE() AND table_name = 'finance_reimbursement' AND column_name = 'archive_document_id'); SET @sql = IF(@c = 0, 'ALTER TABLE finance_reimbursement ADD COLUMN archive_document_id bigint DEFAULT NULL COMMENT ''归档生成的档案 ID(archive_document.id,归档联动回写)'' AFTER archive_time', 'SELECT 1'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;