考勤系统设计

目录

人力外包系统月度考勤总体设计方案

2018年11月23日星期一

一、 本文目的:

二、 人力外包系统考勤主要参与人员:

(1) 总体架构设计:

(2) 模块详细设计:

(3) 第三方接口负责人:i

(4) 需求:

(5) 测试:评审团队:人力外包项目团队、测试团队、前端负责人

三、 名词解释

四、 外包管理合同条款(考勤与结算)

五、 人力外包系统用户角色

(1) 管理员:    权限设定、查看全部部门数据, 不能修改业务数据。

(2) 项目经理:  补卡审批,月度考勤确认

(3) 考勤管理员:考勤规则设定,设定班次,计算考勤

(4) 结算管理员: 月度考勤确认

(5) 供应商接口人: 查看考勤结果、月度考勤确认

(6) 员工:       打卡、补卡申请、请假、加班,查询日打卡记录、日考勤结果

(7) 系统:       执行定时任务,同步节假日(同时考勤员能手动执行),计算考勤

六、 人力外包系统用户场景

(1) 考勤员设定规则(全局配置、部门考勤规则)

(2) 考勤员考勤计算生成日报表

(3) 考勤计算生成月报表

(4) 考勤计算生成季报表

(5) 员工打卡

(6) 员工补卡

(7) 员工请假

(8) 员工加班

(9) 查询打卡记录

(10) 查询考勤结果

(11) 项目经理审批签卡

(12) 定时任务:同步节假日

(13) 定时任务:计算考勤,每天计算当月的,每月一号计算上月的

七、 人力外包系统验收用例:

(1) 考勤员设定规则

(2) 自动或者手动排班,并能根据入职离职日期排班。

(3) 考勤员考勤计算生成日报表

(4) 考勤计算生成月报表

(5) 考勤计算生成季报表

(6) 员工打卡

(7) 员工补卡

(8) 员工请假

(9) 员工加班

(10) 查询打卡记录

(11) 查询考勤结果

(12) 项目经理审批签卡

(13) 定时任务:同步工作日

(14) 定时任务:定时计算考勤

八、 人力外包系统用户权限

(1) 项目经理只查看本部门的考勤数据

(2) 考勤管理员查看全部部门考勤数据

(3) 管理员只负责权限设定,不参与业务数据配置。

(4) 考勤管理员考勤计算数据权限:

九、 人力外包系统审批工作流功能:

十、 人力外包系统主页原型展示

十一、 人力外包系统考勤表清单

十二、 用户权限实体模型

十三、 考勤系统数据模型

十四、 人力外包系统考勤表结构

(1) 部门表(班组):vhr_department

(2) 员工表:vhr_employee

(3) 班组员工表:vhr_group_employee

(4) 节日表(工作日):att_day(包括周六周日工作日)

(5) 考勤周期表:att_period

(6) 考勤配置表:att_config

(7) 考勤规则表:att_rule

(8) 班次主表:att_class_master

(9) 班次表:att_class_item

(10) 班组班次表:att_department_class

(11) 员工班次表:att_employee_class

(12) 员工申请表:att_employee_apply

(13) 员工刷卡表:att_employee_card ,  包括补卡、补卡要审核:

(14) 员工加班表:att_employee_overtime

(15) 员工休假表:att_employee_holiday, 包括出差、请假、休假等

(16) 员工考勤表:att_segment (员工考勤表)

(17) 员工考勤日结表:att_days

(18) 员工考勤月度表:att_month

十五、 员工申请电子流

十六、 考勤流程与主要业务逻辑

1. 考勤公共规则:

2. 部门考勤规则

3. 计算公式

4. 考勤流程:

十七、 定时任务

十八、 接口定义:

1. 接口设计原则:

2. 接口范围:

3. 接口代码评审:

十九、 第三方外部接口需求列表(统一与客户对接、确认需求)

二十、 参考

(1) 需求与招聘管理表关系

(2) att_days考勤日结表(放弃版本)

外包系统月度考勤总体设计方案

2018年11月23日星期一

设计原则:结构最大化、功能最小化

  • 本文目的:

