# 考勤每日汇总规则接口文档

本文档覆盖 HRO 管理后台每日汇总规则相关接口，对应页面：

```text
/dhr/attendancePro/admin/pc/home.html#/dailySummaryRule
```

## 基本信息

本地服务地址：

```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)。

---

## 每日汇总规则 dataDayTemplate

### 初始化

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

返回前缀和规则设置需要的选项数据：

```json
{
  "code": 0,
  "data": {
    "prefix": "AZ",
    "workDaysRules": [
      {"id": "classAndCheck", "value": "classAndCheck", "display": "按班次和打卡时间"},
      {"id": "class", "value": "class", "display": "按班次"},
      {"id": "check", "value": "check", "display": "按打卡时间"}
    ],
    "workTimesRules": [
      {"id": "sumCheckTime", "value": "sumCheckTime", "display": "合并按打卡时间汇总"},
      {"id": "smart", "value": "smart", "display": "智能识别"}
    ],
    "baseWorkDaysRules": [
      {"id": "byClass", "value": "byClass", "display": "按班次时间"},
      {"id": "byCheck", "value": "byCheck", "display": "按打卡时间"}
    ],
    "baseWorkTimesRules": [
      {"id": "byClass", "value": "byClass", "display": "按班次时间"},
      {"id": "byCheck", "value": "byCheck", "display": "按打卡时间"}
    ],
    "baseWorkTimesRuleScales": [
      {"id": "1", "value": "1", "display": "1"},
      {"id": "5", "value": "5", "display": "5"},
      {"id": "10", "value": "10", "display": "10"},
      {"id": "15", "value": "15", "display": "15"},
      {"id": "30", "value": "30", "display": "30"}
    ],
    "startTimeNotCounts": [
      {"id": "onWork", "value": "onWork", "display": "上班不计"},
      {"id": "offWork", "value": "offWork", "display": "下班不计"},
      {"id": "none", "value": "none", "display": "都计算"}
    ],
    "endTimeNotCounts": [
      {"id": "onWork", "value": "onWork", "display": "上班不计"},
      {"id": "offWork", "value": "offWork", "display": "下班不计"},
      {"id": "none", "value": "none", "display": "都计算"}
    ],
    "workTimeNeedCount": [
      {"id": "onWork", "value": "onWork", "display": "上班不计"},
      {"id": "offWork", "value": "offWork", "display": "下班不计"},
      {"id": "none", "value": "none", "display": "都计算"}
    ],
    "includeHolidays": [
      {"id": "0", "value": "0", "display": "不纳入"},
      {"id": "1", "value": "1", "display": "纳入"}
    ],
    "includeNoPayLeaves": [
      {"id": "0", "value": "0", "display": "不纳入"},
      {"id": "1", "value": "1", "display": "纳入"}
    ],
    "includePayLeaves": [
      {"id": "0", "value": "0", "display": "不纳入"},
      {"id": "1", "value": "1", "display": "纳入"}
    ]
  }
}
```

### 列表

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

请求体：

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

默认数据（1 条预置每日汇总规则）：

| 字段 | 值 |
|------|-----|
| `id` | `7327471073147902139` |
| `code` | `7327471073147902139` |
| `prefix` | `AZ` |
| `name` | `默认每日汇总规则` |
| `mgrOrgName` | `津冀大区-李璨` |
| `sourceType` | `预置` |
| `sourceTypeName` | `预置` |
| `state` | `0`（启用） |
| `baseWorkDaysRule` | `byClass` |
| `baseWorkTimesRule` | `byClass` |
| `baseWorkTimesRuleScale` | `1` |
| `workDaysRule` | `classAndCheck` |
| `workTimesRule` | `sumCheckTime` |
| `startTimeNotCount` | `onWork` |
| `endTimeNotCount` | `onWork` |

列表行字段：`id`, `code`, `prefix`, `name`, `mgrOrgId`, `mgrOrgName`, `mgrOrgType`, `description`, `state`, `sourceType`, `sourceTypeName`, `baseWorkDaysRule`, `baseWorkTimesRule`, `baseWorkTimesRuleScale`, `workDaysRule`, `workTimesRule`, `startTimeNotCount`, `endTimeNotCount`, `includeHoliday`, `includeNoPayLeave`, `includePayLeave`。

### 新增

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

请求体（与录制一致）：

```json
{
  "baseWorkDaysRule": "byClass",
  "baseWorkTimesRule": "byClass",
  "baseWorkTimesRuleScale": 1,
  "code": "",
  "endTimeNotCount": "onWork",
  "includeHoliday": 0,
  "includeNoPayLeave": 0,
  "includePayLeave": 0,
  "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",
  "name": "新每日汇总规则",
  "prefix": "AZ",
  "sourceType": "",
  "sourceTypeName": "",
  "startTimeNotCount": "onWork",
  "state": 0,
  "workDaysRule": "classAndCheck",
  "workTimesRule": "sumCheckTime",
  "description": "备注信息"
}
```

默认值：`prefix=AZ`, `baseWorkDaysRule=byClass`, `baseWorkTimesRule=byClass`, `baseWorkTimesRuleScale=1`, `workDaysRule=classAndCheck`, `workTimesRule=sumCheckTime`, `startTimeNotCount=onWork`, `endTimeNotCount=onWork`, `includeHoliday=0`, `includeNoPayLeave=0`, `includePayLeave=0`。新建记录 `sourceType` 为 `custom`, `sourceTypeName` 为 `自定义`。

支持的字段：`baseWorkDaysRule`, `baseWorkTimesRule`, `baseWorkTimesRuleScale`, `code`, `endTimeNotCount`, `includeHoliday`, `includeNoPayLeave`, `includePayLeave`, `mgrOrg`, `mgrOrgId`, `mgrOrgName`, `mgrOrgType`, `name`, `prefix`, `sourceType`, `sourceTypeName`, `startTimeNotCount`, `state`, `workDaysRule`, `workTimesRule`, `description`。

### 更新

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

按 `id` 覆盖记录。保留已有 `code` 除非显式传入。未传的字段保留原值。更新时也可传入 `baseWorkTimesRuleScale` 和 `sourceType`。

### 删除

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

请求体：

```json
{
  "ids": ["7327471073147902139"]
}
```

删除忽略 `eids` 等无关字段，仅按 `ids` 删除。响应 `data: true`。
