Files
hzdyjs/出国登记状态显示修复完成.md
T
2025-10-14 16:41:19 +08:00

5.4 KiB
Raw Blame History

出国登记状态显示修复完成 ✅

🐛 问题描述

现象: 前端列表显示"已提交",但应该显示"待审核"

原因: 后端代码中多处硬编码了旧的状态文本(已提交、已确认、已撤回),未同步更新为新的状态定义(待审核、已通过、已拒绝)


✅ 修复内容

1. Service层 - 状态文本转换(RsOverseasRegistrationServiceImpl.java)

位置: convertToVo() 方法

// 修复前:
case "1" -> vo.setStatusText("已提交");
case "2" -> vo.setStatusText("已确认");
case "3" -> vo.setStatusText("已撤回");

// 修复后:✅
case "1" -> vo.setStatusText("待审核");
case "2" -> vo.setStatusText("已通过");
case "3" -> vo.setStatusText("已拒绝");

2. Mapper XML - SQL查询状态转换(RsOverseasRegistrationMapper.xml)

位置: selectRegistrationVo SQL片段

-- 修复前:
WHEN '1' THEN '已提交'
WHEN '2' THEN '已确认'
WHEN '3' THEN '已撤回'

-- 修复后:✅
WHEN '1' THEN '待审核'
WHEN '2' THEN '已通过'
WHEN '3' THEN '已拒绝'

3. 业务逻辑注释(RsOverseasRegistrationServiceImpl.java)

删除验证

// 修复前:
// 校验:不能删除已提交或已确认的登记
throw new RuntimeException("不能删除已提交或已确认的出国登记!");

// 修复后:✅
// 校验:不能删除待审核或已通过的登记
throw new RuntimeException("不能删除待审核或已通过的出国登记!");

提交验证

// 修复前:
throw new RuntimeException("只有草稿或已撤回状态的登记才能提交!");

// 修复后:✅
throw new RuntimeException("只有草稿或已拒绝状态的登记才能提交!");

确认验证

// 修复前:
throw new RuntimeException("只有已提交状态的登记才能确认!");

// 修复后:✅
throw new RuntimeException("只有待审核状态的登记才能确认(通过)!");

撤回验证

// 修复前:
throw new RuntimeException("只有已提交状态的登记才能撤回!");

// 修复后:✅
throw new RuntimeException("只有待审核状态的登记才能撤回!");

4. 状态选项(RsOverseasRegistrationServiceImpl.java)

位置: getStatusOptions() 方法

// 修复前:
options.add(Map.of("value", "1", "label", "已提交"));
options.add(Map.of("value", "2", "label", "已确认"));
options.add(Map.of("value", "3", "label", "已撤回"));

// 修复后:✅
options.add(Map.of("value", "1", "label", "待审核"));
options.add(Map.of("value", "2", "label", "已通过"));
options.add(Map.of("value", "3", "label", "已拒绝"));

5. 注释(RsOverseasRegistrationServiceImpl.java)

// 修复前:
// 直接设置为已提交状态
add.setStatus("1"); // 已提交

// 修复后:✅
// 直接设置为待审核状态
add.setStatus("1"); // 待审核

📁 修改的文件

  1. ✅ backend/ruoyi-modules/ruoyi-rs/src/main/java/org/dromara/rs/service/impl/RsOverseasRegistrationServiceImpl.java

    • 状态文本转换(convertToVo方法)
    • 业务逻辑验证注释(4处)
    • 状态选项(getStatusOptions方法)
    • 提交注释(insertAndSubmitByBo方法)
  2. ✅ backend/ruoyi-modules/ruoyi-rs/src/main/resources/mapper/rs/RsOverseasRegistrationMapper.xml

    • SQL CASE语句中的状态文本

🔄 正确的状态定义

状态值 状态名称 标签颜色 说明
0 草稿 ⚪ info 初始创建,未提交
1 待审核 🟠 warning ✅ 提交后的状态,等待审批
2 已通过 🟢 success 审批通过
3 已拒绝 🔴 danger 审批拒绝

✅ 验证结果

  • ✅ 后端代码编译成功
  • ✅ 所有硬编码的状态文本已更新
  • ✅ 业务逻辑注释已更新
  • ✅ SQL查询已更新
  • ✅ 状态选项已更新

🚀 部署步骤

  1. 重启后端服务

    cd backend/ruoyi-admin
    mvn clean package -DskipTests
    # 重启服务
    
  2. 清除浏览器缓存

    • Windows: Ctrl + F5
    • Mac: Cmd + Shift + R
  3. 验证显示


📊 状态显示对照表

前端显示

数据库值 旧显示(错误) 新显示(正确) 标签颜色
0 草稿 草稿 ⚪ 灰色
1 已提交 ✅ 待审核 🟠 橙色
2 已确认 ✅ 已通过 🟢 绿色
3 已撤回 ✅ 已拒绝 🔴 红色

🎯 关键要点

  1. 状态值不变:仍然是 0, 1, 2, 3
  2. 只改显示:改的是 statusText 字段的值
  3. 全面修复:包括 Service、Mapper、注释、验证消息
  4. 保持一致:与出国申请模块的状态定义完全一致

📝 影响范围

用户可见变化

  • ✅ 列表页状态列显示"待审核"而不是"已提交"
  • ✅ 详情页状态标签显示"待审核"
  • ✅ 所有错误提示消息更新为正确术语

不变内容

  • ✅ 数据库中的状态值不变
  • ✅ 状态流转逻辑不变
  • ✅ 权限控制不变

修复完成时间: 2025-10-05 17:25
修复状态: ✅ 已完成
验证状态: ⏳ 待重启服务后验证
编译状态: ✅ BUILD SUCCESS