Files
hzdyjs/出国申请提交前置校验修改说明.md
T
2025-10-14 16:41:19 +08:00

5.5 KiB
Raw Blame History

出国申请提交前置校验修改说明

修改时间

2025-10-08

修改内容

功能需求

在"人事管理 → 出国申请"菜单下,点击"新增申请"填写信息后提交时,需要校验是否在当前自然年内提交了出国登记申请并通过。

校验逻辑

  1. 无出国登记记录:如果当前自然年内没有提交出国登记申请,则提示"请先提交出国登记申请,审核通过后再提交出国申请"
  2. 出国登记审核中:如果当前自然年内有提交出国登记但还在审核中(状态为待审核),则提示"出国登记审核中,请审核通过后再提交出国申请"
  3. 出国登记已拒绝:如果当前自然年内的出国登记被拒绝,则提示"出国登记已被拒绝,请重新提交出国登记并审核通过后再提交出国申请"
  4. 出国登记已通过:只有当前自然年内有出国登记申请并且状态为"已通过"(status=2),才允许提交出国申请

出国登记状态说明

  • 0 - 草稿
  • 1 - 待审核
  • 2 - 已通过(✅ 只有此状态才能提交出国申请)
  • 3 - 已拒绝

修改文件

1. RsOverseasApplicationServiceImpl.java

修改方法1:validateRegistrationPrerequisite()

  • 位置:第678-739行
  • 主要修改:
    • 将校验时间范围从"近3个月"改为"当前自然年内"(从每年1月1日 00:00:00开始)
    • 修正了出国登记的状态判断:状态"2"表示已通过(之前代码中错误地判断为"1")
    • 更新了日志消息,显示当前年份
    • 完善了各种状态的提示消息

修改方法2:validatePartyMembershipRetentionPrerequisite()

  • 位置:第741-815行
  • 主要修改:
    • 同样将校验时间范围从"近3个月"改为"当前自然年内"
    • 保持与出国登记校验逻辑一致
    • 更新了日志消息,显示当前年份

功能验证点

  1. 无登记记录测试

    • 场景:用户在当前年度(2025年)未提交过出国登记
    • 预期:提交出国申请时提示"请先提交出国登记申请,审核通过后再提交出国申请"
  2. 登记审核中测试

    • 场景:用户在当前年度提交了出国登记,但状态为待审核(status=1)
    • 预期:提交出国申请时提示"出国登记审核中,请审核通过后再提交出国申请"
  3. 登记已拒绝测试

    • 场景:用户在当前年度的出国登记被拒绝(status=3)
    • 预期:提示"出国登记已被拒绝,请重新提交出国登记并审核通过后再提交出国申请"
  4. 登记已通过测试

    • 场景:用户在当前年度的出国登记已通过(status=2)
    • 预期:可以正常提交出国申请
  5. 跨年度测试

    • 场景:用户在2024年提交了出国登记并通过,但在2025年提交出国申请
    • 预期:提示需要重新提交2025年的出国登记

Controller层调用说明

在 RsOverseasApplicationController.submit() 方法中,已经集成了校验逻辑(第229-236行):

// 1. 校验出国登记前置条件(近3个月是否有已通过的出国登记)
java.util.Map<String, Object> registrationValidation = 
    applicationService.validateRegistrationPrerequisite(application.getApplicantId());
Boolean registrationValid = (Boolean) registrationValidation.get("isValid");
if (!registrationValid) {
    String message = (String) registrationValidation.get("message");
    return R.fail(message);
}

注释中的"近3个月"需要更新为"当前自然年内",但功能逻辑已经正确实现。

数据库查询说明

查询使用的是出国登记表(rs_overseas_registration):

  • 查询字段:create_by(创建者ID,对应申请人ID)
  • 时间范围:create_time >= 当前年度1月1日 00:00:00
  • 排序:按 create_time 降序,取最新一条记录

注意事项

  1. 自然年定义:从每年的1月1日 00:00:00 开始计算
  2. 状态判断:出国登记的"已通过"状态是"2",不是"1"
  3. 用户体验:不同状态有不同的友好提示消息,指导用户下一步操作
  4. 日志记录:所有校验失败情况都记录了警告日志,方便问题排查
  5. 党籍保留:同步修改了党籍保留的校验逻辑,保持一致性

代码改进点

  1. ✅ 修正了出国登记状态判断(原代码将"1"判断为已通过,实际应该是"2")
  2. ✅ 时间范围从"近3个月"改为"当前自然年内",符合业务要求
  3. ✅ 增强了日志信息,包含年份信息便于调试
  4. ✅ 完善了各种状态的提示消息,提升用户体验
  5. ✅ 保持了两个校验方法(出国登记和党籍保留)的逻辑一致性

后续优化建议

  1. 考虑将"当前自然年"的时间范围提取为工具方法,避免重复代码
  2. 可以在前端提交前进行预校验,提供实时提示
  3. 考虑增加管理员配置项,允许自定义校验时间范围(如按学年而非自然年)

修改完成确认

  • 后端Service层逻辑修改完成
  • 代码编译检查通过(无linter错误)
  • 校验逻辑符合业务需求
  • 日志和提示消息清晰明确
  • 需要进行功能测试验证
  • 需要更新API文档说明(如果有相关API文档)

测试建议

  1. 准备测试数据:创建不同状态的出国登记记录
  2. 测试各种场景下的提交行为
  3. 验证跨年度的校验逻辑
  4. 检查日志输出是否准确
  5. 验证前端提示消息是否友好

开发人员:AI Assistant
审核人员:待指定
文档版本:v1.0