[摘 要] 針對傳統(tǒng)考勤系統(tǒng)中無法準(zhǔn)確統(tǒng)計夜班及加班工時的缺陷,本文在分析企業(yè)員工非常規(guī)值班的考勤數(shù)據(jù)的基礎(chǔ)上,提出了一種通過調(diào)用存儲過程來實現(xiàn)非常規(guī)值班工時的計算方法和基于工時的餐費計算方法,描述了存儲過程中判斷上、下班時間算法的流程以及借助工時計算月餐費明細的算法和公式。此方法在某企業(yè)考勤系統(tǒng)中實施效果良好。
[關(guān)鍵詞] 考勤系統(tǒng); 非常規(guī)值班; 工時統(tǒng)計; 餐費計算; 存儲過程
doi : 10 . 3969 / j . issn . 1673 - 0194 . 2010 . 19 . 028
[中圖分類號]F270.7:TP311 [文獻標(biāo)識碼]A [文章編號]1673 - 0194(2010)19- 0068- 03
1引言
最早的考勤管理系統(tǒng)是人工考勤管理系統(tǒng),由專門的考勤員完成考勤工作,有的甚至由單位領(lǐng)導(dǎo)負責(zé)考勤。根據(jù)企事業(yè)單位的規(guī)模不同,人工考勤花費的人力不同,規(guī)模越大,花費的人力越大,同時它還存在收集、整理和統(tǒng)計考勤數(shù)據(jù)的困難,并且考勤數(shù)據(jù)難免受到人為的主觀因素影響。統(tǒng)計考勤數(shù)據(jù)的延遲很大,不能及時根據(jù)考勤數(shù)據(jù)所反映的信息采取正確的措施激勵員工。對人工考勤方式和打卡考勤而言,后者更為高效、準(zhǔn)確、及時,自動化程度更高,同時也節(jié)省了大量的人力[1]。
一些學(xué)者對考勤系統(tǒng)作了大量的研究,如彭小峰、張里在基于非接觸式IC卡的考勤管理信息系統(tǒng)設(shè)計中只對考勤數(shù)據(jù)進行添加、修改、刪除[2];王宏旭的計算機考勤管理系統(tǒng)設(shè)計[3]等,但是他們沒有對考勤數(shù)據(jù)進行二次計算。
在考勤數(shù)據(jù)計算方面,如葉茂興在人事考勤計薪系統(tǒng)設(shè)計與實現(xiàn)中介紹了考勤管理中跨零點考勤統(tǒng)計的難題[4];吳烈、唐偉的考勤工資管理系統(tǒng)的設(shè)計與實現(xiàn)[5]等,但他們沒有對非常規(guī)值班等情況進行分析,也沒有給出計算方法和公式。
目前國內(nèi)一些成熟的商業(yè)化門禁系統(tǒng)中都集成有考勤功能,如璽瑞股份有限公司開發(fā)的比較完善的SYRIS考勤系統(tǒng)、中控科技公司開發(fā)的中控考勤系統(tǒng)、金麥普科技發(fā)展有限公司開發(fā)的Web考勤管理軟件,雖然可以對工時進行計算,但是計算的工時是在排好班的前提下,而對于非常規(guī)值班工時的計算卻無能為力,如果要對統(tǒng)計出來的工時數(shù)據(jù)再進行計算得到企業(yè)想得到的其他數(shù)據(jù),系統(tǒng)則無法滿足。這里所說的非常規(guī)值班是指無法確定上、下班時間或者經(jīng)常加班的情況,考勤系統(tǒng)中雖然有刷卡數(shù)據(jù),但是不知道是上班還是下班,也就無法按常規(guī)計算員工的實際工作時間。在信息時代的今天,很多企事業(yè)單位都有這樣的實際需求,如醫(yī)院、軟件公司、外貿(mào)加工廠等。本文所提出的計算方法能很好地解決這一實際問題。
2系統(tǒng)結(jié)構(gòu)
此考勤管理信息系統(tǒng)主要由感應(yīng)式讀卡控制器(考勤機)、服務(wù)器及客戶端PC機組成。系統(tǒng)結(jié)構(gòu)如圖1所示。刷卡時,讀卡機通過SYRIS感應(yīng)式讀卡控制器提取考勤人員的卡號(ID),讀卡器將接收到的無線信號傳回給控制器,由控制器處理、檢錯和轉(zhuǎn)換成數(shù)字信號,然后控制器把這個數(shù)字辨識號碼(ID)傳送到考勤機上的微處理器并傳輸?shù)椒?wù)器的數(shù)據(jù)庫。數(shù)據(jù)庫通過調(diào)用存儲過程來計算非常規(guī)值班工時和餐費明細(詳見圖1)。客戶端PC機安裝有客戶端考勤管理信息系統(tǒng),應(yīng)用程序則負責(zé)實現(xiàn)客戶端與讀卡機、客戶端與遠程數(shù)據(jù)庫考勤信息的傳輸、處理、選擇和顯示。
3基于存儲過程的工時與餐費統(tǒng)計的實現(xiàn)
3.1 員工上班工時計算方法
(1) 白天上班
不存在跨天計算,從早上00:30開始,到晚上的23:30止,查到的最早的刷卡記錄作為上班時間,最晚的作為下班時間,中間就是工時。
(2) 跨天夜班
從某一時刻開始(實際工作開始時間為20:30),到第二天某一時刻結(jié)束(實際下班時間為04:30),查到從第一天開始時間起的最早時間為上班時間,查到第二天結(jié)束時間為止的最晚時間為下班時間,中間就是工時。
(3) 白天上班和跨天夜班的區(qū)分
跨天夜班要求在晚上23:40開始,到第二天00:10止,每位夜班的工作人員,到考勤機上刷卡,核定是夜班人員。
(4) 沒有刷卡情況的異常處理
白天上班工作人員從早上00:30到晚上23:30止,沒有查到考勤記錄或查到一次考勤記錄,按照0工時計算。
跨天夜班上班工作人員在晚上23:40開始,到第二天00:10止只有一次刷卡記錄的,按照0工時計算。
3.2 存儲過程實現(xiàn)流程
根據(jù)以上要求,存儲過程的流程圖如圖2所示。
4存儲過程在餐費計算中的應(yīng)用
4.1 餐費計算方法
根據(jù)需求,餐費的計算有如下關(guān)系:
總出工時 = 當(dāng)月日出工時累加
if 總出工時 > 當(dāng)月總標(biāo)準(zhǔn)工時then
員工當(dāng)月餐費 = 工作餐費 + 加班工作餐費
if 總出工時 = 當(dāng)月總標(biāo)準(zhǔn)工時then
員工當(dāng)月餐費 = 工作餐費
if 總出工時 < 當(dāng)月總標(biāo)準(zhǔn)工時then
員工當(dāng)月餐費 = 工作餐費 - 缺時扣除工作餐費
根據(jù)如上關(guān)系和計算出來的日工時數(shù)據(jù)即可編寫月餐費統(tǒng)計的存儲過程。
4.2 餐費計算的關(guān)鍵代碼
declare @kqDate datetime——定義考勤日期
declare @kqTime int——定義考勤總工時
declare @dayKqTime int——定義每天考勤工時
declare @jiabanTime int——定義加班時間
declare @queQinTime int——定義缺勤時間
declare @bzWorkTime int——標(biāo)準(zhǔn)工作時間
declare @bzGongshi int——定義標(biāo)準(zhǔn)工時
declare @jbcanfei int——定義加班餐費
declare @qCanfei int ——定義缺勤餐費
declare @heji int——合計
select @kqTime = sum(kqGongshi) /3600from kqGonshi where EmpNo = @userNo and kqDate>=@year+‘-’+@month+‘-1’andkqDate<=@year+‘-’+@month+‘-29’
//獲取總工時
select @dayKqTime = kqGongshi from kqGonshi where EmpNo = @userNo
//獲取當(dāng)天工時
select @bzWorkTime = COUNT(runNo) from AIO20090619182339.dbo.Att_DptRuns where runNo = ‘001’and dptId = ‘1’ and dptRunDate >= @year+‘-’+@month+‘-1’ and dptRunDate <= @year+‘-’+@month+‘-29’
//根據(jù)排班獲取標(biāo)準(zhǔn)工作時間
select @bzGongshi = @bzWorkTime * 8
//根據(jù)標(biāo)準(zhǔn)工作時間算出標(biāo)準(zhǔn)餐費
select@jiabanTime=sum(kqGongshi-‘28800’)/3600 from kqGonshi where EmpNo = @userNo and kqGongshi>‘28800’and kqDate>=@year+‘-’+@month+‘-1’ and kqDate<= @year+‘-’+@month+‘-29’
//獲取加班時間
select@jbcanfei=@jiabanTime/4*8from kqGonshi where EmpNo = @userNo
//設(shè)置加班餐費
if (@jbcanfei is 1 )
select @jbcanfei = ‘0’
select @queQinTime = sum(kqGongshi - ‘28800’)/3600 from kqGonshi where EmpNo = @userNo and kqGongshi <‘28800’ and kqDate>= @year+‘-’+@month+‘-1’ and kqDate<= @year+‘-’+@month+‘-29’
//獲取缺勤時間
select @qCanfei = @queQinTime/8*8 from kqGonshi where EmpNo = @userNo
//設(shè)置缺勤餐費
if (@queQinTime is 1)
select @qCanfei = ‘0’
print @qCanfei
select @heji =@bzGongshi + @jbcanfei + @qCanfei from kqGonshi where EmpNo = @userNo and kqDate>= @year+‘-’+@month+‘-1’ and kqDate<= @year+‘-’+@month+‘-29’——合計
5結(jié)束語
與傳統(tǒng)的考勤系統(tǒng)中工時的計算方法相比,基于非常規(guī)值班工時的餐費計算方法彌補了舊工時計算方法的不足,給出了具體的數(shù)據(jù)和計算公式,適用面更廣,很多企業(yè)都可以根據(jù)自己的需求改變其中的變量進行工時計算、餐費計算、薪酬計算、加班費計算等。而且為企業(yè)的管理人員提供更為詳細的員工考勤數(shù)據(jù),為企業(yè)管理提供科學(xué)、可靠的考勤管理手段,是企業(yè)體現(xiàn)其現(xiàn)代化管理、節(jié)約人力、提高效率、杜絕漏洞必要的技術(shù)手段。
該算法已于2009年9月在某企業(yè)的考勤系統(tǒng)中投入運行,運行效果表明,系統(tǒng)運行性能穩(wěn)定,可以準(zhǔn)確地計算出員工日出工時和月餐費的明細,也證明了存儲過程編程的正確性。
主要參考文獻
[1] 唐業(yè),張申生,戴偉.基于智能卡的分布式考勤管理系統(tǒng)的研究與實現(xiàn)[J].計算機應(yīng)用與軟件,2005(5):25-26.
[2] 彭小峰,張里.基于非接觸式IC卡的考勤管理信息系統(tǒng)設(shè)計[J].重慶工學(xué)院學(xué)報:自然科學(xué)版,2008(10):161-165.
[3] 王宏旭.計算機考勤管理系統(tǒng)設(shè)計[J].現(xiàn)代企業(yè)文化,2009(29):176-177.
[4] 葉茂興. 人事考勤計薪系設(shè)計與實現(xiàn)[J].大眾科技,2009(6):208-209.
[5] 吳烈,唐偉.考勤工資管理系統(tǒng)的設(shè)計與實現(xiàn)[J].遼寧工程技術(shù)大學(xué)學(xué)報,2006(6):281-282.
[6] 梁冰,陳丹丹,蘇宇. SQL語言參考大全[M].北京:人民郵電出版社,2008.