refactor(gxmu): 审批链层级校验下沉到 Service,删除路径也校验剩余链
- ReviewFlowController 里约 115 行的 validateLevels / validateUpdate /
validateBatchUpdate / validateRemaining / merge 下沉为
ReviewFlowService.validateLevelsOnSave / OnUpdate / OnBatchUpdate / OnRemove,
controller 只在写操作前调用一次
- remove / removeBatch 新增删除后剩余链连续性校验;删除前就已不连续的链跳过校验,
避免存量脏数据变成「永远删不掉」
- 顺手修掉一个真缺陷:merge 会就地改 existing,导致「改名后原链剩余校验」永远不触发
(批量路径同样先取旧标题再合并)
- 模块标题回退三份收敛成 ModuleRegistryService.titleOf(Map, module) 一处,
ReviewFlowConfigServiceImpl / ReviewListServiceImpl 直接调用
- ReviewFlowLevelValidator 的手写 join 换成 Collectors.joining(", ")
- 回填脚本头部补「表名 → 学院文本列」对照表,注明新增表按此表同步 4 处
refs #58
This commit is contained in:
@@ -14,6 +14,26 @@
|
||||
-- 3) 校验与清单(只读) —— 回填率、空值清单、未匹配文本一览,抄进上线记录
|
||||
-- 3) ⚠ 只执行一次,不接定时任务。
|
||||
--
|
||||
-- ============================================================================
|
||||
-- 表名 → 学院文本列 对照表(本脚本唯一的一处机械清单,B 段兜底按它逐段复制)
|
||||
--
|
||||
-- ┌──────────────────────┬──────────────────────────────────┬──────────┐
|
||||
-- │ 表名 │ 学院文本列(B 段兜底用) │ 列注释 │
|
||||
-- ├──────────────────────┼──────────────────────────────────┼──────────┤
|
||||
-- │ gxmu_sjqn │ unit_name │ 所在单位 │
|
||||
-- │ gxmu_tzbcy_form │ school_name │ 学校名称 │
|
||||
-- │ gxmu_qmgc_form │ school_info │ 学校、院系、年级、专业 │
|
||||
-- │ gxmu_wxxzx_project │ college_grade_class │ 学院、年级、班别 │
|
||||
-- └──────────────────────┴──────────────────────────────────┴──────────┘
|
||||
--
|
||||
-- 新增第 5 张带 college_id 的表时,按上表同步 4 处:
|
||||
-- ① sql/20261110_spec58_approval_chain.sql 的加列段 + 注册表种子(has_college = 1)
|
||||
-- ② 本脚本 A 段(学生档案主路径:user_id → gxmu_student.college_id)
|
||||
-- ③ 本脚本 B 段(表单文本兜底:按上表的文本列 LIKE 组织名)
|
||||
-- ④ 本脚本 3a / 3b / 3c / 3d(回填率、空值清单、未匹配文本、逐表计数)
|
||||
-- 漏改的后果不是报错,而是新表回填率恒为 0、审批人按学院解析静默失败。
|
||||
-- ============================================================================
|
||||
--
|
||||
-- 可重复执行:所有 UPDATE 都带「只填空、不覆盖」条件(college_id IS NULL),且不带会话状态
|
||||
-- (不用临时表、不用视图),任何一句都可以单独重跑。重跑不会改掉人工修对的值。
|
||||
--
|
||||
|
||||
Reference in New Issue
Block a user