Files
hzdyjs/docs/变更管理/code-adjust-record-2025-07-20-招生流程待处理数据修复.md
T
2025-07-23 15:20:48 +08:00

4.6 KiB
Raw Blame History

招生流程状态模块待处理数据显示修复记录

📋 变更信息

项目 信息
变更日期 2025-07-20
变更时间 16:05:00
变更人员 Cursor AI
变更类型 问题修复
影响模块 招生迎新管理系统 - 录取流程状态管理

🐛 问题描述

问题现象: zhanglaoshi账号登录系统后,在流程状态模块里看不到有待处理的数据

问题分析:

  1. 数据库中存在流程数据,但current_handler字段为NULL
  2. 后端/pending接口逻辑不完善,没有正确查询待处理数据
  3. 查询条件过于严格,只查询分配给当前用户的流程

🔧 解决方案

1. 数据修复

-- 为现有待审核流程分配处理人
UPDATE zsjy_enrollment_process 
SET current_handler = 9001,  -- zhanglaoshi的用户ID
    current_handler_name = '张老师',
    update_time = NOW()
WHERE current_status = '0' 
  AND info_audit_status = '0'
  AND deleted = 0;

2. 后端代码修复

2.1 新增专门的待处理查询方法

文件: ZsjyEnrollmentProcessServiceImpl.java

/**
 * 查询当前用户的待处理流程列表
 */
@Override
public TableDataInfo<ZsjyEnrollmentProcessVo> queryPendingList(ZsjyEnrollmentProcessBo bo, PageQuery pageQuery) {
    LambdaQueryWrapper<ZsjyEnrollmentProcess> lqw = buildQueryWrapper(bo);
    
    // 获取当前用户ID
    Long currentUserId = LoginHelper.getUserId();
    
    // 查询条件:
    // 1. 当前处理人是当前用户
    // 2. 或者是未分配处理人的待审核流程(状态为0且info_audit_status为0)
    // 3. 排除已完成(4)和已驳回(9)的流程
    lqw.and(wrapper -> wrapper
        .eq(ZsjyEnrollmentProcess::getCurrentHandler, currentUserId)
        .or(subWrapper -> subWrapper
            .isNull(ZsjyEnrollmentProcess::getCurrentHandler)
            .eq(ZsjyEnrollmentProcess::getCurrentStatus, "0")
            .eq(ZsjyEnrollmentProcess::getInfoAuditStatus, "0")
        )
    );
    
    // 排除已完成和已驳回的流程
    lqw.notIn(ZsjyEnrollmentProcess::getCurrentStatus, "4", "9");
    
    Page<ZsjyEnrollmentProcessVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
    return TableDataInfo.build(result);
}

2.2 接口声明

文件: IZsjyEnrollmentProcessService.java

/**
 * 查询当前用户的待处理流程列表
 */
TableDataInfo<ZsjyEnrollmentProcessVo> queryPendingList(ZsjyEnrollmentProcessBo bo, PageQuery pageQuery);

2.3 控制器修改

文件: ZsjyEnrollmentProcessController.java

@GetMapping("/pending")
public TableDataInfo<ZsjyEnrollmentProcessVo> getPendingList(ZsjyEnrollmentProcessBo bo, PageQuery pageQuery) {
    // 查询当前用户的待处理流程
    return enrollmentProcessService.queryPendingList(bo, pageQuery);
}

3. 测试数据创建

-- 创建多种状态的测试数据
INSERT INTO zsjy_enrollment_process (...) VALUES 
(1946510098494091302, 1003, '王五', '110101200601010003', '0', '0', '0', '0', 0, 9001, '张老师', ...),
(1946510098494091303, 1004, '李六', '120101200701010004', '1', '1', '0', '0', 0, 9002, '李老师', ...),
(1946510098494091304, 1005, '陈七', '130101200801010005', '2', '1', '1', '0', 0, 9001, '张老师', ...);

📊 修复结果

数据统计

  • 总流程数: 5条
  • zhanglaoshi待处理: 4条(3条状态0 + 1条状态2)
  • lililaoshi待处理: 1条(状态1)

流程状态分布

状态 状态名称 数量 处理人
0 待审核 3条 张老师
1 信息审核中 1条 李老师
2 录取处理中 1条 张老师

✅ 验证方法

  1. zhanglaoshi登录: 应该能看到4条待处理数据
  2. lililaoshi登录: 应该能看到1条待处理数据
  3. API测试: /zsjy/enrollment/process/pending 接口正常返回数据

🔄 后续优化建议

  1. 自动分配处理人: 新建流程时根据角色自动分配处理人
  2. 权限细化: 不同角色看到不同阶段的流程
  3. 流程流转: 实现状态流转时自动更改处理人
  4. 通知机制: 流程分配时发送通知给处理人

📝 技术要点

  1. MyBatis-Plus查询: 使用复杂的and和or条件组合
  2. 用户上下文: 通过LoginHelper.getUserId()获取当前用户
  3. 业务逻辑: 区分已分配和未分配的待处理流程
  4. 数据完整性: 确保处理人信息的一致性

修复完成时间: 2025-07-20 16:05:00
测试状态: 已通过基础功能测试
影响范围: 招生管理员和审核员的待处理数据查看功能