# MES API 接口文档: {{Entity}}

> 模块: {{module}} | 实体: {{Entity}} | 基础路径: `/{{entity}}`
> 响应格式: `ResponseWrapper<T>` | 分页格式: `PageForm<T>`

---

## 接口概览

| Method | Path | 描述 | 认证 |
|--------|------|------|------|
| POST | `/{{entity}}/search` | 分页查询 | 需要 |
| GET | `/{{entity}}/get/{id}` | 详情查询 | 需要 |
| POST | `/{{entity}}/add` | 新增 | 需要 |
| PUT | `/{{entity}}/update` | 修改 | 需要 |
| DELETE | `/{{entity}}/delete` | 批量删除 | 需要 |
| POST | `/{{entity}}/list` | 不分页列表 | 需要 |
| POST | `/{{entity}}/export` | Excel 导出 | 需要 |

---

## 1. 分页查询

**请求**: `POST /{{entity}}/search`

**请求体** (`PageForm<{{Entity}}>`):
```json
{
  "size": 20,
  "current": 1,
  "condition": {
    "isEffect": 1
  }
}
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| size | number | 否 | 每页条数，默认 20 |
| current | number | 否 | 页码，默认 1 |
| condition | object | 否 | 查询条件（实体字段） |

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "records": [
      {
        "id": "1234567890123456789",
        "isEffect": 1,
        "createdBy": "admin",
        "createdDate": "2025/01/01 00:00:00",
        "lastUpdatedBy": "admin",
        "lastUpdatedDate": "2025/01/01 00:00:00"
      }
    ],
    "total": 100,
    "size": 20,
    "current": 1
  }
}
```

> **注意**: id 为 Long 类型，序列化为字符串（`@JsonSerialize(using = ToStringSerializer.class)`）避免 JS 精度丢失。

---

## 2. 详情查询

**请求**: `GET /{{entity}}/get/{id}`

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| id | number | 是 | 记录 ID（路径参数） |

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "id": "1234567890123456789",
    "isEffect": 1,
    "createdBy": "admin",
    "createdDate": "2025/01/01 00:00:00",
    "lastUpdatedBy": "admin",
    "lastUpdatedDate": "2025/01/01 00:00:00"
  }
}
```

---

## 3. 新增

**请求**: `POST /{{entity}}/add`

**请求体**:
```json
{
  "isEffect": 1
}
```

> id、createdBy、createdDate、lastUpdatedBy、lastUpdatedDate 由系统自动填充，无需传入。

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": null
}
```

---

## 4. 修改

**请求**: `PUT /{{entity}}/update`

**请求体**:
```json
{
  "id": "1234567890123456789",
  "isEffect": 1
}
```

> lastUpdatedBy、lastUpdatedDate 由系统自动更新。

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": null
}
```

---

## 5. 批量删除

**请求**: `DELETE /{{entity}}/delete`

**请求体**:
```json
[1, 2, 3]
```

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| body | Long[] | 是 | 待删除记录 ID 数组 |

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": null
}
```

---

## 6. 不分页列表

**请求**: `POST /{{entity}}/list`

**请求体**:
```json
{
  "isEffect": 1
}
```

**响应示例**:
```json
{
  "code": 200,
  "message": "操作成功",
  "data": [
    { "id": "1234567890123456789", "isEffect": 1 }
  ]
}
```

> 默认限制最多返回 10000 条（可通过 entity.rowNum 覆盖）。

---

## 7. Excel 导出

**请求**: `POST /{{entity}}/export`

**请求体**: 同查询条件（实体字段）

**响应**: Excel 文件流（`application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`）

---

## 通用错误码（HttpStatus 枚举）

| 错误码 | 常量名 | 说明 |
|--------|--------|------|
| 200 | SUCCESS | 操作成功 |
| 600 | ERROR | 系统错误 |
| 601 | UNAUTHORIZED | 未认证 |
| 608 | PARAM_NULL | 参数为空 |
| 620 | OBJECT_EXIST | 对象已存在 |
| 621 | OBJECT_INSERT_FAIL | 新增失败 |
| 622 | OBJECT_UPDATE_FAIL | 修改失败 |
| 623 | OBJECT_DELETE_FAIL | 删除失败 |
| 634 | OBJECT_NOT_EXIST | 对象不存在 |

**错误响应格式**:
```json
{
  "code": 621,
  "message": "新增失败",
  "data": null
}
```

---

## ResponseWrapper 结构

```java
{
  "code": 200,          // int — HttpStatus 枚举值
  "message": "操作成功", // String — 提示信息
  "data": T              // 泛型 — 业务数据
}
```