设计文档与需求对齐(并补充),产品经理将需求与客户对齐(包括菜单与原型让客户确认),设计文档的目的把你的思考和问题写出来,以便传承、以便共享思考并最终解决问题、完美验收!

  • 人力外包系统考勤主要参与人员:
    1. 总体架构设计:
    2. 模块详细设计:
    3. 第三方接口负责人:i
    4. 需求:
    5. 测试:评审团队:人力外包项目团队、测试团队、前端负责人

说明:1 结合需求规格说明书拉通设计

2 考勤规则复杂不统一,一个月内完成开发须投入两个人力!(还没有看各种报表格式)

3 考勤的验收用例,要同步确认,客户的考勤有很多细节、同时原型也需要尽早确认。

  • 名词解释

交易日:股票交易日,证券公司的工作日,页面还是叫交易日。

  • 外包管理合同条款(考勤与结算)

我的外包模块,用于直属领导查看其所辖人员,并可对其外包的状态进行开启和关闭。

外包工时结算模块,费用结算人发起工时结算任务后,所有审批节点均在此模块进行工时审核。流程应包括工时数量的确认、费用的确认。工时数量的确认由供应商接口人和部门考勤员共同审核完成。工时数量确认后系统根据一定浮动结算规则生成外包费用,经相关人员确认后生成定档数据。

外包绩效月度考核模块,归口管理员发起外包绩效考核事件后,系统将按照部门进行考核任务的拆解,所有审批节点均在此模块进行绩效考核审核,只有当各项目的考核任务均结束,该考核事件才会结束。

外包签到签退模块,支持外包人员在上下班时间范围内进行打卡。

加班申请用于外包人员发起加班申请及查看历史加班记录。

加班管理用于直属领导审核外包人员加班申请。

休假申请模块用于外包人员发起休假申请。休假类型包括:请假、休长假、调休。

休假管理模块用于直属领导及其他管理员查看休假记录。

我的日报用于外包人员添加日报及历史日报查询。支持选择日报发送对象,默认显示直属领导,允许用户增删日报发送对象。          

日报管理用于对外包人员的日报进行审核。每周一系统将同一直属领导名下的所有外包人员的上一周日报全部推送至【日报管理】模块用于直属领导审阅。

  • 人力外包系统用户角色

各部门一个考勤员,项目经理和结算管理员有可能是同一人。

    1. 管理员:    权限设定、查看全部部门数据, 不能修改业务数据。
    2. 项目经理:  补卡审批,月度考勤确认 
    3. 考勤管理员:考勤规则设定,设定班次,计算考勤
    4. 结算管理员: 月度考勤确认
    5. 供应商接口人: 查看考勤结果、月度考勤确认
    6. 员工:       打卡、补卡申请、请假、加班,查询日打卡记录、日考勤结果
    7. 系统:       执行定时任务,同步节假日(同时考勤员能手动执行),计算考勤

月度考勤确认:项目经理,供应商接口人,结算管理员。

  • 人力外包系统用户场景

数据导出功能待确认,那些数据、导出的格式待确认; 延后实现 。

    1. 考勤员设定规则(全局配置、部门考勤规则)

    1. 考勤员考勤计算生成日报表
    2. 考勤计算生成月报表
    3. 考勤计算生成季报表

    1. 员工打卡
    2. 员工补卡
    3. 员工请假
    4. 员工加班
    5. 查询打卡记录
    6. 查询考勤结果

    1. 项目经理审批签卡
    2. 定时任务:同步节假日
    3. 定时任务:计算考勤,每天计算当月的,每月一号计算上月的

  • 人力外包系统验收用例:
    1. 考勤员设定规则
    2. 自动或者手动排班,并能根据入职离职日期排班。
    3. 考勤员考勤计算生成日报表
    4. 考勤计算生成月报表
    5. 考勤计算生成季报表
    6. 员工打卡
    7. 员工补卡
    8. 员工请假
    9. 员工加班
    10. 查询打卡记录
    11. 查询考勤结果
    12. 项目经理审批签卡
    13. 定时任务:同步工作日
    14. 定时任务:定时计算考勤

  • 人力外包系统用户权限
    1. 项目经理只查看本部门的考勤数据
    2. 考勤管理员查看全部部门考勤数据
    3. 管理员只负责权限设定,不参与业务数据配置。
    4. 考勤管理员考勤计算数据权限:

