我正在开发一个员工管理系统,在那里员工可以
现在我要介绍一种处理这些报告中的公共假日和雇员缺勤问题的方法。我在网上读了几篇文章,比如
但我什么都想不出来。我的问题基本上是。
我真的很想在这里得到帮助!谢谢
发布于 2016-07-25 09:11:07
很少(如果有的话)数据库将日期范围作为数据类型处理,虽然有计算日期范围交叉点的方法,但它们代价高昂,将导致任何大型数据集爬行。因此,您需要用计算速度来换取数据存储。
由于这一点,最好的检查方法是有一个存储日期的表,然后使用该表中的日期将您的日期范围膨胀到范围内的所有日期,结构很简单--只有一列中有日期。
我不建议使用日期表来记录节假日,而只是将它们作为“公共假日”类型的缺勤(您可能希望在日期表中标记周末(或星期几)),但不要用它来表示某个人那天是否工作过,而是使用一个workingPattern表表示factory worker员工在周一工作4小时,周二工作6小时。这样你就可以得到一个员工预期的工作时间,以及他们在一周内工作的时间,而不是强迫每个雇员都遵循相同的工作模式。
例如
select d.Date, a.*
from absence as a
join dates as d on d.Date between a.StartDate and a.EndDate这会给你一个人缺席的每一个日期,让你很容易地比较不同的缺勤时间。
大多数雇用系统很少允许员工提前一年以上工作,因此我建议建议有一个月工作,运行日期表并填充(Today + 12 months)和(Today + 13 months)之间的所有日期,您也可以删除旧日期,但在这样做之前,请确保不存在查询数据的情况。你离开前的每件事都已存档。
下一件要记住的是人的因素,人们会忘记进进出出,所以你需要记住这一点,每天都有一份工作,在没有匹配的时钟的情况下寻找时钟,或者把它们标记为人工校正,或者自动处理它们。
一旦对这两个元素进行了排序,您就可以计算每个人每天工作的时间,将其与“每日缺勤”视图交叉起来,这将允许您检查日期表中没有时钟或缺勤(未经授权的缺勤)的日期是否不一致,这些日期可以用适当的条目更正到缺勤表中,或者冲突(如某人在休假时开始工作),您也可以为人工更正或自动处理标记,例如,如果存在时钟,则忽略缺勤。
如何实际构建系统取决于您在系统中需要什么,但如果不考虑这些因素,这些因素将杀死您的系统。
发布于 2016-07-25 07:50:04
我当时正在写一篇评论,但这已经走得太远了,我考虑写一个答复。
如何在报告中添加/指定周末/公共假日?
您可以使用一个表(如此question中的表)来存储给定年份的所有日子,标志是一天工作与否。我们在我们的环境中使用这样的东西。它每年手动填写一次。
处理员工缺勤的最佳方法是什么?
我敢打赌一定会有这样的几行表:
EmployeeID InOut Date
1 In 2016-07-24 07:00:01.000
1 Out 2016-07-24 18:00:09.908
etc因此,如果员工缺席,那么在特定日期将不会有任何行。
发布于 2016-07-25 08:25:47
处理员工缺勤的最佳方法是什么?考虑到某一特定的一天,雇员不会登记入住。
您可以为此创建一个初始设置/代码文件。会有一个特定的表格,用以存放有关历年所有公众假期的资料。它将在每年年初手动输入。
现在,当考勤数据被处理时,它将检查日期。如果该代码文件中有任何日期,则将其标记为假日。
如何在报告中添加特定的假期?
请记住,您将需要一个表,该表将保存一年中的每个日期,然后需要一个带有每个日期的标志属性。根据工作日/假日设置标志为真/假。
如果该标志是假的,那么就有一个假日,您将在报告中显示该假日。您甚至可以在此表中设置列,以提及假日的名称。它将保持每年日期的数据。所以如果你想看前年的考勤报告。数据将在那里,也不会有问题。
https://stackoverflow.com/questions/38562078
复制相似问题