999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Web技術(shù)的服務(wù)通告人工工時計算軟件設(shè)計與開發(fā)

2021-07-28 21:59:39傅聰張艷紅付冬梅楊燾
企業(yè)科技與發(fā)展 2021年6期

傅聰 張艷紅 付冬梅 楊燾

【關(guān)鍵詞】服務(wù)通告;人工工時;Web技術(shù);軟件設(shè)計

【中圖分類號】TP393.09;U695.2【文獻標識碼】A【文章編號】1674-0688(2021)06-0053-04

0 引言

服務(wù)通告人工工時包括最短施工時間和總?cè)斯すr。最短施工時間是指完成一項工程,在人力資源充足、工人操作嫻熟且沒有發(fā)生特殊狀況的情況下,工程施工周期的最小值。與最短施工時間不同,總?cè)斯すr是指完成一項工程所有工序,在工人操作嫻熟且沒有發(fā)生特殊狀況的情況下,所有工人花費的工時之和。由于工程施工期間可以讓多道工序同時進行,所以最短施工時間一般小于總?cè)斯すr [1]。

目前,服務(wù)通告人工工時的制定主要依賴專業(yè)工程技術(shù)人員的經(jīng)驗,人為主觀因素影響很大,沒有相對科學的理論依據(jù)作為支撐,而實際的工程工序時長具有一定的時間不確定性,使得這種憑借經(jīng)驗的人工工時的可靠性較低。

本文旨在利用Web等技術(shù) [2-5],通過分析某型飛機制造商已發(fā)布的部分服務(wù)通告,借助網(wǎng)絡(luò)計劃理論 [6],設(shè)計和開發(fā)一套能夠計算服務(wù)通告人工工時的軟件,提高服務(wù)通告制定效率,減少服務(wù)通告人工工時制定過程中受主觀因素的影響,提升服務(wù)通告的參考價值。

1 軟件總體功能說明

本文設(shè)計開發(fā)的軟件主要具有三大功能:經(jīng)驗數(shù)據(jù)查詢、人工工時計算、數(shù)據(jù)提取更新。用戶可以通過輸入關(guān)鍵字和給定精確度查詢數(shù)據(jù)庫中已有的服務(wù)通告人工工時統(tǒng)計數(shù)據(jù)、工序數(shù)和文件下載鏈接;通過軟件提供的數(shù)據(jù)提取更新功能,數(shù)據(jù)庫管理者只需要上傳服務(wù)通告PDF文件,就可以自動提取并統(tǒng)計數(shù)據(jù);在工序時長和前后關(guān)系已知的情況下,用戶通過輸入工序表信息,可以得到理論人工工時計算結(jié)果。軟件功能結(jié)構(gòu)圖如圖1所示。

2 軟件開發(fā)與設(shè)計說明

服務(wù)器端運行Linux系統(tǒng),使用Nginx作為靜態(tài)服務(wù)器,使用uWSGI作為應(yīng)用程序服務(wù)器運行Python程序,軟件采用基于Python語言的Flask后端框架 [7-10]和基于JavaScript [11]語言的Vue前端框架 [12-13]相耦合,前端使用BootStrap實現(xiàn)響應(yīng)式布局,用戶使用瀏覽器輸入服務(wù)器的網(wǎng)址即可使用軟件。

2.1 服務(wù)器

服務(wù)器的Python CGI腳本作為數(shù)據(jù)I/O模塊,能夠處理不同請求。

(1)請求查詢數(shù)據(jù)時:將收到的關(guān)鍵字符串交給Python數(shù)據(jù)庫模塊的查詢接口,使用數(shù)據(jù)搜索算法查找結(jié)果,然后將查詢的結(jié)果發(fā)送給客戶端。

(2)請求下載文件時:根據(jù)請求的文件名將文件發(fā)送給客戶端。

(3)請求上傳文件時:首先將上傳的數(shù)據(jù)轉(zhuǎn)交給Python數(shù)據(jù)提取模塊,借助正則表達式和數(shù)據(jù)提取算法進行字符匹配和提取,然后交給Python數(shù)據(jù)庫模塊的更新接口,使用在線數(shù)據(jù)統(tǒng)計算法更新數(shù)據(jù)庫的數(shù)據(jù),最后將處理成功與否返回給客戶端。

