# 采购交易信息管理 - API接口文档

## 文档信息

- **模块名称**: 采购交易信息管理
- **Controller**: `CcdiPurchaseTransactionController`
- **Base Path**: `/ccdi/purchaseTransaction`
- **Swagger**: http://localhost:8080/swagger-ui/index.html
- **生成时间**: 2026-02-06

---

## 目录

1. [接口列表](#接口列表)
2. [接口详情](#接口详情)
3. [数据模型](#数据模型)
4. [错误码说明](#错误码说明)
5. [接口示例](#接口示例)

---

## 接口列表

| 序号 | 接口名称     | HTTP方法 | 路径                       | 权限标识                            | 说明          |
|----|----------|--------|--------------------------|---------------------------------|-------------|
| 1  | 查询采购交易列表 | GET    | /list                    | ccdi:purchaseTransaction:list   | 分页查询采购交易信息  |
| 2  | 获取采购交易详情 | GET    | /{purchaseId}            | ccdi:purchaseTransaction:query  | 根据ID获取详细信息  |
| 3  | 新增采购交易   | POST   | /                        | ccdi:purchaseTransaction:add    | 新增采购交易记录    |
| 4  | 修改采购交易   | PUT    | /                        | ccdi:purchaseTransaction:edit   | 修改采购交易记录    |
| 5  | 删除采购交易   | DELETE | /{purchaseIds}           | ccdi:purchaseTransaction:remove | 删除采购交易记录    |
| 6  | 导出采购交易   | POST   | /export                  | ccdi:purchaseTransaction:export | 导出Excel文件   |
| 7  | 下载导入模板   | POST   | /importTemplate          | 无                               | 下载带下拉框的模板   |
| 8  | 导入采购交易   | POST   | /importData              | ccdi:purchaseTransaction:import | 异步导入Excel数据 |
| 9  | 查询导入状态   | GET    | /importStatus/{taskId}   | ccdi:purchaseTransaction:import | 查询异步导入进度    |
| 10 | 查询导入失败记录 | GET    | /importFailures/{taskId} | ccdi:purchaseTransaction:import | 查询导入失败详情    |

---

## 接口详情

### 1. 查询采购交易列表

**接口描述**: 分页查询采购交易信息列表，支持多条件查询

**请求方式**: `GET`

**请求路径**: `/ccdi/purchaseTransaction/list`

**权限要求**: `ccdi:purchaseTransaction:list`

**请求参数**:

| 参数名                    | 类型      | 必填 | 说明          | 示例值        |
|------------------------|---------|----|-------------|------------|
| pageNum                | Integer | 否  | 页码，默认1      | 1          |
| pageSize               | Integer | 否  | 每页条数，默认10   | 10         |
| projectName            | String  | 否  | 项目名称（模糊查询）  | 办公设备采购     |
| subjectName            | String  | 否  | 标的物名称（模糊查询） | 电脑         |
| applicantName          | String  | 否  | 申请人姓名（模糊查询） | 张三         |
| params[beginApplyDate] | String  | 否  | 申请日期起始      | 2025-01-01 |
| params[endApplyDate]   | String  | 否  | 申请日期结束      | 2025-12-31 |

**响应示例**:

```json
{
  "code": 200,
  "msg": "查询成功",
  "rows": [
    {
      "purchaseId": "PO20250206001",
      "purchaseCategory": "货物类",
      "projectName": "办公设备采购项目",
      "subjectName": "笔记本电脑",
      "subjectDesc": "高性能办公笔记本",
      "purchaseQty": 50.00,
      "budgetAmount": 500000.00,
      "bidAmount": 450000.00,
      "actualAmount": 455000.00,
      "contractAmount": 450000.00,
      "settlementAmount": 455000.00,
      "purchaseMethod": "公开招标",
      "supplierName": "某某科技有限公司",
      "contactPerson": "李四",
      "contactPhone": "13800138000",
      "supplierUscc": "91110000MA000000XX",
      "supplierBankAccount": "1234567890123456789",
      "applyDate": "2025-01-01",
      "planApproveDate": "2025-01-05",
      "announceDate": "2025-01-10",
      "bidOpenDate": "2025-01-15",
      "contractSignDate": "2025-01-20",
      "expectedDeliveryDate": "2025-02-01",
      "actualDeliveryDate": "2025-02-01",
      "acceptanceDate": "2025-02-05",
      "settlementDate": "2025-02-10",
      "applicantId": "E001001",
      "applicantName": "张三",
      "applyDepartment": "信息技术部",
      "purchaseLeaderId": "E002001",
      "purchaseLeaderName": "王五",
      "purchaseDepartment": "采购部",
      "createTime": "2025-02-06 10:00:00",
      "updateTime": "2025-02-06 10:00:00",
      "createdBy": "admin",
      "updatedBy": "admin"
    }
  ],
  "total": 100
}
```

---

### 2. 获取采购交易详情

**接口描述**: 根据采购事项ID获取详细信息

**请求方式**: `GET`

**请求路径**: `/ccdi/purchaseTransaction/{purchaseId}`

**权限要求**: `ccdi:purchaseTransaction:query`

**路径参数**:

| 参数名        | 类型     | 必填 | 说明     | 示例值           |
|------------|--------|----|--------|---------------|
| purchaseId | String | 是  | 采购事项ID | PO20250206001 |

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "purchaseId": "PO20250206001",
    "purchaseCategory": "货物类",
    "projectName": "办公设备采购项目",
    "subjectName": "笔记本电脑",
    "subjectDesc": "高性能办公笔记本",
    "purchaseQty": 50.00,
    "budgetAmount": 500000.00,
    "bidAmount": 450000.00,
    "actualAmount": 455000.00,
    "contractAmount": 450000.00,
    "settlementAmount": 455000.00,
    "purchaseMethod": "公开招标",
    "supplierName": "某某科技有限公司",
    "contactPerson": "李四",
    "contactPhone": "13800138000",
    "supplierUscc": "91110000MA000000XX",
    "supplierBankAccount": "1234567890123456789",
    "applyDate": "2025-01-01",
    "planApproveDate": "2025-01-05",
    "announceDate": "2025-01-10",
    "bidOpenDate": "2025-01-15",
    "contractSignDate": "2025-01-20",
    "expectedDeliveryDate": "2025-02-01",
    "actualDeliveryDate": "2025-02-01",
    "acceptanceDate": "2025-02-05",
    "settlementDate": "2025-02-10",
    "applicantId": "E001001",
    "applicantName": "张三",
    "applyDepartment": "信息技术部",
    "purchaseLeaderId": "E002001",
    "purchaseLeaderName": "王五",
    "purchaseDepartment": "采购部",
    "createTime": "2025-02-06 10:00:00",
    "updateTime": "2025-02-06 10:00:00",
    "createdBy": "admin",
    "updatedBy": "admin"
  }
}
```

---

### 3. 新增采购交易

**接口描述**: 新增采购交易记录

**请求方式**: `POST`

**请求路径**: `/ccdi/purchaseTransaction`

**权限要求**: `ccdi:purchaseTransaction:add`

**请求头**:

```
Content-Type: application/json
Authorization: Bearer {token}
```

**请求体** (`CcdiPurchaseTransactionAddDTO`):

| 参数名                  | 类型         | 必填 | 说明                   | 示例值                 |
|----------------------|------------|----|----------------------|---------------------|
| purchaseId           | String     | 是  | 采购事项ID（最大32字符）       | PO20250206001       |
| purchaseCategory     | String     | 否  | 采购类别（最大50字符）         | 货物类                 |
| projectName          | String     | 否  | 项目名称（最大200字符）        | 办公设备采购项目            |
| subjectName          | String     | 否  | 标的物名称（最大200字符）       | 笔记本电脑               |
| subjectDesc          | String     | 否  | 标的物描述（最大500字符）       | 高性能办公笔记本            |
| purchaseQty          | BigDecimal | 否  | 采购数量                 | 50.00               |
| budgetAmount         | BigDecimal | 否  | 预算金额                 | 500000.00           |
| bidAmount            | BigDecimal | 否  | 中标金额                 | 450000.00           |
| actualAmount         | BigDecimal | 否  | 实际采购金额               | 455000.00           |
| contractAmount       | BigDecimal | 否  | 合同金额                 | 450000.00           |
| settlementAmount     | BigDecimal | 否  | 结算金额                 | 455000.00           |
| purchaseMethod       | String     | 否  | 采购方式（最大50字符）         | 公开招标                |
| supplierName         | String     | 否  | 供应商名称（最大200字符）       | 某某科技有限公司            |
| supplierUscc         | String     | 否  | 供应商统一信用代码（最大18字符）    | 91110000MA000000XX  |
| contactPerson        | String     | 否  | 供应商联系人（最大50字符）       | 李四                  |
| contactPhone         | String     | 否  | 供应商联系电话（最大20字符）      | 13800138000         |
| supplierBankAccount  | String     | 否  | 供应商银行账户（最大50字符）      | 1234567890123456789 |
| applyDate            | String     | 否  | 采购申请日期（yyyy-MM-dd）   | 2025-01-01          |
| planApproveDate      | String     | 否  | 采购计划批准日期（yyyy-MM-dd） | 2025-01-05          |
| announceDate         | String     | 否  | 采购公告发布日期（yyyy-MM-dd） | 2025-01-10          |
| bidOpenDate          | String     | 否  | 开标日期（yyyy-MM-dd）     | 2025-01-15          |
| contractSignDate     | String     | 否  | 合同签订日期（yyyy-MM-dd）   | 2025-01-20          |
| expectedDeliveryDate | String     | 否  | 预计交货日期（yyyy-MM-dd）   | 2025-02-01          |
| actualDeliveryDate   | String     | 否  | 实际交货日期（yyyy-MM-dd）   | 2025-02-01          |
| acceptanceDate       | String     | 否  | 验收日期（yyyy-MM-dd）     | 2025-02-05          |
| settlementDate       | String     | 否  | 结算日期（yyyy-MM-dd）     | 2025-02-10          |
| applicantId          | String     | 否  | 申请人工号（最大20字符）        | E001001             |
| applicantName        | String     | 否  | 申请人姓名（最大50字符）        | 张三                  |
| applyDepartment      | String     | 否  | 申请部门（最大100字符）        | 信息技术部               |
| purchaseLeaderId     | String     | 否  | 采购负责人工号（最大20字符）      | E002001             |
| purchaseLeaderName   | String     | 否  | 采购负责人姓名（最大50字符）      | 王五                  |
| purchaseDepartment   | String     | 否  | 采购部门（最大100字符）        | 采购部                 |

**请求示例**:

```json
{
  "purchaseId": "PO20250206001",
  "purchaseCategory": "货物类",
  "projectName": "办公设备采购项目",
  "subjectName": "笔记本电脑",
  "subjectDesc": "高性能办公笔记本",
  "purchaseQty": 50.00,
  "budgetAmount": 500000.00,
  "bidAmount": 450000.00,
  "actualAmount": 455000.00,
  "contractAmount": 450000.00,
  "settlementAmount": 455000.00,
  "purchaseMethod": "公开招标",
  "supplierName": "某某科技有限公司",
  "supplierUscc": "91110000MA000000XX",
  "contactPerson": "李四",
  "contactPhone": "13800138000",
  "supplierBankAccount": "1234567890123456789",
  "applyDate": "2025-01-01",
  "planApproveDate": "2025-01-05",
  "announceDate": "2025-01-10",
  "bidOpenDate": "2025-01-15",
  "contractSignDate": "2025-01-20",
  "expectedDeliveryDate": "2025-02-01",
  "actualDeliveryDate": "2025-02-01",
  "acceptanceDate": "2025-02-05",
  "settlementDate": "2025-02-10",
  "applicantId": "E001001",
  "applicantName": "张三",
  "applyDepartment": "信息技术部",
  "purchaseLeaderId": "E002001",
  "purchaseLeaderName": "王五",
  "purchaseDepartment": "采购部"
}
```

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功"
}
```

---

### 4. 修改采购交易

**接口描述**: 修改采购交易记录

**请求方式**: `PUT`

**请求路径**: `/ccdi/purchaseTransaction`

**权限要求**: `ccdi:purchaseTransaction:edit`

**请求头**:

```
Content-Type: application/json
Authorization: Bearer {token}
```

**请求体** (`CcdiPurchaseTransactionEditDTO`):

参数同新增接口，但purchaseId为必填且不可修改。

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功"
}
```

---

### 5. 删除采购交易

**接口描述**: 删除采购交易记录（支持批量删除）

**请求方式**: `DELETE`

**请求路径**: `/ccdi/purchaseTransaction/{purchaseIds}`

**权限要求**: `ccdi:purchaseTransaction:remove`

**路径参数**:

| 参数名         | 类型       | 必填 | 说明               | 示例值                         |
|-------------|----------|----|------------------|-----------------------------|
| purchaseIds | String[] | 是  | 采购事项ID数组，多个用逗号分隔 | PO20250206001,PO20250206002 |

**请求示例**:

```
DELETE /ccdi/purchaseTransaction/PO20250206001,PO20250206002
```

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功"
}
```

---

### 6. 导出采购交易

**接口描述**: 导出采购交易信息到Excel文件

**请求方式**: `POST`

**请求路径**: `/ccdi/purchaseTransaction/export`

**权限要求**: `ccdi:purchaseTransaction:export`

**请求参数**: 同查询接口，支持条件导出

**响应**: Excel文件流

**请求示例**:

```bash
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction/export" \
  -H "Authorization: Bearer {token}" \
  -d "projectName=办公设备&applicantName=张三"
```

---

### 7. 下载导入模板

**接口描述**: 下载带字典下拉框的Excel导入模板

**请求方式**: `POST`

**请求路径**: `/ccdi/purchaseTransaction/importTemplate`

**权限要求**: 无

**响应**: Excel模板文件流（包含数据验证下拉框）

**请求示例**:

```bash
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction/importTemplate" \
  -H "Authorization: Bearer {token}" \
  -o purchase_transaction_template.xlsx
```

---

### 8. 导入采购交易

**接口描述**: 异步导入Excel数据

**请求方式**: `POST`

**请求路径**: `/ccdi/purchaseTransaction/importData?updateSupport={updateSupport}`

**权限要求**: `ccdi:purchaseTransaction:import`

**请求头**:

```
Content-Type: multipart/form-data
Authorization: Bearer {token}
```

**路径参数**:

| 参数名           | 类型      | 必填 | 说明        | 示例值        |
|---------------|---------|----|-----------|------------|
| updateSupport | boolean | 是  | 是否更新已存在数据 | true/false |

**表单参数**:

| 参数名  | 类型   | 必填 | 说明                  |
|------|------|----|---------------------|
| file | File | 是  | Excel文件（.xlsx或.xls） |

**响应示例**:

```json
{
  "code": 200,
  "msg": "导入任务已提交，任务ID：task-20250206-123456789"
}
```

---

### 9. 查询导入状态

**接口描述**: 查询异步导入任务的执行状态

**请求方式**: `GET`

**请求路径**: `/ccdi/purchaseTransaction/importStatus/{taskId}`

**权限要求**: `ccdi:purchaseTransaction:import`

**路径参数**:

| 参数名    | 类型     | 必填 | 说明   | 示例值                     |
|--------|--------|----|------|-------------------------|
| taskId | String | 是  | 任务ID | task-20250206-123456789 |

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": {
    "taskId": "task-20250206-123456789",
    "status": "completed",
    "total": 1000,
    "successCount": 980,
    "failureCount": 20,
    "errorMsg": null
  }
}
```

**状态说明**:

- `pending`: 等待执行
- `running`: 正在执行
- `completed`: 执行完成
- `failed`: 执行失败

---

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

**接口描述**: 查询导入任务中失败的记录详情

**请求方式**: `GET`

**请求路径**: `/ccdi/purchaseTransaction/importFailures/{taskId}`

**权限要求**: `ccdi:purchaseTransaction:import`

**路径参数**:

| 参数名    | 类型     | 必填 | 说明   | 示例值                     |
|--------|--------|----|------|-------------------------|
| taskId | String | 是  | 任务ID | task-20250206-123456789 |

**响应示例**:

```json
{
  "code": 200,
  "msg": "操作成功",
  "data": [
    {
      "purchaseId": "PO20250206001",
      "rowNum": 5,
      "errorMessage": "采购事项ID已存在"
    },
    {
      "purchaseId": "PO20250206002",
      "rowNum": 12,
      "errorMessage": "预算金额格式错误"
    }
  ]
}
```

---

## 数据模型

### CcdiPurchaseTransactionVO (查询返回对象)

采购交易信息的视图对象，用于列表查询和详情展示。

### CcdiPurchaseTransactionAddDTO (新增请求对象)

新增采购交易时的请求参数对象。

### CcdiPurchaseTransactionEditDTO (修改请求对象)

修改采购交易时的请求参数对象。

### CcdiPurchaseTransactionQueryDTO (查询请求对象)

查询条件参数对象。

### CcdiPurchaseTransactionExcel (导入导出对象)

Excel导入导出使用的数据对象，支持字典下拉框。

### ImportStatusVO (导入状态对象)

异步导入任务的状态信息。

| 字段           | 类型      | 说明                                  |
|--------------|---------|-------------------------------------|
| taskId       | String  | 任务ID                                |
| status       | String  | 状态：pending/running/completed/failed |
| total        | Integer | 总记录数                                |
| successCount | Integer | 成功数量                                |
| failureCount | Integer | 失败数量                                |
| errorMsg     | String  | 错误信息（失败时）                           |

### PurchaseTransactionImportFailureVO (导入失败记录对象)

导入失败的记录详情。

| 字段           | 类型      | 说明     |
|--------------|---------|--------|
| purchaseId   | String  | 采购事项ID |
| rowNum       | Integer | 行号     |
| errorMessage | String  | 错误信息   |

---

## 错误码说明

### HTTP状态码

| 状态码 | 说明             |
|-----|----------------|
| 200 | 请求成功           |
| 401 | 未授权，token无效或过期 |
| 403 | 无权限访问          |
| 404 | 资源不存在          |
| 500 | 服务器内部错误        |

### 业务错误码

| code | msg   | 说明          |
|------|-------|-------------|
| 200  | 操作成功  | 请求成功处理      |
| 500  | 操作失败  | 服务器处理失败     |
| 401  | 请先登录  | 未登录或token过期 |
| 403  | 无权限访问 | 权限不足        |

---

## 接口示例

### 1. 完整的CRUD流程

```bash
# 1. 登录获取token
TOKEN=$(curl -s -X POST "http://localhost:8080/login/test" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}' \
  | jq -r '.token')

