在员工管理系统中实施假期

时间:2016-07-25 07:36:26

标签: c# asp.net sql-server database webforms

我正致力于员工管理系统,员工可以

  • 时钟输入/输出时钟(标记每日出勤率)
  • 申请叶子,即生病
  • 生成报告,即每日入住/退房时间,工作总时数等

现在,我必须在这些报告中介绍一种处理公众假期和员工缺席的方法。我在网上阅读了一些文章,如

但我无法弄明白。我的问题基本上都是。

  • 处理员工缺席的最佳方法是什么?考虑到在特定日子,员工不会办理登机手续。

  • 如何在报告中添加/指定周末/公共假期?由于未来改变公共/常规假期可能会影响我们前几个月的报告。

我非常感谢这里的一些帮助! 谢谢

3 个答案:

答案 0 :(得分:2)

极少数(如果有的话)数据库将日期范围作为数据类型处理,虽然有多种方法可以计算日期范围交叉点,但它们很昂贵,并且会导致任何大型数据集进行爬网。因此,您需要交换数据存储的计算速度

因此,检查的最佳方法是使用一个存储日期的表,然后使用该表中的日期将日期范围扩展到范围内的所有日期,结构很简单只有一个日期与日期在其中

我不建议使用日期表来跟踪假期,而只是将这些作为缺席类型"公众假期"您可能希望在日期表中标记周末(或一周中的哪一天),但不要使用它来说明某人是否在那天工作或没有工作,而是使用workPattern表来说明员工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)您也可以删除旧日期,但在此之前请确保您不需要查询数据。即你要离开的最后日期之前的所有内容都已归档。

接下来要记住的是人的因素,人们会忘记进出时间,所以你需要牢记这一点,并且每天都要找工作,找出匹配的时钟输出,反之亦然,然后您可以标记这些以进行人工纠正或自动处理

一旦你对这两个元素进行了排序,就可以计算每个人每天的工作时间,将其加入到每日缺勤视图中,这样就可以检查日期表上没有时钟或缺勤的日期不一致(未经授权)缺席),可以通过适当的条目进入缺席表或冲突,如有人在他们应该休假时上班,再次你可以标记人为纠正或自动处理,比如是否存在时钟忽略缺席

您实际构建系统的方式取决于系统中的需求,但如果您不考虑系统,这些是导致系统失效的常见因素

答案 1 :(得分:1)

我正在撰写评论,但这已经走了很远,我考虑写一个答案。

  

如何在报告中添加/指定周末/公共假期?

您可以使用表格(如此question)来存储指定年份的所有日期,其中标记是一天工作与否。我们在我们的环境中使用这样的东西。它每年手动填充一次。

  

处理员工缺席的最佳方法是什么?

我打赌会有一些表格的行如下:

EmployeeID  InOut   Date                
1           In      2016-07-24 07:00:01.000
1           Out     2016-07-24 18:00:09.908
etc

因此,如果员工缺席 - 特定日期将不会有行。

答案 2 :(得分:1)

  

处理员工缺席的最佳方法是什么?考虑到在特定日子,员工不会办理登机手续。

您可以为此创建初始设置/代码文件。将有一个特定的表格来保存日历年度所有公共假期的信息。它将在每年年初手动输入。

现在,当处理出勤数据时,它将检查日期。如果该代码文件中存在任何日期,它将被标记为假日。

  

如何在报告中添加特定假期?

请记住,您需要一个表格,其中包含一年中的每个日期,然后是每个日期的标记属性。根据工作日/假日将标志设置为true / false。

如果该标志为false,则会有假期,您将在报告中显示假期。您甚至可以在此表中设置一列来提及假日的名称。它将维护每年的日期数据。所以,如果你想看到前一年的出勤报告。数据就在那里,没有问题。