需要数据权限。只计算有权限的部门数据。

  • 人力外包系统审批工作流功能:

工作流状态图:10草稿20审核中30审核不过打回40审核不过中止50审核通过

  1. 补卡
  2. 加班
  3. 请假
  4. 考勤确认流程:

生成考勤汇总数据和月度确认流程,这块数据和计算生成的数据。

是两份数据隔离,结算流程做?有个问题,多个供应商一个驳回则全部驳回。

以上实现统一的工作流,按照提供的工作流框架统一开发标准开发

  • 人力外包系统主页原型展示

  1. 考勤菜单

考勤管理: 增删改查

考勤查询: 查询

模板管理

定时任务(分开还是在主页) 两个菜单, 共一个页面,通过参数控制只能查询

  1. 模板管理

  1. 管理端

  1. PC员工端

打卡

补卡

加班

请假

查看考勤日报

  1. 企业微信员工端

迭代三实现

  1. PC供应商端

  • 人力外包系统考勤表清单

  1. 机构与人员表

同步现有第三方系统

  1. 工作日表 :att_day

 所有工作日

  1. 考勤周期表:att_period

年月、开始日期、结束日期、激活状态、标准工作日,需结转周期

  1. 配置表:att_config

有效打卡时间提前(分种)

有效打卡时间延后(分种)

打卡地址说明

打卡中心经度

打卡中心纬度

打卡中心半径

修改人

修改时间

  1. 考勤规则表

attend_rule

  1. 基本班次表:

正常上班、加班班次

att_class_master

Att_class_item

班次状态:上班 加班 请假

  1. 员工排班表:

自动排班,节假日如无法自动处理应提供界面操作。

att_employee_class

班次状态:上班 加班 请假

  1. 员工申请主表:att_employee_apply

申请类型

补卡

请假

加班

  1. 员工打卡、补卡表:att_employee_card

钉钉倒入,微信打卡数据同步

数据来源:

打卡、倒入、补卡,

来自系统:

本系统、钉钉、现微信打卡系统

设备、场所

  1. 员工请假表

att_employee_holiday

  1. 员工加班表

att_employee_overtime

  1. 分段考勤表 att_segment

  1. 考勤日表:由员工班次表+请假+加班生成,考虑加个异常标识,异常说明

att_days

  1. 考勤月表:由日报汇总而成 ,加个异常标识,异常说明

att_month

  1. 考勤季表:由月报汇总而成

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

    1. 员工表:vhr_employee

序号

字段标识

字段中文名称

类型

是否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

    1. 班组员工表:vhr_group_employee

序号

字段标识

字段中文名称

类型

是否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

    1. 节日表(工作日):att_day(包括周六周日工作日)

序号

字段标识

字段中文名称

类型

是否null

是否主键

索引

是否显示

显示长度

是否只读

默认值

数据来源说明

id

标识

Int

N

Y,自动+1

N

Y

自动

day

日期

date

0

type

类型

int

N

y

10

  1. 工作日

20-节假日

name

节日名称

Varchar(32)

created_by

创建人

Int

0

created_at

创建时间

datetime

 在节日表中按配置定义工作日,节日; 不在配置表中按周一日判断。

    1. 考勤周期表:att_period

序号

字段标识

字段中文名称

类型

是否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

    1. 考勤配置表:att_config

序号

字段标识

字段中文名称

类型

是否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

 根据需要添加更多配置字段。

    1. 考勤规则表:att_rule

由于考勤规律不明显,可以写在代码中。

序号

字段标识

字段中文名称

类型

是否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

    1. 班次主表:att_class_master

序号

字段标识

字段中文名称

类型

是否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

    1. 班次表:att_class_item

序号

字段标识

字段中文名称

类型

是否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

  1. Before

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个时间段预留未来计算平时加班的。

    1. 班组班次表:att_department_class