# 2. 查询列表
curl -X GET "http://localhost:8080/ccdi/purchaseTransaction/list?pageNum=1&pageSize=10" \
  -H "Authorization: Bearer $TOKEN"

# 3. 新增记录
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "purchaseId": "PO20250206001",
    "projectName": "办公设备采购项目",
    "subjectName": "笔记本电脑",
    "budgetAmount": 500000.00
  }'

# 4. 获取详情
curl -X GET "http://localhost:8080/ccdi/purchaseTransaction/PO20250206001" \
  -H "Authorization: Bearer $TOKEN"

# 5. 修改记录
curl -X PUT "http://localhost:8080/ccdi/purchaseTransaction" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "purchaseId": "PO20250206001",
    "projectName": "办公设备采购项目（修改）",
    "subjectName": "笔记本电脑",
    "budgetAmount": 550000.00
  }'

# 6. 删除记录
curl -X DELETE "http://localhost:8080/ccdi/purchaseTransaction/PO20250206001" \
  -H "Authorization: Bearer $TOKEN"
```

### 2. 导入导出流程

```bash
# 1. 下载模板
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction/importTemplate" \
  -H "Authorization: Bearer $TOKEN" \
  -o template.xlsx

# 2. 填写数据后导入
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction/importData?updateSupport=false" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@data.xlsx"

