xinli/用户导入重复问题说明.md
2025-12-02 15:12:55 +08:00

108 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 用户导入"信息编号已存在"问题说明
## 📋 问题描述
导入 3800 条用户数据时,有 11 条失败,提示"信息编号 XX 已存在"
- 信息编号34, 99, 114, 120, 121, 122, 123, 124 等
## 🔍 问题原因
经过代码分析,"信息编号已存在"有**两种可能**
### 1. Excel 文件内部重复 ⭐ **最可能**
- Excel 文件中有多条记录使用了相同的信息编号
- 第一条记录导入成功
- 第二条相同信息编号的记录尝试导入时,发现数据库中已存在(刚刚导入的那条),导致失败
**示例:**
```
Excel 中:
行100: 信息编号=34, 姓名=张三
行500: 信息编号=34, 姓名=李四 ← 这条会失败,提示"34 已存在"
```
### 2. 数据库中已存在
- 这些信息编号在之前的导入中已经创建过
- 本次导入时没有勾选"是否更新已存在数据",导致失败
## ✅ 已修复内容
### 1. 添加 Excel 内部重复检查
现在导入时会先检查 Excel 文件内部是否有重复的信息编号,提前拦截并给出明确提示。
**修改位置:** `PsyUserProfileServiceImpl.java` 第 529-536 行
```java
// 检查Excel文件内部是否有重复的信息编号
if (infoNumberSet.contains(profile.getInfoNumber())) {
failureMsg.append("、信息编号 ").append(profile.getInfoNumber())
.append(" 在导入文件中重复出现");
continue;
}
```
### 2. 改进错误提示
现在错误提示更清晰,能区分两种情况:
- **Excel 内部重复**`信息编号 XX 在导入文件中重复出现`
- **数据库中已存在**`信息编号 XX 在数据库中已存在(若需更新请勾选"是否更新已存在数据"`
## 🔧 排查方法
### 方法 1运行 SQL 脚本检查
执行 `检查重复信息编号.sql` 脚本,查看:
1. 这些信息编号在数据库中是否真的存在
2. 数据库中是否有其他重复的信息编号
3. 最近导入的记录情况
### 方法 2检查 Excel 文件
在 Excel 中使用以下步骤检查重复:
1. 选中信息编号列
2. 点击"条件格式" → "突出显示单元格规则" → "重复值"
3. Excel 会自动标记重复的信息编号
### 方法 3使用 Excel 公式查找重复
在新列输入公式:
```excel
=COUNTIF($A$2:$A$3801, A2)
```
如果结果 > 1说明该信息编号重复出现。
## 📝 建议
### 给用户的建议
1. **导入前清理 Excel**
- 检查并删除重复的信息编号
- 或修改重复的信息编号,确保唯一性
2. **如果需要更新已存在数据**
- 导入时勾选"是否更新已存在数据"选项
- 系统会自动更新而不是提示失败
3. **使用 SQL 脚本检查**
- 导入前运行 `检查重复信息编号.sql`
- 确认哪些信息编号已在数据库中存在
### 下次导入优化建议
1. ✅ 已添加 Excel 内部重复检查
2. ✅ 已改进错误提示信息
3. 🔄 建议:添加导入预检查功能,在实际导入前先检查并报告所有问题
4. 🔄 建议:提供"忽略重复"选项,跳过重复记录继续导入其他数据
## 🚀 部署说明
修改已完成,需要重新编译后端:
```bash
cd c:\Users\Administrator\Desktop\Project\xinli
mvn clean package -DskipTests
```
重启后端服务后,新的检查逻辑即可生效。
## 📊 问题总结
| 问题类型 | 新错误提示 | 解决方法 |
|---------|-----------|---------|
| Excel 内部重复 | `信息编号 XX 在导入文件中重复出现` | 清理 Excel 中的重复记录 |
| 数据库已存在 | `信息编号 XX 在数据库中已存在(若需更新请勾选"是否更新已存在数据"` | 勾选更新选项,或修改信息编号 |