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

基于Web技術的服務通告人工工時計算軟件設計與開發

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

傅聰 張艷紅 付冬梅 楊燾

【關鍵詞】服務通告;人工工時;Web技術;軟件設計

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

0 引言

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

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

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

1 軟件總體功能說明

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

2 軟件開發與設計說明

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

2.1 服務器

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

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

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

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

2.2 客戶端

當客戶端請求主頁Html和Javascript文件后,客戶端Vue按Html模板渲染網頁,基于Vue的Javascript腳本數據I/O模塊作為客戶端運行的核心,協調內部數據,使由Html文件和Bootstrap構成的GUI模塊能夠動態響應用戶輸入。

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

(2)當用戶要計算數據時:數據I/O模塊將GUI模塊中的數據交給工時計算模塊,使用樹枝圖算法計算最短施工時間和總人工工時結果,將返回的結果更新到GUI模塊中。

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

2.3 數據庫

在數據庫結構方面,軟件使用的數據庫由服務通告元數據表(命名sb)和統計數據表(命名count)組成,其定義如圖2所示。數據表sb用來記錄數據提取模塊產生的數據,數據表count用來統計數據表sb中的數據記錄。

2.4 算法設計

2.4.1 樹枝圖算法

算法的輸入:工序表,工序表中每道工序具有名稱、時長、緊前工序3個基本屬性,其中緊前工序的名稱與工序名稱是對應的。算法的輸出:最短施工時間、關鍵工序、總人工工時。

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

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

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

2.4.2 自動邏輯檢測

算法的輸入:當前操作的工序節點、工序表。算法的輸出:經過調整(禁用錯誤選項)的工序表。

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

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

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

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

2.4.3 自動提取數據

算法的輸入:服務通告PDF原件。算法的輸出:服務通告中的最短施工時間、總人工工時、工序步驟。

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

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

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

2.4.4 自動統計數據

算法的輸入:新加入的服務通告最短施工時間、總人工工時,數據的原統計結果。算法的輸出:數據的新統計結果。

數據統計可以使用離線算法,也可以使用在線算法,離線算法需要輸入所有數據,沒有利用已完成的統計結果,效率低下,所以使用在線算法。

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

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

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

2.4.5 數據搜索算法

算法的輸入:搜索關鍵字、搜索精確度。算法的輸出:匹配到的相關服務通告最短施工時間、總人工工時等數據。

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

為了實現模糊匹配功能,程序需要對輸入關鍵字進行拆分,由于將關鍵字拆分為單個詞匯在不使用自然語言處理技術的情況下可能比較困難,而使用自然語言處理技術已經超出能力范圍,所以程序將關鍵字拆分成字符而非詞匯。

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

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

3 軟件界面與應用

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

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

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

軟件內部數據來自已發布的服務通告文件,可實現文件到數據的自動轉換。應用內的數據一般在后端添加和處理,為了方便數據更新,本應用還提供了從瀏覽器端更新數據的功能,由于上傳行為受網絡狀況影響較大,所以建議不要以此方式更新大量數據。

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

4 結語

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

參 考 文 獻

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

[2]李寧,吳之明.網絡計劃技術的新發展——項目關鍵鏈管理(CCPM)[J].公路,2002(10):85-88.

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

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

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

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

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

36(7):21-25.

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

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

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

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

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

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

主站蜘蛛池模板: 午夜爽爽视频| 青草视频免费在线观看| 区国产精品搜索视频| 久热99这里只有精品视频6| 中文无码日韩精品| 激情五月婷婷综合网| 国产二级毛片| 欧类av怡春院| 国产自在线拍| 波多野结衣一区二区三区四区视频 | 人妻无码中文字幕一区二区三区| 国产国产人成免费视频77777| 国产免费一级精品视频| 日本高清在线看免费观看| 欧美日韩一区二区在线免费观看| 四虎影视永久在线精品| 久久人妻xunleige无码| 重口调教一区二区视频| 啦啦啦网站在线观看a毛片| 国产剧情一区二区| 欧美人与性动交a欧美精品| 午夜综合网| 亚洲午夜天堂| 伊人丁香五月天久久综合| 1769国产精品免费视频| 久久夜色撩人精品国产| 成人蜜桃网| 麻豆精品在线视频| 日本精品视频一区二区| 亚洲一区二区在线无码| 亚洲午夜天堂| 中日韩欧亚无码视频| 这里只有精品在线| 亚洲国产一成久久精品国产成人综合| 夜夜操国产| 啪啪啪亚洲无码| 亚洲一级毛片免费观看| 一本色道久久88亚洲综合| 婷婷99视频精品全部在线观看| 在线观看91香蕉国产免费| 亚欧乱色视频网站大全| 丝袜久久剧情精品国产| 日韩视频免费| 日韩在线欧美在线| 免费又黄又爽又猛大片午夜| 国产免费怡红院视频| 亚洲无码91视频| 午夜性刺激在线观看免费| 国产在线高清一级毛片| 97在线免费视频| 午夜小视频在线| 欧亚日韩Av| 国产成人久视频免费| 欧美va亚洲va香蕉在线| 99ri精品视频在线观看播放| 日韩中文无码av超清| 日韩AV手机在线观看蜜芽| 99热这里只有精品在线播放| 老色鬼欧美精品| 免费又爽又刺激高潮网址| 99资源在线| 中文字幕久久亚洲一区| 国产日韩丝袜一二三区| 国产日韩久久久久无码精品| 日韩欧美国产另类| 多人乱p欧美在线观看| 99这里精品| 伊大人香蕉久久网欧美| jizz国产在线| 在线国产91| 亚洲成aⅴ人在线观看| 99精品在线看| 国产免费看久久久| 国产日产欧美精品| 国产美女叼嘿视频免费看| 18禁不卡免费网站| 国产麻豆精品手机在线观看| 人人爽人人爽人人片| av午夜福利一片免费看| 波多野结衣第一页| 欧美色图第一页| 国产女同自拍视频|