注册 登录
编程论坛 ASP.NET技术论坛

请教高手一个算法

leo01029 发布于 2008-05-21 09:25, 659 次点击
我在做一个考勤系统,目的是为了统计每日的员工出勤状况,比如员工A:正常上班多少小时,请假多少小时,加班多少小时。

我们公司有个特殊的考勤项目,借调

意思是在注册在A部门的员工,因为工作需要,要借到B部门去
这个时候该员工的出勤时间要算到B部门去

如果A部门有5个人,B部门有4个人,在5/20这一天,没有加班没有请假,那这天B部门的出勤时间应该是4*8=32小时,A部门的出勤时间应该是5*8=40小时
假如5/21, 从A部门借了一个人去B部门,该员工上班8小时,没有加班没有请假
则B部门的出勤时间应该是32+8=40小时(正常上班:32小时,借入时间:8小时)
而A部门的出勤时间应该是40-8=32小时(正常上班:32小时,借出时间:8小时)

需要注意的是,借调可以是几个小时,也可以是几天,甚至几个月,开始时间是知道的,结束时间是未知的,等到实际发生才能知道

以上是借调情况下,各部门的员工出勤时间统计,下面说下我的问题。

我在数据库里建了一个表,当发生借调事件时,记录开始时间,员工信息,从哪个部门借到哪个部门
等到借调结束后,再在这个表中记录结束时间等。

问题是,我该怎么统计某一天这个部门的借调时间呢?

通常情况下,我是在当日要算出上一个工作日的出勤时间,比如今天5/21,我需要算出5/20的时间。

写出以下几种情况,给大家帮忙分析
假设今天是5/21,需要统计5/20的出勤时间
1、员工甲,在5/20从A部门借调到B部门4个小时
2、员工甲,在5/19从A部门借调到B部门,5/21还未回原部门
3、员工甲,5/20在原部门A正常上班了8个小时后,加班借调到B部门2个小时

不好意思,写的比较长,望高手能给我点思路,不胜感激!
1 回复
#2
hebingbing2008-05-21 09:47
只建立员工表,部门信息用试图表示……
建立一个这样的表
员工  开始时间 结束时间  工作的部门
1