考勤算法的应用刘永铭2024年7月22日U8支持服务应用部目录考勤算法的介绍1考勤算法的应用2U8支持服务应用部PART1考勤算法的介绍U8支持服务应用部考勤算法的介绍将班段算法、日结果汇总算法、月结果汇总算法、加班抵扣与结算、年结果汇总算法按业务逻辑设计为多个子过程。每个子过程包括三个组成部分:预处理过程、标准算法、后处理过程,其中:预处理过程、后处理过程默认为空,可由用户或实施人员设计自定义算法,标准算法可配置是否启用。算法实现方式:计算公式存储过程标准算法和自定义算法可更好的组合,解决各种复杂场景的应用问题。U8支持服务应用部考勤算法的介绍——计算公式U8支持服务应用部考勤算法的介绍——存储过程存储过程,修改更新的表记录必须是临时表,不能是实际表。U8支持服务应用部PART2考勤算法的应用1、计算公式2、存储过程U8支持服务应用部考勤算法的应用—计算公式应用场景:企业通过员工的出勤情况,给予员工一些相关福利;如:餐补、夜班津贴等;算法思路:(可通过考勤算法,计算公式的后处理公式来实现)1、考勤日结果,增加考勤项目:“补助标志”。2、设置考勤算法,如实出勤>=8小时,打上“补助标志”。公式内容:如果考勤日结果.班次='0001'并且考勤日结果.实出勤>=8那么1否则0结束U8支持服务应用部考勤算法的应用—计算公式软件实现:U8支持服务应用部考勤算法的应用—存储过程应用场景:通过员工的出勤情况,统计一些客户需求与软件算法逻辑不一致的情况;需求:员工在上班期间外出,没有填写请假单,需要统计异常;分析:1、软件算法是根据请假单来反算实出勤;2、如果没有填写请假单,在打了上班卡、下班卡情况,软件计算后就是正常出勤。3、对于此情况需要重写考勤算法实现。思路(可通过考勤算法,后处理公式的存储过程来实现)1、取得上班的有效卡,下班的有效卡;2、比较在有效卡期间,是否存在刷卡,如果存在,则更新存在外出的状态;3、再判断是否存在请假,如果不存在,直接更新:异常状态,并更新异常原因:“私自外出”。U8支持服务应用部考勤算法的应用—存储过程Createprocedure[dbo].hr_sp_tm_Cust_DealExceptions(@Startdatenvarchar(10),--开始日期@Enddatenvarchar(10),--截止日期@strPersonnvarchar(50),--人员临时表@strDayResultnvarchar(50),--日结果临时表@strPeriodResultnvarchar(50),--班段结果临时表@strOriCardDatanvarchar(50)--刷卡数据临时表)asdeclare@strSQLasnvarchar(4000)--增加是否多卡、上班有效卡,下班有效卡;SET@strSQL='altertable'+@strPeriodResult+'addDef_OutPersonnalbitdefault(0),'+'Def_dCustDutyTimenvarchar(19),Def_dCustOffTimenvarchar(19)'EXEC(@strSQL)--上班有效卡,上班时间的最大值SET@strSQL='updateasetDef_dCustDutyTime=CASEWHENdActualDutyTime>dDutyTimeTHENdActualDutyTimeELSEdDutyTimeENDfrom'+@strPeriodResult+'asawherea.dActualDutyTimeISNOTNULL‘EXEC(@strSQL)U8支持服务应用部考勤算法的应用—存储过程--接上页--取下班有效卡,下班时间的最小值;SET@strSQL='updateasetDef_dCustOffTime=CASEWHENdActualOffTimeDef_dCustDutyTimeANDdata.dDateTime