2.2 客戶端

當客戶端請求主頁Html和Javascript文件后,客戶端Vue按Html模板渲染網(wǎng)頁,基于Vue的Javascript腳本數(shù)據(jù)I/O模塊作為客戶端運行的核心,協(xié)調(diào)內(nèi)部數(shù)據(jù),使由Html文件和Bootstrap構(gòu)成的GUI模塊能夠動態(tài)響應(yīng)用戶輸入。

(1)當用戶輸入時:數(shù)據(jù)I/O模塊自動檢查并更新GUI模塊中的數(shù)據(jù),使用自動糾錯算法糾正錯誤輸入。

(2)當用戶要計算數(shù)據(jù)時:數(shù)據(jù)I/O模塊將GUI模塊中的數(shù)據(jù)交給工時計算模塊,使用樹枝圖算法計算最短施工時間和總?cè)斯すr結(jié)果,將返回的結(jié)果更新到GUI模塊中。

(3)當用戶要查詢或更新數(shù)據(jù)時:數(shù)據(jù)I/O模塊將GUI模塊中的數(shù)據(jù)發(fā)送給服務(wù)器數(shù)據(jù)更新接口,將返回的結(jié)果更新到GUI模塊中。

2.3 數(shù)據(jù)庫

在數(shù)據(jù)庫結(jié)構(gòu)方面,軟件使用的數(shù)據(jù)庫由服務(wù)通告元數(shù)據(jù)表(命名sb)和統(tǒng)計數(shù)據(jù)表(命名count)組成,其定義如圖2所示。數(shù)據(jù)表sb用來記錄數(shù)據(jù)提取模塊產(chǎn)生的數(shù)據(jù),數(shù)據(jù)表count用來統(tǒng)計數(shù)據(jù)表sb中的數(shù)據(jù)記錄。

2.4 算法設(shè)計

2.4.1 樹枝圖算法

算法的輸入:工序表,工序表中每道工序具有名稱、時長、緊前工序3個基本屬性,其中緊前工序的名稱與工序名稱是對應(yīng)的。算法的輸出:最短施工時間、關(guān)鍵工序、總?cè)斯すr。

樹枝圖算法的關(guān)鍵是選取可選工序和獲得所有工序路線施工時間的最大值。對于前者,程序應(yīng)該在每次選擇之前判斷哪些工序可以選擇;對于后者,程序需要找出所有工序路線,比較各條工序路線的施工時間,然后得到所有工序路線施工時間的最大值,作為工程最短施工時間。

算法運行過程:①以一個空數(shù)組和初始時刻0為初始參數(shù)開始,遍歷所有工序表中可選的工序;②每次將一道可選工序的名稱加入數(shù)組,并將初始時刻加上該工序時長得到新的時刻,如果沒有可選工序,則轉(zhuǎn)到過程?譼?訛;③以所得到的數(shù)組和新的時刻為初始參數(shù)開始重復上述過程?譹?訛;④將數(shù)組和時刻作為一條結(jié)果保存在結(jié)果數(shù)組中,由于所有可選工序都遍歷了一遍,所以結(jié)果數(shù)組中保存的就是所有的工序路線;⑤利用基本的排序與求和算法找到最大值和工序時長之和,即可得到最短施工時間和總?cè)斯すr。

圖3是利用樹枝圖算法計算所有路線及其總工時的算法流程圖,其中“能否放入隊列”是一個布爾表達式,“調(diào)用自身”指的是程序遞歸調(diào)用自身,括號部分是調(diào)用時輸入的參數(shù)。

2.4.2 自動邏輯檢測

算法的輸入:當前操作的工序節(jié)點、工序表。算法的輸出:經(jīng)過調(diào)整(禁用錯誤選項)的工序表。

幫助用戶避免錯誤選項的原理是禁用錯誤選項,所以算法的核心是設(shè)法得到每道工序需要禁用的選項,每次用戶對緊前工序做出改變時,就可能需要重新設(shè)置工序的禁用選項,用戶既能添加緊前工序,也能刪除緊前工序,所以程序既需要能禁用選項,也需要能恢復選項,為了方便理解,以下論述把“緊前工序”稱為“依賴”。

