專利名稱:一種車機(jī)累計工作時間修正方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種車機(jī)累計工作時間修正方法,特別適用于GPS車載監(jiān)控系統(tǒng)中,基于Oracle數(shù)據(jù)庫的車機(jī)累計工作時間的修正方法。
背景技術(shù):
在GPS車載監(jiān)控系統(tǒng)中,需要對車輛的每天、每周、每月、每年累計的工作時間進(jìn)行跟蹤分析和統(tǒng)計,從而實現(xiàn)透明化管理和控制成本的目的,但是目前車載終端由于各種硬軟原因?qū)е律蟼鞯睦塾嫻ぷ鲿r間數(shù)據(jù)波動較大,不穩(wěn)定,出現(xiàn)很多異常數(shù)據(jù)值,如突然變大,或突然變小,或為空,或為0,或同一時間點上傳多個不同工作時間記錄等等錯誤的工作時間記錄值,從而導(dǎo)致用戶在獲取每天、每周、每月、每年的累計工作小時數(shù)時所得到的統(tǒng)計結(jié)果誤差較大,不能滿足要求。
發(fā)明內(nèi)容
本發(fā)明的目的是針對上述不足之處提供一種車機(jī)累計工作時間修正方法,針對目前車機(jī)上傳累計工作時間誤差的問題,提供一種基于Oracle的車機(jī)累計工作時間修正方法,采用查找第一個正確修正值、獲取上一個正確修正值和修正車機(jī)工作時間記錄方法來靈活有效地對有誤差的車機(jī)工作時間值進(jìn)行修正,從而能夠提高車載終端上傳的累計工作時間值的準(zhǔn)確性。一種車機(jī)累計工作時間修正方法是采取以下技術(shù)方案實現(xiàn)的
一種車機(jī)累計工作時間修正方法,包括如下步驟
I)從數(shù)據(jù)庫中獲取需要修正的車機(jī)唯一編號及待修正的時間段,其中車機(jī)唯一編號是一臺車機(jī)唯一編號或多個車機(jī)唯一編號的集合;待修正的時間段是某一天的一段時間或是跨度多天的一段時間。2)判斷修正是否為首次執(zhí)行,如果是首次執(zhí)行,則執(zhí)行步驟3),否則執(zhí)行步驟4)。3)查找第一個正確修正值
查找第一個正確修正值的目的是用于獲取新注冊的車機(jī)所上傳的第一條正確工作時間值,即開關(guān)量為0,表示開,工作時間值不小于0,且與該記錄后連續(xù)的3 (該值可人為設(shè)定,表示誤差的允許范圍)條不同的工作時間值之間符合步驟5)修正車機(jī)工作時間記錄中的要求。通過步驟3)獲得第一個正確的工作時間所對應(yīng)的日期、第一個正確的工作時間所對應(yīng)的時間、第一個正確的工作時間所對應(yīng)的開關(guān)量以及第一個正確的工作時間所對應(yīng)的工作時間值,并分別記錄為前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量以及前一個正確工作時間所對應(yīng)的工作時間值,然后執(zhí)行步驟5)。查找第一個正確修正值包括以下步驟
3-1)首先獲取包括該待修正工作時間記錄值在內(nèi)的符合誤差允許范圍內(nèi)的至少3條不同的且不為空的工作時間記錄值,且這些記錄要按照日期、時間、工作時間值進(jìn)行升序排序,然后逐條執(zhí)行步驟3-2)。3-2)判斷該待修正工作時間值對應(yīng)的開關(guān)量值是否為0,如果為0,則執(zhí)行步驟3-2-1),如果不是0,則執(zhí)行步驟3-2-2)。3-2-1)判斷該待修正工作時間值是否大于等于0,如果大于等于0,則執(zhí)行步驟5-6)中的是否人為調(diào)大來判斷該值是否為正確的記錄值,如果符合人為調(diào)大規(guī)律,則將該待修正工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量和待修正工作時間值緩存到指定的數(shù)組A中進(jìn)行保存,并執(zhí)行步驟3-3);如果不符合人為調(diào)大規(guī)律,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值。如果小于0,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值。3-2-2)判斷該待修正工作時間值是否為第一條不為空的工作時間值,如果是,則 執(zhí)打步驟3-2-2-1),如果不是,則執(zhí)彳了步驟3-2-2-2)。3-2-2-1)執(zhí)行步驟5-6)中是否人為調(diào)大判斷該值是否符合人為調(diào)大規(guī)律,如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值;如果符合,則將該待修正工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量以及待修正工作時間值緩存到指定的數(shù)組A中進(jìn)行保存,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值,且開關(guān)量等于0,且符合人為調(diào)大規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3)。3-2-2-2)判斷該待修正的累計工作時間值與已緩存的數(shù)組A中記錄值是否符合遞增或者與后續(xù)的數(shù)據(jù)符合人為調(diào)大規(guī)律,如果符合,則將該值也報錯到緩存數(shù)組A中,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值,且開關(guān)量等于0,且符合人為調(diào)大算法規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3)。如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值。3-3)按緩存數(shù)組A中的時間順序?qū)υ摂?shù)組所涉及的時間范圍的所有累計工作時間記錄值按范圍進(jìn)行更新修正,并將每一個工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量、待修正工作時間值更新到前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量、前一個正確工作時間所對應(yīng)的工作時間值中,為后續(xù)的修正提供判斷依據(jù)。4)獲取上一個正確修正值
獲取上一個正確修正值的主要目的是獲取某天之前的最后一條工作時間值最早出現(xiàn)的日期、時間及工作時間值。通過該步驟可獲得待修正這天之前的最后一條工作時間值最早出現(xiàn)的日期、時間、及工作時間值已經(jīng)經(jīng)過修正后的最后一條工作時間,如果未找到,則繼續(xù)執(zhí)行步驟3),如果找到,則執(zhí)行步驟5)來完成累計工作時間的修正。獲取上一個正確修正值的步驟如下
4-1)由于所有數(shù)據(jù)是按照月份保存在Oracle的不同數(shù)據(jù)表中的,因此首先判斷該待修正的累計工作時間值所對應(yīng)的日期是否為某月的I號,如果不是I號,則從當(dāng)月oracle數(shù)據(jù)表中獲取所有不同的累計工作時間記錄值,并按照日期升序、時間升序、工作時間值降序進(jìn)行排序,并將獲得的第一條記錄所對應(yīng)的工作時間值緩存到變量B中;如果不是,則在已修正的oracle數(shù)據(jù)表找查找符合上述要求的工作時間值,并緩存到變量B中。4-2)根據(jù)待修正的累計工作時間記錄值所對應(yīng)的月份,從最近的一個月份開始倒序在oracle各數(shù)據(jù)表中查找到該變量B第一次出現(xiàn)的日期、時間,并將該值記錄到對應(yīng)的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量、前一個正確工作時間所對應(yīng)的工作時間值中,為后續(xù)的修正提供判斷依據(jù)。5)修正車機(jī)工作時間記錄
修正車機(jī)工作時間記錄的主要目的是在前一條工作時間值(即上傳的工作時間I)已經(jīng)被判斷為正確值的前提下,判斷新一條工作時間值(即上傳的工作時間2)是否正確,判斷方法如下
A、計算GPS時間差與上傳的工作時間差 Timel=上傳的工作時間2-上傳的工作時間I Time2= GPS上傳時間2- GPS上傳時間I
B、比較Timel 與 Time2
當(dāng)Timel〈=Time2+允許的誤差,則判斷該新的工作時間值(即上傳的工作時間2)為正確值,保留該值;
當(dāng)Timel>Time2+允許的誤差,則判斷該新的工作時間值(即上傳的工作時間2)為錯誤記錄,直接用前一工作時間值(即上傳的工作時間I)替換。所述的Timel表示上傳的工作時間差,Time2表示GPS時間差。所述允許的誤差能人為設(shè)定。修正車機(jī)工作時間記錄包括以下步驟
5-1)首先獲取待修正車機(jī)唯一編號某一天中的按日期、時間、工作時間值進(jìn)行排序的所有累計工作時間記錄值,然后按順序比較待修正工作時間記錄值對應(yīng)的日期、時間是否與已經(jīng)經(jīng)過修正的最后一個累計工作時間值對應(yīng)的日期、時間相同,如果相同,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該工作時間值,該步驟能夠?qū)ν粫r間點上傳多條不同累計工作時間值的誤差進(jìn)行修正;如果不同,則執(zhí)行步驟5-2)。5-2)判斷該工作時間值是否為空,如果為空,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)盏睦塾嫻ぷ鲿r間值的記錄進(jìn)行修正;如果不同,則執(zhí)行步驟5-3)。5-3)判斷該待修正的工作時間記錄值是否與前一個已經(jīng)經(jīng)過修正的累計工作時間值相等,如果相等,則直接更新相關(guān)字段的記錄值,該步驟能夠保證已符合步驟5)中規(guī)律要求的不同時間點上傳同一累計工作時間值能被正確的保留;如果不等,則執(zhí)行步驟
5-4)。5-4)判斷該待修正的工作時間記錄值是否大于前一個已經(jīng)經(jīng)過修正的累計工作時間值,如果大于,則執(zhí)行步驟5-5),如果小于,則執(zhí)行步驟5-7)。5-5)按照步驟5)中的A、B判斷方法來判斷該是否符合正確的數(shù)據(jù)變化規(guī)律,如果符合,則直接用該更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量和工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù)。該步驟能夠保證已符合步驟5)中規(guī)律要求按時間變化遞增的累計工作時間記錄值能被正確的保留;如果不符合,則執(zhí)行步驟5-6)來判斷是否為人為調(diào)大。5-6)人為調(diào)大
該步驟首先假定該帶修正的累計工作時間記錄值為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值符合人為調(diào)大的規(guī)律要求,則直接用該待修正的累計工作時間值更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量、工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)大的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。5-7)人為調(diào)小
該步驟首先假定該帶修正的累計工作時間記錄值為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值符合人為調(diào)小的規(guī)律要求,則直接用該待修正的累計工作時間值更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量和工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)小的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。本發(fā)明方法可以根據(jù)客戶的需求精度設(shè)定允許的誤差范圍定時對指定的某一車機(jī)、或某一機(jī)構(gòu)下的所有車機(jī)、或整個系統(tǒng)中的所有車機(jī)在某指定日期范圍內(nèi)的所有累計工作時間數(shù)據(jù)進(jìn)行修正,通過本方法可以對車機(jī)所上傳的突然變大,或突然變小,或為空,或為0,或同一時間點上傳多個不同累計工作時間值等等錯誤的累計工作時間記錄值進(jìn)行修正,其修正率達(dá)到95%以上,消除異常的跳變數(shù)據(jù),從而使車機(jī)上傳的工作時間值按時間段符合遞增規(guī)律,進(jìn)而為客戶基于該累計工作時間的對車輛的每天、每周、每月、每年總的累計工作時間進(jìn)行的跟蹤分析和統(tǒng)計提供精確的參考數(shù)據(jù)。本發(fā)明方法其修正的準(zhǔn)確率高,簡單易于實現(xiàn),可延展性搞。其作用是使有誤差的工作時間得有修正,從而減少后續(xù)基于該累計工作時間的分析統(tǒng)計的誤差。
以下將結(jié)合附圖對本發(fā)明作進(jìn)一步說明
圖1是本發(fā)明車機(jī)累計工作時間修正方法的步驟流程簡圖。圖2是本發(fā)明車機(jī)累計工作時間修正方法的涉及數(shù)據(jù)庫記錄示意圖。圖3是本發(fā)明車機(jī)累計工作時間修正方法對沒有誤差數(shù)據(jù)前后修正的結(jié)果對比圖。圖4是本發(fā)明車機(jī)累計工作時間修正方法對“突然變小”誤差數(shù)據(jù)前后修正的結(jié)果對比圖。圖5是本發(fā)明車機(jī)累計工作時間修正方法對“相同時間上傳多個不同時間值”誤差數(shù)據(jù)前后修正的結(jié)果對比圖。圖6是本發(fā)明車機(jī)累計工作時間修正方法對“突然變?yōu)镺”誤差數(shù)據(jù)前后修正的結(jié)果對比圖。圖7是本發(fā)明車機(jī)累計工作時間修正方法對“突然變大”誤差數(shù)據(jù)前后修正的結(jié)果對比圖。
具體實施例方式參照附圖f 7,一種車機(jī)累計工作時間修正方法,包括如下步驟
O從數(shù)據(jù)庫中獲取需要修正的車機(jī)唯一編號(ID)及待修正的時間段(Date),其中車機(jī)唯一編號(ID)是一臺車機(jī)唯一編號(ID),或多個車機(jī)唯一編號(ID)的集合;待修正的時間段(Date)是某一天的一段時間或是跨度多天的一段時間。2)判斷修正是否為首次執(zhí)行,如果是首次執(zhí)行,則執(zhí)行步驟3),否則執(zhí)行步驟4)。3)查找第一個正確修正值(FindFirstTrueRecord)
查找第一個正確修正值的目的是用于獲取新注冊的車機(jī)所上傳的第一條正確工作時間值(Cb_Acctimes_bak),即開關(guān)量(Acc)為O,表示開,工作時間值不小于0(Cb_Acctimes_bak>=0),且與該記錄后連續(xù)的3 (該值可人為設(shè)定,表示誤差的允許范圍)條不同的工作時間值之間符合步驟5)修正車機(jī)工作時間記錄說明中的要求。通過步驟3)獲得第一個正確的工作時間所對應(yīng)的日期(FirstTrueDate )、第一個正確的工作時間所對應(yīng)的時間(FirstTrueTime )、第一個正確的工作時間所對應(yīng)的開關(guān)量(FirstTrueACC)、第一個正確的工作時間所對應(yīng)的工作時間值(FirstTrueAcctime),并分別記錄為前一個正確工作時間所對應(yīng)的日期(LastTrueDate)、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)、前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime),然后執(zhí)行步驟 5)。查找第一個正確修正值包括以下步驟
3-1)首先獲取包括該待修正工作時間記錄值在內(nèi)的符合誤差允許范圍內(nèi)的至少3條不同的且不為空的工作時間記錄值,且這些記錄要按照日期(Date)、時間(Time)、工作時間值(Cb_Acctimes_bak)進(jìn)行升序排序,然后逐條執(zhí)行步驟3_2)。3-2)判斷該待修正工作時間值(NAcctime)對應(yīng)的開關(guān)量(ACC)值是否為0,如果為0,則執(zhí)行步驟3-2-1),如果不是0,則執(zhí)行步驟3-2-2)。3-2-1)判斷該待修正工作時間值(NAcctime)是否大于等于0,如果大于等于0,則執(zhí)行步驟5-6)中的是否人為調(diào)大來判斷該值是否為正確的記錄值,如果符合人為調(diào)大規(guī)律,則將該待修正工作時間值(NAcctime)對應(yīng)的當(dāng)前日期(NDate)、當(dāng)前時間(NTime)、當(dāng)前開關(guān)量(NACC)和待修正工作時間值(NAcctime)緩存到指定的數(shù)組A中進(jìn)行保存,并執(zhí)行步驟3-3);如果不符合人為調(diào)大規(guī)律,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值(NAcctime)。如果小于O,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值(NAcct ime)。3-2-2)判斷該待修正工作時間值(NAcctime)是否為第一條不為空的工作時間值(NAcctime),如果是,則執(zhí)行步驟3-2-2-1 ),如果不是,則執(zhí)行步驟3-2_2_2)。3-2-2-1)執(zhí)行步驟5-6)中是否人為調(diào)大判斷該值是否符合人為調(diào)大規(guī)律,如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值(NAcctime);如果符合,則將該待修正工作時間值(NAcctime )對應(yīng)的當(dāng)前日期(NDate )、當(dāng)前時間(NT ime )、當(dāng)前開關(guān)量(NACC)以及待修正工作時間值(NAcctime)緩存到指定的數(shù)組A中進(jìn)行保存,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值(NAcctime),且開關(guān)量(Acc)等于0,且符合人為調(diào)大規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3)。3-2-2-2)判斷該待修正的累計工作時間值(NAcctime)與已緩存的數(shù)組A中記錄值是否符合遞增或者與后續(xù)的數(shù)據(jù)符合人為調(diào)大規(guī)律,如果符合,則將該值也報錯到緩存數(shù)組A中,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值(NAcctime),且開關(guān)量(Acc)等于0,且符合人為調(diào)大算法規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3)。如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值(NAcctime)。3-3)按緩存數(shù)組A中的時間順序?qū)υ摂?shù)組所涉及的時間范圍的所有累計工作時間記錄值按范圍進(jìn)行更新修正,并將每一個工作時間值(NAcctime)對應(yīng)的當(dāng)前日期(NDate)、當(dāng)前時間(NTime)、當(dāng)前開關(guān)量(NACC)、待修正工作時間值(NAcctime)更新到前一個正確工作時間所對應(yīng)的日期(LastTrueDate )、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)、前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime)中,為后續(xù)的修正提供判斷依據(jù)。4)獲取上一個正確修正值(GetLastTrueRecord)
獲取上一個正確修正值的主要目的是獲取某天之前的最后一條工作時間值最早出現(xiàn)的日期、時間及工作時間值。通過該步驟可獲得待修正這天之前的最后一條工作時間值最早出現(xiàn)的日期、時間、及工作時間值已經(jīng)經(jīng)過修正后的最后一條工作時間,如果未找到,則繼續(xù)執(zhí)行步驟3),如果找到,則執(zhí)行步驟5)來完成累計工作時間的修正。獲取上一個正確修正值的步驟如下
4-1)由于所有數(shù)據(jù)是按照月份保存在Oracle的不同數(shù)據(jù)表中的,因此首先判斷該待修正的累計工作時間值(NAcctime)所對應(yīng)的日期(Date)是否為某月的I號,如果不是I號,則從當(dāng)月oracle數(shù)據(jù)表中獲取所有不同的累計工作時間記錄值,并按照日期(Date)升序、時間(Time)升序、工作時間值(Acctime)降序進(jìn)行排序,并將獲得的第一條記錄所對應(yīng)的工作時間值(Cb_Acctimes_bak )緩存到變量B中;如果不是,則在已修正的oracle數(shù)據(jù)表找查找符合上述要求的工作時間值(Cb_Acctimes_bak ),并緩存到變量B中。4-2)根據(jù)待修正的累計工作時間記錄值所對應(yīng)的月份,從最近的一個月份開始倒序在oracle各數(shù)據(jù)表中查找到該變量B第一次出現(xiàn)的日期(Date)、時間(Time),并將該值記錄到對應(yīng)的前一個正確工作時間所對應(yīng)的日期(LastTrueDate )、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)、前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime)中,為后續(xù)的修正提供判斷依據(jù)。5)修正車機(jī)工作時間記錄(ChangeAcctimes)
修正車機(jī)工作時間記錄的主要目的是在前一條工作時間值(即上傳的工作時間I)已經(jīng)被判斷為正確值的前提下,判斷新一條工作時間值(即上傳的工作時間2)是否正確,判斷方法如下
A、計算GPS時間差與上傳的工作時間差 Timel=上傳的工作時間2-上傳的工作時間I Time2= GPS上傳時間2- GPS上傳時間I
B、比較Timel 與 Time2
當(dāng)Time I <=Time2+允許的誤差(Error ),則判斷該新的工作時間值(即上傳的工作時間2)為正確值,保留該值;
當(dāng)Timel>Time2+允許的誤差(Error),則判斷該新的工作時間值(即上傳的工作時間
2)為錯誤記錄,直接用前一工作時間值(即上傳的工作時間I)替換。所述的Timel表示上傳的工作時間差,Time2表示GPS時間差。所述允許的誤差能人為設(shè)定。修正車機(jī)工作時間記錄包括以下步驟
5-1)首先獲取待修正車機(jī)唯一編號(ID)某一天中的按日期(Date)、時間(Time)、工作時間值(Cb_Acctimes_bak)進(jìn)行排序的所有累計工作時間記錄值(Acctimes),然后按順序比較待修正工作時間記錄值(NAcctime)對應(yīng)的日期(NDate)、時間(NDime)是否與已經(jīng)經(jīng)過修正的最后一個累計工作時間值對應(yīng)的日期(LDate)、時間(LDime)相同,如果相同,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值(LAcctime)來更新相關(guān)字段的該工作時間值(NAcctime),該步驟能夠?qū)ν粫r間點上傳多條不同累計工作時間值的誤差進(jìn)行修正;如果不同,則執(zhí)行步驟5-2)。5-2)判斷該工作時間值(NAcctime)是否為空,如果為空,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值(LAcctime)來更新相關(guān)字段的該累計工作時間值(NAcctime),該步驟能夠?qū)盏睦塾嫻ぷ鲿r間值的記錄進(jìn)行修正;如果不同,則執(zhí)行步驟5-3)。5-3)判斷該待修正的工作時間記錄值(NAcctime)是否與前一個已經(jīng)經(jīng)過修正的累計工作時間值(LAcctime)相等,如果相等,則直接更新相關(guān)字段的記錄值,該步驟能夠保證已符合步驟5)中規(guī)律要求的不同時間點上傳同一累計工作時間值能被正確的保留;如果不等,則執(zhí)行步驟5-4)。5-4)判斷該待修正的工作時間記錄值(NAcctime)是否大于前一個已經(jīng)經(jīng)過修正的累計工作時間值(LAcctime),如果大于,則執(zhí)行步驟5-5),如果小于,則執(zhí)行步驟5-7)。5-5)按照步驟5)中的A、B判斷方法來判斷該(NAcctime)是否符合正確的數(shù)據(jù)變化規(guī)律,如果符合,則直接用該(NAcctime)更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期(NDate)、時間(NTime)、開關(guān)量(NACC)和工作時間值(NAcctime)來更新已有的前一個正確工作時間所對應(yīng)的日期(LastTrueDate )、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)和前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime),從而為下一次修正提供判斷依據(jù)。該步驟能夠保證已符合步驟5)中規(guī)律要求按時間變化遞增的累計工作時間記錄值能被正確的保留;如果不符合,則執(zhí)行步驟5-6)來判斷是否為人為調(diào)大。5-6)人為調(diào)大
該步驟首先假定該帶修正的累計工作時間記錄值(NAcctime)為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值(NAcctime)符合人為調(diào)大的規(guī)律要求,則直接用該待修正的累計工作時間值(NAcctime)更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期(NDate)、時間(NTime)、開關(guān)量(NACC)、工作時間值(NAcctime)來更新已有的前一個正確工作時間所對應(yīng)的日期(LastTrueDate)、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)和前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime),從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)大的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值(LastTrueAcctime)來更新相關(guān)字段的該累計工作時間值(NAcctime),該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。5-7)人為調(diào)小
該步驟首先假定該帶修正的累計工作時間記錄值(NAcctime)為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值(NAcctime)符合人為調(diào)小的規(guī)律要求,則直接用該待修正的累計工作時間值(NAcctime)更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期(NDate)、時間(NTime)、開關(guān)量(NACC)和工作時間值(NAcctime)來更新已有的前一個正確工作時間所對應(yīng)的日期(LastTrueDate )、前一個正確工作時間所對應(yīng)的時間(LastTrueTime)、前一個正確工作時間所對應(yīng)的開關(guān)量(LastTrueACC)和前一個正確工作時間所對應(yīng)的工作時間值(LastTrueAcctime),從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)小的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值(LastTrueAcctime)來更新相關(guān)字段的該累計工作時間值(NAcctime),該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。
權(quán)利要求
1.一種車機(jī)累計工作時間修正方法,其特征在于,包括如下步驟 1)從數(shù)據(jù)庫中獲取需要修正的車機(jī)唯一編號及待修正的時間段,其中車機(jī)唯一編號是一臺車機(jī)唯一編號或多個車機(jī)唯一編號的集合;待修正的時間段是某一天的一段時間或是跨度多天的一段時間; 2)判斷修正是否為首次執(zhí)行,如果是首次執(zhí)行,則執(zhí)行步驟3),否則執(zhí)行步驟4); 3)查找第一個正確修正值 4)獲取上一個正確修正值 5)修正車機(jī)工作時間記錄 在前一條工作時間值,即上傳的工作時間I已經(jīng)被判斷為正確值的前提下,判斷新一條工作時間值,即上傳的工作時間2是否正確,判斷方法如下, A、計算GPS時間差與上傳的工作時間差 Timel=上傳的工作時間2-上傳的工作時間I Time2= GPS上傳時間2- GPS上傳時間I B、比較Timel 與 Time2 當(dāng)Timel〈=Time2+允許的誤差,則判斷該新的工作時間值,即上傳的工作時間2為正確值,保留該值; 當(dāng)Timel>Time2+允許的誤差,則判斷該新的工作時間值,即上傳的工作時間2為錯誤記錄,直接用前一工作時間值,即上傳的工作時間I替換; 所述的Timel表示上傳的工作時間差,Time2表示GPS時間差; 所述允許的誤差能人為設(shè)定; 修正車機(jī)工作時間記錄包括以下步驟, 5-1)首先獲取待修正車機(jī)唯一編號某一天中的按日期、時間、工作時間值進(jìn)行排序的所有累計工作時間記錄值,然后按順序比較待修正工作時間記錄值對應(yīng)的日期、時間是否與已經(jīng)經(jīng)過修正的最后一個累計工作時間值對應(yīng)的日期、時間相同,如果相同,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該工作時間值,該步驟能夠?qū)ν粫r間點上傳多條不同累計工作時間值的誤差進(jìn)行修正;如果不同,則執(zhí)行步驟5-2); 5-2)判斷該工作時間值是否為空,如果為空,則用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)盏睦塾嫻ぷ鲿r間值的記錄進(jìn)行修正;如果不同,則執(zhí)行步驟5-3); 5-3)判斷該待修正的工作時間記錄值是否與前一個已經(jīng)經(jīng)過修正的累計工作時間值相等,如果相等,則直接更新相關(guān)字段的記錄值,該步驟能夠保證已符合步驟5)中規(guī)律要求的不同時間點上傳同一累計工作時間值能被正確的保留;如果不等,則執(zhí)行步驟5-4);5-4)判斷該待修正的工作時間記錄值是否大于前一個已經(jīng)經(jīng)過修正的累計工作時間值,如果大于,則執(zhí)行步驟5-5),如果小于,則執(zhí)行步驟5-7); 5-5)按照步驟5)中的A、B判斷方法來判斷該是否符合正確的數(shù)據(jù)變化規(guī)律,如果符合,則直接用該更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量和工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù);該步驟能夠保證已符合步驟5)中規(guī)律要求按時間變化遞增的累計工作時間記錄值能被正確的保留;如果不符合,則執(zhí)行步驟5-6)來判斷是否為人為調(diào)大; 5-6)人為調(diào)大; 5-7)人為調(diào)小。
2.根據(jù)權(quán)利要求1所述的車機(jī)累計工作時間修正方法,其特征在于,所述步驟4)中獲取上一個正確修正值的步驟如下 4-1)首先判斷該待修正的累計工作時間值所對應(yīng)的日期是否為某月的I號,如果不是I號,則從當(dāng)月oracle數(shù)據(jù)表中獲取所有不同的累計工作時間記錄值,并按照日期升序、時間升序、工作時間值降序進(jìn)行排序,并將獲得的第一條記錄所對應(yīng)的工作時間值緩存到變量B中;如果不是,則在已修正的oracle數(shù)據(jù)表找查找符合上述要求的工作時間值,并緩存到變量B中; 4-2)根據(jù)待修正的累計工作時間記錄值所對應(yīng)的月份,從最近的一個月份開始倒序在oracle各數(shù)據(jù)表中查找到該變量B第一次出現(xiàn)的日期、時間,并將該值記錄到對應(yīng)的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量、前一個正確工作時間所對應(yīng)的工作時間值中,為后續(xù)的修正提供判斷依據(jù)。
3.根據(jù)權(quán)利要求1所述的車機(jī)累計工作時間修正方法,其特征在于,所述步驟3)中查找第一個正確修正值,包括以下步驟 3-1)首先獲取包括該待修正工作時間記錄值在內(nèi)的符合誤差允許范圍內(nèi)的至少3條不同的且不為空的工作時間記錄值,且這些記錄要按照日期、時間、工作時間值進(jìn)行升序排序,然后逐條執(zhí)行步驟3-2); 3-2)判斷該待修正工作時間值對應(yīng)的開關(guān)量值是否為0,如果為0,則執(zhí)行步驟3-2-1),如果不是O,則執(zhí)行步驟3-2-2); 3-2-1)判斷該待修正工作時間值是否大于等于0,如果大于等于0,則執(zhí)行步驟5-6)中的是否人為調(diào)大來判斷該值是否為正確的記錄值,如果符合人為調(diào)大規(guī)律,則將該待修正工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量和待修正工作時間值緩存到指定的數(shù)組A中進(jìn)行保存,并執(zhí)行步驟3-3);如果不符合人為調(diào)大規(guī)律,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值;如果小于0,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間記錄值; 3-2-2)判斷該待修正工作時間值是否為第一條不為空的工作時間值,如果是,則執(zhí)行步驟3-2-2-1),如果不是,則執(zhí)行步驟3-2-2-2); 3-2-2-1)執(zhí)行步驟5-6)中是否人為調(diào)大判斷該值是否符合人為調(diào)大規(guī)律,如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值;如果符合,則將該待修正工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量以及待修正工作時間值緩存到指定的數(shù)組A中進(jìn)行保存,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值,且開關(guān)量等于0,且符合人為調(diào)大規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3); 3-2-2-2)判斷該待修正的累計工作時間值與已緩存的數(shù)組A中記錄值是否符合遞增或者與后續(xù)的數(shù)據(jù)符合人為調(diào)大規(guī)律,如果符合,則將該值也報錯到緩存數(shù)組A中,繼續(xù)判斷下一條待修正的工作時間記錄值,直到找到一條符合步驟3-2-1)中要求的工作時間值不為空的工作時間值,且開關(guān)量等于O,且符合人為調(diào)大算法規(guī)律要求的累計工作時間記錄值為止,并執(zhí)行步驟3-3),如果直到所有的累計工作時間記錄值都判斷完任沒有找到符合步驟3-2-1)中要求的工作時間值,則也執(zhí)行步驟3-3);如果不符合,則判斷該記錄為錯誤的記錄,將刪除該待修正工作時間值; 3-3)按緩存數(shù)組A中的時間順序?qū)υ摂?shù)組所涉及的時間范圍的所有累計工作時間記錄值按范圍進(jìn)行更新修正,并將每一個工作時間值對應(yīng)的當(dāng)前日期、當(dāng)前時間、當(dāng)前開關(guān)量、待修正工作時間值更新到前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量、前一個正確工作時間所對應(yīng)的工作時間值中,為后續(xù)的修正提供判斷依據(jù)。
4.根據(jù)權(quán)利要求1所述的車機(jī)累計工作時間修正方法,其特征在于,所述步驟5-6)中的人為調(diào)大方法為,首先假定該帶修正的累計工作時間記錄值為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值符合人為調(diào)大的規(guī)律要求,則直接用該待修正的累計工作時間值更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量、工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)大的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。
5.根據(jù)權(quán)利要求1所述的車機(jī)累計工作時間修正方法,其特征在于,所述步驟5-7)中人為調(diào)小的方法為首先假定該帶修正的累計工作時間記錄值為車機(jī)上傳的第一條記錄,然后按照允許的誤差范圍在后續(xù)的所有累計工作時間記錄中查找N條不同的工作時間記錄值,并按照步驟5)中的A和B判斷方法進(jìn)行判斷,如果該N條記錄符合按時間順序遞增的規(guī)律要求,則說明該待修正的累計工作時間值符合人為調(diào)小的規(guī)律要求,則直接用該待修正的累計工作時間值更新相關(guān)字段的累計工作時間記錄值,并用該記錄所對應(yīng)的日期、時間、開關(guān)量和工作時間值來更新已有的前一個正確工作時間所對應(yīng)的日期、前一個正確工作時間所對應(yīng)的時間、前一個正確工作時間所對應(yīng)的開關(guān)量和前一個正確工作時間所對應(yīng)的工作時間值,從而為下一次修正提供判斷依據(jù),該步驟能夠保證累計工作時間記錄值在被人為在車機(jī)上重新設(shè)定后的工作時間記錄也能夠被正確的保留;如果不符合人為調(diào)小的規(guī)律要求,則直接用前一個已經(jīng)經(jīng)過修正的累計工作時間值來更新相關(guān)字段的該累計工作時間值,該步驟能夠?qū)ν蝗蛔兇蟮睦塾嫻ぷ鲿r間值進(jìn)行修正。
全文摘要
本發(fā)明涉及一種車機(jī)累計工作時間修正方法,特別適用于GPS車載監(jiān)控系統(tǒng)中,基于Oracle數(shù)據(jù)庫的車機(jī)累計工作時間的修正方法。該方法包括1)從數(shù)據(jù)庫中獲取需要修正的車機(jī)唯一編號及待修正的時間段;2)判斷修正是否為首次執(zhí)行,如果是首次執(zhí)行,則執(zhí)行步驟3),否則執(zhí)行步驟4);3)查找第一個正確修正值;4)獲取上一個正確修正值;5)修正車機(jī)工作時間記錄。本發(fā)明方法修正率達(dá)到95%以上,消除異常的跳變數(shù)據(jù),從而使車機(jī)上傳的工作時間值按時間段符合遞增規(guī)律,修正的準(zhǔn)確率高,簡單易于實現(xiàn),可延展性搞。其作用是使有誤差的工作時間得有修正,從而減少后續(xù)基于該累計工作時間的分析統(tǒng)計的誤差。
文檔編號G06F19/00GK103020464SQ201210569269
公開日2013年4月3日 申請日期2012年12月25日 優(yōu)先權(quán)日2012年12月25日
發(fā)明者周玉巧, 嚴(yán)玉華, 陳智也 申請人:天澤信息產(chǎn)業(yè)股份有限公司