业务场景:针对以下业务设置预警
20231121更新注:【该预警存在缺陷】,能发预警,但无法取消发送。现场如果需要设置取消预警。可以将预警主对象改为假期额度实体。对年假额度记录进行预警,公式设置表达式预警剩余额度大于0天且满足统计考勤项目值的年假记录。这样当专员发现员工不符合当年请年假条件时,可以手动将员工剩余年假更新为0。这样就可以实现关闭预警。但必须在预警对象每年手工更新一次年假过滤条件,仅对本年年假额度进行预警。且这种设置方式,对于当年先请完了年假,然后再请病假事假超过规定的情况无法处理。
或者也可以把已处理的人员手工加入到过滤条件中,如姓名<>张三。手工关闭预警。
1、设置事假预警
1.1预警对象的选择
事假预警,需要统计员工当年的事假额度。通过查看预置的考勤异常预警可以发现,可以通过“考勤明细功能”来统计员工一定期间内的考勤项目累计值,正好可以满足预警需要
例如:【考勤明细功能.统计考勤项目值( 员工_个人信息.ID,时间间隔,迟到次数项目编码)】
因此第一步直接复制预置考勤异常预警,以考勤明细功能和员工基本信息作为预警对象。顺手加一个人员功能对象上去便于一会儿设置动态接收人。
1.2取值范围设置变量
时间间隔参数不能是一个定值,因为需要统计本年的考勤项目值,今年过了多少天,就需要汇总多少天的考勤。取值范围需要设置为一个变量:
将参数“时间间隔”改为“本地”而非输入。然后设置时间间隔的公式。
1.3函数的选择和公式表达式
Yearday函数可以取当前年的第几天。这正是我们需要的:时间间隔=yearday(now());
之后的表达式直接按照预置考勤异常的思路来就可以了:如果员工在本年事假时长超过20天,就预警,否则不预警。
消息表达式再写一遍如何取员工事假时长的功能就可以了,注意变量在消息表达式里需要对“时间间隔”重新取值。
1.4取角色动态接收人
预警对象增加人员功能对象,根据角色编码取对应员工。可将需要收到消息的人员(如HR)单独分配一个角色。
效果如下:
2、设置病假预警
2.1计算集团工龄
病假预警需要计算员工的集团工龄进行判断,更为复杂。而且,员工基本信息中无法取到集团工龄这个字段。我自己的办法是用入职日期手动计算出集团工龄:
计算now和员工入职日期之差,然后除以365,就是员工的工龄。该数值计算后与员工页签中的集团工龄一致。
该计算式参考员工生日预警,converJavaDate用于转换日期类型,dateDiff用于计算两个日期之差。
“00:00:00”是为了凑数的,now函数返回当前日期是带着时分秒的,必须要同样的格式才能进行相减。
2.2公式表达式
将工龄条件和员工请假统计功能的结果结合。
消息表达式需要注意通过round函数进行保留小数,否则消息表达式中体现员工工龄小数点会非常多:
消息表达式和上述事假预警一致。