禁用選項:假設(shè)工序A增加了一個依賴B,則工序B的依賴不能選擇工序A,所以工序B將A加入禁用選項中,這只解決了部分問題,如果工序C是工序B的依賴,當工序C選擇A作為依賴時,錯誤就會發(fā)生,因為A等待B完成,B等待C完成,C卻等待A完成,解決方法是將A加入B、B的依賴、B的依賴的依賴、B的依賴的依賴的依賴(簡稱B的依賴路徑)……的禁用選項中,可以使用遞歸算法實現(xiàn)。

恢復選項:假設(shè)工序A刪除了一個依賴B,這時不能盲目地將B的禁用選項A刪除,因為工序A可能有一個依賴C,而C的依賴是B,根據(jù)禁用選項部分的論述,B依然不能將A作為依賴,即B的禁用選項A不能恢復。這種情況發(fā)生的根源是A存在其他含有B的依賴路徑,所以解決方法是將B的依賴路徑減去A依賴路徑與B依賴路徑的交集,所剩余的依賴為恢復選項,即從禁用選項中刪除。

算法運行過程:①根據(jù)節(jié)點判斷需要禁用還是恢復過程;②遞歸查找禁用(恢復)列表;③根據(jù)禁用(恢復)列表調(diào)整工序表。自動檢測算法流程圖如圖4所示。

2.4.3 自動提取數(shù)據(jù)

算法的輸入:服務(wù)通告PDF原件。算法的輸出:服務(wù)通告中的最短施工時間、總?cè)斯すr、工序步驟。

PDF文件不便于數(shù)據(jù)提取,所以選擇使用工具將PDF轉(zhuǎn)化為文本文件,這里選擇了Python工具pdftotext,使用layout選項以保留頁面布局,文本轉(zhuǎn)化好之后,可以利用Perl的文本處理功能提取數(shù)據(jù),因為Perl原生支持正則表達式,使用Perl正則表達式進行文本匹配時,程序在循環(huán)中進行,每次只匹配一行,每個文件中關(guān)于人工工時部分的信息重復出現(xiàn)了兩次,所以需要設(shè)置一個變量作為開關(guān),當匹配了一次結(jié)果后就關(guān)閉開關(guān)以避免重復。

對于標題部分,原標題是一個用“-”連接的整體,并且使用了不同的編碼表示“-”,這非常不便于數(shù)據(jù)拆分統(tǒng)計,所以標題需要經(jīng)過二次處理,利用正則表達式的替換功能,把各種編碼的“-”替換稱制表符,只有這樣,統(tǒng)計分析模塊才能分析處理。

對于工序部分,服務(wù)通告內(nèi)的工序非常復雜,有的工序包含子工序,甚至子工序的子工序,為了處理方便和數(shù)據(jù)簡潔,程序只處理到第一層工序(即不包含子工序),這樣仍然不能正常提取,單行的工序與子工序之間幾乎沒有格式上的差異(即使人工比較單行工序也很難發(fā)現(xiàn)差異),仔細思考人理解文件的方式后發(fā)現(xiàn),人可以進行上下文比對,而程序是單行匹配的,為了讓程序也能上下文比對,而不破壞逐行匹配的模式,程序使用了一些上下文變量以提供上下文比對的功能,匹配前先檢查上下文變量以決定是否匹配當前行,以及上一行匹配結(jié)果是否有效,這樣處理后,程序匹配工序失誤的概率顯著降低。

2.4.4 自動統(tǒng)計數(shù)據(jù)

算法的輸入:新加入的服務(wù)通告最短施工時間、總?cè)斯すr,數(shù)據(jù)的原統(tǒng)計結(jié)果。算法的輸出:數(shù)據(jù)的新統(tǒng)計結(jié)果。

數(shù)據(jù)統(tǒng)計可以使用離線算法,也可以使用在線算法,離線算法需要輸入所有數(shù)據(jù),沒有利用已完成的統(tǒng)計結(jié)果,效率低下,所以使用在線算法。

在數(shù)據(jù)庫中,使用一張數(shù)據(jù)表存儲所有數(shù)據(jù),使用另一張數(shù)據(jù)表存儲中間結(jié)果和統(tǒng)計量,其中每一條記錄代表標題屬性相同的同類數(shù)據(jù),為了統(tǒng)計最大值、最小值、平均值、眾數(shù)等統(tǒng)計量,需要在每條記錄中存儲已統(tǒng)計過的數(shù)據(jù),這樣統(tǒng)計時就不用從所有數(shù)據(jù)中搜索同類數(shù)據(jù)。

