(國電長源荊州熱電有限公司檢修部,荊州 434000)
原有的備品備件管理一直沿用傳統(tǒng)的紙件管理方式,入庫和領(lǐng)用都在紙質(zhì)賬本上登記,查詢時需要在賬本上查找,有時要翻閱幾個賬本才能找到。統(tǒng)計剩余數(shù)據(jù)時需要將入庫賬本與領(lǐng)用賬本同時找到進行一筆一筆地計算,這樣浪費人力,浪費時間,浪費紙張,工作效率低,很難適應(yīng)生產(chǎn)現(xiàn)場快節(jié)奏檢修工作的需要。
開發(fā)熱電企業(yè)備品備件動態(tài)管理系統(tǒng),是用計算機編程技術(shù)和現(xiàn)代網(wǎng)絡(luò)管理技術(shù)相結(jié)合,開發(fā)出一個針對性和適應(yīng)性很強的管理平臺,從而代替?zhèn)鹘y(tǒng)紙件管理方式,是一次技術(shù)創(chuàng)新,管理模式的變革,其主要有3大優(yōu)勢。
(1)方便快捷,使用人員在辦公室的電腦上就能看到倉庫里備品備件的種類、型號、用途、數(shù)量、存放位置等信息,不用到倉庫翻閱賬本,也不用到存放架上核對就能一目了然,隨時登記領(lǐng)用信息,更加方便地管理備品備件。
(2)動態(tài)顯示數(shù)據(jù),根據(jù)備品備件的使用情況,該系統(tǒng)自動更新庫存數(shù)據(jù),隨時顯示變化信息,跟蹤每件備品的來龍去脈,有利于領(lǐng)用、調(diào)劑和保管,使倉庫管理規(guī)范化。
(3)保障及時供應(yīng),該系統(tǒng)設(shè)有備品備件缺件報警功能,及時提醒領(lǐng)用人員上報采購計劃,確保生產(chǎn)急需。便于制定符合實際的備品備件申報計劃,節(jié)約成本。
這一管理系統(tǒng)開發(fā)與應(yīng)用成功后,能夠使全廠各專業(yè)備品備件管理形成一個網(wǎng)絡(luò),有利于查詢、領(lǐng)用、調(diào)劑、盤點,有利于申報計劃和監(jiān)督管理。
該系統(tǒng)由服務(wù)器端和客戶端兩大部分組成。系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 備品備件動態(tài)管理系統(tǒng)
該系統(tǒng)采用廠信息中心計算機作為服務(wù)器端,用客戶端+網(wǎng)頁前端的模式為用戶提供備品管理功能。用戶可以使用瀏覽器訪問備品系統(tǒng)的服務(wù)器端,在服務(wù)器端提供的網(wǎng)頁內(nèi)實現(xiàn)備品的查詢、管理、調(diào)撥等操作。用戶也可以在倉庫內(nèi)使用客戶端,對倉庫內(nèi)的備品進行條碼打印、掃碼管理等操作。該系統(tǒng)利用不同的人機界面,隨時隨地滿足用戶的需求。
系統(tǒng)設(shè)計初期,綜合對比各種編程語言的優(yōu)劣后,決定該系統(tǒng)的服務(wù)器端應(yīng)用程序采用ASP(Active Server Pages)編程語言進行編寫。ASP是一種新型開放的,免編譯的應(yīng)用開發(fā)環(huán)境,它將HTML頁面,scripts語言和動態(tài)服務(wù)器擴展Active Server Component結(jié)合在一起,為企業(yè)提供一個服務(wù)開發(fā)解決方案[1]。
該系統(tǒng)采用ACCESS數(shù)據(jù)庫作為系統(tǒng)數(shù)據(jù)源,ACCESS數(shù)據(jù)庫作為微軟推出的以標準JET為引擎的桌面型數(shù)據(jù)庫系統(tǒng),由于具有操作簡單、界面友好等特點,具有較大的用戶群體[2]。因此該系統(tǒng)使用典型的ASP-ACCESS編程構(gòu)架,發(fā)揮該構(gòu)架強大的功能和穩(wěn)定性。
該系統(tǒng)采用用戶名、密碼驗證登錄的方式,對不同的用戶進行區(qū)分。系統(tǒng)根據(jù)用戶所在班組和用戶權(quán)限對用戶開發(fā)特定的備品管理功能,保障備品管理的安全性。
該系統(tǒng)服務(wù)器端采用ACCESS數(shù)據(jù)庫作為數(shù)據(jù)源。根據(jù)備品系統(tǒng)功能要求,設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)如表1所示。
表1 數(shù)據(jù)庫結(jié)構(gòu)
該系統(tǒng)的數(shù)據(jù)庫主要分3部分:(1)備品數(shù)據(jù)相關(guān)的數(shù)據(jù),這部分數(shù)據(jù)表內(nèi)存放著備品備件數(shù)據(jù)、用戶自定義的分類、備品大類、小類及倉庫以及備品出入庫記錄、備品借用情況。(2)與用戶登錄和賬戶授權(quán)相關(guān)的數(shù)據(jù),保存所有可以登錄該系統(tǒng)的用戶數(shù)據(jù)以及賬戶權(quán)限。(3)與備品系統(tǒng)相關(guān)的數(shù)據(jù),保存?zhèn)淦废到y(tǒng)的設(shè)置、客戶端應(yīng)用程序授權(quán)等數(shù)據(jù)。
該系統(tǒng)設(shè)置了數(shù)據(jù)庫自動備份和恢復(fù)機制,確保數(shù)據(jù)庫的安全。
為了方便對倉庫內(nèi)備品的管理,該系統(tǒng)為用戶提供了備品客戶端軟件。客戶端軟件安裝在備品倉庫內(nèi),其數(shù)據(jù)及功能實現(xiàn)都由服務(wù)器端支撐??蛻舳塑浖头?wù)器端軟件之間利用寬帶網(wǎng)絡(luò)做物理連接,軟件方面則利用服務(wù)器端的通訊接口同客戶端實現(xiàn)數(shù)據(jù)交換。
備品系統(tǒng)服務(wù)器端通訊接口由ASP語言編寫,采用POST請求和JSON反饋的形式與客戶端進行通訊和數(shù)據(jù)交換??蛻舳死镁帉懞玫耐ㄓ嵖丶蚍?wù)器端發(fā)送POST請求,服務(wù)器端接口函數(shù)獲取到請求,經(jīng)解析和處理后立即進行反饋。服務(wù)器端接口程序?qū)⒎答佇畔⒑蛿?shù)據(jù)包裝到JSON數(shù)據(jù)包,發(fā)送給客戶端??蛻舳私獍?,將數(shù)據(jù)釋放出來,整個通訊過程便完成了。
備品系統(tǒng)服務(wù)器端接口設(shè)置了加密功能,在客戶端進行登錄、獲取授權(quán)的時候,客戶端和服務(wù)器間的數(shù)據(jù)通訊是加密的,每次數(shù)據(jù)交換都進行一次錯誤校驗,既保證了數(shù)據(jù)正確,又確保了通訊的絕對安全。
備品系統(tǒng)為用戶提供了網(wǎng)頁前端,用戶可以登錄網(wǎng)頁,在網(wǎng)頁內(nèi)對備品進行管理。網(wǎng)頁前端采用ASP編寫后臺程序,發(fā)揮動態(tài)網(wǎng)頁的優(yōu)秀作用,利用JavaSript和JQuary編寫前端處理程序,充分利用了JQuary的強大優(yōu)勢,在為用戶提供方便快捷的管理頁面的同時,也提高了整個前端網(wǎng)頁的速度。例如,在備品管理頁面內(nèi),前端網(wǎng)頁利用JQuary編寫的備品管理右鍵菜單,讓網(wǎng)頁前端更加符合用戶平日的使用習慣。在備品新增等頁面內(nèi),前端網(wǎng)頁廣泛使用JQuary的異步調(diào)用功能(AJAX),AJAX具有以下優(yōu)勢:無刷新更新頁面,減少用戶等待的時間;可以利用客戶端強大的運算能力,把部分原來由服務(wù)器負擔的工作轉(zhuǎn)到客戶端,減輕服務(wù)器的負擔,同時加快頁面響應(yīng)速度[3]。該功能減少用戶使用過程中頁面刷新的次數(shù),使網(wǎng)頁前端更加友好的為用戶提供服務(wù)。
備品系統(tǒng)客戶端主要利用Microsoft Visual Basic 6.0集成開發(fā)環(huán)境編寫主程序,利用Microsoft Visual C++編寫用戶控件及動態(tài)鏈接庫,使該應(yīng)用程序在Windows平臺上擁有較好的兼容性,有利于推廣應(yīng)用。
備品系統(tǒng)客戶端的通訊程序是基于微軟的ActiveX控件Microsoft ScriptControl實現(xiàn)的。利用此控件編寫相關(guān)控制程序和解析函數(shù),最終封裝在自定義控件內(nèi),形成一個新的通訊控件供主程序調(diào)用。
客戶端與服務(wù)器端通訊過程如圖2所示。如果客戶端的主程序需要與服務(wù)器端進行通訊時,主程序會調(diào)用通訊控件內(nèi)預(yù)留的API接口控制通訊控件進行通訊,通訊控件內(nèi)控制程序會控制基礎(chǔ)控件ScriptControl,實現(xiàn)在網(wǎng)絡(luò)層面的數(shù)據(jù)發(fā)送和接收。當服務(wù)器端返回數(shù)據(jù)后,客戶端通訊程序內(nèi)的基礎(chǔ)控件ScriptControl接收數(shù)據(jù),并將數(shù)據(jù)發(fā)送給解析程序,解析程序?qū)?shù)據(jù)進行編碼轉(zhuǎn)化、解析JSON數(shù)據(jù)從而將數(shù)據(jù)解析出來,存儲在控件內(nèi)的特定變量內(nèi),并向主程序發(fā)送狀態(tài)信息,主程序接收到通訊控件發(fā)送的狀態(tài)信息后,從通訊控件內(nèi)讀取出解析后的數(shù)據(jù),并進行下一步處理。
圖2 客戶端與服務(wù)器間通訊
客戶端通訊控件內(nèi)加入了加密、解密以及校驗功能,在完成特殊數(shù)據(jù)的傳遞過程中,對數(shù)據(jù)和指令進行加密,確保通訊安全。在通訊后,校驗程序?qū)?shù)據(jù)進行校驗,確保通訊準確性。
備品系統(tǒng)客戶端利用Windows系統(tǒng)的內(nèi)核動態(tài)鏈接庫Kernel32實現(xiàn)對掃碼槍輸入數(shù)據(jù)的接收和處理。
備品系統(tǒng)主程序啟動后,會讀取根目錄下的配置文件。當配置文件正確時,主程序會調(diào)用串口通訊模塊開啟串口,并開始數(shù)據(jù)接收。
串口通訊模塊是基于Kernel32設(shè)計的,模塊啟動后,會進行初始化。初始化過程中,程序會將串行端口作為一個文件看待,程序利用Kernel32動態(tài)鏈接庫打開串口,并開始監(jiān)聽。當掃碼槍掃描備品條碼后,條碼數(shù)據(jù)會通過串行端口輸入到計算機,監(jiān)聽端口的函數(shù)立即將數(shù)據(jù)送入特定的變量內(nèi),并通知主程序?qū)ζ溥M行處理。主程序讀取到條碼數(shù)據(jù)后,立即向服務(wù)器端發(fā)送查詢指令,如果條碼有效,服務(wù)器端會返回對應(yīng)備品的數(shù)據(jù)。主程序根據(jù)用戶掃描條碼的次數(shù)和條碼數(shù)據(jù),與服務(wù)器配合,實現(xiàn)備品的掃碼出入庫。
當用戶輸入模糊查詢字符串后,備品系統(tǒng)客戶端會快速進行模糊檢索,并根據(jù)相似性將備品數(shù)據(jù)顯示在備選框內(nèi),供用戶選擇并快速進行出入庫。
快速模糊檢索功能的軟件實現(xiàn)過程。軟件啟動后,如果軟件授權(quán)正常,程序會在啟動過程中向服務(wù)器端發(fā)送查詢請求,服務(wù)器端會自動將備品列表發(fā)送到客戶端,客戶端將備品列表儲存在全局數(shù)組,以備快速檢索使用。
當用戶在快速檢索輸入框內(nèi)輸入檢索詞后,程序會將用戶輸入的字符串逐字拆分,并啟動快速檢索程序。
快速檢索程序?qū)⑺阉髟~拼接,與全局數(shù)組內(nèi)的備品數(shù)據(jù)進行一一對比,對相近的備品數(shù)據(jù)進行保留,對不同的進行舍棄。在對比完所有數(shù)據(jù)后,對相似的數(shù)據(jù)進行再次排序,排序過程采用冒泡法。最終,快速檢索程序?qū)淦窋?shù)據(jù)按照相近程度進行排序后,顯示在選擇列表內(nèi),用戶可以雙擊列表內(nèi)的備品數(shù)據(jù),并對該備品進行管理。
備品備件數(shù)據(jù)在登記初期,由于登記人員及其他方面的原因,備品庫存位置沒有一個統(tǒng)一的書寫標準,導(dǎo)致備品檢索中,備品數(shù)據(jù)列表混亂,用戶無法快速方便的查詢。例如用戶想登記備品到三號架三層貨架位置,有些用戶使用“3-3”表現(xiàn)形式,有些用戶則采用“3架3層”的表現(xiàn)形式。在依照位置檢索備品之時,用戶無法完整的搜索到三架三層的所有備品,這樣不利于備品的快速檢索和查找。
在備品檢索頁面內(nèi)對備品位置進行解析,確保用戶檢索到所有相似的備品。同時,該軟件在備品新增頁面內(nèi)對備品位置進行檢索,以確保用戶輸入的備品數(shù)據(jù)是標準的、規(guī)范的。解析程序在獲取到前方傳送進來的備品位置數(shù)據(jù)后,會對這個字符串進行檢查。由于備品位置中可能包含“架”或“-”字符,故解析程序會檢查位置字符串內(nèi)是否含有這兩個字符中的任意一個字符,如果字符串中包含這兩個字符,則將這個字符前方和后方的字符串切割,分別切割為A和B兩部分,這兩部分字符串將儲存在變量內(nèi)待處理。之后程序會檢測待處理的字符串,將字符串進行檢查和轉(zhuǎn)換,最后儲存在字符串C和字符串D。字符串C和字符串D經(jīng)過拼接后獲得新的字符串,最終將格式不標準的備品位置數(shù)據(jù)轉(zhuǎn)換為標準格式數(shù)據(jù)。轉(zhuǎn)換過程如圖3所示。
圖3 備品字符串轉(zhuǎn)換過程
備品備件動態(tài)管理系統(tǒng)具有嚴格的客戶端授權(quán)功能,客戶端應(yīng)用程序安裝后,管理員會對該客戶端程序進行授權(quán),授權(quán)程序會指定客戶端綁定的倉庫位置,同時會將客戶端與計算機硬件實現(xiàn)緊密綁定。當非授權(quán)人員將客戶端程序包整體拷貝至其他計算機并打開客戶端時,將無法使用并提示“請重新獲取授權(quán)”。
4.6.1 客戶端設(shè)置授權(quán)過程
軟件管理員通過頁面的授權(quán)設(shè)置程序進行授權(quán),當用戶打開授權(quán)設(shè)置程序時,后臺程序?qū)⒆詣荧@取軟件的授權(quán)信息,當該軟件已經(jīng)授權(quán),則向服務(wù)器請求授權(quán)數(shù)據(jù),如果服務(wù)器返回授權(quán)正確,則將該數(shù)據(jù)顯示在權(quán)限設(shè)置頁面內(nèi),供用戶修改授權(quán)數(shù)據(jù)。當服務(wù)器返回授權(quán)錯誤或者軟件未授權(quán),則軟件刷新頁面,供用戶新增軟件授權(quán)。當用戶修改或設(shè)置好權(quán)限信息,點擊“獲取權(quán)限”按鈕后,軟件將授權(quán)數(shù)據(jù)打包后發(fā)送給服務(wù)器,服務(wù)器接到數(shù)據(jù)后,將數(shù)據(jù)記錄并寫入數(shù)據(jù)庫。授權(quán)設(shè)置完畢后,軟件識別碼將軟件寫入軟件配置文件,再次打開程序后,該軟件識別碼將用于軟件授權(quán)的對比。
4.6.2 客戶端獲取授權(quán)過程
備品系統(tǒng)客戶端每次啟動時,會讀取軟件根目錄下方的配置文件。軟件設(shè)計時,為確保倉庫客戶端的權(quán)限授予唯一性和倉庫綁定的唯一性,在讀取配置文件后,主程序會獲取當前計算機的硬件ID,與服務(wù)器端和本地配置文件進行匹配。只有在三者都一致時才能夠正常啟動程序。當三者中一項不匹配,程序啟動過程將終止,軟件將根據(jù)實際情況提示用戶。
備品系統(tǒng)客戶端采用自主編寫的動態(tài)鏈接庫獲取當前計算機硬件ID,在主程序向動態(tài)鏈接庫發(fā)送獲取請求后,動態(tài)鏈接庫會讀取計算機的CPU編號、硬盤ID、網(wǎng)卡MAC等數(shù)據(jù),并與預(yù)設(shè)密碼進行加密運算,最終將硬件ID返回在主程序。
當主程序獲取到硬件ID后,會讀取本地配置文件內(nèi)經(jīng)過加密的硬件ID,同時通過通訊控件向服務(wù)器端請求軟件授權(quán)數(shù)據(jù)。當本地配置文件內(nèi)的硬件ID同軟件獲取到的硬件ID不符時,主程序?qū)⑼V箚?,并提示用戶告知啟動失敗原因。當服?wù)器端無法獲取到當前軟件的授權(quán)數(shù)據(jù),主程序會停止啟動,并告知用戶需要對軟件進行正確的授權(quán)。
當硬件ID、本地配置文件的ID以及服務(wù)器的授權(quán)一致時,服務(wù)器端會將授權(quán)數(shù)據(jù)通過加密手段發(fā)送到客戶端,客戶端可以根據(jù)授權(quán)數(shù)據(jù)獲取到軟件綁定的倉庫,進而控制客戶端的備品管理權(quán)限。
選用ASP(Active Server Pages)編程語言作為該系統(tǒng)的主要編程語言,使用ACCESS數(shù)據(jù)庫作為系統(tǒng)數(shù)據(jù)源,使用典型的ASP-ACCESS編程構(gòu)架,經(jīng)過半年多的編制、修改、完善,成功地開發(fā)出了備品備件動態(tài)管理系統(tǒng)。在花生殼官網(wǎng)(簡稱Oray)的虛擬主機內(nèi)安裝好IIS服務(wù)器環(huán)境并設(shè)置好域名動態(tài)解析后,將編寫好的備品備件動態(tài)管理系統(tǒng)加載在該主機的IIS服務(wù)器中,開展備品備件管理系統(tǒng)的試運行工作,經(jīng)過多次試驗和修改,系統(tǒng)的穩(wěn)定性、功能性均到達設(shè)計要求。該系統(tǒng)通過二年多的運行,并進行了升級和完善,已在熱控、鍋爐、燃料、電氣、汽機、脫硫等七個專業(yè)全面推廣使用,運行良好。在升級過程中,強化了備品備件被盜監(jiān)管功能,從系統(tǒng)里,能夠查找到每件備品的來龍去脈。