关于员工出勤数据计算的问题

人鱼传说 2011-10-10 10:12:33
公司的排班班如下,需要通过排班表计算员工每天的出勤数,想了许久没个好的方法,在这里请高手指点:
...全文
288 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
人鱼传说 2011-10-16
  • 打赏
  • 举报
回复
谢谢tsp3ng
tsp3ng 2011-10-13
  • 打赏
  • 举报
回复
上述的重点除了说明排班的注意事情,还想表达一个设计思想:对象、方案, 对象方案对应表
对象可以表示员工、部门、职位, 员工类型、客户、客户等级、客户区域、部门 +职位等可任意组合的,
方案可以表示对象所有可用到的规则,例如考勤方案、计件方案、信用额度方案、报价方案等。
对象方案对应表用来关联对象与方案之间的关系, 这种思想可以做到低耦合(对应关系是低耦合)、高内聚(方案是内聚的), 也符合系统的设计要求(封装、继承、分层等)
下面通过说明这样的设计思想不同地方,以售销信用额度为例。
按照常规的设计思想,根据客户、或者客户类型、或者销售部门直接设定信用额度, 像金蝶的信用额度是这么设计的, 这样的设计是高耦合的, 假设客户提出来要根据不同的地区,不同的销售方式(经销、直销、OEM)、不同的地区不同的销售方式不同的信用额度时则没有办法了,甚至遇到经济危机时需要调整不同的客户的额度时则更加没有办法。

如果采用方案的思想设计,则可以根据不同的规则定义出N个不同的信用额度方案。
然后根据对象方案关系表进行设定则可以自由组合,而且可以设定不同时段有不同的信用额度。

在系统求解信用额度时,也非常简单统一,
第一步 系统根据日期、客户查找出适合的信用额度方案。
第二步,把信用额度方案ID,交给信用额方案函数求解就可以了.

这样的好处调用者只要把信用额方案ID传递过去,至于信用额度内部如何求解是内部的事情,而且信用额度内部计算规则改了,也与调用者没有关系,因为传递的参数只有一个ID及客户的ID.

这样的对应关系设计可以解决客户提出不同的信用额度要求,只有变更对应关系就可以了,而且信用额度方案改了,则用到该方案的客户都会跟着变,从而避免一个一个客户地改信用额度。



geniuswjt 2011-10-13
  • 打赏
  • 举报
回复
楼上好敬业啊,有空我一定拜读下
tsp3ng 2011-10-13
  • 打赏
  • 举报
回复
考勤处理是个非常复杂的过程, 考勤的处理过程用存储过程写了1.3W行(处理一个员工一天的考勤)
目前来讲比较通用

考勤系统分为基础数据 + 单据部分 + 报表部分
基础数据应该从考勤方案入手设计, 不同的部门、职位、月薪、员工类型可以使用不同的考勤方案。
考勤方案就能规定所有的考勤细节(主要是规定工时(出勤、加班、请假、迟到、早退、缺勤、出差、夜班、休息、签卡次数等)如何计算)。

考勤方案从设计的角度来讲,就是对考勤规则进行封装,考勤方案内部可以使用排班、智能认别,甚至两者结合,也可以规定该方案算不算迟到,多少分钟算迟到,算不算加班,加班单位时间是多少等,总之考勤方案规定了所有的计算规则,即只要知道某员工的、某部门、某职位的考勤方案,就知道如何计算考勤了。那么不同的部门、职位、员工类型等有不同的计算规则时,则可以分配不同的考勤方案, 设计上就形成员工 与 考勤方案之间对应关系, 这种离散关系可以系统非常灵活,做到特殊的员工特殊方案,没有特殊就用通用方案,这种离散关系可以处理集团企业,不同的分公司可以使用不同的方案。

