目录
(5) 测试:评审团队:人力外包项目团队、测试团队、前端负责人
(1) 管理员: 权限设定、查看全部部门数据, 不能修改业务数据。
(6) 员工: 打卡、补卡申请、请假、加班,查询日打卡记录、日考勤结果
(7) 系统: 执行定时任务,同步节假日(同时考勤员能手动执行),计算考勤
(13) 定时任务:计算考勤,每天计算当月的,每月一号计算上月的
(4) 节日表(工作日):att_day(包括周六周日工作日)
(10) 班组班次表:att_department_class
(13) 员工刷卡表:att_employee_card , 包括补卡、补卡要审核:
(14) 员工加班表:att_employee_overtime
(15) 员工休假表:att_employee_holiday, 包括出差、请假、休假等
(16) 员工考勤表:att_segment (员工考勤表)
十九、 第三方外部接口需求列表(统一与客户对接、确认需求):
外包系统月度考勤总体设计方案
设计原则:结构最大化、功能最小化
设计文档与需求对齐(并补充),产品经理将需求与客户对齐(包括菜单与原型让客户确认),设计文档的目的把你的思考和问题写出来,以便传承、以便共享思考并最终解决问题、完美验收!
说明:1 结合需求规格说明书拉通设计
2 考勤规则复杂不统一,一个月内完成开发须投入两个人力!(还没有看各种报表格式)
3 考勤的验收用例,要同步确认,客户的考勤有很多细节、同时原型也需要尽早确认。
交易日:股票交易日,证券公司的工作日,页面还是叫交易日。
我的外包模块,用于直属领导查看其所辖人员,并可对其外包的状态进行开启和关闭。
外包工时结算模块,费用结算人发起工时结算任务后,所有审批节点均在此模块进行工时审核。流程应包括工时数量的确认、费用的确认。工时数量的确认由供应商接口人和部门考勤员共同审核完成。工时数量确认后系统根据一定浮动结算规则生成外包费用,经相关人员确认后生成定档数据。
外包绩效月度考核模块,归口管理员发起外包绩效考核事件后,系统将按照部门进行考核任务的拆解,所有审批节点均在此模块进行绩效考核审核,只有当各项目的考核任务均结束,该考核事件才会结束。
外包签到签退模块,支持外包人员在上下班时间范围内进行打卡。
加班申请用于外包人员发起加班申请及查看历史加班记录。
加班管理用于直属领导审核外包人员加班申请。
休假申请模块用于外包人员发起休假申请。休假类型包括:请假、休长假、调休。
休假管理模块用于直属领导及其他管理员查看休假记录。
我的日报用于外包人员添加日报及历史日报查询。支持选择日报发送对象,默认显示直属领导,允许用户增删日报发送对象。
日报管理用于对外包人员的日报进行审核。每周一系统将同一直属领导名下的所有外包人员的上一周日报全部推送至【日报管理】模块用于直属领导审阅。
各部门一个考勤员,项目经理和结算管理员有可能是同一人。
月度考勤确认:项目经理,供应商接口人,结算管理员。
数据导出功能待确认,那些数据、导出的格式待确认; 延后实现 。
需要数据权限。只计算有权限的部门数据。
工作流状态图:10草稿20审核中30审核不过打回40审核不过中止50审核通过
- 补卡
- 加班
- 请假
- 考勤确认流程:
生成考勤汇总数据和月度确认流程,这块数据和计算生成的数据。
是两份数据隔离,结算流程做?有个问题,多个供应商一个驳回则全部驳回。
以上实现统一的工作流,按照提供的工作流框架统一开发标准开发。
- 考勤菜单
考勤管理: 增删改查
考勤查询: 查询
模板管理
定时任务(分开还是在主页) 两个菜单, 共一个页面,通过参数控制只能查询。
- 模板管理
- 管理端
- PC员工端
打卡
补卡
加班
请假
查看考勤日报
- 企业微信员工端
迭代三实现
- PC供应商端
- 机构与人员表
同步现有第三方系统
- 工作日表 :att_day
所有工作日
- 考勤周期表:att_period
年月、开始日期、结束日期、激活状态、标准工作日,需结转周期
- 配置表:att_config
有效打卡时间提前(分种)
有效打卡时间延后(分种)
打卡地址说明
打卡中心经度
打卡中心纬度
打卡中心半径
修改人
修改时间
- 考勤规则表
attend_rule
- 基本班次表:
正常上班、加班班次
att_class_master
Att_class_item
班次状态:上班 加班 请假
- 员工排班表:
自动排班,节假日如无法自动处理应提供界面操作。
att_employee_class
班次状态:上班 加班 请假
- 员工申请主表:att_employee_apply
申请类型
补卡
请假
加班
- 员工打卡、补卡表:att_employee_card
钉钉倒入,微信打卡数据同步
数据来源:
打卡、倒入、补卡,
来自系统:
本系统、钉钉、现微信打卡系统
设备、场所
- 员工请假表
att_employee_holiday
- 员工加班表
att_employee_overtime
- 分段考勤表 att_segment
- 考勤日表:由员工班次表+请假+加班生成,考虑加个异常标识,异常说明
att_days
- 考勤月表:由日报汇总而成 ,加个异常标识,异常说明
att_month
- 考勤季表:由月报汇总而成
att_emp_quarter
日报、月报、季报需要根据部门考勤报表和结算要求,进一步确认细化;
目前各部门规则不统一、报表格式不统一,对我们不利、应尽量要求客户统一。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| department_id | 标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| name | 名称 | Varchar(64) | 0 | |||||||
| type | 类型 | int | N | y | 10部门 20考勤班组 30项目组 | |||||
| parent_id | 父部门 | int | 0 | |||||||
| active | 有效 | bit | true | |||||||
| created_by | 创建人 | Int | 0 | 代表系统同步 | ||||||
| created_at | 创建时间 | datetime |
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| employee_id | 标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| department_id | 部门标识 | int | ||||||||
| group_id | 班组标识 | int | 当前班组 | |||||||
| code | 工号 | varchar(24) | 0 | |||||||
| name | 姓名 | int | N | y | ||||||
| created_by | 创建人 | Int | 0 | 代表系统同步 | ||||||
| created_at | 创建时间 | datetime |
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| group_employee_id | 标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| group_id | 班组标识 | int | 0 | |||||||
| employee_id | 员工标识 | int | N | y | 一个员工可以有多个组 | |||||
| active | 激活 | bit | true | |||||||
| created_by | 创建人 | Int | 0 | 代表系统同步 | ||||||
| created_at | 创建时间 | datetime |
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| id | 标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| day | 日期 | date | 0 | |||||||
| type | 类型 | int | N | y | 10 |
20-节假日 | ||||
| name | 节日名称 | Varchar(32) | ||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime |
在节日表中按配置定义工作日,节日; 不在配置表中按周一日判断。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| period_id | 周期标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| period_ym | 周期-年月- | Int | n | 202001 | 年月 | |||||
| start_day | 开始日期 | date | ||||||||
| end_day | 结束日期 | date | ||||||||
| workdays | 全勤工作日 | int | N | y | 22 | |||||
| type | 类型 | int | 0 | 0-考勤周期 10-工资周期 | ||||||
| active | 激活状态 | bit | true | true/false | ||||||
| updated_by | 最后操作人 | Int | 0 | |||||||
| updated_at | 操作时间 | datetime | n | |||||||
|
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| config_id | 配置标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| department_id | 部门标识 | Int | n | 0 | 0不区分部门, 全局有效 | |||||
| addr | 打卡地址说明 | Varchar(128) | n | |||||||
| longitude | 打卡中心经度 | decimal(20,7) | true | true/false | ||||||
| latitude | 打卡中心纬度 | decimal(20,7) | N | y | 22 | |||||
| radius | 打卡中心半径 | Decimal(20,6) | 0 | |||||||
| 日标准工时 | ||||||||||
| before_m | 有效打卡时间提前(分种) | int | 30 | |||||||
| after_m | 有效打卡时间延后(分种) | 30 | ||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | Datetime | ||||||||
| updated_by | 最后操作人 | Int | 0 | |||||||
| updated_at | 最后操作时间 | Datetime |
根据需要添加更多配置字段。
由于考勤规律不明显,可以写在代码中。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| rule_id | 规则标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| department_id | 机构标识 | int | 0 | =0通用, >0指定部门 | ||||||
| sign_card_times | 补卡次数 | Int | n | 0 | ||||||
| Impl_class | 考勤计算类名 | varchar(512) | 通用接口 不同部门不同实现 | |||||||
| rule_memo | 考勤规则说明 | text | ||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime | ||||||||
| updated_by | 最后操作人 | Int | 0 | |||||||
| updated_at | 最后操作时间 | datetime |
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| class_master_id | 班次标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| code | 班次编码 | varchar(32) | ||||||||
| name | 班次名称 | varchar(64) | ||||||||
| class_type | 班次类型 | int | 10 | 10正常班 20 加班 30 休班 (请假出差) | ||||||
| status | 启用状态 | int | 10 | 10草稿 20启用 30 禁用 | ||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | Datetime | ||||||||
| updated_by | 最后操作人 | Int | 0 | |||||||
| updated_at | 最后操作时间 | Datetime |
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| class_item_id | 段落班次标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| class_master_id | 班次规划标识 | varchar(32) | ||||||||
| s_start | 上班卡 | varchar(5) | 时分,s代表段落 | |||||||
| s_start_no | 上班免卡 | bit | false | |||||||
| s_end_no | 下班免卡 | bit | false | |||||||
| s_end | 下班卡 | varchar(5) | 时分 | |||||||
| over_day | 是否跨天 | bit | false | |||||||
| s_start_b | 上班卡前范围(分钟) | int | 30 |
| ||||||
| s_start_a | 上班卡后范围(分钟) | int | 30 | A-after | ||||||
| s_end_b | 下班卡前范围(分钟) | int | 30 | |||||||
| s_end_a | 下班卡后范围(分钟) | int | 30 | |||||||
| |||||||||||
| h_standard | 标准工时 | decimal(8,2) | 0 | 正常班的最大工时 <=总工时-扣除工时 | ||||||
| h_minus | 扣除工时 | decimal(8,2) | 0 | 扣除无效工时 | ||||||
| include_overtime | 包含加班 | bit | false | 正常班中含平时加班 | ||||||
| h_overtime | 加班工时 | decimal(8,2) | 0 | 预留:加班= 总工时-实际标准工时>0 |
目前请假按半天,班次时间段只要4个, 第3,4个时间段预留未来计算平时加班的。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| department_class_id | 部门班次标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| depaetment_id | 部门标识 | Int | y | |||||||
| class_master_id | 班次主表标识 | Int | ||||||||
| active | 有效标识 | Bit | true | |||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | Datetime |
自动排班,节假日如无法自动处理应提供界面操作。
班次状态:上班 加班 请假,请假类型如果需要统计则增加
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| employee_class_id | 员工班次标识 | int | N | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| workday | 工作日期 | date | ||||||||
| week | 星期 | varchar(32) | 显示 | |||||||
| class_master_id | 班次主表标识 | Int | -1 | |||||||
| class_master_id | 班次标识 | int | n | 0 | ||||||
| class_type | 班次类型 | int | 10 | 10正常班 20 加班 30 休息班-请假 | ||||||
| class_subtype | 班次子类型 | int | 10 | 100正常班 20加班: 200 平时加班 201周末加班、 202节假日加班 30休息班: 300出差 301请假 302调休 303年假 | ||||||
| segment | 段落 | Int | 1 | 1 2 3 | ||||||
| s_start | 上班卡 | varchar(5) | 时分,s代表段落 | |||||||
| s_start_no | 上班免卡 | bit | false | |||||||
| s_end_no | 下班免卡 | bit | false | |||||||
| s_end | 下班卡 | varchar(5) | 时分 | |||||||
| over_day | 是否跨天 | bit | false | |||||||
| s_start_b | 上班卡前范围(分钟) | int | 30 | |||||||
| s_start_a | 上班卡后范围(分钟) | int | 30 | |||||||
| s_end_b | 下班卡前范围(分钟) | int | 30 | |||||||
| s_end_a | 下班卡后范围(分钟) | int | 30 | |||||||
| |||||||||||
| h_standard | 标准工时 | decimal(8,2) | 0 | 正常班的最大工时 <=总工时-扣除工时 | ||||||
| h_minus | 扣除工时 | decimal(8,2) | 0 | 扣除无效工时 | ||||||
| include_overtime | 包含加班 | bit | false | 正常班中含平时加班 | ||||||
| h_overtime | 加班工时 | decimal(8,2) | 0 | 预留:加班= 总工时-实际标准工时>0 | ||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime |
申请类型: 补卡、 加班、 休假, 工作流使用。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| apply_id | 主申请标识 | Int | n | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| apply_type | 申请类型 | In t | n | 10 | 10补卡 20加班 30休假 | |||||
| remark | 备注 | varchar(256) | ||||||||
| flowinst_id | 流程实例标识 | int | n | 0 | ||||||
| flow_node | 当前流程节点 | 10 员工 20 考勤员 30 项目经理 40 供方接口人 | ||||||||
| flow_status | 流程状态 | int | n | 10 | 10草稿 20审核中 30审核不过打回 40审核不过中止 50审核通过 | |||||
| audit_by | 审核人 | Int | ||||||||
| audit_at | 审核时间 | datetime | ||||||||
| attended_by | 考勤员 | Int | N | 0 | ||||||
| supply_by | 供应商接口人 | int | n | |||||||
| project_by | 项目经理 | int | n | 0 | ||||||
| created_by | 创建提交人 | Int | ||||||||
| created_at | 创建时间 | datetime |
数据来源:打卡、补卡、倒入、
来自系统:钉钉倒入,企业微信打卡数据同步
本系统、钉钉、现微信打卡系统, 设备、场所
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| card_id | 刷卡标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| apply_id | 申请表标识 | int | 0 | =0刷卡 >0补卡 来自申请主表 | ||||||
| employee_id | 员工标识 | int | n | 0 | ||||||
| week | 星期 | varchar(32) | 页面显示 | |||||||
| card_day | 打卡日期 | date | ||||||||
| card_time | 打卡时间 | datetime | ||||||||
| source_type | 来源类型 | int | n | 10 | 10 打卡 20补卡 30倒入 | |||||
| site | 打卡地点 | varchar(128) | ||||||||
| dev_code | 打卡设备 | varchar(32) | ||||||||
| card_system | 打卡系统 | int | n | 10 | 10本系统 20钉钉倒入, 30企业微信 打卡数据同步 | |||||
| status | 状态 | int | 50 | 审核状态: 10草稿 20审核中30审核不过打回 40审核不过中止 50审核通过 只有50有效 | ||||||
| created_at | 创建时间 | datetime |
设备,场所根据需要,目前认为不需要。
加班表时段可以一个代码自动根据班次切分,选择两个时段简单; 加班要审核。
如果加班未排班,只有一个时间段的加班需要增加扣除时间。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| overtime_id | 加班标识 | Int | N | Y,自动+1 | Y | 自动 | ||||
| apply_id | 申请表标识 | =0刷卡 >0补卡 来自申请主表 | ||||||||
| employee_id | 员工标识 | int | n | 0 | ||||||
| workday | 工作日期 | date | 班次日期 | |||||||
| week | 星期 | varchar(32) | 页面显示 | |||||||
| class_flag | 排班标识 | bit | false | 加班条就是班次 | ||||||
| class_type | 加班类型 | int | 20 | 20 平时加班 21周末加班、 22节假日加班 | ||||||
| h_minus | 扣除工时 | decimal(8,2) | n | 0 | 扣除分钟 | |||||
| s_start | 上班卡 | varchar(5) | 时分 | |||||||
| s_start_no | 上班免卡 | bit | false | |||||||
| s_end_no | 下班免卡 | bit | false | |||||||
| s_end | 下班卡 | varchar(5) | 时分 | |||||||
| over_day | 是否跨天 | bit | false | |||||||
| card_system | 打卡系统 | int | 10本系统 20钉钉倒入, 30企业微信打卡数据同步 | |||||||
| status | 状态 | int | 50 | 只有50有效 10草稿 20审核中30审核不过打回 40审核不过中止 50审核通过 | ||||||
| created_at | 创建时间 | datetime |
如果有多个时间段,则有多条记录。
请假表时段可以一个代码自动根据班次切分,选择两个时段简单; 请假要审核。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| holiday_id | 休假标识 | Int | N | Y,自动+1 | N | Y | ||||
| apply_id | 申请表标识 | int | 0 | =0刷卡 >0补卡 来自申请主表 | ||||||
| employee_id | 员工标识 | int | n | 0 | ||||||
| workday | 工作日期 | Date | 班次日期 | |||||||
| week | 星期 | varchar(32) | 显示 | |||||||
| one_day | 全天 | bit | false | 全天直接作为班次 其它要排班再请 | ||||||
| class_type | 休假类型 | int | 300 | 300出差 301请假 302调休 303 | ||||||
| h_holiday | 请假工时 | decimal(8,2) | 0 | |||||||
| s_start | 开始时间 | varchar(5) | n | |||||||
| s_end | 结束时间 | varchar(5) | n | |||||||
| over_day | 是否跨天 | bit | false | |||||||
| card_system | 打卡系统 | int | n | 10 | 10本系统 20钉钉倒入, 30企业微信打卡数据同步 | |||||
| status | 审核状态 | int | 50 | 50有效 10草稿 20审核中 30审核不过打回 40审核不过中止 50审核通过 | ||||||
| created_at | 创建时间 | datetime |
如果有多个时间段,则有多条记录。
由员工班次表+加班+请假生成,考虑加个异常标识。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| segment_id | 段落标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| workday | 工作日期 | date | ||||||||
| week | 星期 | varchar(32) | 显示星期 | |||||||
| class_master_id | 班次标识 | Int | n | 0 | ||||||
| class_type | 班次类型 | int | 10 | 10正常班 20 加班 30 休息班-请假 | ||||||
| class_subtype | 班次子类型 | int | 10 | 100正常班 20加班: 200 平时加班 201周末加班、 202节假日加班 30休息班: 300出差 301请假 302调休 303休长假 | ||||||
| segment | 段落 | Int | 1 | 1 2 3 4 5 6 | ||||||
| |||||||||||
| r_start | 实际上班卡 | varchar(5) | 时分09:00 | |||||||
| r_end | 实际下班卡 | varchar(5) | 时分12:00 | |||||||
| s_start | 上班卡 | varchar(5) | 时分 | |||||||
| s_start_no | 上班免卡 | bit | false | |||||||
| s_end_no | 下班免卡 | bit | false | |||||||
| s_end | 下班卡 | varchar(5) | 时分 | |||||||
| over_day | 是否跨天 | bit | false | |||||||
| s_start_b | 上班卡前范围(分钟) | int | 30 | 有效范围 | ||||||
| s_start_a | 上班卡后范围(分钟) | int | 30 | 有效范围 | ||||||
| s_end_b | 下班卡前范围(分钟) | int | 30 | 有效范围 | ||||||
| s_end_a | 下班卡后范围(分钟) | int | 30 | 有效范围 | ||||||
| h_standard | 标准工时 | decimal(8,2) | 0 | 正常班的最大工时 <=总工时-扣除工时 | ||||||
| h_minus | 扣除工时 | decimal(8,2) | 0 | 扣除无效工时 | ||||||
| include_overtime | 包含加班 | bit | false | 正常班中含平时加班 | ||||||
| h_overtime | 加班工时 | decimal(8,2) | 0 | 预留:加班= 总工时-实际标准工时>0 | ||||||
| no_card_times | 缺卡次数 | int | 上下班缺卡次数 | |||||||
| delay_times | 迟到次数 | int | ||||||||
| delay_n | 迟到时长(分钟) | int | ||||||||
| e_leave_times | 早退次数 | int | ||||||||
| e_leave_n | 早退时长(分钟) | int | ||||||||
| |||||||||||
| r_workdays | 出勤天数 | Decimal(8,2) | ||||||||
| r_holidays | 实际请假天数 | decimal(8,2) | ||||||||
| absent_days | 缺勤(旷工)天数 | decimal(8,2) | ||||||||
| r_overtime | 实际加班工时 | decimal(8,2) | 0 | |||||||
| abnormal_flag | 异常标识 | bit | false | |||||||
| abnormal_remark | 异常说明 | varchar(512) | ||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime |
输出报表信息
姓名 考勤组(这个谁录) 部门 工号 职位
工作时长(分钟)通过出勤天数算出。上班缺卡次数,下班缺卡次数要不要分。
由考勤段落生成,考虑加个异常标识。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| days_id | 日表标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| period_workday | 周期:工作日 | date | ||||||||
| week | 星期 | varchar(32) | 显示 | |||||||
| no_card_times | 缺卡次数 | int | 上下班缺卡次数 | |||||||
| delay_times | 迟到次数 | int | ||||||||
| delay_n | 迟到时长(分钟) | int | ||||||||
| e_leave_times | 早退次数 | int | ||||||||
| e_leave_n | 早退时长(分钟) | int | ||||||||
| r_workdays | 出勤天数 | decimal(8,2) | 标准工时 | |||||||
| r_holidays | 请假天数 | decimal(8,2) | ||||||||
| absent_days | 缺勤天数 | decimal(8,2) | ||||||||
| r_overtime | 加班工时 | decimal(8,2) | 0 | 总加班工时 | ||||||
| r_overtime_normal | 平时加班 | decimal(8,2) | 0 | 平时加班 | ||||||
| r_overtime_weekday | 周休日加班 | decimal(8,2) | 0 | 周休日加班 | ||||||
| r_overtime_holiday | 节假日加班 | decimal(8,2) | 0 | 节假日加班 | ||||||
| abnormal_flag | 异常标识 | bit | false | |||||||
| 异常说明 | varchar(512) | |||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime |
由考勤月表加考勤规则生成。
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| month_id | 月表标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| period_ym | 考勤周期 | Int | 班次 | |||||||
| r_workdays | 出勤天数 | decimal(8,2) | ||||||||
| r_holidays | 请假天数 | decimal(8,2) | ||||||||
| absent_days | 缺勤天数 | decimal(8,2) | ||||||||
| r_overtime | 加班工时 | decimal(8,2) | 0 | 总加班工时 | ||||||
| r_overtime_normal | 平时加班 | decimal(8,2) | 0 | 平时(晚)加班 | ||||||
| r_overtime_weekday | 周休日加班 | decimal(8,2) | 0 | 周休日加班 | ||||||
| r_overtime_holiday | 节假日加班 | decimal(8,2) | 0 | 节假日加班 | ||||||
| no_card_times | 缺卡次数 | int | 上下班缺卡次数 | |||||||
| delay_times | 迟到次数 | int | ||||||||
| delay_n | 迟到时长(分钟) | int | ||||||||
| e_leave_times | 早退次数 | int | ||||||||
| e_leave_n | 早退时长 | int | ||||||||
| abnormal_flag | 异常标识 | bit | false | |||||||
| 异常说明 | varchar(512) | |||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime |
申请主表,补卡、加班、请假
申请子表:
加班类型
请假类型
- 加班规则
工作日:不算加班
周末(包括节假日):4h<=(结束时间-开始时间)<8h 算半天
8h<=(结束时间-开始时间) 算一天
(结束时间-开始时间)<4 不计入加班
通过排班确定是否加班
规则不太统一,不具备可配置性,代码实现。
研发部:
1) 在公司规定的8点30分上班时间之后到岗的视为迟到;
2) 在公司规定的17点下班时间之前离岗的视为早退;
3) 每月迟到早退在60分钟以内且当天出勤时间满8.5小时以上,不扣钱,视为普通迟到。但是每月最多允许3次考勤异常(漏打卡+普通迟到)。
4).迟到早退在60分钟以内且当天出勤时间不满8.5小时,结算时每次按0.5天扣除。
5) 每月迟到早退在60分钟以内超过3次以上,超出次数每次结算时按0.5天扣除。
6) 迟到早退在60分钟以上240分钟以下,结算时每次按0.5天扣除。严重迟到
7) 迟到早退在240分钟以上,结算时每次按1天扣除。特严重迟到
8) 外包员工无打卡记录且能自证出勤的视为漏打卡。当天上下班均无打卡记录算 2 次;(以补卡记录为准)
运维部:
1) 在公司规定的8点30分上班时间之后到岗的视为迟到;
2) 在公司规定的17点下班时间之前离岗的视为早退;
- 每个月度内,外包人员有三次签卡机会。外包人员当月有三次以上(不超三次)迟到、早退情况,须在考核中体现,具体考核分值由相关人把握。签卡后当天仍需满足8个小时的工作工时。”
- 累计连续三个月考核中有考勤被扣除相关分数,可启动对外包人员的退场。
考勤规则的疑问
1.补卡或请假能否做为早退来避免考勤异常的方式? --可以
2.考勤被扣除相关分数,是有具体明细的标准?能否相关人在月度考核表填写具体的考勤扣分就行? --会直接体现在月度考核分去掉,实在差的直接就退场
3.漏打卡也算当月三次机会内的一次? --除了第一天入场打卡,其他都算
4.“签卡后当天仍需满足8个小时的工作工时”,迟到后满足8个小时的工作工时,是否也算入当月三次机会内的一次? --是
5.迟到,早退超过1个小时,即当天不满足8个小时的工作工时,如何罚?是以章老师(4、5、6)规则为准? --如果经常这样,我们会直接考虑退场
6.请假最小单位是0.5天
网络项目开发部:
- 驻场外包人员每天上下班均需打卡,8:30—17:30,视为驻场8小时。(工作时长8:30-12:00,13:00-17:30。)
- 每名驻场开发人员,每出现一次30分钟以内的迟到,扣除考核分2分,每出现一次30分钟以上的迟到,扣除考核分5分。
- 下班时间为17:30,从19:00开始计算加班,满4小时以上才算加班,当日加班两小时及以上可增加考核分2分。
当月费用=参考综合评分规则-支付比例的结算费用。
工作量=1+(当月应出勤天数(交易日)+加班天数-请假天数-缺勤天数-21.5)/21.5;
出勤天数=当月应出勤天数(交易日)+加班天数-请假天数-缺勤天数
加班天数=统计加班记录,看加班规则
请假天数=统计(企业微信考勤明细的)请假记录
缺勤天数=旷工(没有打卡考勤+没有补卡记录)
没有画流程图,东程可以在详细设计中画一下。
- 同步工作日(可手动)
- 设定考勤周期表,只能计算当前激活的周期考勤,
页面:计算工作日
- 计算标准工作日(页面展示)
- 设定基本班次,
- 自动排班与手工排班:
根据基本班次对在职员工自动排班(上班班次与加班班次)
因为涉及到节假日变换,页面要支持排班(不能完全自动)
- 打卡:目前需要从老系统导入,新系统上线有延后。
- 补卡:审批通过有效
- 加班条:审批通过有效,按基本班次设定
- 请假条:审批通过有效,按基本班次设定
- 考勤分析:
第1步:初始化周期表数据,生成一条周期记录(安装),结转时自动切换至下一周期;
第2步:同步工作日表后,
第3步:计算当月标准工作日, 存入周期表;
第4步:依据自成生成的员工排班或者页面设置的班次,班次分段状态上班、加班、请假
进行计算,
校验所有在职人员有班次,并能根据入职离职日期排班。
第5步:根据加班条刷新员工月度班次,包括班次段落状态
第6步:根据请假条刷新员工月度班次,包括班次段落状态
第7步:根据考勤规则和打卡、补卡记录,计算日考勤段落打卡信息; 免卡直接将班次时间设为打卡时间。
第8步:根据考勤规则和打卡、补卡记录、实际班次,计算日段落考勤与日汇总数据 :
先检查所有员工都配置有部门考勤规则。
员工出勤异常日报, 标红。
日报表记录包括了班次,打卡,计算结果,异常标识,
通过员工班次COPY生成考勤日记录,
加班请假修改日报中的班次,最终通过打卡数据生成考勤结果,
再通过考勤规则二次计算得出旷工、早退、迟到等数据。
按考勤规则部门一个个计算日考勤
第9步:根据考勤规则和打卡、补卡记录、实际班次,计算月考勤与月汇总数据,生成月考勤记录 。
计算当前周期1号到今天当前周期的考勤数据。
按考勤规则部门一个个计算月考勤
第10步:根据月考勤记录 ,汇总生成季考勤记录:
当前考勤周期为3,6,9,12 月时生成,或者每个月都生成。
按考勤规则部门一个个计算季考勤。
注:
除外部引入数据外,3-10步骤处理一气喝成,保证数据完整呈现的。
具体可分为三个场景:
3-8计算一天或者几天的考勤
3-9 计算月度每天的考勤和月度汇总数据
3-10 计算每天、月度、季度考勤数据,
接口上可分可合,避免重复与冗长的代码、函数。
- 考勤接口日同步:
同步考勤数据(钉钉倒入:未来平台自己打卡,无须导入数据)
- 考勤日计算:
每月1号自动计算上月的考勤数据,汇总月考勤、季考勤;
每月2号到月末计算当月日考勤。
按考勤部门分别计算,一个考勤员只处理本部门的,思考任务设计合理性的参考点:
对于一些异常情况的考勤结果自动发送邮件。
- 当表字段比较多,根据字段名前缀分组,或者分成多个结构体。
查询可以在代码侧实现拚接, SQL尽量单表操作(小表关联的数量不限)。
- 所有接口记录日志,内部、对外的,方便定位问题,以及责任划分。
- 管理端,员工端,供应商端分别采用url: manager,emp,supply。
由于时间关系,由模块开发人员在详细设计文档描述,接口包括:
- 定时任务接口
- 前端展示接口
打卡: 判断打卡在有效距离内,时间在有效班次范围内。
打卡: 生成有效时间内的的打卡数据
分段考勤:
- 内部接口:
供其它模块调用的接口
- 第三方接口统一封装
钉钉倒入:可重复操作,数据不重复
工作日同步入内部表:可重复操作,数据不重复
微信打卡数据同步: 可重复操作,数据不重复
接口代码优先评审
- 第三方外部接口需求列表(统一与客户对接、确认需求):
- 同步机构人员数据
- 同步交易(工作)日数据
- 每天同步微信考勤数据: 打卡、请假、加班
- 每天钉钉倒入: 打卡、请假、加班
- 参考
结表
序号 | 字段标识 | 字段中文名称 | 类型 | 是否null | 是否主键 | 索引 | 是否显示 | 显示长度 | 是否只读 | 默认值 | 数据来源说明 |
| days_id | 日表标识 | Int | N | Y,自动+1 | N | Y | 自动 | |||
| employee_id | 员工标识 | int | n | 0 | ||||||
| class_id | 班次标识 | Int | 班次 | |||||||
| workday | 工作日期 | date | ||||||||
| week | 星期 | varchar(32) | 显示 | |||||||
| r1_start | 实际上班卡1 | varchar(5) | ||||||||
| r1_end | 实际下班卡1 | varchar(5) | ||||||||
| r2_start | 实际上班卡2 | varchar(5) | ||||||||
| r2_end | 实际下班卡2 | varchar(5) | ||||||||
| r3_start | 实际上班卡3 | varchar(5) | ||||||||
| r3_end | 实际下班卡3 | varchar(5) | ||||||||
| r4_start | 实际上班卡4 | varchar(5) | ||||||||
| r4_end | 实际下班卡4 | varchar(5) | ||||||||
| s1_type | 段落1班次类型 | int | 10正常班 20加班: 20 平时加班 21周末加班、 22节假日加班 30休息班: 30出差 31请假 32调休 33休长假 | |||||||
| s2_type | 段落2班次类型 | int | /10=1,2,3 | |||||||
| s3_type | 段落3班次类型 | int | ||||||||
| s4_type | 段落4班次类型 | int | ||||||||
| s1_start | 上班卡1 | varchar(5) | ||||||||
| s1_end | 下班卡1 | varchar(5) | ||||||||
| s2_start | 上班卡2 | varchar(5) | ||||||||
| s2_end | 下班卡2 | varchar(5) | ||||||||
| s3_start | 上班卡3 | varchar(5) | ||||||||
| s3_end | 下班卡3 | varchar(5) | ||||||||
| s4_start | 上班卡4 | varchar(5) | ||||||||
| s4_end | 下班卡4 | varchar(5) | 0 | |||||||
| no_card_times | 缺卡次数 | int | 上下班缺卡次数 | |||||||
| delay_times | 迟到次数 | int | ||||||||
| delay_n | 迟到时长(分钟) | int | ||||||||
| e_leave_times | 早退次数 | int | ||||||||
| e_leave_n | 早退时长(分钟) | int | ||||||||
| |||||||||||
| r_workdays | 出勤天数 | decimal(8,2) | 标准工时 | |||||||
| r_holidays | 请假天数 | decimal(8,2) | ||||||||
| absent_days | 缺勤天数 | decimal(8,2) | ||||||||
| r_overtime | 加班工时 | decimal(8,2) | 0 | 总加班工时 | ||||||
| r_overtime_normal | 平时加班 | decimal(8,2) | 0 | 平时加班 | ||||||
| r_overtime_weekday | 周休日加班 | decimal(8,2) | 0 | 周休日加班 | ||||||
| r_overtime_holiday | 节假日加班 | decimal(8,2) | 0 | 节假日加班 | ||||||
| abnormal_flag | 异常标识 | bit | false | |||||||
| 异常说明 | varchar(512) | |||||||||
| |||||||||||
| created_by | 创建人 | Int | 0 | |||||||
| created_at | 创建时间 | datetime | ||||||||
| updated_by | 最后操作人 | Int | 0 | |||||||
| updated_at | 最后操作时间 | datetime |