黃勛科
(鄭州地鐵集團有限公司運營分公司,河南 鄭州 450000)
地鐵乘務管理系統(tǒng)在國內部分地鐵公司運營應用較為普遍,其核心功能是交路表編制、出退勤管理,存在著優(yōu)化提升的空間,如導出版時刻表不能直接打印,仍要耗費較多時間進行排版。通過算法分析構建時刻表排版系統(tǒng),導出的時刻表能使用系統(tǒng)一鍵轉換,轉換后的時刻表基本可直接打印,將大大提高效率,壓縮交路表編制周期,具有非常重要的實用價值。
在未使用地鐵乘務管理系統(tǒng)前,交路表編制往往要5~10 人的編制小組花費至少8 h 才能完成,復雜的交路編制可能要用更多時間。使用乘務管理系統(tǒng)后能大大提高交路表編制效率,基本上一個人就能通過乘務管理系統(tǒng)來完成交路表編制。根據時刻表交路編制復雜程度的不同,需要5~8 h來完成(包括系統(tǒng)交路編制、排班規(guī)則編制、發(fā)車計劃編制、交路概述編制、交路表排版打印、時刻表排版打印等),純系統(tǒng)交路編制一般需要2~4 h。時刻表導出后一般要進行打印前排版,根據不同地鐵公司的管理要求,可能要在時刻表中加入出庫動車點、標記投入載客時間點、標記是否有扣車、標記特殊車次提示標語、標記上下行箭頭、標記交路號所在行底色等標記或提醒標語,整個過程仍需1.5~2 h,其占整個交路表編制時間較長。在時刻表啟用時間比較少的情況下,無法按時完成交路表編制任務,會影響乘務運營。
近年來,突發(fā)公共事件對地鐵運營造成較大影響,時刻表變換次數明顯增多,而時刻表從發(fā)布到啟用的時間下限也在不斷刷新,如鄭州地鐵5 號線有記錄以來的最低時間為時刻表發(fā)布2 h 后啟用。因此,交路編制快慢決定著乘務司機能否使用交路表,關系到乘務運作的穩(wěn)定性。若能通過信息化系統(tǒng)來實現時刻表打印排版,提高工作效率,壓縮交路表編制周期,便能使乘務專業(yè)人員更好地應對時刻表頻繁變更帶來的風險與挑戰(zhàn)。本研究通過對時刻表排版工作進行研究,利用PhpSpreadsheet 來開發(fā)時刻表打印排版系統(tǒng),可解決“最后一碼”的問題。
以鄭州地鐵5 號線環(huán)線時刻表為例,來具體分析時刻表打印排版內容及流程。目前,使用中的乘務管理系統(tǒng)在交路編制完成后,導出的時刻表未對重點車次、時間點進行標注,不符合乘務運作管理要求,不能直接打印使用,要進行排版后方可打印使用。
為保障乘務運作的穩(wěn)定性,在啟用新時刻表前一般要對特殊車次重點關注,并對司機進行培訓,避免因電客車司機理解有偏差而導致運營安全事故的發(fā)生?;诙嗄甑罔F乘務運作經驗,鄭州地鐵5 號線時刻表打印排版內容及流程逐漸固定,具體分為以下18 項內容,詳見表1。其中,字號、列寬、行高的調整主要是為了調整時刻表單面縮放大小,便于司機能輕松使用時刻表;站名加粗使其顯示更明顯,便于司機通過站名迅速查找發(fā)車時間點;取消首末班車黃底是為了避免過多顏色影響查看時刻表;交路號所在行標記淺灰色是為了與時刻表中時間進行區(qū)分,便于快速通過交路號查找時間點;標注經北二路行底色淺藍,適用于標記未開通運營車站,表示此站不停車通過,與其他站點時間明顯區(qū)分,避免錯誤停站等人為失誤事故發(fā)生;刪除頁眉空白行主要是為了盡可能增加時刻表有效顯示面積;拆分航海廣場站名及刪除其下方交路號主要是為了方便標注航海廣場處交路號所在行底色,后續(xù)的合并航海廣場站名是其拆分的配套動作;標記各車次首個投入載客點加粗及黃底黑粗框是為了便于司機查看投入載客站發(fā)車點,避免列車早發(fā)、晚發(fā);航海廣場上下行發(fā)車點加粗及黑粗框是為了接車司機方便查找所接列車發(fā)車點,避免中間站因交接延誤發(fā)車;在月季公園識別并標注計劃停車時長超過80 s 列車,添加“注意扣點”字樣,這是為了防止列車早發(fā)、晚發(fā),鄭州地鐵5 號線采用內外環(huán)環(huán)線運營,在早晚高峰轉峰期間會進行行車間隔調整,不可避免地會有部分列車在始發(fā)站多停,識別和標注扣點列車很有必要;將站名列插入時刻表兩端也是為了每個車次的時間點都能就近找到所在車站行,避免因看錯行而誤判時間;加入上行下箭頭是為了方便快速區(qū)分上下行車次及時間走向。
表1 時刻表打印排版內容及流程
因時刻表是Excel 文件,對其進行信息化處理就要用到相關程序。PhpSpreadsheet 是由PHP 編寫的數據庫,其提供一組類,允許讀取和寫入各種電子表格文件(如Excel 等),還可修改并下載Excel 文件,而這正是本研究分析的關鍵。將乘務管理系統(tǒng)中導出的時刻表,通過PhpSpreadsheet 進行相關操作,完成要手動完成的打印排版操作,并下載生成最終需要的打印版時刻表,從而完成導出版至打印版的轉換工作。
PhpSpreadsheet 可對Excel 表格進行插入行/列、刪除行/列、合并/拆分單元格、設置行高、設置列寬、設置字體大小、設置字體顏色、設置單元格填充色、設置單元格邊框樣式、修改單元格內容、插入圖片等操作,還可設置頁邊距、紙張大小及是否縮放等打印設置??墒褂胏omposer 將PhpSpreadsheet 安裝到服務器中。
在明確時刻表排版內容及流程和系統(tǒng)環(huán)境部署正確的前提下,完成時刻表打印排版系統(tǒng)的算法編寫。該系統(tǒng)的主要實現過程為上傳時刻表文件、轉換時刻表文件、下載時刻表文件。
在時刻表打印排版系統(tǒng)開始工作前,要加載必要的文件,以便各類方法能正常使用,實現代碼如下。
讀取并加載時刻表文件,獲取活動工作薄,便于后續(xù)對表格進行操作;獲取總行數,便于對數據處理量進行判斷,避免不必要的操作。具體代碼如下。
時刻表中內容為A-U 列,1 行至獲取的總行數,通過getFont 等函數來設置字體大小、顏色及行高,核心代碼如下。
通過對時刻表分析可以得出,所有有交路號的行在K 列會有“交路號”字樣。因此,可通過對K 列所有單元格的值進行判斷,并用變量$i標注當前所在行,如包含“交路號”字樣,則用getStyle 函數對該行填充色進行修改。對中間換乘站只插入交路號,在K 列未插入“交路號”字樣的情況,可通過站名行下第2 行是否為空值進行判斷,若有值說明未插入交路號,則不對填充色進行標注,如圖1 所示。核心代碼如下。
圖1 設置交路所在行底色
通過對時刻表分析可以看出,下行五龍口停車場出廠列車有轉換軌發(fā)車點的單元格均在K 列“車次號”所在行下方第3行,可對下行A-J列相應單元格是否有值進行判斷,如有值則說明是出廠車,對其轉換軌發(fā)車點進行底色標注,并通過公式計算其出庫動車點,在車次號所在行下方第1 行插入時間,并將K 列庫內動車點所在行的“備注”字樣修改為“庫內動車點”。利用類似的原理,還可對上行五龍口停車場出廠列車、中州大道車輛段上行及下行出廠列車轉換軌動車點及庫內動車點進行標注,如圖2所示,核心代碼如下。
圖2 設置轉換軌發(fā)點、庫內動車點及提示標語
時刻表中,中州大道車輛段出入廠列車在轉換軌不停車,因此要標注提醒標識,如“不停車回段”。通過判斷回段時轉換軌是否有時間值來判斷是否有列車回段,若有列車回段則進行提醒標識插入指定單元格,核心代碼如下。
通過時刻表分析可以看出,上行第二個站如有到點,說明上行該列車在第一個站已投入載客,否則該列車在中間某站投入載客,向上判斷直至某站既有到點又有發(fā)車點,說明列車在此站投入載客,判定正確后對投入載客站單元格樣式進行設置并在合適位置插入提示標語。類似方法可對下行投入載客站發(fā)點單元格樣式及中間站載客提示標語進行設置(見圖2),核心代碼如下。
通過getPageSetup 等相關函數對打印相關樣式進行設置,核心代碼如下。
在時刻表上下行頁面分別插入箭頭圖片,核心代碼如下。
在完成所有格式轉換后,下載最終文件,核心代碼如下。
通過建立該系統(tǒng),如圖3 所示,可快速對時刻表進行排版轉換,微調就可打印使用,整個轉換過程約為50 s,較人工排版節(jié)省約90 min,明顯壓縮交路表編制周期,提高時刻表緊急啟用下乘務運作應對能力,降低交路編制員工工作強度。該系統(tǒng)已在鄭州地鐵5號線Z05122、Z05613時刻表打印排版中進行試用,系統(tǒng)設定的功能均已實現,發(fā)車點、注意扣點、轉換軌發(fā)點、中間站投入載客站、上下行箭頭、車輛段不停車出段等標記準確,系統(tǒng)功能正常,通過定制化修改可推廣應用于其他領域。
圖3 時刻表打印排版系統(tǒng)
不同線路的時刻表具有不同特點,不同地鐵公司也有不同管理方法。因此,時刻表排版的方法也各有不同。本研究設計的時刻表打印排版系統(tǒng)目前只適用于鄭州地鐵5 號線,若用于其他線路,則要對時刻表排版內容及流程分析后進行定制化系統(tǒng)建設。
通過對PhpSpreadsheet在地鐵時刻表打印排版系統(tǒng)中的應用研究,可以解決乘務管理系統(tǒng)無法排版時刻表這一難題,能有效彌補乘務管理系統(tǒng)功能的空白。同樣,PhpSpreadsheet 也可應用于Excel 表格處理工作量大、流程比較固定的工作場景,通過設計算法,可以提高工作效率,解決更多系統(tǒng)化系統(tǒng)未實現的“最后一碼”問題。