一、概述
本項目為某市煤炭運銷系統與企業內部系統接口技術。
為了提高效率及減少企業的成本。通過定義接口,實現稱重數據自動從企業內部系統傳遞給市煤炭運銷系統。這樣能有效的提高用戶的工作效率,并保證數據的準確性與一致性。
如上圖,建設“某市煤炭運銷接口”完成后,企業內部系統完成稱重時,自動將稱重數據通過接口服務程序,發送到市煤炭運銷系統,一輛車只需要在企業內部系統中進行操作即可完成多個系統的數據保存。
二、對接方式
1.對接實現方式
市運銷系統和企業內部系統屬于不同制造商生產的系統,兩套系統實現的技術、功能、部署的環境各不相同,要實現兩個系統的稱重業務數據交換,采用哪種通訊方式是首要解決的問題。
選擇合適的對接實現方式,主要考慮可行性、穩定性、安全性、可維護性。
不同系統(程序)間通信的主要目的是實現多臺計算機中應用程序之間的數據共享與信息交換。在不同的計算機系統中,它們之間要通過網絡之間的協議才能實現數據共享與信息交換;在同一臺計算機系統中,它們之間只需一定的通道就能實現數據共享與信息交換。在不同計算機系統和同一計算機系統的程序通信中,既有很多相同之處,也有各自的特點。程序間通信都要靠一定的通道(pipe)來實現,其中的通道多種多樣,各俱特色。
(1)共享
在硬盤上建立一個文件,一個應用程序往該文件里寫數據(可以不關閉文件,但必須刷新緩沖區),另一個應用程序以共享方式打開這個文件并讀取其中的內容,這便是最簡單的一種數據交換方式。對于網絡用戶而言,只要兩臺終端上安裝的都是windows系統,則只要設置一下目錄共享,映射成網絡驅動器,同樣可以簡單地實現數據交換。但它的缺點也是顯而易見的:只能采取輪詢的方式獲得最新數據(效率低下),網絡映射的驅動器絕對不能變動或取消(可靠性差),所以這是一種“低級”的通訊方式。
(2)WM_COPYDATA
一個應用程序向另一個應用程序傳遞數據時通過發送消息來實現。Windows在很大程度上依賴于消息機制,這樣,只要調用SendMessage,以對方窗體的句柄作為第一個參數,以含有指向實際數據的指針結構的地址作為第二個參數,就可以把整個數據塊當作消息發向另一個應用程序。使用WM_COPYDATA先創建一個文件映射的對象,將發送方的原始數據先拷貝至映射文件,然后再在接收方對該映射文件打開一個“視圖”。WM_COPYDATA的不足之處在于:必須要有一個窗體來接收消息和數據(缺乏靈活性),數據在使用之前先得拷貝到一個映射文件(浪費資源)。并且這種方式要求要傳遞消息的程序部署在同一臺計算機上。
(3)Socket 通訊
這是最常用的通訊方式。Socket通訊是兩個計算機之間最基本的通訊方法,有TCP和UDP兩種協議。
①TCP的特點
TCP協議是一種有連接、可靠的、面向字節流、相對比較慢、點對點的傳輸層協議。TCP協議適用于對可靠性要求比較高的場合。
TCP的優點是:可靠、穩定。它體現在TCP在傳遞數據之前,會有三次握手來建立連接;在數據傳遞時,采用校驗和、序列號、確認應答、超時重發、流量控制、擁塞控制,為了提高性能,還采用了滑動窗口、延遲應答和捎帶應答等機制;在數據傳完后,會斷開連接以節約系統資源。
②UDP的特點
UDP協議是一種無連接,不可靠、面向數據報、速度比較快、可實現一對一,多對一的傳輸層協議。UDP協議適用于對實時性有要求的場合。因為UDP不保證可靠性,所以UDP也沒有重傳機制,也沒有擁塞機制,它只是盡最大努力交付數據。
UDP的優點:運行速度快,因為 UDP連接沒有TCP的三次握手、確認應答、超時重發、流量控制、擁塞控制等機制,而且UDP是一個無狀態的傳輸協議,所以它在傳遞數據時非???。較安全,因為沒有TCP的那些機制,UDP較TCP被攻擊者利用的漏洞就會少一些。
圖2 TCP、UDP通訊流程圖
從上圖能清晰的看出,TCP通信需要服務器端偵聽listen、接收客戶端連接請求accept,等待客戶端connect建立連接后才能進行數據包的收發(recv/send)工作。
UDP則服務器和客戶端的概念不明顯,服務器端即接收端需要綁定端口,等待客戶端的數據的到來。后續便可以進行數據的收發(recvfrom/sendto)工作。
TCP是面向連接的協議。運輸連接是用來傳送TCP報文的。TCP傳輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。因此,傳輸連接就由三個階段,即:連接建立、數據傳送和連接釋放。
在同一個局域網內,市運銷系統和企業內部系統通過建立可靠的數據連接,
在企業內部系統完成稱皮重、稱毛重等業務時,將對應的數據實時傳遞個市運銷系統,希望做到整個過程無需人工操作,系統自動完成。
雙方系統定義好通訊方式、傳輸的數據格式,保證數據傳輸的正確性。
綜上分析:運銷系統對接采用網絡Socket通訊方式比較合適。
有一個服務器端程序Server,內部系統和市運銷系統各Client由中心服務程序負責數據通訊。如圖3所示。
圖3 數據通信
三、容錯處理
雙方系統在傳輸數據過程中難免出現異常情況,造成接口失敗。這里暫時考慮以下幾種可能的情況并提出處理意見,后續可以根據實際情況補充完善處理方法。
1.網絡連接失?。涸谡{用接口的時候,由于網絡不通,造成數據不能正常傳輸。這樣,系統提醒用戶網絡故障,請重試。系統應能在網絡恢復后自動恢復連接。
2.反饋錯誤信息:市運銷系統在處理數據時應數據格式錯誤會發生異常情況。所以,市銷系統應當能夠捕捉異常信息,比如“非法參數”、“用戶認證失敗”等,然后反饋給企業內部系統。企業內部系統在接受到這類的錯誤信息之后,會反映給客戶。
3.網絡連接正常,但是無信息反饋:這種情況下,可能是系統出現了異常,但是又沒有捕捉到的情況下發生。這種情況下,系統應能夠有相應機制避免或者盡快恢復通訊,例如:通過心跳檢測檢查通訊情況。
四、接口方法
1.企業內部系統:完成稱皮重,將稱重信息傳遞給市運銷系統;
2.企業內部系統:完成稱毛重,將稱重信息傳遞給市運銷系統;
3.其它情況:企業內部系統手動將數據傳遞給市運銷系統,例如:糾正重量后重傳數據;修改車牌號后重新傳遞數據等。傳遞數據格式如下表:
舉例說明:
1.稱皮完成時傳輸的數據格式
2.稱毛完成時傳輸的數據格式
通訊協議可以選擇TCP或UDP。
五、內部系統實現技術方案
1.界面調整
(1)在內部系統(過磅軟件)界面增加有給按鈕“發送”,用于處理因為網絡或其他異常導致的數據發送失敗后的二次發送,該按鈕需要判斷是否有需要發送的數據,如果沒有,則不可用。
(2)內部系統界面增加一個紅綠指示燈,綠色代表與市運銷系統連接正常,紅色代表斷開。
(3)內部系統界面增加票號輸入框,方便司磅人員輸入票號
2.業務邏輯
(1)完成皮重確認后,內部系統系統自動發送數據給市運銷系統,數據格式見上表;
(2)完成毛重確認后,內部系統系統自動發送數據給市運銷系統,數據格式見上表;
(3)增加作廢邏輯,車輛完成皮重過磅放棄提貨后,需要在內部系統上刷卡,并進行作廢處理,作廢時,需要將數據發給市運銷系統,確保將原來的皮重信息作廢。
(4)如果數據由變化,比如車號等錯誤,需要在內部系統調出原來的皮重或者毛重信息,并重新發送數據給市運銷系統,如果完成毛重則發毛重信息,如果未完成毛重,則發送皮重信息。
(5)磅秤錯誤處理,如果因為磅秤等原因,導致獲取的重量錯誤,司磅人員可以重新獲取重量,獲取后,重新發送皮重或者毛重信息,稱重步驟為修改。
(6)內部系統系統以UDP格式定時向市運銷系統發送字符串“HI”,市運銷系統反饋字符串“YES”,則表明通信正常,指示燈綠色,如果無應答,則指示燈紅色。
(7)系統增加處理大媒種的業務邏輯。
(8)增加票號自動增加業務邏輯,即用戶輸入有給票號后,系統自動在下一車時,根據大媒種分類,自動將票號后面序號+1。
(9)發送成功、失敗處理邏輯。數據發送后,市運銷系統反饋結果,如果成功則返回“SUCCESS“,如果失敗,則返回失敗原因,并由內部系統向用戶提示。
3.數據格式及約束
內部系統發送給市運銷系統的數據主鍵值是提貨單號(20位以內不重復字符串),市運銷系統需依據該字段判斷是否重復,或者修改、作廢時處理那條原始數據。
具體數據格式如下:
主鍵(唯一標識)#票號#稱重步驟#車牌號#銷售類型#大煤種#小煤種#稱皮時間#稱毛時間#毛重(噸)#皮重(噸)#凈重(噸)#車型#出境方向#單價(元)#磅秤標識#。
舉例說明:
L123456789#境外票號#g#陜K12345#境外#塊煤#三八塊#2018-12-23 01:02:03#2018-12-23 03:04:05#48.90#20.00#28.90#解放半掛#河南#200#bc02#。
說明:
(1)數據一行,中間無換行符;
(2)兩個字段間用#分割;
(3)所有數字不用單位。
六、運行效果
正式上線運行,市煤管數據及內部系統可以共享數據。
1.門房(不再)登記入場----在空車地磅過磅錄入(內部系統)---自動傳輸到市煤管系統—--裝車—-重磅打票錄入(內部系統)---自動傳輸到市煤管系統
2.磅房不在給市煤管系統單獨錄入數據,即可共享數據。
3.出廠利用個系統的共同體“卡”,刷卡后調出過磅系統的數據,節省人為的過程中拿卡及刷卡的時間,提高發運效率。
4.減少工序、工作量、及補錄數據的時間,加快在廠區停留流程時間和過磅的效率。增加企業運銷的發運量,創造企業利益。
七、磅房窗口監控系統
設有兩個地磅房共有4個窗口,車流飽和,工作量大、在每個窗口配置一臺高清攝像機,查看實時的打票,過磅及票據傳遞等情況,做到有源可查,如有錯誤等能實時查看當時的細節過程,
八、煤管值班室車牌識別系統及通信設備更換
要求將完整的配置數據導入新的設備中。
在煤管值班室設立車牌識別系統在過磅的數據通過車牌實時調取至煤管系統,通過車牌識別及刷卡協帶共享數據,保證在出入值班室能與煤管數據同步,較少在值班室的停留時間,保證數據的一致性,便捷性。與地磅系統對接共享,由于設備運行時間超過六年,煤礦現場的環境惡劣,為了保證正常的運銷工作的暢通,現將采購值班室原有型號,華為設備更換,更換下來的設備作為備用設備。通信的上的所有配置數據將完整的導入新的設備中
九、煤管值班室道閘欄桿計數雷達控制系統
要求對接煤管系統的配置參數完全統一及計數功能。
煤管站值班室設立了道閘計數,煤管站在所有設備暫時由煤礦單位來維護更換,道閘6秒地感的故障嚴重導致煤礦車輛出入的數量,煤管現使用的地感系統,性能底下,故障率高,對煤礦車輛出入影響極大。利用現在的技術道閘3秒桿雷達系統更高效,故障率更低。
十、煤管矸石通道監控系統
自2018年以來,煤管主管部門對煤礦所有單位的煤泥,矸石加強管理,檢查力度,要實時查看煤泥及矸石裝卸情況,并要求所有煤礦單位自己設立高清攝像機,加入到煤管站監控系統。
十一、磅房語音系統
地磅房內語音系統運行多年,設備陳舊,拾音效果性能差,工作人員在車輛流量大的情況下工作強度加大,現更換一套語音系統,高拾音率,工作人員工作時更輕松。
轉化果平臺咨詢電話:400-1817-969