# 考勤排班规则/合规规则接口文档

本文档覆盖 HRO 管理后台排班规则和合规规则相关接口，对应页面：

```text
/dhr/attendancePro/admin/pc/home.html#/scheduleRuleGroup
/dhr/attendancePro/admin/pc/home.html#/complianceRule
```

## 基本信息

本地服务地址：

```text
http://127.0.0.1:8080
```

除 `/api/auth/login` 外，接口需要携带 Bearer Token：

```http
Authorization: Bearer <token>
```

当前排班规则和合规规则数据为内存数据，服务重启后恢复默认值。

## 通用响应

EHR 旧接口响应：

```json
{
  "code": 0,
  "costTimes": 0,
  "data": {},
  "message": "请求成功"
}
```

## 公共接口（复用已有模块）

以下接口由登录鉴权、加班规则等模块提供，排班规则/合规规则页面可复用：

| 接口 | 说明 |
|------|------|
| `GET /n/oursContext?routerUrl=...` | 页面上下文 |
| `GET /home.do?method=getPortalColor` | 主题色 |
| `POST /dhr/admin/atd/common/generateCode` | 生成编码 |
| `GET /dhr/user/selectPerson/init` | 组织选择初始化 |
| `POST /dhr/user/selectPerson/getOrg` | 获取组织树 |

公共接口文档详见 [登录鉴权](../auth/api.md)、[加班规则](overtime-api.md)。

---

## 排班规则 classTemplate

### 列表

```http
POST /dhr/admin/atd/classTemplate/list
```

请求体：

```json
{
  "pageIndex": 1,
  "pageSize": 20,
  "queryParam": [
    {
      "expression": "like",
      "field": "name",
      "value": "排班"
    },
    {
      "expression": "in",
      "field": "state",
      "value": "0"
    }
  ],
  "sortFields": []
}
```

默认数据（2 条启用排班规则）：

| 字段 | 多排班 | 生产班组排班 |
|------|--------|------------|
| `id` | `6450849472663604448` | `7249540276522997896` |
| `code` | `6450849472663604448` | `7249540276522997896` |
| `prefix` | `AFA` | `AFA` |
| `name` | `多排班` | `生产班组排班` |
| `mgrOrgName` | （空） | `瑞鹤医疗测试` |
| `sourceType` | `预置` | `预置` |
| `state` | `0`（启用） | `0`（启用） |

列表行字段：`id`, `code`, `prefix`, `name`, `mgrOrgId`, `mgrOrgName`, `mgrOrgType`, `description`, `state`, `sourceType`, `sourceTypeName`, `multipleClass`, `classDayLine`, `classComplianceTemplateId`, `classComplianceTemplateName`。

### 新增

```http
POST /dhr/admin/atd/classTemplate/save
```

请求体（与录制一致）：

```json
{
  "classComplianceTemplateId": "",
  "classComplianceTemplateName": "",
  "classDayLine": 0,
  "code": "6105207492683487001",
  "mgrOrg": [
    {
      "allowSelected": true,
      "deptState": 0,
      "group": false,
      "id": "9017397430310779030",
      "level": 2,
      "name": "瑞鹤医疗测试",
      "orgId": "9017397430310779028",
      "orgName": "河北瑞鹤医疗器械有限公司",
      "parentId": "9017397430310779028",
      "typeFlag": "company",
      "virtualOrg": false
    }
  ],
  "mgrOrgId": "9017397430310779030",
  "mgrOrgName": "瑞鹤医疗测试",
  "mgrOrgType": "company",
  "multipleClass": 0,
  "name": "新排班规则",
  "prefix": "AFA",
  "state": 0
}
```

默认值：`prefix=AFA`, `state=0`, `multipleClass=0`, `classDayLine=0`。新建记录 `sourceType` 为 `custom`, `sourceTypeName` 为 `自定义`。

支持的字段：`classComplianceTemplateId`, `classComplianceTemplateName`, `classDayLine`, `code`, `mgrOrg`, `mgrOrgId`, `mgrOrgName`, `mgrOrgType`, `multipleClass`, `name`, `prefix`, `state`, `sourceType`, `sourceTypeName`, `description`。

### 更新

```http
POST /dhr/admin/atd/classTemplate/update
```

按 `id` 覆盖记录，保留传入的 `sourceType` / `sourceTypeName`；未传时保留原值或默认自定义。

### 删除

```http
POST /dhr/admin/atd/classTemplate/delete
```

请求体：

```json
{
  "eids": [null],
  "ids": ["6450849472663604448"]
}
```

删除忽略 `eids`，仅按 `ids` 删除。响应 `data: true`。

---

## 合规规则 classComplianceTemplate

### 初始化

```http
POST /dhr/admin/atd/classComplianceTemplate/index
```

响应字段：

```json
{
  "code": 0,
  "data": {
    "prefix": "AFB",
    "calendarWeeks": [
      {"id": "MONDAY", "value": "MONDAY", "display": "周一"},
      {"id": "SUNDAY", "value": "SUNDAY", "display": "周日"}
    ],
    "classComplianceMonthCycleTypes": [
      {"id": "naturalMonth", "value": "naturalMonth", "display": "自然月"},
      {"id": "attendanceCycle", "value": "attendanceCycle", "display": "考勤周期"}
    ]
  }
}
```

### 列表

```http
POST /dhr/admin/atd/classComplianceTemplate/list
```

请求体与分页查询一致。初始列表为空。

列表行字段：`id`, `code`, `prefix`, `name`, `description`, `state`, `sourceType`, `sourceTypeName`, `limitDay`, `limitDayHoliday`, `limitDayRestDay`, `limitDayWorkDay`, `limitWeek`, `limitWeekStart`, `limitWeekTotal`, `limitMonth`, `limitMonthCycleType`, `limitMonthTotal`。

### 新增

```http
POST /dhr/admin/atd/classComplianceTemplate/save
```

请求体：

```json
{
  "code": "6105207492683487002",
  "name": "新合规规则",
  "prefix": "AFB",
  "state": 0,
  "limitDay": 0,
  "limitDayHoliday": 0,
  "limitDayRestDay": 0,
  "limitDayWorkDay": 0,
  "limitWeek": 0,
  "limitWeekStart": "MONDAY",
  "limitWeekTotal": 0,
  "limitMonth": 0,
  "limitMonthCycleType": "naturalMonth",
  "limitMonthTotal": 0,
  "sourceType": "custom",
  "sourceTypeName": "自定义",
  "description": ""
}
```

默认值：`prefix=AFB`, `state=0`, `sourceType=custom`, `sourceTypeName=自定义`, `limitDay=0`, `limitWeek=0`, `limitMonth=0`, `limitWeekStart=MONDAY`, `limitMonthCycleType=naturalMonth`。

支持的字段：`code`, `name`, `prefix`, `state`, `limitDay`, `limitDayHoliday`, `limitDayRestDay`, `limitDayWorkDay`, `limitWeek`, `limitWeekStart`, `limitWeekTotal`, `limitMonth`, `limitMonthCycleType`, `limitMonthTotal`, `sourceType`, `sourceTypeName`, `description`。

### 更新

```http
POST /dhr/admin/atd/classComplianceTemplate/update
```

按 `id` 覆盖记录。

### 删除

```http
POST /dhr/admin/atd/classComplianceTemplate/delete
```

删除忽略 `eids`，仅按 `ids` 删除。响应 `data: true`。
