楊 春,張 馳,黃廬敏,何小健
(泰州口岸船舶有限公司,江蘇 泰州 225321)
船舶設(shè)計(jì)零件分類統(tǒng)計(jì)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
楊 春,張 馳,黃廬敏,何小健
(泰州口岸船舶有限公司,江蘇 泰州 225321)
針對(duì)船舶企業(yè)設(shè)計(jì)過(guò)程中要利用Excel文件來(lái)描述不同子系統(tǒng)的零部件相關(guān)信息,而采購(gòu)部門需要匯總這些信息的情況。設(shè)計(jì)配置方式的不同Excel來(lái)源格式的自適應(yīng)處理方法,并利用.net平臺(tái)結(jié)合OLE技術(shù)開(kāi)發(fā)實(shí)現(xiàn)船舶設(shè)計(jì)零部件統(tǒng)計(jì)系統(tǒng),該統(tǒng)計(jì)方法支持自定義層級(jí),具有良好的推廣應(yīng)用性。
船舶設(shè)計(jì);.net;零件;分類統(tǒng)計(jì)
隨著船舶行業(yè)轉(zhuǎn)型升級(jí)的壓力越來(lái)越大,通過(guò)信息技術(shù)手段改善業(yè)務(wù)流程處理的環(huán)節(jié),提高處理效率成為信息化與工業(yè)化深度融合應(yīng)用的現(xiàn)實(shí)需要,其中,零部件的分類統(tǒng)計(jì)是船舶相關(guān)行業(yè)的一類典型的信息化應(yīng)用需求。在信息處理系統(tǒng)中,從Excel導(dǎo)入數(shù)據(jù)是一類非常普遍的需求,為此,嘗試實(shí)現(xiàn)從Excel讀入數(shù)據(jù)時(shí)的來(lái)源格式配置,從多個(gè)WorkSheet中采用配置方式分別讀入數(shù)據(jù),形成靈活的處理方法。
目前,船舶企業(yè)的設(shè)計(jì)過(guò)程基本上已經(jīng)完全采用信息化手段了,CAD、TRIBON軟件等行業(yè)應(yīng)用軟件已經(jīng)非常普遍[1-4]。但國(guó)內(nèi)的大多數(shù)中小船舶企業(yè),都存在設(shè)計(jì)任務(wù)外包的情況。在外包設(shè)計(jì)任務(wù)后,外協(xié)的設(shè)計(jì)單位會(huì)根據(jù)船舶管系子系統(tǒng)將該子系統(tǒng)中涉及到的“閥件、附件、管件”等按照規(guī)格、材料等進(jìn)行統(tǒng)計(jì),并提供給船廠多份Excel格式的統(tǒng)計(jì)文件,一般一艘船舶最少都有幾十份這樣的文件,多的達(dá)到上百份。
圖1 來(lái)源Excel文件格式示例
圖1給出的是船舶的艉管滑油系統(tǒng)所涉及的相關(guān)零部件情況。船舶企業(yè)在拿到這樣的文件后,需要進(jìn)一步統(tǒng)計(jì)全船一共需要的相同規(guī)格、材料的閥件、附件的數(shù)量,以提供給采購(gòu)部門進(jìn)行訂購(gòu)。這個(gè)過(guò)程是一個(gè)比較繁瑣的事情,因?yàn)閿?shù)據(jù)多,為了防止人為統(tǒng)計(jì)的失誤,最少需要統(tǒng)計(jì)2遍。最終需要形成的統(tǒng)計(jì)效果見(jiàn)圖2。
圖2 最終的統(tǒng)計(jì)目標(biāo)效果示例
傳統(tǒng)上,依靠人工統(tǒng)計(jì)的方式,一艘船舶的數(shù)據(jù)統(tǒng)計(jì)需要一個(gè)人接近30個(gè)工作日的統(tǒng)計(jì),才能形成最終的結(jié)果,而且還不能保證萬(wàn)無(wú)一失。在這個(gè)背景下,開(kāi)發(fā)了“船舶設(shè)計(jì)零件分類統(tǒng)計(jì)系統(tǒng)”,通過(guò)該系統(tǒng),只需要不到5 min的時(shí)間,就可以完成一艘船舶的數(shù)據(jù)統(tǒng)計(jì)。
2.1 配置式Excel來(lái)源格式的實(shí)現(xiàn)
通過(guò)OLE技術(shù)可以實(shí)現(xiàn)從Excel文件中讀入需要的信息,但比較困難的是不同外協(xié)單位設(shè)計(jì)的Excel文件在格式上會(huì)有差異。比如,列的排列順序、列的標(biāo)題文字、數(shù)據(jù)區(qū)域與標(biāo)題區(qū)域的間隔等。如果程序無(wú)法實(shí)現(xiàn)對(duì)來(lái)源Excel格式的適應(yīng),將無(wú)法真正實(shí)用。為解決格式適應(yīng)問(wèn)題,設(shè)計(jì)了一個(gè)關(guān)鍵信息的配置文件,該文件的內(nèi)容見(jiàn)圖3。
其中實(shí)現(xiàn)從Excel配置式讀入數(shù)據(jù)的關(guān)鍵配置信息說(shuō)明如下。
1)讀入數(shù)據(jù)列的長(zhǎng)度配置。從Excel讀入的數(shù)據(jù),需要保存到內(nèi)存的DataTable對(duì)象中去,該對(duì)象對(duì)字符類型的對(duì)象列需要設(shè)定每列的允許長(zhǎng)度,對(duì)數(shù)值類型的字段則不需要。而且,因?yàn)閬?lái)源Excel格式不固定,就需要該DataTable對(duì)象是根據(jù)配置信息動(dòng)態(tài)創(chuàng)建的,可能為10列,也可能為12列。為實(shí)現(xiàn)指定列的長(zhǎng)度,采用的配置設(shè)定信息為
列長(zhǎng)度=100,20,100,100,200,20,20,100,-1,-2,200,100,400
每列之間用“,”符號(hào)進(jìn)行分隔,對(duì)大于0的值,則表示該列為字符類型,長(zhǎng)度為設(shè)定值,對(duì)小于0的值,則表示其為數(shù)值類型,其中“-1”表示對(duì)應(yīng)的是整數(shù)列,“-2”對(duì)應(yīng)的浮點(diǎn)數(shù)列。
2)讀入數(shù)據(jù)的列名稱設(shè)置。從Excel讀入的數(shù)據(jù),需要保存到內(nèi)存的DataTable對(duì)象中去,因?yàn)樵搶?duì)象是動(dòng)態(tài)創(chuàng)建的,因此,該對(duì)象的每一列表示什么含義,也是需要配置的。相應(yīng)的配置語(yǔ)句示例為
列名稱=系統(tǒng)名稱,編號(hào),標(biāo)準(zhǔn)號(hào),圖號(hào),名稱,通徑,壓力,材料,數(shù)量,重量,銘牌刻字內(nèi)容,供貨,備注等。
3)來(lái)源Excel列與目標(biāo)表的列對(duì)應(yīng)配置。Excel文件中信息是以列來(lái)分隔的,在讀入數(shù)據(jù)時(shí),Excel來(lái)源文件的某列對(duì)應(yīng)目的表的那一列,這個(gè)是最可能發(fā)生變化的,其配置語(yǔ)句為
Excel列編號(hào)=1,2,2,3,4,5,6,7,8,9,11,12
結(jié)合上面的列名稱配置,該語(yǔ)句表示的含義為Excel文件中的第1列(A列)的數(shù)據(jù)讀入后對(duì)應(yīng)內(nèi)存表的第2個(gè)字段(因?yàn)閮?nèi)存表的索引是從0開(kāi)始的),而內(nèi)存表中的第1個(gè)字段來(lái)源于Excel文件的表頭區(qū)域,而不是來(lái)源于數(shù)據(jù)表體區(qū)域。
4)其他相關(guān)配置信息?!跋到y(tǒng)名稱與編號(hào)所在行間距差=2;系統(tǒng)名稱所在列=1;關(guān)鍵定位字符=號(hào)”這3個(gè)配置信息是用于確定在Excel標(biāo)題區(qū)域保存“系統(tǒng)名稱”這個(gè)信息的單元格的位置。
“閥件WorkSheet名稱=VALVE;附件WorkSheet名稱=ACCESSORY”這2個(gè)配置信息是在Excel文件采用多個(gè)WorkSheet的情況下,每個(gè)WorkSheet中對(duì)應(yīng)的是什么內(nèi)容。以圖2所示為例,其中WorkSheet名稱為“VALVE”的表示其下存儲(chǔ)的是該管路子系統(tǒng)的閥件信息。如果不同的設(shè)計(jì)單位提供的Excel來(lái)源文件格式變動(dòng),只需要修改這些配置信息就可以完全適應(yīng),非常靈活。
“必須有信息的列=3,7”這個(gè)配置信息定義的是從excel中讀入信息時(shí),哪些列是必須輸入,如果沒(méi)有輸入則報(bào)警提示?!爸恍枰形男畔⒌牧?3,6”這個(gè)信息設(shè)定了如果某些列同時(shí)提供了中英文,可以設(shè)定只需要中文信息,以加快信息獲取的準(zhǔn)確度。
2.2 數(shù)據(jù)讀入過(guò)程
數(shù)據(jù)讀入的流程見(jiàn)圖4。
圖4 數(shù)據(jù)讀入流程
在讀入過(guò)程中,比較關(guān)鍵的是允許設(shè)定只讀入Excel來(lái)源文件中的一類信息,比如只讀入閥件或只讀入附件等;同時(shí),可以分批次讀入,即在已經(jīng)讀入幾份文件的基礎(chǔ)上,追加文件的讀入。因此,必須具備讀入信息的保存功能。文中采用xml文件的方式來(lái)保存數(shù)據(jù),在下次追加讀入時(shí)可以從xml文件中加載到內(nèi)存DataTable對(duì)象,然后再按照?qǐng)D5所示流程讀入新的來(lái)源數(shù)據(jù)。
2.3 分類統(tǒng)計(jì)的實(shí)現(xiàn)
為實(shí)現(xiàn)支持分類層次的自定義,開(kāi)發(fā)設(shè)計(jì)了一個(gè)統(tǒng)計(jì)控件,支持以拖拽的方式設(shè)定分組統(tǒng)計(jì)的層次。實(shí)現(xiàn)的軟件界面見(jiàn)圖5。
圖5 軟件界面示例
圖5是已經(jīng)從選定的多份Excel文件中讀入信息到內(nèi)存DataTable表對(duì)象后的效果。
圖6是在讀入數(shù)據(jù)的基礎(chǔ)上,進(jìn)行分層次統(tǒng)計(jì)匯總分析后的效果。分組統(tǒng)計(jì)的第1層次是根據(jù)“閥件名稱”,第2層次是根據(jù)“通徑”,即從左到右,層級(jí)依次細(xì)化。通過(guò)拖拽方式改變列的排列順序,就可以實(shí)現(xiàn)統(tǒng)計(jì)層級(jí)的修改。
本文所開(kāi)發(fā)的船舶設(shè)計(jì)零件分類統(tǒng)計(jì)系統(tǒng),實(shí)現(xiàn)了根據(jù)需要從Excel來(lái)源文件中進(jìn)行信息分層次匯總的功能,其中的來(lái)源文件格式信息配置,自動(dòng)創(chuàng)建內(nèi)存表,分層次匯總控件設(shè)計(jì),統(tǒng)計(jì)數(shù)據(jù)信息導(dǎo)出等功能等對(duì)其他類似系統(tǒng)開(kāi)發(fā)有比較強(qiáng)的借鑒作用。本文所開(kāi)發(fā)的這套系統(tǒng)已經(jīng)在相關(guān)船舶企業(yè)及設(shè)計(jì)單位推廣應(yīng)用,取得了良好的應(yīng)用效果。
圖6 信息統(tǒng)計(jì)效果示例
[1] 程慶和.船舶工業(yè)的新型工業(yè)化道路與船舶企業(yè)信息化建設(shè)[J].信息化縱橫,2008(9):34-38.
[2] 劉 杰. 基于OLE技術(shù)的造船廠信息一體化研究[J].船海工程,2007,36(4):86-88.
[3] 姚玉南.船舶信息管理系統(tǒng)開(kāi)發(fā)研究[J].船海工程,2006,30(4):110-113.
[4] 姚競(jìng)爭(zhēng).數(shù)字化造船一體化數(shù)據(jù)平臺(tái)關(guān)鍵技術(shù)研究[D].哈爾濱:哈爾濱工程大學(xué),2011.
Design and Realization of Classified Summarizing System forMachine Parts of Ship Design
YANG Chun, ZHANG Chi, HUANG Lu-min, HE Xiao-jian
(Taizhou Kou′an Shipbuilding Co., Ltd., Taizhou Jiangsu 225321, China)
During ship design procedure, Excel files may be used to describe the information related to the machine parts of different subsystems, but purchasing department needs the summary information. To make the automatic summery of information possible, a machine parts summarizing system with self-adaptive method to match different configured Excel source formats for ship design is developed based on the.net platform.The system supports customizing levels and has good popularization and applicability.
ship design; .net; machine parts; classified summarizing
10.3963/j.issn.1671-7953.2015.01.026
2014-09-28
江蘇省科技支撐計(jì)劃項(xiàng)目(BE2013107)
楊 春(1973-),男,碩士,高級(jí)工程師
U662
A
1671-7953(2015)01-0100-03
修回日期:2014-10-28
研究方向:船型研發(fā)及船舶企業(yè)信息化應(yīng)用
E-mail:yangc@cnkasc.com