# 用户档案导入问题修复说明 ## 问题描述 用户在导入用户档案数据时,明明某些用户已被删除(在系统中看不到),但系统仍提示"用户已存在",导致无法正常导入。 ## 问题原因 在 `PsyUserProfileMapper.xml` 中,多个档案查询方法缺少对已删除用户的过滤条件: 1. **`selectProfilesByInfoNumbers`** - 批量查询档案(导入时使用) 2. **`selectProfileByInfoNumber`** - 根据信息编号查询(唯一性验证时使用) 3. **`selectProfileById`** - 根据档案ID查询 4. **`selectProfileByUserId`** - 根据用户ID查询 这些查询没有添加 `u.del_flag = '0'` 过滤条件,导致: - 当用户被删除(`del_flag = '2'`)后,在列表中看不到(列表查询有过滤) - 但导入时仍能查到这些已删除用户的档案(导入查询无过滤) - 系统误判为"用户已存在",拒绝导入 ## 修复内容 ### 1. 修复 `selectProfilesByInfoNumbers`(批量查询) **位置**: `PsyUserProfileMapper.xml` 第279-288行 ```xml ``` ### 2. 修复 `selectProfileByInfoNumber`(单个查询) **位置**: `PsyUserProfileMapper.xml` 第62-68行 ```xml ``` ### 3. 修复 `selectProfileById` **位置**: `PsyUserProfileMapper.xml` 第46-52行 ```xml ``` ### 4. 修复 `selectProfileByUserId` **位置**: `PsyUserProfileMapper.xml` 第54-60行 ```xml ``` ## 修复效果 修复后,系统在以下场景中的行为将更加合理: 1. **导入档案时**: 不会再将已删除用户的档案识别为"已存在",可以正常导入 2. **信息编号唯一性验证**: 不会因已删除用户的旧信息编号而拒绝新用户使用 3. **查询档案**: 所有档案查询统一过滤已删除用户,保持数据一致性 ## 测试建议 ### 测试场景1:导入已删除用户的档案 1. 删除一个有档案的用户(设置 `del_flag = '2'`) 2. 准备Excel文件,包含该用户的信息编号 3. 导入档案数据 4. **预期结果**: 成功导入,系统自动创建新用户 ### 测试场景2:信息编号唯一性 1. 删除用户A(信息编号:001) 2. 创建新档案,使用信息编号:001 3. **预期结果**: 成功创建,不提示"信息编号已存在" ### 测试场景3:正常导入(未删除用户) 1. 准备包含现有用户信息编号的Excel 2. 不勾选"更新已存在数据" 3. 导入档案 4. **预期结果**: 提示"信息编号已存在"(行为不变) ## 影响范围 **修改文件**: - `ry-xinli-system/src/main/resources/mapper/system/psychology/PsyUserProfileMapper.xml` **影响模块**: - 用户档案导入功能 - 用户档案查询功能 - 信息编号唯一性验证 **兼容性**: 完全向后兼容,只是增加了已删除用户的过滤条件 ## 部署说明 1. 更新代码后重新编译项目 2. 重启应用服务器 3. 无需数据库变更 4. 建议清理旧的已删除用户档案数据(可选) --- **修复日期**: 2024年12月2日 **修复人**: Cascade AI Assistant