序号

字段标识

字段中文名称

类型

是否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

    1. 员工班次表:att_employee_class

自动排班,节假日如无法自动处理应提供界面操作。

班次状态:上班 加班 请假,请假类型如果需要统计则增加

序号

字段标识

字段中文名称

类型

是否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

    1. 员工申请表:att_employee_apply

申请类型: 补卡、 加班、 休假, 工作流使用。

序号

字段标识

字段中文名称

类型

是否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

    1. 员工刷卡表:att_employee_card ,  包括补卡、补卡要审核:

数据来源:打卡、补卡、倒入、

来自系统:钉钉倒入,企业微信打卡数据同步

本系统、钉钉、现微信打卡系统, 设备、场所

序号

字段标识

字段中文名称

类型

是否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

设备,场所根据需要,目前认为不需要。

    1. 员工加班表:att_employee_overtime

加班表时段可以一个代码自动根据班次切分,选择两个时段简单; 加班要审核。

如果加班未排班,只有一个时间段的加班需要增加扣除时间。

序号

字段标识

字段中文名称

类型

是否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

如果有多个时间段,则有多条记录。

    1. 员工休假表:att_employee_holiday, 包括出差、请假、休假等

请假表时段可以一个代码自动根据班次切分,选择两个时段简单; 请假要审核。

序号

字段标识

字段中文名称

类型

是否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

如果有多个时间段,则有多条记录。

    1. 员工考勤表:att_segment (员工考勤表)

由员工班次表+加班+请假生成,考虑加个异常标识。

序号

字段标识

字段中文名称

类型

是否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

输出报表信息

姓名 考勤组(这个谁录) 部门 工号 职位

   

工作时长(分钟)通过出勤天数算出。上班缺卡次数,下班缺卡次数要不要分。

    1. 员工考勤日结表:att_days

由考勤段落生成,考虑加个异常标识。

序号

字段标识

字段中文名称

类型

是否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

abnormal

异常说明

varchar(512)

created_by

创建人

Int

0

created_at

创建时间

datetime

    1. 员工考勤月度表:att_month

由考勤月表加考勤规则生成。

序号

字段标识

字段中文名称

类型

是否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

abnormal

异常说明

varchar(512)

created_by

创建人

Int

0

created_at

创建时间

datetime

  

  • 员工申请电子流

申请主表,补卡、加班、请假

申请子表:

加班类型

请假类型

  • 考勤流程与主要业务逻辑
    1. 考勤公共规则

  1. 加班规则

工作日:不算加班

周末(包括节假日):4h<=(结束时间-开始时间)<8h    算半天

8h<=(结束时间-开始时间)       算一天

(结束时间-开始时间)<4         不计入加班

通过排班确定是否加班

  1. 旷工定义:一天未打卡,没有补卡记录(一天只有一次打卡也算旷工)
  2. 请假定义:最小单位半天,上午下午小时数不等,如何处理?
  3. 加班定义:最小单位半天,通过申请单确认加班。
    1. 部门考勤规则

规则不太统一,不具备可配置性,代码实现。

研发部:

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点下班时间之前离岗的视为早退;

  1. 每个月度内,外包人员有三次签卡机会。外包人员当月有三次以上(不超三次)迟到、早退情况,须在考核中体现,具体考核分值由相关人把握。签卡后当天仍需满足8个小时的工作工时。”
  2. 累计连续三个月考核中有考勤被扣除相关分数,可启动对外包人员的退场。

考勤规则的疑问

1.补卡或请假能否做为早退来避免考勤异常的方式?     --可以

2.考勤被扣除相关分数,是有具体明细的标准?能否相关人在月度考核表填写具体的考勤扣分就行?              --会直接体现在月度考核分去掉,实在差的直接就退场

3.漏打卡也算当月三次机会内的一次?      --除了第一天入场打卡,其他都算

4.签卡后当天仍需满足8个小时的工作工时”,迟到后满足8个小时的工作工时,是否也算入当月三次机会内的一次?             --是

