本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法和系統(tǒng)。
背景技術(shù):業(yè)務(wù)報(bào)表、運(yùn)營報(bào)表、運(yùn)維報(bào)表等數(shù)據(jù)報(bào)表隨著時(shí)間的推移,系統(tǒng)業(yè)務(wù)數(shù)據(jù)在不同期間會(huì)有相當(dāng)數(shù)量的數(shù)據(jù)統(tǒng)計(jì)需求。在通常構(gòu)建系統(tǒng)過程中確保系統(tǒng)的安全與穩(wěn)定,設(shè)定服務(wù)器連接超時(shí)的時(shí)間是必須的,在傳統(tǒng)的需求開發(fā)者開發(fā)時(shí)往往忽略海量數(shù)據(jù)在統(tǒng)計(jì)時(shí)產(chǎn)生的連接服務(wù)器超時(shí)問題,然而改變服務(wù)器與客戶端(瀏覽器)的響應(yīng)時(shí)間則是因小失大,影響系統(tǒng)的安全與穩(wěn)定;改變導(dǎo)出數(shù)據(jù)的時(shí)間段減少導(dǎo)出報(bào)表的數(shù)據(jù)是治標(biāo)不治本,而且效率不高客戶體驗(yàn)度差,特別是中國式的企業(yè)統(tǒng)計(jì)報(bào)表,個(gè)性化要求比較高,依靠改變時(shí)間段生成導(dǎo)出不完整的數(shù)據(jù)報(bào)表并不能完全滿足。有鑒于此,現(xiàn)有技術(shù)有待改進(jìn)和提高。
技術(shù)實(shí)現(xiàn)要素:鑒于現(xiàn)有技術(shù)中的不足,本發(fā)明目的在于提供一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法和系統(tǒng)。旨在解決現(xiàn)有技術(shù)中數(shù)據(jù)報(bào)表導(dǎo)出效率低、客戶體驗(yàn)度差等問題。本發(fā)明的技術(shù)方案如下:一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其中,所述方法包括以下步驟:A、根據(jù)用戶指令確定需要導(dǎo)出數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中,同時(shí),服務(wù)器開啟一線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器;B、瀏覽器獲得session的ID,停留一預(yù)定時(shí)間,異步請求服務(wù)器,通過Session的ID查看報(bào)表處理的狀態(tài);C、當(dāng)查看session中報(bào)表處理的狀態(tài)為True時(shí),返回成功的標(biāo)志,瀏覽器自動(dòng)提交session的ID;D、服務(wù)器根據(jù)Session中報(bào)表的文件名和路徑下載線程保存的報(bào)表文件進(jìn)行下載,同時(shí)刪除服務(wù)器中保存的報(bào)表文件。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其中,所述步驟A中請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中具體包括:服務(wù)器自定義唯一的報(bào)表文件名、保存生成報(bào)表的文件路徑、以及報(bào)表處理的狀態(tài),封裝成對象放入session中。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其中,所述步驟C中還包括:當(dāng)分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器的線程處理完時(shí)改變session中報(bào)表處理的狀態(tài)為True時(shí),線程結(jié)束。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其中,所述步驟B中預(yù)定時(shí)間為根據(jù)服務(wù)器超時(shí)的時(shí)間確定的。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其中,所述步驟B中預(yù)定時(shí)間為7秒鐘。一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng),其中,包括:監(jiān)控單元,用于根據(jù)用戶指令確定需要導(dǎo)出數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中,同時(shí),服務(wù)器開啟一線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器;查看單元,用于瀏覽器獲得session的ID,停留一預(yù)定時(shí)間,異步請求服務(wù)器,通過Session的ID查看報(bào)表處理的狀態(tài);返回單元,用于當(dāng)查看session中報(bào)表處理的狀態(tài)為True時(shí),返回成功的標(biāo)志,瀏覽器自動(dòng)提交session的ID;下載單元,用于服務(wù)器根據(jù)Session中報(bào)表的文件名和路徑下載線程保存的報(bào)表文件進(jìn)行下載,同時(shí)刪除服務(wù)器中保存的報(bào)表文件。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng),其中,所述查看單元中預(yù)定時(shí)間為根據(jù)服務(wù)器超時(shí)的時(shí)間確定的。所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng),其中,所述查看單元中預(yù)定時(shí)間為7秒鐘。有益效果:本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法和系統(tǒng),利用多線程技術(shù)和AJAX技術(shù)綜合應(yīng)用,使得在超時(shí)時(shí)間內(nèi)與服務(wù)器交互,從根本上解決了服務(wù)器連接超時(shí)的問題,同時(shí)滿足客戶導(dǎo)出任何時(shí)段的海量數(shù)據(jù)報(bào)表,其數(shù)據(jù)實(shí)時(shí)高效,學(xué)習(xí)成本低,可封裝成公共模塊供開發(fā)使用,提高了開發(fā)者工作效率,其報(bào)表需求響應(yīng)平均時(shí)間從2天降低到0.8天。附圖說明圖1為本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法的流程圖。圖2為本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法中客戶端與服務(wù)器的交互的示意圖。圖3為本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng)的結(jié)構(gòu)框圖。具體實(shí)施方式本發(fā)明提供一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法和系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。請參閱圖1,其為本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法的流程圖。如圖所示,所述方法包括以下步驟:S1、根據(jù)用戶指令確定需要導(dǎo)出數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中,同時(shí),服務(wù)器開啟一線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器;S2、瀏覽器獲得session的ID,停留一預(yù)定時(shí)間,異步請求服務(wù)器,通過Session的ID查看報(bào)表處理的狀態(tài);S3、當(dāng)查看session中報(bào)表處理的狀態(tài)為True時(shí),返回成功的標(biāo)志,瀏覽器自動(dòng)提交session的ID;S4、服務(wù)器根據(jù)Session中報(bào)表的文件名和路徑下載線程保存的報(bào)表文件進(jìn)行下載,同時(shí)刪除服務(wù)器中保存的報(bào)表文件。下面分別針對上述步驟進(jìn)行詳細(xì)描述:所述步驟S1為根據(jù)用戶指令確定需要導(dǎo)出數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中,同時(shí),服務(wù)器開啟一線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器。具體來說,用戶填寫需要導(dǎo)出的數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),首先服務(wù)器自定義唯一的報(bào)表文件名、保存生成報(bào)表的文件路徑、這個(gè)報(bào)表處理的狀態(tài)(線程是否執(zhí)行結(jié)束的狀態(tài)?)封裝成對象放入session中,然后開啟一個(gè)線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器(即客戶端)。所述步驟S2為瀏覽器獲得session的ID,停留一預(yù)定時(shí)間,異步請求服務(wù)器,通過Session的ID查看報(bào)表處理的狀態(tài)。在本實(shí)施例中,所述預(yù)定時(shí)間為根據(jù)服務(wù)器超時(shí)的時(shí)間確定的。一般來說,設(shè)置為7秒鐘,再異步請求服務(wù)器(參數(shù)SessionId),通過Session的ID查看‘報(bào)表處理的狀態(tài)(線程是否執(zhí)行結(jié)束的狀態(tài)?)。所述步驟S3為當(dāng)查看session中報(bào)表處理的狀態(tài)為True時(shí),返回成功的標(biāo)志,瀏覽器自動(dòng)提交form(參數(shù)session的ID)。進(jìn)一步地,當(dāng)分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器的線程處理完時(shí)改變session中報(bào)表處理的狀態(tài)(線程是否執(zhí)行結(jié)束的狀態(tài)?)為True,線程結(jié)束。所述步驟S4為服務(wù)器根據(jù)Session中報(bào)表的文件名和路徑下載線程保存的報(bào)表文件進(jìn)行下載,同時(shí)刪除服務(wù)器中保存的報(bào)表文件。上述實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法已經(jīng)在實(shí)踐中穩(wěn)定的導(dǎo)出50萬以上的數(shù)據(jù)報(bào)表。本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法,其過程核心有兩步:一是提交導(dǎo)出請求服務(wù)器開啟一個(gè)處理分系統(tǒng)統(tǒng)計(jì)海量數(shù)據(jù)的線程,把報(bào)表的信息(線程狀態(tài))放入Session中,并把Session的ID返回瀏覽器;二是每隔一段時(shí)間(其時(shí)間必須小于連接超時(shí)的時(shí)間)異步請求服務(wù)器,通過Session的ID查看線程的狀態(tài)是否線程已經(jīng)結(jié)束,如果沒有結(jié)束則循環(huán)查看線程狀態(tài),如果線程狀態(tài)是已經(jīng)結(jié)束則告訴瀏覽器提交form表單下載生成的報(bào)表文件。所述客戶端與服務(wù)器的交互過程可以參見圖2。本發(fā)明還提供了一種實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng),如圖2所示,所述系統(tǒng)包括:監(jiān)控單元100,用于根據(jù)用戶指令確定需要導(dǎo)出數(shù)據(jù)條件,請求服務(wù)器導(dǎo)出分析統(tǒng)計(jì)數(shù)據(jù),并把其封裝成對象放入session中,同時(shí),服務(wù)器開啟一線程分析統(tǒng)計(jì)數(shù)據(jù)生成報(bào)表保存服務(wù)器,把Session的ID返回瀏覽器;查看單元200,用于瀏覽器獲得session的ID,停留一預(yù)定時(shí)間,異步請求服務(wù)器,通過Session的ID查看報(bào)表處理的狀態(tài);返回單元300,用于當(dāng)查看session中報(bào)表處理的狀態(tài)為True時(shí),返回成功的標(biāo)志,瀏覽器自動(dòng)提交session的ID;下載單元400,用于服務(wù)器根據(jù)Session中報(bào)表的文件名和路徑下載線程保存的報(bào)表文件進(jìn)行下載,同時(shí)刪除服務(wù)器中保存的報(bào)表文件。進(jìn)一步地,所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng)中,所述查看單元中預(yù)定時(shí)間為根據(jù)服務(wù)器超時(shí)的時(shí)間確定的。進(jìn)一步地,所述的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理系統(tǒng)中,所述查看單元中預(yù)定時(shí)間為7秒鐘。上述各個(gè)部分的功能都已經(jīng)在上述方法中進(jìn)行了詳細(xì)介紹,這里就不再冗述了。綜上所述,本發(fā)明的實(shí)時(shí)導(dǎo)出海量數(shù)據(jù)報(bào)表的處理方法和系統(tǒng),利用多線程技術(shù)和AJAX技術(shù)綜合應(yīng)用,使得在超時(shí)時(shí)間內(nèi)與服務(wù)器交互,從根本上解決了服務(wù)器連接超時(shí)的問題,同時(shí)滿足客戶導(dǎo)出任何時(shí)段的海量數(shù)據(jù)報(bào)表,其數(shù)據(jù)實(shí)時(shí)高效,學(xué)習(xí)成本低,可封裝成公共模塊供開發(fā)使用,提高了開發(fā)者工作效率,其報(bào)表需求響應(yīng)平均時(shí)間從2天降低到0.8天。應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。