云
2026-09-29 f87ce86307056f63f79312178037cc8714eb2b13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
-- =====================================================
-- 档案管理模块 - 来源模块增量脚本(跨模块改表)
--
-- 背景:档案模块支持「课题申报书 / 会员 / 财务报销单」按来源单据手动归档。
--       三张来源表各加一列 `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;