# 响应: {"code":200,"msg":"导入任务已提交，任务ID：task-xxx"}

# 3. 查询导入状态
curl -X GET "http://localhost:8080/ccdi/purchaseTransaction/importStatus/task-xxx" \
  -H "Authorization: Bearer $TOKEN"

# 4. 如果有失败，查询失败记录
curl -X GET "http://localhost:8080/ccdi/purchaseTransaction/importFailures/task-xxx" \
  -H "Authorization: Bearer $TOKEN"

# 5. 导出数据
curl -X POST "http://localhost:8080/ccdi/purchaseTransaction/export" \
  -H "Authorization: Bearer $TOKEN" \
  -d "projectName=办公设备" \
  -o export_data.xlsx
```

### 3. Postman测试步骤

1. **创建环境变量**:
    - `base_url`: http://localhost:8080
    - `token`: (登录后获取)

2. **创建Pre-request Script**:

```javascript
// 自动设置token
if (!pm.environment.get("token")) {
  const loginRequest = {
    url: pm.environment.get("base_url") + "/login/test",
    method: "POST",
    header: {"Content-Type": "application/json"},
    body: {
      mode: "raw",
      raw: JSON.stringify({username: "admin", password: "admin123"})
    }
  };
  pm.sendRequest(loginRequest, (err, res) => {
    pm.environment.set("token", res.json().token);
  });
}
```

3. **设置Authorization**:
    - Type: Bearer Token
    - Token: `{{token}}`

4. **执行测试**:
    - 按接口顺序执行
    - 查看响应结果
    - 验证数据正确性

---

## 附录

### A. 数据库表结构

表名: `ccdi_purchase_transaction`

| 字段名                    | 类型            | 说明        | 备注   |
|------------------------|---------------|-----------|------|
| purchase_id            | varchar(32)   | 采购事项ID    | 主键   |
| purchase_category      | varchar(50)   | 采购类别      |      |
| project_name           | varchar(200)  | 项目名称      |      |
| subject_name           | varchar(200)  | 标的物名称     |      |
| subject_desc           | varchar(500)  | 标的物描述     |      |
| purchase_qty           | decimal(10,2) | 采购数量      |      |
| budget_amount          | decimal(15,2) | 预算金额      |      |
| bid_amount             | decimal(15,2) | 中标金额      |      |
| actual_amount          | decimal(15,2) | 实际采购金额    |      |
| contract_amount        | decimal(15,2) | 合同金额      |      |
| settlement_amount      | decimal(15,2) | 结算金额      |      |
| purchase_method        | varchar(50)   | 采购方式      |      |
| supplier_name          | varchar(200)  | 中标供应商名称   |      |
| contact_person         | varchar(50)   | 供应商联系人    |      |
| contact_phone          | varchar(20)   | 供应商联系电话   |      |
| supplier_uscc          | varchar(18)   | 供应商统一信用代码 |      |
| supplier_bank_account  | varchar(50)   | 供应商银行账户   |      |
| apply_date             | date          | 采购申请日期    |      |
| plan_approve_date      | date          | 采购计划批准日期  |      |
| announce_date          | date          | 采购公告发布日期  |      |
| bid_open_date          | date          | 开标日期      |      |
| contract_sign_date     | date          | 合同签订日期    |      |
| expected_delivery_date | date          | 预计交货日期    |      |
| actual_delivery_date   | date          | 实际交货日期    |      |
| acceptance_date        | date          | 验收日期      |      |
| settlement_date        | date          | 结算日期      |      |
| applicant_id           | varchar(20)   | 申请人工号     |      |
| applicant_name         | varchar(50)   | 申请人姓名     |      |
| apply_department       | varchar(100)  | 申请部门      |      |
| purchase_leader_id     | varchar(20)   | 采购负责人工号   |      |
| purchase_leader_name   | varchar(50)   | 采购负责人姓名   |      |
| purchase_department    | varchar(100)  | 采购部门      |      |
| create_time            | datetime      | 创建时间      | 自动填充 |
| update_time            | datetime      | 更新时间      | 自动填充 |
| created_by             | varchar(64)   | 创建人       | 自动填充 |
| updated_by             | varchar(64)   | 更新人       | 自动填充 |

### B. 菜单权限配置

执行以下SQL配置菜单权限：

```sql
-- 文件路径: sql/ccdi_purchase_transaction_menu.sql
-- 执行此文件以配置菜单和权限
source sql/ccdi_purchase_transaction_menu.sql;
```

### C. 前端API文件

前端API定义文件: `ruoyi-ui/src/api/ccdiPurchaseTransaction.js`

---

## 导入功能交互说明

### 前端交互流程

1. **上传文件**
    - 用户点击"导入"按钮
    - 选择Excel文件
    - 点击"确定"上传
    - **导入对话框立即关闭**

2. **后台处理**
    - 右上角显示通知:"导入任务已提交,正在后台处理中,处理完成后将通知您"
    - 系统每2秒轮询一次导入状态

3. **导入完成**
    - 全部成功:显示绿色通知"导入完成!全部成功!共导入N条数据"
    - 部分失败:显示橙色通知"导入完成!成功N条,失败M条"
    - 如果有失败记录,操作栏显示"查看导入失败记录"按钮

4. **查看失败记录**
    - 点击"查看导入失败记录"按钮
    - 打开对话框显示分页的失败记录
    - 包含字段:采购事项ID、项目名称、标的物名称、失败原因
    - 支持清除历史记录

### 状态持久化

- 导入状态保存在localStorage中
- 刷新页面后仍可查看上次导入结果
- 状态保留7天,过期自动清除

### 与员工信息导入的对比

采购交易导入完全复用了员工信息导入的逻辑,两者的交互方式完全一致。

---

## 版本历史

| 版本    | 日期         | 说明              | 作者    |
|-------|------------|-----------------|-------|
| 1.0.0 | 2026-02-06 | 初始版本，采购交易信息管理接口 | ruoyi |
| 1.1.0 | 2026-02-08 | 添加导入功能交互说明      | ruoyi |

---

## 联系方式

如有问题，请联系开发团队。