5.迟到,早退超过1个小时,即当天不满足8个小时的工作工时,如何罚?是以章老师(4、5、6)规则为准?   --如果经常这样,我们会直接考虑退场

6.请假最小单位是0.5天

网络项目开发部:

  1. 驻场外包人员每天上下班均需打卡,8:30—17:30,视为驻场8小时。(工作时长8:30-12:00,13:00-17:30。)
  2. 每名驻场开发人员,每出现一次30分钟以内的迟到,扣除考核分2分,每出现一次30分钟以上的迟到,扣除考核分5分。
  3. 下班时间为17:30,从19:00开始计算加班,满4小时以上才算加班,当日加班两小时及以上可增加考核分2分。

  1. 可手动导入钉钉来源月度考勤汇总数据,但存在事后加班请假问题;另一种方案,优先手动导入上季度的考勤汇总数据。
    1. 计算公式

当月费用=参考综合评分规则-支付比例的结算费用。

工作量=1+(当月应出勤天数(交易日)+加班天数-请假天数-缺勤天数-21.5)/21.5;

出勤天数=当月应出勤天数(交易日)+加班天数-请假天数-缺勤天数

加班天数=统计加班记录,看加班规则

请假天数=统计(企业微信考勤明细的)请假记录

缺勤天数=旷工(没有打卡考勤+没有补卡记录)

    1. 考勤流程:

没有画流程图,东程可以在详细设计中画一下。

  1. 同步工作日(可手动)
  2. 设定考勤周期表,只能计算当前激活的周期考勤,

页面:计算工作日

  1. 计算标准工作日(页面展示)
  2. 设定基本班次,
  3. 自动排班与手工排班:

根据基本班次对在职员工自动排班(上班班次与加班班次)

因为涉及到节假日变换,页面要支持排班(不能完全自动)

  1. 打卡:目前需要从老系统导入,新系统上线有延后。

  1. 补卡:审批通过有效
  2. 加班条:审批通过有效,按基本班次设定
  3. 请假条:审批通过有效,按基本班次设定
  4. 考勤分析:

第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. 考勤接口日同步:

同步考勤数据(钉钉倒入:未来平台自己打卡,无须导入数据)

  1. 考勤日计算:

每月1号自动计算上月的考勤数据,汇总月考勤、季考勤;

每月2号到月末计算当月日考勤。

按考勤部门分别计算,一个考勤员只处理本部门的,思考任务设计合理性的参考点:

    对于一些异常情况的考勤结果自动发送邮件。

  • 接口定义:
  1. 接口设计原则:
  1. 当表字段比较多,根据字段名前缀分组,或者分成多个结构体。

查询可以在代码侧实现拚接, SQL尽量单表操作(小表关联的数量不限)。

  1. 所有接口记录日志,内部、对外的,方便定位问题,以及责任划分。
  2. 管理端,员工端,供应商端分别采用url: manager,emp,supply。

  1. 接口范围:

由于时间关系,由模块开发人员在详细设计文档描述,接口包括:

  1. 定时任务接口

  1. 前端展示接口

打卡: 判断打卡在有效距离内,时间在有效班次范围内。

打卡:  生成有效时间内的的打卡数据

分段考勤:

  1. 内部接口:

供其它模块调用的接口

  1. 第三方接口统一封装

钉钉倒入:可重复操作,数据不重复

工作日同步入内部表:可重复操作,数据不重复

微信打卡数据同步: 可重复操作,数据不重复

  1. 接口代码评审:

接口代码优先评审

  •  第三方外部接口需求列表(统一与客户对接、确认需求)
    1. 同步机构人员数据
    2. 同步交易(工作)日数据
    3. 每天同步微信考勤数据: 打卡、请假、加班
    4. 每天钉钉倒入: 打卡、请假、加班
  •  参考
    1. 需求与招聘管理表关系

结表

    1. att_days考勤日结表(放弃版本)

序号

字段标识

字段中文名称

类型

是否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

abnormal

异常说明

varchar(512)

created_by

创建人

Int

0

created_at

创建时间

datetime

updated_by

最后操作人

Int

0

updated_at

最后操作时间

datetime

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值