由于數(shù)據(jù)庫很難存儲復雜的數(shù)據(jù)(比如數(shù)組),所以已經(jīng)統(tǒng)計過的數(shù)據(jù)不能以數(shù)組結(jié)構(gòu)存儲,解決方法是使用一種變通策略,將數(shù)組轉(zhuǎn)化為字符串存儲在數(shù)據(jù)庫中,在使用時將字符串轉(zhuǎn)化為數(shù)組。為了實現(xiàn)這種策略,轉(zhuǎn)化為字符串時應(yīng)遵循某種規(guī)則,保證這種轉(zhuǎn)化是可逆的。在本程序的轉(zhuǎn)化中,數(shù)組元素之間插入了特殊符號,在解析字符串時以這種符號將字符串分割為數(shù)組,這樣帶來的好處是不需要修改數(shù)據(jù)庫的定義就可以存儲自定義的數(shù)據(jù),而且可以方便地重新定義數(shù)據(jù)。

獲得了已統(tǒng)計過的數(shù)據(jù)后,統(tǒng)計量的計算就變得非常簡單,將新統(tǒng)計的數(shù)據(jù)與原最大值、最小值比較可以獲得新的最大值、最小值,搜索新數(shù)據(jù)的出現(xiàn)頻率與原眾數(shù)出現(xiàn)頻率,然后比較得到新的眾數(shù)值,其他統(tǒng)計量的計算過程類似,此處不再贅述。

2.4.5 數(shù)據(jù)搜索算法

算法的輸入:搜索關(guān)鍵字、搜索精確度。算法的輸出:匹配到的相關(guān)服務(wù)通告最短施工時間、總?cè)斯すr等數(shù)據(jù)。

要實現(xiàn)數(shù)據(jù)搜索,直接使用數(shù)據(jù)庫的查詢功能是不行的,因為SELECT語句擅長根據(jù)其他屬性篩選數(shù)據(jù),所以屬性值必須完全符合才能正確匹配,而數(shù)據(jù)搜索功能更像常用網(wǎng)頁搜索引擎的模糊匹配功能,即使輸入不精確的信息也能得到想要的結(jié)果。

為了實現(xiàn)模糊匹配功能,程序需要對輸入關(guān)鍵字進行拆分,由于將關(guān)鍵字拆分為單個詞匯在不使用自然語言處理技術(shù)的情況下可能比較困難,而使用自然語言處理技術(shù)已經(jīng)超出能力范圍,所以程序?qū)㈥P(guān)鍵字拆分成字符而非詞匯。

獲得分割好的各級別的字符集(簡稱為源字符)后,程序每次掃描一條數(shù)據(jù)的標題部分,以相同的方式對標題各級別進行分割得到字符集(簡稱目標字符)。每次掃描一個源字符,如果源字符與某一個目標字符相同,稱為一次命中,命中的次數(shù)與源字符個數(shù)之比稱為匹配度,完成源字符掃描后,計算匹配度,如果匹配度超過設(shè)定的閾值,則該數(shù)據(jù)匹配成功,否則失敗。

為了更精準地匹配同級關(guān)鍵字,同時具有匹配非同級關(guān)鍵字的能力,只需對以上算法稍做修改:增加一次對同級別字符的掃描,計算匹配度時將源字符個數(shù)乘2,其他不變,這樣同級匹配權(quán)值為1,不同級匹配權(quán)值為0.5,在閾值較高時,可以排除非同級關(guān)鍵字匹配;當閾值較低時,可以匹配非同級關(guān)鍵字。當閾值達到100%時,程序?qū)⒉辉龠M行模糊匹配,而只有關(guān)鍵字完整連續(xù)匹配時,才能匹配成功,這樣做可以適應(yīng)更高的匹配需求。

3 軟件界面與應(yīng)用

基于Python語言開發(fā)了服務(wù)器端程序,包括數(shù)據(jù)I/O模塊、數(shù)據(jù)庫模塊、數(shù)據(jù)提取模塊;基于JavaScript語言開發(fā)了瀏覽器端程序,包括數(shù)據(jù)I/O模塊、工時計算模塊、GUI交互模塊,主頁包括頂部導航欄、數(shù)據(jù)輸入欄、表格展示區(qū)、底部裝飾欄4個區(qū)域。

