本發(fā)明涉及一種直觀展現(xiàn)企業(yè)關(guān)系圖譜的設(shè)計(jì)方法及系統(tǒng)。
背景技術(shù):
隨著企業(yè)數(shù)據(jù)量的不斷積累,以及對(duì)企業(yè)間的數(shù)據(jù)分析,我們已經(jīng)得到了企業(yè)關(guān)系型數(shù)據(jù)。但是,面臨的問題是如何將這些關(guān)系型數(shù)據(jù)更好的、更直觀的展示給我們的用戶,讓他們可以更快速的把握企業(yè)的股東、重要人員,以及企業(yè)對(duì)外投資的公司。
由于很多大型企業(yè)的關(guān)聯(lián)關(guān)系不僅涉及的股東和投資數(shù)量眾多,而且其中的關(guān)系也是錯(cuò)綜復(fù)雜。如果只是涉及的數(shù)據(jù)量多的情況,我們還可以使用樹形圖、家譜圖的方式去清晰的展示企業(yè)關(guān)系。但是因?yàn)槠髽I(yè)關(guān)系相對(duì)復(fù)雜,因?yàn)橛行┣闆r下企業(yè)下層的對(duì)外投資公司又是該企業(yè)的股東,這樣的情況上述的圖形變現(xiàn)方式就不適用了。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為了解決上述問題,提供一種直觀展現(xiàn)企業(yè)關(guān)系圖譜的設(shè)計(jì)方法及系統(tǒng),它具有使系統(tǒng)用戶可以快速了解企業(yè)關(guān)系,把握公司的發(fā)展趨勢,更好的為今后的商務(wù)合作做好正確的決策的優(yōu)點(diǎn)。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種直觀展現(xiàn)企業(yè)關(guān)系圖譜的設(shè)計(jì)方法,包括如下步驟:
步驟(1):使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取待查詢企業(yè)的企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;所述企業(yè)主要信息包括:企業(yè)名稱、自然人股東、企業(yè)股東及對(duì)外投資公司;
步驟(2):從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第一層企業(yè)關(guān)系數(shù)據(jù);將第一層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
步驟(3):利用步驟(2)中的企業(yè)股東和對(duì)外投資公司分別作為關(guān)鍵詞,再次使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;
步驟(4):從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第二層企業(yè)關(guān)系數(shù)據(jù);將第二層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
步驟(5):遞歸步驟(3)-(4),直到最后一層企業(yè)關(guān)系數(shù)據(jù)中沒有股東或?qū)ν馔顿Y公司;
步驟(6):依據(jù)圖形數(shù)據(jù)庫生成企業(yè)關(guān)系圖譜。
所述步驟(2)的直接關(guān)系數(shù)據(jù)包括:企業(yè)與自然人股東之間的股東關(guān)系、企業(yè)與企業(yè)股東之間的股東企業(yè)關(guān)系、企業(yè)與對(duì)外投資公司之間的對(duì)外投資關(guān)系。
所述步驟(6)的步驟為:
步驟(601):從圖形數(shù)據(jù)庫中提取出待查詢企業(yè)的第一層企業(yè)關(guān)系數(shù)據(jù),取待查詢企業(yè)的公司id和公司名稱name,將公司id和公司名稱name封裝為企業(yè)節(jié)點(diǎn),存放在節(jié)點(diǎn)數(shù)組中,并在節(jié)點(diǎn)數(shù)組中添加股東和對(duì)外投資兩個(gè)輔助節(jié)點(diǎn);所述輔助節(jié)點(diǎn)的屬性包括id和名稱。
將第一層企業(yè)關(guān)系數(shù)據(jù)中的企業(yè)與自然人股東之間的股東關(guān)系、企業(yè)與企業(yè)股東之間的股東企業(yè)關(guān)系和企業(yè)與對(duì)外投資公司之間的對(duì)外投資關(guān)系存儲(chǔ)到連線數(shù)組中,關(guān)系以來源source、目標(biāo)target對(duì)應(yīng)節(jié)點(diǎn)數(shù)組中各節(jié)點(diǎn)的id;
步驟(602):在網(wǎng)頁內(nèi)添加畫布svg,并設(shè)置畫布svg的大小,取得畫布svg的中心點(diǎn)像素坐標(biāo)(x,y);將中心點(diǎn)像素坐標(biāo)(x,y)作為待查詢企業(yè)的坐標(biāo);輔助節(jié)點(diǎn)股東的坐標(biāo)為(x-l*10%,y),輔助節(jié)點(diǎn)對(duì)外投資的坐標(biāo)為(x+l*10%,y);l表示畫布像素長度;
步驟(603):將畫布范圍、節(jié)點(diǎn)數(shù)組和連線數(shù)組傳入力導(dǎo)向布局中,同時(shí)指定連線長度和節(jié)點(diǎn)之間相互作用力的強(qiáng)度;利用力導(dǎo)向布局計(jì)算出節(jié)點(diǎn)數(shù)組中各個(gè)節(jié)點(diǎn)的像素坐標(biāo),所述力導(dǎo)向布局會(huì)將各節(jié)點(diǎn)坐標(biāo)值自動(dòng)添加到節(jié)點(diǎn)數(shù)組和連線數(shù)組中;
循環(huán)遍歷節(jié)點(diǎn)數(shù)組,得到各個(gè)節(jié)點(diǎn)的坐標(biāo),在畫布的相應(yīng)坐標(biāo)位置繪制節(jié)點(diǎn);循環(huán)遍歷連線數(shù)組,獲取source和target的坐標(biāo),利用數(shù)據(jù)可視化工具d3的對(duì)角線生成器生成貝塞爾曲線,將source和target對(duì)應(yīng)的節(jié)點(diǎn)連接起來,并在target坐標(biāo)位置繪制箭頭方向標(biāo)記,曲線的中點(diǎn)坐標(biāo)處填充上相應(yīng)的關(guān)系名稱,第一層企業(yè)關(guān)系圖繪制完成;
步驟(604):設(shè)置股東增加層級(jí)按鈕和股東減少層級(jí)按鈕;設(shè)置對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕;在股東增加層級(jí)按鈕和股東減少層級(jí)按鈕之間設(shè)置第一小標(biāo)簽顯示股東當(dāng)前層級(jí);在對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕之間設(shè)置第二小標(biāo)簽顯示對(duì)外投資公司的當(dāng)前層級(jí);
設(shè)置股東增加層級(jí)按鈕、股東減少層級(jí)按鈕、對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕的處理函數(shù);
步驟(605):利用ajax從圖形數(shù)據(jù)庫中讀取第二層企業(yè)關(guān)系數(shù)據(jù)對(duì)應(yīng)的股東或者對(duì)外投資公司,將讀取的結(jié)果更新到節(jié)點(diǎn)數(shù)組中;將第二層企業(yè)關(guān)系數(shù)據(jù)對(duì)應(yīng)的關(guān)系更新到連線數(shù)組中;重復(fù)步驟(602)-(603);將第二層企業(yè)關(guān)系數(shù)據(jù)繪制到畫布上。
所述增加層級(jí)按鈕的處理函數(shù)是從節(jié)點(diǎn)數(shù)組和連線數(shù)組中增加相應(yīng)層次的數(shù)據(jù),并將相應(yīng)的節(jié)點(diǎn)和連線添加到畫布中去。
所述減少層級(jí)按鈕的處理函數(shù)是從節(jié)點(diǎn)數(shù)組和連線數(shù)組中移除相應(yīng)層次的數(shù)據(jù),并將相應(yīng)的節(jié)點(diǎn)和連線從圖中移除出去。
設(shè)置節(jié)點(diǎn)的處理函數(shù),利用ajax從企業(yè)主要信息數(shù)據(jù)庫中查出待查詢公司的主要信息,并通過彈出窗口的方式展示待查詢公司的主要信息。
所述步驟(601)在節(jié)點(diǎn)數(shù)組中添加股東和對(duì)外投資兩個(gè)輔助節(jié)點(diǎn),例[{id:0,name:"小米科技有限責(zé)任公司"},{id:1,name:"股東"},{id:2,name:"對(duì)外投資"},{id:3,name:"雷軍"},{id:4,name:"小米信用管理有限公司"}]。
所述步驟(601)關(guān)系以來源source、目標(biāo)target對(duì)應(yīng)節(jié)點(diǎn)數(shù)組中各節(jié)點(diǎn)的id,例如[{source:1,target:0},{source:0,target:2},{source:3,target:0},{source:2,target:4}]。
一種直觀展現(xiàn)企業(yè)關(guān)系圖譜的設(shè)計(jì)系統(tǒng),其特征是,包括:
第一抓取模塊:使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取待查詢企業(yè)的企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;所述企業(yè)主要信息包括:企業(yè)名稱、自然人股東、企業(yè)股東及對(duì)外投資公司;
圖形數(shù)據(jù)庫搭建模塊:從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第一層企業(yè)關(guān)系數(shù)據(jù);將第一層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
第二抓取模塊:利用企業(yè)股東和對(duì)外投資公司分別作為關(guān)鍵詞,再次使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;
圖形數(shù)據(jù)庫完善模塊:從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第二層企業(yè)關(guān)系數(shù)據(jù);將第二層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
遞歸模塊:遞歸第二抓取模塊和圖像數(shù)據(jù)庫完善模塊的工作,直到最后一層企業(yè)關(guān)系數(shù)據(jù)中沒有股東或?qū)ν馔顿Y公司;
企業(yè)關(guān)系圖譜生成模塊:依據(jù)圖形數(shù)據(jù)庫生成企業(yè)關(guān)系圖譜。
本發(fā)明的有益效果:
1可以展示所查看企業(yè)相關(guān)的所有的股東和對(duì)外投資關(guān)系,而非只展示與該企業(yè)直接相關(guān)的股東和對(duì)外投資公司的關(guān)系;
2通過這種分層結(jié)構(gòu)組織股東和對(duì)外投資數(shù)據(jù),并分層展示企業(yè)關(guān)系,不僅可以節(jié)省一次傳輸所有數(shù)據(jù)所帶來的網(wǎng)絡(luò)延遲,并且能通過層級(jí)的增減更好更清晰的展示更多更復(fù)雜的企業(yè)關(guān)系數(shù)據(jù),提升用戶體驗(yàn)。
3能夠從圖中直接查看企業(yè)的主要信息,方便用戶獲取股東和對(duì)外投資公司的詳情,提升用戶體驗(yàn)。
附圖說明
圖1為本發(fā)明的方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說明。
如圖1所示,一種直觀展現(xiàn)企業(yè)關(guān)系圖譜的設(shè)計(jì)方法,包括如下步驟:
步驟(1):使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取待查詢企業(yè)的企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;所述企業(yè)主要信息包括:企業(yè)名稱、自然人股東、企業(yè)股東及對(duì)外投資公司;
步驟(2):從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第一層企業(yè)關(guān)系數(shù)據(jù);將第一層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
步驟(3):利用步驟(2)中的企業(yè)股東和對(duì)外投資公司分別作為關(guān)鍵詞,再次使用網(wǎng)絡(luò)爬蟲算法從國家企業(yè)信用信息公示系統(tǒng)中抓取企業(yè)主要信息,將企業(yè)主要信息保存到企業(yè)主要信息數(shù)據(jù)庫中;
步驟(4):從企業(yè)主要信息數(shù)據(jù)庫中提取自然人股東、企業(yè)股東和對(duì)外投資公司;將企業(yè)、自然人股東、企業(yè)股東和對(duì)外投資公司作為節(jié)點(diǎn)存入圖形數(shù)據(jù)庫中;同時(shí)指定直接關(guān)系數(shù)據(jù),將所述直接關(guān)系數(shù)據(jù)定義為第二層企業(yè)關(guān)系數(shù)據(jù);將第二層企業(yè)關(guān)系數(shù)據(jù)存入圖形數(shù)據(jù)庫中;
步驟(5):遞歸步驟(3)-(4),直到最后一層企業(yè)關(guān)系數(shù)據(jù)中沒有股東或?qū)ν馔顿Y公司;
步驟(6):依據(jù)圖形數(shù)據(jù)庫生成企業(yè)關(guān)系圖譜。
所述步驟(2)的直接關(guān)系數(shù)據(jù)包括:企業(yè)與自然人股東之間的股東關(guān)系、企業(yè)與企業(yè)股東之間的股東企業(yè)關(guān)系、企業(yè)與對(duì)外投資公司之間的對(duì)外投資關(guān)系。
所述步驟(6)的步驟為:
步驟(601):從圖形數(shù)據(jù)庫中提取出待查詢企業(yè)的第一層企業(yè)關(guān)系數(shù)據(jù),取待查詢企業(yè)的公司id和公司名稱name,將公司id和公司名稱name封裝為企業(yè)節(jié)點(diǎn),存放在節(jié)點(diǎn)數(shù)組中,并在節(jié)點(diǎn)數(shù)組中添加股東和對(duì)外投資兩個(gè)輔助節(jié)點(diǎn);例[{id:0,name:"小米科技有限責(zé)任公司"},{id:1,name:"股東"},{id:2,name:"對(duì)外投資"},{id:3,name:"雷軍"},{id:4,name:"小米信用管理有限公司"}]。所述輔助節(jié)點(diǎn)的屬性包括id和名稱。
將第一層企業(yè)關(guān)系數(shù)據(jù)中的企業(yè)與自然人股東之間的股東關(guān)系、企業(yè)與企業(yè)股東之間的股東企業(yè)關(guān)系和企業(yè)與對(duì)外投資公司之間的對(duì)外投資關(guān)系存儲(chǔ)到連線數(shù)組中,關(guān)系以來源source、目標(biāo)target對(duì)應(yīng)節(jié)點(diǎn)數(shù)組中各節(jié)點(diǎn)的id;例如[{source:1,target:0},{source:0,target:2},{source:3,target:0},{source:2,target:4}]。
步驟(602):在網(wǎng)頁內(nèi)添加畫布svg,并設(shè)置畫布svg的大小,取得畫布svg的中心點(diǎn)像素坐標(biāo)(x,y);將中心點(diǎn)像素坐標(biāo)(x,y)作為待查詢企業(yè)的坐標(biāo);輔助節(jié)點(diǎn)股東的坐標(biāo)為(x-l*10%,y),輔助節(jié)點(diǎn)對(duì)外投資的坐標(biāo)為(x+l*10%,y);l表示畫布像素長度;
步驟(603):將畫布范圍、節(jié)點(diǎn)數(shù)組和連線數(shù)組傳入力導(dǎo)向布局中,同時(shí)指定連線長度和節(jié)點(diǎn)之間相互作用力的強(qiáng)度;利用力導(dǎo)向布局計(jì)算出節(jié)點(diǎn)數(shù)組中各個(gè)節(jié)點(diǎn)的像素坐標(biāo),所述力導(dǎo)向布局會(huì)將各節(jié)點(diǎn)坐標(biāo)值自動(dòng)添加到節(jié)點(diǎn)數(shù)組和連線數(shù)組中;
循環(huán)遍歷節(jié)點(diǎn)數(shù)組,得到各個(gè)節(jié)點(diǎn)的坐標(biāo),在畫布的相應(yīng)坐標(biāo)位置繪制節(jié)點(diǎn);循環(huán)遍歷連線數(shù)組,獲取source和target的坐標(biāo),利用數(shù)據(jù)可視化工具d3的對(duì)角線生成器生成貝塞爾曲線,將source和target對(duì)應(yīng)的節(jié)點(diǎn)連接起來,并在target坐標(biāo)位置繪制箭頭方向標(biāo)記,曲線的中點(diǎn)坐標(biāo)處填充上相應(yīng)的關(guān)系名稱,第一層企業(yè)關(guān)系圖繪制完成;
步驟(604):設(shè)置股東增加層級(jí)按鈕和股東減少層級(jí)按鈕;設(shè)置對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕;在股東增加層級(jí)按鈕和股東減少層級(jí)按鈕之間設(shè)置第一小標(biāo)簽顯示股東當(dāng)前層級(jí);在對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕之間設(shè)置第二小標(biāo)簽顯示對(duì)外投資公司的當(dāng)前層級(jí);
設(shè)置股東增加層級(jí)按鈕、股東減少層級(jí)按鈕、對(duì)外投資公司的增加層級(jí)按鈕和對(duì)外投資公司的減少層級(jí)按鈕的處理函數(shù);設(shè)置節(jié)點(diǎn)的處理函數(shù),利用ajax從企業(yè)主要信息數(shù)據(jù)庫中查出待查詢公司的主要信息,并通過彈出窗口的方式展示待查詢公司的主要信息。
所述增加層級(jí)按鈕的處理函數(shù)是從節(jié)點(diǎn)數(shù)組和連線數(shù)組中增加相應(yīng)層次的數(shù)據(jù),并將相應(yīng)的節(jié)點(diǎn)和連線添加到畫布中去。
所述減少層級(jí)按鈕的處理函數(shù)是從節(jié)點(diǎn)數(shù)組和連線數(shù)組中移除相應(yīng)層次的數(shù)據(jù),并將相應(yīng)的節(jié)點(diǎn)和連線從圖中移除出去。
步驟(605):利用ajax從圖形數(shù)據(jù)庫中讀取第二層企業(yè)關(guān)系數(shù)據(jù)對(duì)應(yīng)的股東或者對(duì)外投資公司,將讀取的結(jié)果更新到節(jié)點(diǎn)數(shù)組中;將第二層企業(yè)關(guān)系數(shù)據(jù)對(duì)應(yīng)的關(guān)系更新到連線數(shù)組中;重復(fù)步驟(602)-(603);將第二層企業(yè)關(guān)系數(shù)據(jù)繪制到畫布上。
上述雖然結(jié)合附圖對(duì)本發(fā)明的具體實(shí)施方式進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。