离散关系可以应用系统设计的其他方面,例如计件系统,可以设计成计件方案,那么不同的员工不同的工序可以使用不同的计件方案;例如销售系统的报价定义,首先设计出报价方案表,至于这个报价方案内部怎么算暂时不管,再可以定义不同的客户可以使用不同的报价方案表,不同的级别的客户使用不同的报价方案表,不同地区的、不同季度的使用不同的方案表,甚至国庆节可以使用不同的报价方案表,这样系统可以根据优先查找算法找到对应的唯一的报价方案表,再把报价方案表的ID)交给报价方案系统去处理出单价返回给调用者就可以了。

像排班系统也可以考虑根据不同对象(部门、职位、员工、员工类型、薪别等)不同的员工归类进行排班, 还存在继承关系,例如已经仓库部门排了班次,那么仓库的员工没有特别规定的情况下,就应当继承部门的排班。
从设计的角度还需要考虑正常与非正常情况,正常的班次已经排好了,突然某个部门今天就不上班了如何处理,是否在原来的排班基础上改,还是另写单据来处理呢?从系统设计的原则来讲,事物的处理应当留下证明(单据), 尽量考虑使用单据来处理这些非正常情况。


以上是个人设计系统时体会出来的,对事物进行归类形成不同的方案,这些方案是独立存在的,可以与事物没有直接关系,然后再通过对应表进行关系,
这个对应表可以规定不同的时间段、不同的对象使用不同的方案,这样的处理可以从时间、对象两个方面灵活地处理企业不同的变化。
例如BOM表,可以把BOM单独设计出来,这时与产品没有直接关系,然后再通过对应表把产品与BOM联系起来,这样有什么好处呢
这样可以把不同的产品使用同一个BOM,不同的产品BOM是相同的,只是BOR不同而已,也可以做到同一个产品不同的时段使用不同的BOM,
甚至可以在新产品没有确认的情况下,使用BOM做独立做成本分析预算,MRP分析预算。

人鱼传说 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ssp2009 的回复:]

