本發(fā)明涉及軟件管理技術(shù)領(lǐng)域,特別涉及一種基于考勤數(shù)據(jù)實(shí)時運(yùn)算的方法。
背景技術(shù):
目前考勤管理軟件大都內(nèi)置考勤算法,通過用戶點(diǎn)擊運(yùn)算或者配置定時運(yùn)算時進(jìn)行結(jié)果核算,并將最終核算結(jié)果展示給用戶。但是傳統(tǒng)的算法需要任務(wù)觸發(fā)才能計算,并且大都基于用戶需求進(jìn)行定制,無法做到考勤記錄上傳及假期、加班單據(jù)申請審核后的實(shí)時運(yùn)算,無法滿足用戶實(shí)時考勤結(jié)果需求以及異常實(shí)時預(yù)警的需求。因此,需對現(xiàn)有技術(shù)加以改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了克服現(xiàn)有技術(shù)的不足,現(xiàn)提供了一種基于考勤數(shù)據(jù)實(shí)時運(yùn)算的方法,能夠根據(jù)用戶實(shí)時考勤記錄、實(shí)時假期、加班申請及審批單據(jù)結(jié)合對應(yīng)考勤制度進(jìn)行實(shí)時運(yùn)算,并實(shí)現(xiàn)異常實(shí)時預(yù)警的目的。
本發(fā)明提供一種基于考勤數(shù)據(jù)實(shí)時運(yùn)算的方法,包括以下步驟:
s1:用戶上傳考勤工時記錄到實(shí)時工時記錄表,獲取需要運(yùn)算的實(shí)時記錄;
s2:依據(jù)獲取需要運(yùn)算的工時記錄信息,進(jìn)行實(shí)時運(yùn)算;
s3:通過用戶申請或者審批的假期、加班單據(jù)表,獲取需要運(yùn)算的單據(jù)記錄;
s4:依據(jù)單據(jù)進(jìn)行實(shí)時運(yùn)算,將最終運(yùn)算結(jié)果更新考勤結(jié)果表,并同時推送異常信息至異常預(yù)警表。
相對于現(xiàn)有技術(shù)而言,采用上述實(shí)時考勤算法,能夠根據(jù)用戶實(shí)時考勤記錄、實(shí)時假期、加班申請及審批單據(jù)結(jié)合對應(yīng)考勤制度進(jìn)行實(shí)時運(yùn)算,并將最終運(yùn)算結(jié)果更新至考勤報表,同時對異常及需要預(yù)警信息推送至預(yù)警任務(wù)表,及時推送給需要獲取異常信息的用戶,便于用戶及時知曉異??记谛畔?,及時處理異??记谛畔ⅲ瑥亩?guī)避因?yàn)樘幚聿患皶r從而造成月末薪資核算錯誤問題,并及時對勞動法將要超時預(yù)警,規(guī)避企業(yè)觸發(fā)勞動法風(fēng)險。
進(jìn)一步地,步驟s1中的所述實(shí)時考勤記錄信息包含:考勤設(shè)備實(shí)時上傳考勤記錄信息、移動端定位考勤記錄信息及用戶補(bǔ)簽卡考勤記錄信息,便于對不同的信息都進(jìn)行記錄。
進(jìn)一步地,所述步驟s1的具體操作如下:
每隔固定的時間輪詢當(dāng)前月份的考勤記錄;
將未執(zhí)行核算任務(wù)的考勤記錄保存至考勤實(shí)時核算任務(wù)表中;
同時修改考勤記錄表任務(wù)標(biāo)志為已觸發(fā)任務(wù),更新任務(wù)處理日志。如此操作,不會對任何一個考勤信息遺漏或者重復(fù)記錄,便于整體統(tǒng)計。
進(jìn)一步地,步驟s2中的操作步驟包括:
依據(jù)實(shí)時考勤記錄運(yùn)算任務(wù)表進(jìn)行逐一運(yùn)算;
以用戶日期為排序進(jìn)行逐一實(shí)時運(yùn)算;
每個人運(yùn)算時依據(jù)人員對應(yīng)考勤制度、當(dāng)日對應(yīng)排班信息和運(yùn)算記錄進(jìn)行對比運(yùn)算。將每個人的信息分別進(jìn)行運(yùn)算,防止在運(yùn)算時出現(xiàn)遺漏或者重疊等現(xiàn)象。
進(jìn)一步地,步驟s3中所述審批的單據(jù)包含最新提交未審批單據(jù)及已審批單據(jù)。以便于重復(fù)審批。
進(jìn)一步地,步驟s3具體步驟為:
每隔固定時間輪詢當(dāng)月申請單據(jù)表;
將未執(zhí)行任務(wù)單據(jù)插入到單據(jù)運(yùn)算任務(wù)隊列;
同時標(biāo)注修改單與申請單據(jù)表核算狀態(tài)為已觸犯任務(wù)。同樣,如此操作,不會對任何一個單據(jù)信息遺漏或者重復(fù)記錄,便于整體統(tǒng)計。
步驟s4中的實(shí)時運(yùn)算包括:
依據(jù)實(shí)時單據(jù)任務(wù)表進(jìn)行逐一運(yùn)算;
以用戶日期為排序進(jìn)行逐一實(shí)時運(yùn)算;
每個人運(yùn)算時依據(jù)人員對應(yīng)考勤制度、當(dāng)日對應(yīng)排班信息和異常信息進(jìn)行運(yùn)算。
本發(fā)明由于采用了以上技術(shù)方案,使其具有的有益效果是:
能夠根據(jù)用戶實(shí)時考勤記錄、實(shí)時假期、加班申請及審批單據(jù)結(jié)合對應(yīng)考勤制度進(jìn)行實(shí)時運(yùn)算,并將最終運(yùn)算結(jié)果更新至考勤報表,同時對異常及需要預(yù)警信息推送至預(yù)警任務(wù)表,及時推送給需要獲取異常信息的用戶,便于用戶及時知曉異??记谛畔ⅲ皶r處理異??记谛畔?,從而規(guī)避因?yàn)樘幚聿患皶r從而造成月末薪資核算錯誤問題,并及時對勞動法將要超時預(yù)警,規(guī)避企業(yè)觸發(fā)勞動法風(fēng)險。
附圖說明
圖1為本發(fā)明基于考勤數(shù)據(jù)實(shí)時運(yùn)算的方法的算法流程圖。
具體實(shí)施方式
為利于對現(xiàn)有技術(shù)的進(jìn)一步了解,以下結(jié)合附圖及實(shí)施例對本發(fā)明進(jìn)一步詳細(xì)描述。
本發(fā)明的實(shí)施方式提供了一種基于考勤數(shù)據(jù)實(shí)時運(yùn)算的方法,結(jié)合圖1所示,該方法具體包括以下步驟:
s1:用戶上傳考勤工時記錄到實(shí)時工時記錄表,獲取需要運(yùn)算的實(shí)時記錄;
s2:依據(jù)獲取需要運(yùn)算的工時記錄信息,進(jìn)行實(shí)時運(yùn)算;
s3:通過用戶申請或者審批的假期、加班單據(jù)表,獲取需要運(yùn)算的單據(jù)記錄;
s4:依據(jù)單據(jù)進(jìn)行實(shí)時運(yùn)算,將最終運(yùn)算結(jié)果更新考勤結(jié)果表,并同時推送異常信息至異常預(yù)警表。
具體地說,步驟s1中用戶首先通過考勤設(shè)備上次考勤記錄信息、移動端定位考勤記錄信息、用戶補(bǔ)簽卡考勤記錄信息等等,每隔固定的時間(一般為5分鐘)輪詢當(dāng)前月份考勤記錄表,將未執(zhí)行核算任務(wù)的考勤記錄保存至考勤實(shí)時核算任務(wù)表中,并同時修改考勤記錄表任務(wù)標(biāo)志為已觸發(fā)任務(wù),更新任務(wù)處理日志。
將以上信息列入:userid(用戶id),record_datetime(記錄時間),rec_direction(進(jìn)出方向)、rec_status(記錄狀態(tài)),create_time(記錄入庫時間)。記錄列表為當(dāng)前所有未核算的考勤記錄列表(rec_status=0)。
實(shí)時記錄運(yùn)算任務(wù)表舉例為;userid(用戶id),record_datetime(記錄時間),rec_direction(進(jìn)出方向)、task_status(任務(wù)狀態(tài)),create_time(記錄入庫時間)。
另外,當(dāng)進(jìn)行步驟s2時,要依據(jù)實(shí)時考勤記錄運(yùn)算任務(wù)表進(jìn)行逐一運(yùn)算,以用戶日期為排序進(jìn)行逐一實(shí)時運(yùn)算,每個人運(yùn)算時依據(jù)人員對應(yīng)考勤制度、當(dāng)日對應(yīng)排班信息和運(yùn)算記錄進(jìn)行對比運(yùn)算。
例如:a用戶當(dāng)日共有1條未運(yùn)算記錄,先取出a用戶當(dāng)日排班信息,獲取排班規(guī)則;
從算法調(diào)度中心獲取a員工對應(yīng)考勤制度;
依據(jù)a用戶考勤異常信息缺少記錄類型結(jié)合實(shí)時考勤記錄和排班表判斷該記錄屬于對于哪個異常記錄,并進(jìn)行核算出勤信息、工時信息、及其他異常信息。
舉例a用戶考勤任務(wù)記錄未執(zhí)行為:2016-04-0619:00:00,員工當(dāng)日排班對應(yīng)上下班時間為:應(yīng)上班時間08:00,應(yīng)下班時間17:00,考勤制度為17:00后1小時為單位核算加班。
a用戶當(dāng)日考勤異常信息記錄為缺失下班記錄,依據(jù)應(yīng)下班記錄和實(shí)時考勤記錄對比得出該記錄可消除缺失下班記錄異常,并結(jié)合班次信息重新核算出勤工時,加班工時。
a用戶當(dāng)日核算結(jié)束后,插入當(dāng)日員工異常信息表,并依據(jù)異常預(yù)警任務(wù)機(jī)制推送預(yù)警單元同時刪除實(shí)時記錄任務(wù)表中該用戶當(dāng)日記錄。
同時,步驟s3中,獲取的實(shí)時單據(jù)信息包括:最新提交未審批單據(jù)(含加班、請假、差勤),已審批單據(jù)(含加班、請假、差勤)。其具體步驟為:
每隔固定時間(通常情況下為5分鐘)輪詢當(dāng)月申請單據(jù)表,將未執(zhí)行任務(wù)單據(jù)插入到單據(jù)運(yùn)算任務(wù)隊列,并同時修改單與申請單據(jù)表核算狀態(tài)為已觸犯任務(wù)。
例如:當(dāng)月申請單據(jù)表包含userid(用戶id),apply_type(申請類型),apply_date(申請日期),begin_date(開始時間),end_date(結(jié)束時間),wf_status(審批狀態(tài)),rec_status(記錄狀態(tài)),將所有rec_status為0的數(shù)據(jù)插入實(shí)時單據(jù)運(yùn)算任務(wù)表進(jìn)行執(zhí)行。
另外,實(shí)行步驟s4時,首先依據(jù)實(shí)時單據(jù)任務(wù)表進(jìn)行逐一運(yùn)算,以用戶日期為排序進(jìn)行逐一實(shí)時運(yùn)算,每個人運(yùn)算時依據(jù)人員對應(yīng)考勤制度、當(dāng)日對應(yīng)排班信息和異常信息。
算法的原理如下:
依據(jù)任務(wù)記錄apply_type判斷是否加班類型,如果是加班類型,
結(jié)合begin_date,end_date和員工當(dāng)日上下班記錄和應(yīng)上下班信息進(jìn)行對比,對比后獲取數(shù)值作為當(dāng)日加班工時;
如果任務(wù)類型是非加班類型,直接依據(jù)begin_date、end_date和當(dāng)日上下班時間對比核算出請假時間,將請假時間更新至結(jié)果信息表。
最后依據(jù)預(yù)警任務(wù)信息推送例如加班超時預(yù)警至異常信息表和預(yù)警信息表,完成操作。
在實(shí)踐中,通過用戶上傳考勤工時記錄到實(shí)時工時記錄表,獲取需要運(yùn)算實(shí)時記錄;依據(jù)工時待運(yùn)算工時記錄表,獲取帶運(yùn)算人員信息;依據(jù)帶運(yùn)算人員信息對應(yīng)考勤制度,以及單日考勤數(shù)據(jù)進(jìn)行綜合運(yùn)算;將實(shí)時運(yùn)算結(jié)果更新至考勤結(jié)果表,同時異常信息推送至異常預(yù)警表。另外,通過用戶上傳申請或者審批的假期、加班單據(jù)表,依據(jù)實(shí)時申請、審批加班請假單據(jù)表,獲取待運(yùn)算人員信息;依據(jù)待運(yùn)算人員信息獲取對應(yīng)加班、假期制度,依據(jù)制度進(jìn)行綜合運(yùn)算;將最終運(yùn)算結(jié)果更新考勤結(jié)果表,同時推送異常信息至異常預(yù)警表,最后得出考勤結(jié)果,完成統(tǒng)計。
本發(fā)明采用了上述實(shí)時考勤算法,能夠根據(jù)用戶實(shí)時考勤記錄、實(shí)時假期、加班申請及審批單據(jù)結(jié)合對應(yīng)考勤制度進(jìn)行實(shí)時運(yùn)算,并將最終運(yùn)算結(jié)果更新至考勤報表,同時對異常及需要預(yù)警信息推送至預(yù)警任務(wù)表,及時推送給需要獲取異常信息的用戶,便于用戶及時知曉異常考勤信息,及時處理異常考勤信息,從而規(guī)避因?yàn)樘幚聿患皶r從而造成月末薪資核算錯誤問題,并及時對勞動法將要超時預(yù)警,規(guī)避企業(yè)觸發(fā)勞動法風(fēng)險。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。