# 员工信息导入相关接口文档

## 1. 导入员工信息(异步)

**接口地址:** `POST /ccdi/employee/importData`

**权限标识:** `ccdi:employee:import`

**请求参数:**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| file | File | 是 | Excel文件 |
| updateSupport | boolean | 否 | 是否更新已存在的数据,默认false |

**响应示例:**

```json
{
  "code": 200,
  "msg": "导入任务已提交,正在后台处理",
  "data": {
    "taskId": "uuid-string",
    "status": "PROCESSING",
    "message": "导入任务已提交,正在后台处理"
  }
}
```

## 2. 查询导入状态

**接口地址:** `GET /ccdi/employee/importStatus/{taskId}`

**权限标识:** 无

**路径参数:**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| taskId | String | 是 | 任务ID |

**响应示例:**

```json
{
  "code": 200,
  "data": {
    "taskId": "uuid-string",
    "status": "SUCCESS",
    "totalCount": 100,
    "successCount": 95,
    "failureCount": 5,
    "progress": 100,
    "startTime": 1707225600000,
    "endTime": 1707225900000,
    "message": "导入完成"
  }
}
```

**状态说明:**

| 状态值 | 说明 |
|--------|------|
| PROCESSING | 处理中 |
| SUCCESS | 全部成功 |
| PARTIAL_SUCCESS | 部分成功 |
| FAILED | 全部失败 |

## 3. 查询导入失败记录

**接口地址:** `GET /ccdi/employee/importFailures/{taskId}`

**权限标识:** 无

**路径参数:**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| taskId | String | 是 | 任务ID |

**查询参数:**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| pageNum | Integer | 否 | 页码,默认1 |
| pageSize | Integer | 否 | 每页条数,默认10 |

**响应示例:**

```json
{
  "code": 200,
  "rows": [
    {
      "employeeId": "1234567",
      "name": "张三",
      "idCard": "110101199001011234",
      "deptId": 100,
      "phone": "13800138000",
      "status": "0",
      "hireDate": "2020-01-01",
      "errorMessage": "身份证号格式错误"
    }
  ],
  "total": 5
}
```

## 使用流程

1. 前端调用导入接口上传Excel文件
2. 后端立即返回taskId
3. 前端每2秒轮询查询导入状态
4. 导入完成后显示结果
5. 如有失败,显示"查看导入失败记录"按钮
6. 用户点击按钮查看失败记录详情

## 注意事项

1. Redis中存储的导入状态和失败记录保留7天
2. taskId如果过期或不存在,查询接口会返回错误
3. 导入是异步处理,大量数据导入不会阻塞HTTP请求
4. 失败记录只保存失败的数据,成功的数据不会存储