给点测试数据,你什么都没给。就给个结果报表,没有用。
[/Quote]
以下是数据,类型01表示上班卡,02表示下班卡
工号 类型 打卡时间
06124 02 2011-09-01 17:02:01.000
06125 02 2011-09-01 17:02:01.000
05283 02 2011-09-01 17:03:01.000
05522 02 2011-09-01 17:03:01.000
03247 02 2011-09-01 17:04:01.000
05027 02 2011-09-01 17:04:01.000
03346 02 2011-09-01 17:06:01.000
05897 02 2011-09-01 17:06:01.000
02191 02 2011-09-01 17:34:01.000
01636 02 2011-09-01 17:34:01.000
00918 02 2011-09-01 17:34:01.000
05032 02 2011-09-01 17:34:01.000
05195 02 2011-09-01 17:34:01.000
05222 02 2011-09-01 17:34:01.000
02418 02 2011-09-01 17:34:01.000
04649 02 2011-09-01 17:34:01.000
04461 02 2011-09-01 17:34:01.000
04952 02 2011-09-01 17:34:01.000
05474 02 2011-09-01 17:34:01.000
04639 02 2011-09-01 17:34:01.000
04882 02 2011-09-01 17:34:01.000
05239 02 2011-09-01 17:34:01.000
03181 02 2011-09-01 17:34:01.000
02193 02 2011-09-01 17:34:01.000
03678 02 2011-09-01 17:34:01.000
04480 02 2011-09-01 17:34:01.000
05096 02 2011-09-01 17:34:01.000
05509 02 2011-09-01 17:34:01.000
03095 02 2011-09-01 17:34:01.000
00178 02 2011-09-01 17:34:01.000
05143 02 2011-09-01 17:34:01.000
04195 02 2011-09-01 17:34:01.000
00807 02 2011-09-01 17:35:01.000
04928 02 2011-09-01 17:35:01.000
01649 02 2011-09-01 17:35:01.000
03656 02 2011-09-01 17:35:01.000
04410 02 2011-09-01 17:35:01.000
00227 02 2011-09-01 17:35:01.000
01745 02 2011-09-01 17:35:01.000
03035 02 2011-09-01 17:35:01.000
05861 02 2011-09-01 17:35:01.000
06220 02 2011-09-01 17:35:01.000
05667 02 2011-09-01 17:35:01.000
05147 02 2011-09-01 17:35:01.000
00130 02 2011-09-01 17:35:01.000
03476 02 2011-09-01 17:35:01.000
03576 02 2011-09-01 17:35:01.000
04651 02 2011-09-01 17:35:01.000
05076 02 2011-09-01 17:35:01.000
04922 02 2011-09-01 17:35:01.000
05753 02 2011-09-01 17:35:01.000
04240 02 2011-09-01 17:35:01.000
04425 02 2011-09-01 17:35:01.000
03673 02 2011-09-01 17:35:01.000
00639 02 2011-09-01 17:35:01.000
04350 02 2011-09-01 17:35:01.000
05692 02 2011-09-01 17:35:01.000
02904 02 2011-09-01 17:35:01.000
02978 02 2011-09-01 17:35:01.000
04934 02 2011-09-01 17:35:01.000
06052 02 2011-09-01 17:35:01.000
03040 02 2011-09-01 17:35:01.000
06170 02 2011-09-01 17:35:01.000
06142 02 2011-09-01 17:35:01.000
04190 02 2011-09-01 17:35:01.000
02710 02 2011-09-01 17:35:01.000
03733 02 2011-09-01 17:35:01.000
02022 02 2011-09-01 17:35:01.000
01782 02 2011-09-01 17:35:01.000
06051 02 2011-09-01 17:35:01.000
03204 02 2011-09-01 17:35:01.000
06218 02 2011-09-01 17:35:01.000
04879 02 2011-09-01 17:35:01.000
02815 02 2011-09-01 17:35:01.000
04890 02 2011-09-01 17:35:01.000
04717 02 2011-09-01 17:35:01.000
04985 02 2011-09-01 17:35:01.000
03688 02 2011-09-01 17:36:01.000
05902 02 2011-09-01 17:36:01.000
03898 02 2011-09-01 17:36:01.000
04181 02 2011-09-01 17:36:01.000
05941 02 2011-09-01 17:36:01.000
05876 02 2011-09-01 17:36:01.000
05931 02 2011-09-01 17:36:01.000
03864 02 2011-09-01 17:36:01.000
06154 02 2011-09-01 17:36:01.000
02291 02 2011-09-01 17:36:01.000
05232 02 2011-09-01 17:36:01.000
04712 02 2011-09-01 17:36:01.000
04911 02 2011-09-01 17:36:01.000
04659 02 2011-09-01 17:36:01.000
02326 02 2011-09-01 17:36:01.000
04308 02 2011-09-01 17:36:01.000
06210 02 2011-09-01 17:36:01.000
02192 02 2011-09-01 17:36:01.000
06153 02 2011-09-01 17:36:01.000
快溜 2011-10-11
  • 打赏
  • 举报
回复
给点测试数据,你什么都没给。就给个结果报表,没有用。
人鱼传说 2011-10-11
  • 打赏
  • 举报
回复
期待高手出现
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 luckyrandom 的回复:]

正常。。我公司也是二十多个班次了。。提供有偿支持
[/Quote]

能说个思路先吗?
Q315054403 2011-10-10
  • 打赏
  • 举报
回复
正常。。我公司也是二十多个班次了。。提供有偿支持
--小F-- 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 baronyang 的回复:]
需要根据员工的上下班时间,参考排班表,计算出员工每天的实际出勤数
[/Quote]
你的那个排班表太复杂了吧

一般的计算方法是

select
PersonCode,
sum(case when CheckTime<=上班时间 and CheckTime>=下班时间 then 1 else 0 end)
from
tb
group by
PersonCode

