- 2.83 MB
- 2022-05-17 12:54:55 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
OA系统考勤管理系统开发需求说明书V1.0(模板)日期更新人版本备注2014-1-07张志军V1.0创建
目录1概述31.1目标31.2背景31.3术语和定义、缩略语31.4相关制度32需求描述42.1基本设置42.1.1排班设置42.1.2节假日设置62.2单据审批设置72.2.1单据审批流程72.2.2请假单82.2.3加班单102.2.4销假单112.2.5出差单122.3考勤信息存储122.4考勤报表查询172.4.1个人考勤明细查询172.4.2考勤统计查询172.4.3请假明细查询182.4.4请假统计查询18
前言为了加强企业信息化管理,提高工作效率、完善工作流程,人事部门提出在OA系统中增加考勤管理系统来减少重复劳动或实现流程优化。项目管理人员在完成对该需求的可行性及必要性分析后,编制此开发需求说明书,明确数据库名称、各项功能需求、各字段名称及示图要求等,作为IT系统开发工作的基础和依据,并作为确认测试和验收的依据。1概述1.1目标为了提高对员工出勤数据采集的准确性,完善公司的考勤制度。公司决定实施考勤管理系统,通过对员工上下班进行考勤指纹打卡,形成员工出勤记录,并对员工出勤数据进行准确的采集与整理,并对各部门的考勤数据绘制报表展现出来。该系统应用于企业所有员工,主要作用范围包括个人考勤查询,请假申请,出差申请,考勤统计报表等。开发期限为2013.12–2014.21.2背景a.此系统名为考勤管理系统b.任务提出者为人力资源部门c.该系统将与财务管理系统,指纹打卡机系统进行接口连接d.用户对象为企业所有员工1.3术语和定义、缩略语[列出本文件中用到的专门术语的定义和外文首字母组词的原词组。若没有则写“无”。]1.4相关制度[列出与该业务相关的规范性文件,如制度、流程文件等,若没有则写“无”。]
1需求描述1.1基本设置1.1.1排班设置1.建立数据库表1.1班别数据库表(栏位包括:班别,是否跨天,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间,周末上午应上班时间,周末上午应下班时间,周末下午应上班时间,周末下午应下班时间,设置日期,设置人)1.2个人排班数据库表(栏位包括考勤号码,工号,姓名,归属,部门,班别,是否跨天,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间,周末上午应上班时间,周末上午应下班时间,周末下午应上班时间,周末下午应下班时间,设置日期,设置人)工号设为唯一主键2.UI界面2.1班别设置界面l班别:输入(如早班,中班,晚班)l是否跨天:2个选项:Y或者Nl应上班时间等:格式设为时间格式,使用时间控件进行选择l设置日期:当前系统时间,提交后将此时间插入数据库表l设置人:当前操作人,提交后插入数据库表设置完成提交后,将此界面中的数据提交到班别数据库表,SQL如下:INSERTINTO班别数据库表(班别,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间,周末上午应上班时间,周末上午应下班时间,周末下午应上班时间,周末下午应下班时间,设置日期,设置人)VALUE(’班别’,’上午应上班时间’,’上午应下班时间’,’下午应上班时间’,’下午应下班时间’,’周末上午应上班时间’,’周末上午应下班时间’,’周末下午应上班时间’,’周末下午应下班时间’,当前系统时间,当前操作人)
2.2个人排班设置界面2.2.1by部门进行排班※操作者选择部门,班别。上午应上班时间等由班别自动带出设置完提交后,后台代码操作流程为:a)DELETEFROM个人排班数据库表WHERE部门=‘选择的部门’b)INSERTINTO个人排班数据库表(考勤号码,工号,姓名,归属,部门,班别,是否跨天,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间,周末上午应上班时间,周末上午应下班时间,周末下午应上班时间,周末下午应下班时间,设置日期,设置人)SELECT考勤号码,工号,姓名,归属,部门,’班别’,’是否跨天’,’上午应上班时间’,’上午应下班时间’,’下午应上班时间’,’下午应下班时间’,’周末上午应上班时间’,’周末上午应下班时间’,’周末下午应下班时间’,’周末下午应下班时间’,’系统当前时间’,’当前操作人’FROM员工个人信息表WHERE部门=‘选择的部门’2.2.2by个人进行排班※操作者输入工号,选择班别。姓名由工号带出,时间由班别带出。设置完提交后,后台代码操作流程为:a)DELETEFROM个人排班数据库表WHERE工号=‘选择的工号’b)INSERTINTO个人排班数据库表(考勤号码,工号,姓名,归属,部门,班别,是否跨天,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间,周末上午应上班时间,周末上午应下班时间,周末下午应上班时间,周末下午应下班时间,设置日期,设置人)
SELECT考勤号码,工号,姓名,归属,部门,’班别’,’是否跨天’,’上午应上班时间’,’上午应下班时间’,’下午应上班时间’,’下午应下班时间’,’周末上午应上班时间’,’周末上午应下班时间’,’周末下午应下班时间’,’周末下午应下班时间’,’系统当前时间’,’当前操作人’FROM员工个人信息表WHERE工号=‘选择的工号’2.2.3排班查询界面部门 工号 查询在输入部门,或者工号,点击查询,直接SELECT个人排班数据库表Show出数据库表界面。1.1.1节假日设置a)建立数据库表节假日数据库表(包括栏位栏位,假日判定,设置日期,设置人)日期假日判定设置日期设置人2014年1月1日节假 2014年1月2日正常2014年1月3日正常2014年1月4日周末 b)UI界面lBy日期段查询,或假日判定查询l假日判定固定3个选项:节假,正常,周末l设置日期为当前系统时间l设置人为当前操作人
1.1单据审批设置1.1.1单据审批流程此流程适用于请假单,出差单(此单据做在财务系统中,故不适用此审批流程),加班单,销假单等等。※此流程可优化,在员工信息表中增加两个栏位,上级姓名,上级工号,那么流程可简化为:
1.1.1请假单1.建立数据库请假数据库表栏位:请假单号,请假人,工号,部门,科室,工作岗位,工龄,年龄,请假类别,开始日期,开始时间,结束日期,结束时间,此次请假总时间,事由,单据状态,提单人,提单工号,提单日期2.请假单UI界面请假单号:系统自动生成,生成规则为:QJDYYYYMMDDXXX,QJD固定,YYYYMMDD提单日期,XXX流水码请假人:根据工号匹配出来工号:提单人工号(可编辑为其他人工号)部门:根据工号匹配出来科室:根据工号匹配出来工作岗位:根据工号匹配出来工龄:根据工号匹配出来年龄:根据工号匹配出来请假类别:设置选择项,项目有事假,病假,婚假,丧假,产假,难产假,生育多胞胎,看护假,调休假,年休假,计划生育假,产前检查,外出开始日期:日期控件进行选择开始时间:时间控件进行选择结束日期:日期控件进行选择结束时间:时间控件进行选择此次请假总时间:1)开始时间<=上午应上班时间,starttime=02)开始时间>=上午应上班时间,<=上午应下班时间,starttime=(开始时间-上午应上班时间)/83)
开始时间>=上午应下班时间,<=下午应上班时间,starttime=0.54)开始时间>=下午应上班时间,<=下午应下班时间,starttime=0.5+(开始时间-下午应下班时间)/85)开始时间>=下午应下班时间,starttime=16)结束时间<=上午应上班时间,endtime=07)结束时间>=上午应上班时间,<=上午应下班时间,endtime=(结束时间-上午应上班时间)/88)结束时间>=上午应下班时间,<=下午应上班时间,endtime=0.59)结束时间>=下午应上班时间,<=下午应下班时间,endtime=0.5+(结束时间-下午应下班时间)/810)结束时间>=下午应下班时间,endtime=1事假,病假,年休假遇到节假和周末需要顺延,所以总时间计算比较麻烦,需要编程得出endday-startday中有多少个工作日,再加上endtime-starttime其他假期总时间=(endday-startday)+(endtime-starttime)可休时间:根据请假类别,年龄,工龄计算,由系统给出1)事假:无限制2)病假:无限制3)婚假:根据年龄,性别判断,男性>=22,<25,女性>=20,<23,可休时间为3天男性>=25,女性>=23,可休时间为13天4)丧假:3天5)产假:仅限女性,年龄<24,98天;>24岁,98+30=128天6)难产假:仅限女性,15天7)生育多胞胎:仅限女性,无限制,提示多生育1胞,增加15天8)看护假:仅限男性,10天9)计划生育假:类型太多,不好限制,由人工管控10)调休假:根据本月加班天数定,目前公司是默认加班,直接将加班时数相加/8即可,精确到小数点后3位11)年休假:根据工龄定,<10年,5天;>=10年,<20年,10天;>=20年,15天12)产前检查:无限制13)外出:无限制14)特殊假:无限制已休时间:根据请假类别,从请假数据库表中抓出来,SQL如下:1.SELECTSUM(此次请假总时间)FROM请假数据库表WHERE工号=’工号’AND请假类别=’请假类别’AND单据状态=’已结’2.SELECTSUM(此次销假总时间)FROM销假数据库表WHERE工号=’工号’
AND销假类别=’请假类别’AND单据状态=’已结’已休时间=SUM(此次请假时间)-SUM(此次销假时间)事由:提示字数不得超过128字节(数据库表栏位建128byte)提单人:当前操作者姓名提单人工号:当前操作者工号提单日期:当前系统时间单据状态:提单时,显示创建中;只保存未发送,仍显示创建中;点击发送后,下一步状态不是END时,更新为审核中;下一步状态为END,更新为已结;被退回时,状态更新为被退回。※界面上还有按钮:发送,保存,修改,删除,取消发送:发送至下一个节点,如果请假数据表中有没有此请假单号,调用保存函数保存后,再发送,发送时,更新单据状态保存:判定此次请假数据是否都有效,都有效时,将数据存入请假数据库表修改:可编辑状态,当此单号已有审核人审核后,不允许修改删除:将此单号从数据库表中删除,当此单号已有审核人审核后,不允许删除取消:取消操作,关闭界面下图为请假单保存时的判定流程:1.1.1加班单公司目前是强制加班,所以没有加班单,后续制度修改后,再另行分析。
1.1.1销假单1.建立数据库销假数据库表栏位有:销假单号,请假单号,请假人,工号,部门,科室,工作岗位,销假类别请假单开始日期,请假单开始时间,请假单结束日期,请假单结束时间,此次请假总时间,销假单开始日期,销假单开始时间,销假单结束日期,销假单结束时间,此次销假总时间,销假事由,提单人,提单人工号,提单日期,单据状态2.销假单UI界面销假单号:系统自动生成,生成单号规则为:XJDYYYYMMDDXXX,XJD为固定值,YYYYMMDD为当前日期,XXX为流水码请假单号:操作人输入,输入后回车,系统判定此请假单(请假数据库表和出差数据库表)是否存在,不存在则报错请假人,工号,部门,科室,工作岗位,销假类别(即请假类别),请假单开始日期,请假单开始时间,请假单结束日期,请假单结束时间,此次请假总时间,都由请假单号自动带出销假单开始日期:使用日期控件销假单开始时间:使用时间控件销假单结束日期:使用日期控件销假单结束时间:使用时间控件此次销假总时间:计算方法同请假单的此次请假总时间销假事由:同请假单的请假事由提单人:当前操作人
提单人工号:当前操作人工号(是否需检查与工号一致?)提单日期:当前系统时间单据状态:同请假单的单据状态※界面上的执行按钮同样是:发送,保存,修改,删除,取消功能同请假单的执行按钮,但是保存时的判定流程有所不同,下图为判定流程:1.1.1出差单1.建立数据库表出差数据库表栏位有:出差单号,出差人,工号,部门,科室,工作岗位,出差类别,开始日期,开始时间,结束日期,结束时间,此次出差总时间,事由,提单人,提单工号,提单日期,单据状态。2.此系统无出差单据UI界面,因为此单据做在财务系统中,财务系统将出差时间与状态传过来,系统将传过来的数据插入到出差数据库表中。所以此系统不开发出差单,不过后续会有报表查询出差明细。3.需开发一个外挂程序,与财务系统对接,接收出差数据。(建议出差单和其他单据及考勤信息在同一个数据库中)1.2考勤信息存储1.建立数据库考勤明细数据库表栏位有:考勤日期,考勤号,工号,姓名,归属,部门,岗位,班别,是否跨天,上午应上班时间,上午实际上班时间,上午应下班时间,上午实际下班时间,下午应上班时间,下午实际上班时间,下午应下班时间,下午实际下班时间,加班应上班时间,加班实际上班时间,加班应下班时间,加班实际下班时间,当天加班总时间,加班类别,单据类别,单据号,单据开始时间,单据结束时间,销假号,销假开始时间,销假结束时间,考勤状态,迟到时间,早退时间,旷工时间2.无UI界面,后台程序自动run,可设置为每30分钟RUN一次,此后台程序接口指纹打卡机的数据库,此方法判定逻辑复杂,易出现异常。(同一数据库,建议使用数据库中得触发器trigger)3.指纹打卡机中存储的信息有:考勤号,工号,姓名,打卡时间1,打卡时间2……打卡时间10.
1.后台程序判定流程如下图所示:后台中需要1.1JOB执行流程如下图:JOB执行的SQL为:先判断当前日期是否为周末或者节假日,如果都不是,则A.不跨天的数据插入INSERTINTO考勤明细表(考勤日期,工号,姓名,归属,部门,岗位,班别,是否跨天,上午应上班时间,下午应下班时间)
SELECT‘当前系统日期’,工号,姓名,归属,部门,岗位,班别,是否跨天,‘当前系统日期’||上午应上班时间,‘当前系统日期’||下午应下班时间FROM个人排班表WHERE是否跨天=‘N’B.跨天的数据插入INSERTINTO考勤明细表(考勤日期,工号,姓名,归属,部门,岗位,班别,是否跨天,上午应上班时间,上午应下班时间,下午应上班时间,下午应下班时间)SELECT‘当前系统日期’,工号,姓名,归属,部门,岗位,班别,是否跨天,‘当前系统日期’||上午应上班时间,‘第二天系统日期’||下午应下班时间FROM个人排班表WHERE是否跨天=‘Y’C.该公司无上班,加班都是要调休,以及义务加班,所以节假日同周末的数据录入,SQL大致如A.B,只是查询个人排班表时,查询的上午应上班时间,下午应下班时间改为周末上午应上班时间,周末下午应下班时间D.UPDATE考勤明细表ASETA.单据类别=B.请假类别,A.单据号=B.请假单号,A.单据开始时间=B.请假开始时间,A.结束时间=B.请假结束时间FROM请假单数据库表BWHEREA.工号=B.工号ANDB.单据状态=‘已结’ANDB.请假开始日期<=当前日期ANDB.请假结束日期>=当前日期E.UPDATE考勤明细表ASETA.单据类别=‘出差’,A.单据号=B.出差单号,A.单据开始时间=B.出差开始时间,A.结束时间=B.出差结束时间FROM出差单数据库表BWHEREA.工号=B.工号ANDB.单据状态=‘已结’ANDB.出差开始日期<=当前日期ANDB.出差结束日期>=当前日期F.UPDATE考勤明细表ASETA.销假单号=B.销假单号,A.销假开始时间=B.销假开始时间,A.销假时间=B.销假结束时间FROM销假单数据库表BWHEREA.工号=B.工号ANDB.单据状态=‘已结’ANDB.销假开始日期<=当前日期ANDB.销假结束日期>=当前日期1.1刷卡明细表的TRIGGER
1.1请假表的TRIGGER判定流程如图:SQLH为:UPDATE考勤明细表ASETA.单据类别=B.请假类别,A.单据号=B.请假单号,A.单据开始时间=B.请假开始时间,A.结束时间=B.请假结束时间FROM请假单数据库表BWHEREA.工号=B.工号ANDB.单据状态=‘已结’ANDA.考勤日期>=B.请假开始日期ANDA.考勤日期<=B.请假结束日期1.2出差单的TRIGGER流程同4.3,SQL中请假单数据库表改为出差数据库表1.3销假单的TRIGGER流程同4.31.4考勤明细表的TRIGGER
1.1计算考勤信息的JOB流程与考勤明细表的trigger一致
1.1考勤报表查询1.1.1个人考勤明细查询1.根据时间段查询:by时间段查询考勤明细表工号为:登陆系统人的工号SELECT*FROM考勤明细表WHERE工号=‘工号’AND考勤日期BETWEEN‘这一段时间段’2.整个表作为表格show出来3.导出EXCEL功能1.1.2考勤统计查询考勤统计查询:查询条件有:时间段,部门,工号,科室,时间段必填,其他3项选填开始时间:输入结束时间:输入工号:输入,或者根据部门,科室查询姓名,归属,部门,科室,入职时间,离职时间,由工号匹配,从员工信息表中查询出来新进缺勤:IF(NETWORKDAYS(开始时间,入职时间)-1<0,0,NETWORKDAYS(开始时间,入职时间)-1)离职缺勤:IF(NETWORKDAYS(离职时间,结束时间)-1<0,0,NETWORKDAYS(离职时间,结束时间)-1)缺勤天数:新近缺勤+离职缺勤事假:SELECTSUM(今日请假时数)from考勤明细表where单据类型=‘事假’And工号=‘工号’and考勤日期between‘时间段’病假等同上旷工,迟到,早退,加班等,同上,都是从考勤明细表中抓取※工号允许点击,点击工号时,查询此工号的考勤明细
1.1.1请假明细查询By时间段,时间段不选时,默认为当年工号为:登陆系统人的工号联合请假数据库表,出差数据库表,销假数据库表查询SELECT请假单单号,请假类别,请假开始时间,请假结束时间,提单日期FROM请假数据库表WHERE工号=‘工号’AndTO_CHAR(提单日期,‘YYYY’)=TO_CHAR(SYSDATE,‘YYYY’)UNITSELECT销假单单号,’销假’,销假开始时间,销假结束时间,提单日期FROM销假数据库表WHERE工号=‘工号’AndTO_CHAR(提单日期,‘YYYY’)=TO_CHAR(SYSDATE,‘YYYY’)UNITSELECT出差单单号,’出差’,出差开始时间,出差结束时间,提单日期FROM出差数据库表WHERE工号=‘工号’AndTO_CHAR(提单日期,‘YYYY’)=TO_CHAR(SYSDATE,‘YYYY’)1.1.2请假统计查询管理员by部门或科室查询时,界面显示为:因为管理员查询整个部门人员时,人员有多位,只能按这样的表格形式显示同样点击工号时,显示此工号这一年的请假明细。个人查询时,可显示为(此可显示在登录进考勤系统时的主页上):