假設(shè)已知某服務(wù)通告的大致類別為空調(diào)-軟管。在數(shù)據(jù)輸入欄的查詢區(qū)分別輸入“空調(diào)”“軟管”,點擊查詢即可快速獲得參考工時。調(diào)節(jié)查詢精準度:移動數(shù)據(jù)輸入欄的滑塊,重新點擊查詢即可,查詢的結(jié)果中的“詳情”可在點擊后顯示此記錄所統(tǒng)計的服務(wù)通告工序數(shù)和文件下載鏈接。

假設(shè)當前工程需要3道工序P1、P2、P3,其中P2和P3互不影響,但必須在完成P1后才能開始,在已知每道工序的最小時長、最大時長、平均時長的條件下,計算人工工時。首先,在左側(cè)數(shù)據(jù)輸入欄的計算區(qū)輸入工序數(shù)3,點擊“確定”后在右側(cè)生成工序表,填寫工序表各項數(shù)據(jù)時分別在P2和P3的“緊前工序”中選擇P1,點擊“計算”即可得到人工工時計算結(jié)果。在填寫工序表時,如果左側(cè)數(shù)據(jù)輸入欄中的邏輯檢測功能處于開啟狀態(tài),則會為每道工序的“緊前工序”剔除所有會造成邏輯錯亂的選項,避免因誤填而導致的錯誤。

軟件內(nèi)部數(shù)據(jù)來自已發(fā)布的服務(wù)通告文件,可實現(xiàn)文件到數(shù)據(jù)的自動轉(zhuǎn)換。應(yīng)用內(nèi)的數(shù)據(jù)一般在后端添加和處理,為了方便數(shù)據(jù)更新,本應(yīng)用還提供了從瀏覽器端更新數(shù)據(jù)的功能,由于上傳行為受網(wǎng)絡(luò)狀況影響較大,所以建議不要以此方式更新大量數(shù)據(jù)。

在數(shù)據(jù)輸入欄點擊“選擇文件”按鈕,瀏覽器調(diào)用系統(tǒng)的文件瀏覽器,選擇需要上傳的PDF文件(按住Ctrl可多選),點擊“打開”,按鈕右側(cè)會顯示已選擇了幾個文件,點擊“上傳”按鈕,如果沒有后端正在更新數(shù)據(jù),也沒有其他客戶端正在更新數(shù)據(jù)時,后端會接收文件,提取數(shù)據(jù),添加到數(shù)據(jù)庫,并更新統(tǒng)計數(shù)據(jù)以供查詢,之后瀏覽器提示文件處理情況,后端的所有操作全部自動完成,不需要人為干預。如果有后端正在更新數(shù)據(jù),或者其他客戶端正在更新數(shù)據(jù),瀏覽器會彈出提示,請耐心等待其他數(shù)據(jù)更新完畢。

4 結(jié)語

采用先進的Web應(yīng)用技術(shù)和網(wǎng)絡(luò)計劃理論,開發(fā)了服務(wù)通告人工工時計算的軟件,實現(xiàn)了一整套數(shù)據(jù)提取、統(tǒng)計、搜索的人工工時數(shù)據(jù)庫系統(tǒng),提供有價值的工時參考數(shù)據(jù),解決了僅憑工程經(jīng)驗估計工時的人為主觀影響和時間不確定性的問題。軟件采用跨平臺用戶界面,在不同需求下都具有良好的交互體驗。

參 考 文 獻

[1]嚴煥迪,邢廣華.民用飛機服務(wù)通告編制及管理分析[J].航空工程進展,2019,10(2):194-200.

[2]李寧,吳之明.網(wǎng)絡(luò)計劃技術(shù)的新發(fā)展——項目關(guān)鍵鏈管理(CCPM)[J].公路,2002(10):85-88.

[3]葉鋒.Python最新Web編程框架Flask研究[J].電腦編程技巧與維護,2015(15):27-28.

[4]李廣宏.vue.js前端應(yīng)用技術(shù)分析[J].中國新通信,2019,21(20):115.