就可以了
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
需要根据员工的上下班时间,参考排班表,计算出员工每天的实际出勤数
--小F-- 2011-10-10
  • 打赏
  • 举报
回复
那需要得到的结果是什么呢?
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
不好意思,第五楼就是排班表
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
考勤表的数据结构就是:
工号:PersonCode
打卡时间:CheckTime
打卡类型:上班或下班
唐诗三百首 2011-10-10
  • 打赏
  • 举报
回复
依然挂了喔,楼主还是直接上输入输出的数据样本吧.
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
--小F-- 2011-10-10
  • 打赏
  • 举报
回复
图看不见。
Rotel-刘志东 2011-10-10
  • 打赏
  • 举报
回复
楼主的图片没有显示,没有表的结构怎么给解决问题?把图片上传csdn相册中就可以显示了。
人鱼传说 2011-10-10
  • 打赏
  • 举报
回复
快溜 2011-10-10
  • 打赏
  • 举报
回复
下面什么也米有
加载更多回复(3)
SSM公司员工考勤管理系统是一个基于SSM框架的计算机毕业设计项目,旨在为企业提供一套高效、便捷的员工考勤管理解决方案。 本项目首先进行了详尽的数据库设计,包括员工信息、考勤记录、部门设置等数据表,以确保数据的准确性和完整性。通过优化数据表关联和索引,系统能够迅速响应查询请求,提供实时的考勤数据。 在程序开发方面,系统采用了SSM框架,实现了员工信息管理、考勤记录查询、考勤统计等功能。管理员可以方便地录入员工信息,实时查看员工的考勤情况,包括迟到、早退、请假等记录。同时,系统还提供了考勤数据的统计分析功能,帮助企业更好地掌握员工的工作状态和出勤规律。 此外,本项目还撰写了一篇论文,深入探讨了员工考勤管理系统的设计与实现过程。论文从需求分析、系统设计、数据库设计、程序开发等方面进行了全面阐述,为系统的开发提供了理论支持和实践指导。 最后,为了方便学生进行答辩,项目还附赠了计算机答辩PPT。PPT清晰地展示了系统的功能特点、实现过程以及创新点,帮助学生更好地展示自己的毕业设计成果。 综上所述,SSM公司员工考勤管理系统是一个功能完善、操作简便的考勤管理工具,能够有效提升企业的考勤
企业考勤管理系统是一种计算机软件或硬件设备,用于记录、管理、统计和分析员工的上下班情况。随着企业规模的扩大和管理的复杂化,传统的手工考勤方式已经无法满足现代企业的需求。因此,基于计算机技术和通信技术的考勤管理系统应运而生,旨在提高企业管理效率和公正性。 企业考勤管理系统的主要功能包括记录员工出勤情况、生成考勤报表、统计缺勤和加班时间、支持各种打卡方式、与薪资系统集成等。该系统可以通过考勤打卡机、刷卡机、人脸识别仪等设备采集员工出勤信息,并通过对数据的处理和分析,为企业管理提供数据支持。 企业考勤管理系统的用途主要体现在以下几个方面: 提高管理效率:通过自动化记录和统计员工出勤情况,减少了手工考勤的时间和人力成本,提高了管理效率。 保证公正性:考勤管理系统可以客观地记录员工出勤情况,避免了手工记录容易出现的主观误差,保证了考勤的公正性。 方便查询和统计:系统可以快速查询和统计员工出勤情况,方便企业管理者了解员工出勤情况,为人力资源管理和决策提供数据支持。 与薪资系统集成:考勤管理系统可以与薪资系统集成,根据员工出勤情况自动计算工资,减少了手工计算的错误和繁琐性。 总之,企业考勤管理系统是现代企业管理中不可或缺的一部分,可以帮助企业提高管理效率和公正性,方便查询和统计员工出勤情况,与薪资系统集成,使企业管理更加科学化和规范化。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