# 功能需求规格文档:ECS-考勤规则
> 本文档用于描述考勤规则(attenRule)业务功能需求,作为代码生成的输入依据。
***
## 1. 基础信息
| 属性 | 值 |
| ----- | -------------------------- |
| 功能中文名 | 考勤规则 |
| 功能简写 | attenRule |
| 所属模块 | ruoyi-modules/ruoyi-ecs |
| 主表名 | t\_ecs\_atten\_rule |
| 从表名 | 无 |
| 是否多租户 | 是 |
| 数据库类型 | kingbase(默认) |
| 描述 | 考勤规则管理,用于配置提前打卡、迟到、旷课等时间阈值 |
***
## 2. 接口清单
### 2.1 主表接口
| 接口 | HTTP | 路径(后端) | 前端路径 | 权限字符 |
| ---- | ------ | ------------------------- | ----------------------------- | -------------------- |
| 列表 | GET | /attenRule/list | /ecs/attenRule/list | ecs:attenRule:list |
| 详情 | GET | /attenRule/{id} | /ecs/attenRule/{id} | ecs:attenRule:query |
| 新增 | POST | /attenRule/ | /ecs/attenRule/ | ecs:attenRule:add |
| 编辑 | PUT | /attenRule/ | /ecs/attenRule/ | ecs:attenRule:edit |
| 删除 | DELETE | /attenRule/{ids} | /ecs/attenRule/{ids} | ecs:attenRule:remove |
| 导出模板 | POST | /attenRule/exportTemplate | /ecs/attenRule/exportTemplate | ecs:attenRule:export |
| 导入数据 | POST | /attenRule/importData | /ecs/attenRule/importData | ecs:attenRule:import |
| 导出数据 | POST | /attenRule/export | /ecs/attenRule/export | ecs:attenRule:export |
***
## 3. 字段属性速查表
| 属性 | 含义 | 可选值 | 说明 |
| ------------- | ------- | -------------------------------------------- | ---------------- |
| `fieldName` | 字段名(驼峰) | — | 代码变量名 |
| `columnName` | 列名(下划线) | — | 数据库列名 |
| `fieldType` | Java类型 | String/Long/Integer/BigDecimal/LocalDateTime |
|
| `inDb` | 是否在表中存在 | true/false | false=纯前端计算字段 |
| `inTable` | 列表是否显示 | true/false | 生成表格列 |
| `inQuery` | 是否查询字段 | true/false | 生成搜索条件 |
| `queryType` | 查询方式 | eq/like/between | 精确/模糊/范围 |
| `inForm` | 是否表单字段 | true/false | 生成表单项 |
| `inAdd` | 新增表单显示 | true/false |
|
| `inEdit` | 编辑表单显示 | true/false |
|
| `required` | 是否必填 | true/false | 生成校验注解 |
| `dictType` | 字典类型 | 字典标识 | 有值=字典下拉,否则普通输入 |
| `component` | 前端组件类型 | input/select/inputNumber/datetime/textarea | 默认根据类型推断 |
| `width` | 表格列宽 | 数字(px) | 默认auto |
| `sort` | 排序 | 数字 | 越小越靠前 |
| `excelExport` | Excel导出 | true/false | 默认true |
| `lockRule` | 操作锁定规则 | 对象 | 有值=按此字段值控制行级操作权限 |
***
## 4. 字段清单
### 4.1 主表 `t_ecs_atten_rule`
```yaml
fields:
# ---------- 主键 ----------
- fieldName: attendRuleId
columnName: attend_rule_id
fieldType: Long
inDb: true
inTable: false
inForm: false
excelExport: false
remark: 考勤规则Id,雪花ID
# ---------- 业务字段 ----------
- fieldName: ruleName
columnName: rule_name
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: like
inForm: true
inAdd: true
inEdit: true
required: true
component: input
width: 150
sort: 1
excelExport: true
remark: 规则名称
- fieldName: ruleNumb
columnName: rule_numb
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: like
inForm: true
inAdd: true
inEdit: true
required: true
component: input
width: 150
sort: 2
excelExport: true
remark: 规则编码
- fieldName: advanceStart
columnName: advance_start
fieldType: Integer
inDb: true
inTable: true
inQuery: false
queryType: eq
inForm: true
inAdd: true
inEdit: true
required: false
component: inputNumber
width: 150
sort: 3
excelExport: true
remark: 提前打卡分钟数
- fieldName: lateAfter
columnName: late_after
fieldType: Integer
inDb: true
inTable: true
inQuery: false
queryType: eq
inForm: true
inAdd: true
inEdit: true
required: false
component: inputNumber
width: 150
sort: 4
excelExport: true
remark: 迟到延后分钟数
- fieldName: absentAfter
columnName: absent_after
fieldType: Integer
inDb: true
inTable: true
inQuery: false
queryType: eq
inForm: true
inAdd: true
inEdit: true
required: false
component: inputNumber
width: 150
sort: 5
excelExport: true
remark: 旷课延后分钟数
- fieldName: status
columnName: status
fieldType: String
inDb: true
inTable: true
inQuery: true
queryType: eq
inForm: true
inAdd: true
inEdit: true
required: true
dictType: sys_normal_disable
component: select
width: 100
sort: 6
excelExport: true
remark: 状态:0-正常,1-停用
# ---------- 公共字段(所有表统一包含) ----------
- fieldName: delFlag
columnName: del_flag
fieldType: String
inDb: true
inTable: false
inForm: false
- fieldName: createTime
columnName: create_time
fieldType: Date
inDb: true
inTable: true
inQuery: false
inForm: false
component: datetime
width: 180
sort: 99
excelExport: true
```
***
## 5. VO 结构
### 5.1 主表列表 VO
```yaml
EcsAttendRuleVo:
- attendRuleId
- ruleName
- ruleNumb
- advanceStart
- lateAfter
- absentAfter
- status
- createTime
```
***
## 6. 特殊需求
```yaml
special:
excelImport: true
excelExport: true
importRules:
- fieldName: ruleName
required: true
unique: false
- fieldName: ruleNumb
required: true
unique: true
max: 32
- fieldName: advanceStart
required: false
min: 0
max: 999
- fieldName: lateAfter
required: false
min: 0
max: 999
- fieldName: absentAfter
required: false
min: 0
max: 999
- fieldName: status
required: true
subTableImport: false
subTableExport: false
dubboExpose: false
```
***
## 7. 字典项
| 字典类型 | 枚举值 | 说明 |
| -------------------- | ---------- | ------ |
| `sys_normal_disable` | 0=正常, 1=停用 | 通用状态字典 |
***
## 8. 建表语句
> 数据库类型:kingbase(人大金仓)
### 8.1 主表 `t_ecs_attend_rule`
```sql
-- 考勤规则表
CREATE TABLE "dbo"."t_ecs_attend_rule" (
"attend_rule_id" bigint NOT NULL,
"rule_name" character varying(255 char) NOT NULL DEFAULT ''::varchar,
"rule_numb" character varying(32 char) NOT NULL DEFAULT ''::varchar,
"advance_start" integer,
"late_after" integer,
"absent_after" integer,
"status" character varying(16 char) NOT NULL DEFAULT '0'::varchar,
"del_flag" character(1 char) NOT NULL DEFAULT '0'::bpchar,
"tenant_id" character varying(20 char) NOT NULL DEFAULT ''::varchar,
"create_dept" bigint,
"create_by" bigint,
"create_time" timestamp,
"update_by" bigint,
"update_time" timestamp,
CONSTRAINT "t_ecs_attend_rule_pkey" PRIMARY KEY ("attend_rule_id")
);
-- 表注释
COMMENT ON TABLE "dbo"."t_ecs_attend_rule" IS '考勤规则表';
-- 列注释
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."attend_rule_id" IS '考勤规则Id';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."rule_name" IS '规则名称';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."rule_numb" IS '规则编码';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."advance_start" IS '提前打卡分钟数';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."late_after" IS '迟到延后分钟数';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."absent_after" IS '旷课延后分钟数';
COMMENT ON COLUMN "dbo"."t_ecs_attend_rule"."status" IS '状态:0-正常,1-停用';
```
***
## 9. 备注
1. 考勤规则是单表结构,无需关联查询
2. 提前打卡/迟到延后/旷课延后三个时间字段单位为分钟,取值范围建议 0-999
3. 规则编码(ruleNumb)建议唯一,用于系统内部标识
4. ECS 模块默认启用租户隔离(tenant\_id 必填)