[5]劉志洋.ajax技術(shù)在web程序開發(fā)中的運用探討[J].輕紡工業(yè)與技術(shù),2020,49(2):169-170.

[6]孫紀周,朱鋒,趙芳,等.基于WEB及APP的設(shè)備維修管理系統(tǒng)[J].軟件,2020,41(1):165-169.

[7]牛作東,李捍東.基于Python與flask工具搭建可高效開發(fā)的實用型MVC框架[J].計算機應(yīng)用與軟件,2019,

36(7):21-25.

[8]李超,徐云龍,華中偉,等.一種基于Python Flask的Web服務(wù)器端設(shè)計[J].信息與電腦(理論版),2019(8):87-88.

[9]鄧成,孫書會.MVVM設(shè)計模式的前端應(yīng)用[J].電腦知識與技術(shù),2019(29):249-250.

[10]呂英華.漸進式JavaScript框架Vue.js的全家桶應(yīng)用[J].電子技術(shù)與軟件工程,2019(22):39-40.

[11]劉鵬.移動Web3.0時代AJAX技術(shù)在個性化開發(fā)中的作用[J].電子技術(shù)與軟件工程,2018(22):59-60.

[12]盧愛芬.基于H5中的Bootstrap框架技術(shù)的應(yīng)用與研究[J].電腦知識與技術(shù),2020,16(7):54-56.

[13](美)格林布戈.Flask Web開發(fā):基于Python的Web應(yīng)用開發(fā)實戰(zhàn)[M].安道,譯.北京:人民郵電出版社,2015.

主站蜘蛛池模板: 色综合网址| 青青青国产精品国产精品美女| 全色黄大色大片免费久久老太| 五月婷婷中文字幕| 日韩美毛片| 国产亚洲欧美日本一二三本道| 色综合五月婷婷| 精品一区二区三区四区五区| 丁香婷婷久久| 97成人在线视频| 一级福利视频| 亚洲av日韩av制服丝袜| 成人日韩视频| 久久黄色一级视频| 动漫精品啪啪一区二区三区| 一级黄色网站在线免费看 | 国产乱子伦无码精品小说| 亚洲精品制服丝袜二区| 国产精品主播| 亚洲欧美一区二区三区图片| 国产原创演绎剧情有字幕的| AV熟女乱| 国产精品蜜芽在线观看| 色综合天天综合| 成人福利在线免费观看| 噜噜噜久久| 国产区人妖精品人妖精品视频| 成人在线观看不卡| 日韩精品一区二区三区免费| 欧美另类视频一区二区三区| 亚洲欧美另类日本| 中文字幕色在线| 成人免费午间影院在线观看| 伊人久久婷婷五月综合97色| 国产欧美视频综合二区| 九色视频一区| 2021国产精品自产拍在线| 欧美在线综合视频| 欧美成人h精品网站| 精品福利国产| 国产特级毛片aaaaaa| 玩两个丰满老熟女久久网| 国产精品夜夜嗨视频免费视频| 男女猛烈无遮挡午夜视频| 国产成人精品优优av| 91福利在线看| 色135综合网| 成人在线视频一区| 国产福利微拍精品一区二区| 亚洲狼网站狼狼鲁亚洲下载| 久久亚洲黄色视频| 免费a在线观看播放| 九九热精品在线视频| 欧美日在线观看| 波多野吉衣一区二区三区av| 国产成人1024精品下载| 日韩在线中文| 国内精品自在自线视频香蕉| 1级黄色毛片| 91丨九色丨首页在线播放| 亚洲精品国产成人7777| 亚洲Av综合日韩精品久久久| 国产欧美日韩另类| 亚洲AV成人一区二区三区AV| 99精品国产电影| 欧美亚洲一二三区| 日本亚洲国产一区二区三区| 亚洲日韩精品无码专区97| 国产欧美在线观看精品一区污| 自拍偷拍欧美| 欧美第一页在线| 亚洲高清中文字幕在线看不卡| 一本久道久综合久久鬼色| 精品一区二区三区无码视频无码| 欧美A级V片在线观看| 国产精品亚洲а∨天堂免下载| 国内精品视频区在线2021| 中国一级毛片免费观看| 成人福利在线视频| 国产一国产一有一级毛片视频| 国产黑人在线| 婷婷五月在线视频|