文/陳澤帆,郭苗梓,李滿,孫思達·廣汽乘用車有限公司
在數(shù)字化時代的背景下,成本管理是汽車制造業(yè)管理業(yè)務(wù)中的重要組成部分,如何通過數(shù)字化改善來提高成本管理水平是一個十分重要的課題??紤]到成本管理業(yè)務(wù)具有較高的定制化特性,G 廠制造部基于Python 語言的靈活性自主設(shè)計和開發(fā)了成本管理系統(tǒng)。通過成本管理需求搭設(shè)系統(tǒng)架構(gòu),建立數(shù)據(jù)庫,設(shè)計并開發(fā)了數(shù)據(jù)管理、預(yù)算管理、執(zhí)行過程管理和費用預(yù)實分析等一系列功能,自上線以來實現(xiàn)了信息的共享化、統(tǒng)計的精確化和決策的科學(xué)化,有效提高了成本管理效率和整體水平。
隨著時代的進步,在汽車制造業(yè)中信息化逐漸得到推廣和使用,如何將信息化積累的數(shù)據(jù)進行有效利用的數(shù)字化時代已悄然到來。在數(shù)字化背景下,汽車制造業(yè)也在積極探索數(shù)字化改善和轉(zhuǎn)型的道路。成本管理作為企業(yè)管理的重要組成部分,實現(xiàn)系統(tǒng)自動分析無疑會提高成本管理效率,為企業(yè)的經(jīng)營、決策提供科學(xué)可靠的數(shù)據(jù)支撐。
傳統(tǒng)的汽車制造業(yè)成本管理大部分處于Office 簡單分析的階段,即便借由ERP、MES 等系統(tǒng)對底層數(shù)據(jù)完成自動采集,但在更進一步的數(shù)據(jù)整理和分析層面仍缺乏系統(tǒng)化和現(xiàn)代化的手段。加上隨著社會經(jīng)濟的快速發(fā)展,經(jīng)營環(huán)境的日漸復(fù)雜,企業(yè)對于成本管理的精細化要求程度也越來越高,再采用人工手動整理、分析成本數(shù)據(jù)將會耗費大量的工時,同時無法形成累計的多年變化趨勢,很難從發(fā)展中識別出變化點,支持企業(yè)管理者及時、有效地決策。鑒于此,G 廠制造部從沖壓等各制造車間成本管理人員的實際業(yè)務(wù)需求出發(fā),以最大程度提高成本管理效率為目的,基于Python 語言自主設(shè)計和開發(fā)了成本管理系統(tǒng),作為向管理數(shù)字化探索邁出的第一步。
成本管理系統(tǒng)是一個采用B/S 架構(gòu)模式的Web 系統(tǒng),后端基于Python 語言中的輕量化網(wǎng)絡(luò)框架Flask 進行開發(fā),前端采用了經(jīng)典的“三劍客”——HTML、CSS 和JavaScript,數(shù)據(jù)庫使用了免費開源的MySQL 數(shù)據(jù)庫。
Python 語言作為一門高層次的腳本語言,有很強的可讀性,對初學(xué)者友好,支持多類應(yīng)用程序開發(fā),廣受各行各業(yè)的使用者歡迎。Flask 是一個使用Python 編寫的輕量級Web 應(yīng)用框架,相比其他同類型的網(wǎng)絡(luò)框架更加靈活、輕便,且具有很強的定制性,用戶可以根據(jù)自己的需求來添加相應(yīng)的功能,非常適合需求靈活且定制化程度較高的成本管理系統(tǒng)開發(fā)使用。
HTML+CSS+JavaScript 是Web 應(yīng)用前端頁面的傳統(tǒng)三件套。HTML 用于描述頁面的結(jié)構(gòu),CSS 用于控制頁面中元素的表現(xiàn),JavaScript 用于響應(yīng)用戶行為,三者共同構(gòu)成網(wǎng)頁前端。
MySQL 是一個關(guān)系型數(shù)據(jù)庫管理系統(tǒng),通過建立不同的數(shù)據(jù)表來存放數(shù)據(jù)。相比把所有數(shù)據(jù)都放在一個大倉庫內(nèi),分表存放可以極大地提高查詢速度和靈活性。
成本管理是指企業(yè)生產(chǎn)經(jīng)營過程中成本計算、成本分析、成本控制和成本決策等一系列科學(xué)管理活動的總稱,主要分為事前計劃、事中控制、事后分析三個過程。因此,成本管理對系統(tǒng)的基本需求主要包括成本數(shù)據(jù)的管理、年度預(yù)算費用預(yù)測、費用明細項分析和費用預(yù)實分析等相關(guān)功能,貫穿整個成本管理過程。
當(dāng)前市面上存在的與成本管理相關(guān)的系統(tǒng)主要是ERP(企業(yè)資源計劃)、EAM(企業(yè)資產(chǎn)管理)等系統(tǒng),其功能主要集中在業(yè)務(wù)流程管理,如沖壓材料的出入庫,周轉(zhuǎn)材料的進出場等都會形成數(shù)據(jù)并錄入到系統(tǒng)里。在數(shù)據(jù)分析方面僅提供簡單的數(shù)據(jù)匯總等通用性較強的功能,對于成本分析、費用預(yù)測等功能往往涉及較少。究其原因,一是成本分析關(guān)聯(lián)的數(shù)據(jù)并不僅僅來源于一個系統(tǒng),在舊有系統(tǒng)導(dǎo)入初期并未做出協(xié)同規(guī)劃。像G 廠沖壓車間需計算生產(chǎn)時某種耗材的單臺用量,就需要在ERP 和MES(制造執(zhí)行系統(tǒng))至少兩個系統(tǒng)中獲取數(shù)據(jù)(耗材總用量和產(chǎn)量),僅靠ERP 一個系統(tǒng)并不能實現(xiàn),需要花費額外精力去打通數(shù)據(jù)壁壘;二是相比起流程處理這類通用性較強的系統(tǒng)功能來說,成本分析的專用性更強,需根據(jù)企業(yè)、部門的實際業(yè)務(wù)需求來進行開發(fā),是一種具有高度定制化特性的功能,相應(yīng)地也就需要更高的開發(fā)成本。
因此,在相當(dāng)長的一段時間里,G 廠制造部成本數(shù)據(jù)的分析和歸集都是依靠人工來完成的。在進行分析前由預(yù)算員利用Excel 等工具將用量清單、月度產(chǎn)量、出賬費用等相關(guān)數(shù)據(jù)手動匯集在一起,再進行數(shù)據(jù)分析和報表制作。各類與成本管理相關(guān)的數(shù)據(jù)離散在各個業(yè)務(wù)流程系統(tǒng)之中,極大地增加了管理成本。
通過對成本管理需求的整理,本文的成本管理系統(tǒng)在設(shè)計之初就將更多的功能集中在數(shù)據(jù)分析方面。利用數(shù)據(jù)庫接口和導(dǎo)入功能直接在ERP、MES 和GIO等系統(tǒng)提取底層數(shù)據(jù)源,簡化數(shù)據(jù)采集流程。再結(jié)合Python 語言面向?qū)ο缶幊痰奶匦蚤_發(fā)出貼合實際業(yè)務(wù)需求的成本分析功能。整個成本管理系統(tǒng)主要設(shè)計了以下幾個模塊對成本進行管理,如圖1 所示。
該功能模塊主要是對成本相關(guān)的源數(shù)據(jù)如費用明細、預(yù)實推移、物料出庫等數(shù)據(jù)進行管理。成本管理系統(tǒng)內(nèi)的數(shù)據(jù)管理模塊以MySQL 數(shù)據(jù)庫管理系統(tǒng)為內(nèi)核,除了將數(shù)據(jù)庫增、刪、改、查等基本功能做到前端UI 界面之外,還支持將數(shù)據(jù)以.csv、.xls 等常規(guī)數(shù)據(jù)格式文件導(dǎo)出,如圖2 所示。開發(fā)了多種數(shù)據(jù)導(dǎo)入渠道,如通過數(shù)據(jù)庫接口直接傳輸、通過.xls等文件格式整體導(dǎo)入、通過系統(tǒng)生成表單填寫等,能適用各種情況下的數(shù)據(jù)獲取。更加全面地從其他系統(tǒng)、數(shù)據(jù)文件甚至紙質(zhì)文件獲取成本相關(guān)數(shù)據(jù),并進行數(shù)據(jù)清洗和整合,建立成本大數(shù)據(jù)庫,這樣既有利于原本離散的成本數(shù)據(jù)歸集,又能提高數(shù)據(jù)管理效率。
圖2 費用預(yù)實推移表管理界面
此功能模塊主要應(yīng)用于成本管理中的事前計劃階段,通過輸入預(yù)算年度的基本數(shù)據(jù)(如沖壓的預(yù)算產(chǎn)量、生產(chǎn)天數(shù)等)由系統(tǒng)通過算法和模型來生成該年度的費用預(yù)測,以此達到提高預(yù)算精準度的目的。
常見的預(yù)算編制方法主要有調(diào)整預(yù)算法和零基預(yù)算法。調(diào)整預(yù)算法是以現(xiàn)有的費用水平為基礎(chǔ),根據(jù)預(yù)算期內(nèi)業(yè)務(wù)量的變化,對現(xiàn)有費用水平進行調(diào)整,以確定預(yù)算數(shù)的方法。零基預(yù)算法則是指在編制預(yù)算時對于所有的預(yù)算支出均以零為基底,從根本上研究分析每項預(yù)算是否有支出的必要和支出數(shù)額的大小??傮w來說,兩種預(yù)算編制方法各有優(yōu)劣,因此本文系統(tǒng)中的預(yù)算管理模塊在設(shè)計過程中融合了兩種預(yù)算編制方法,在力求提高預(yù)算編制效率的同時兼顧預(yù)算準確性。
系統(tǒng)中的預(yù)算管理模塊主要功能有年度費用預(yù)測和歷年費用推移兩種。年度費用預(yù)測是系統(tǒng)根據(jù)使用者輸入的預(yù)算前提調(diào)用不同費用科目預(yù)先設(shè)定的模型和算法來自動計算出預(yù)算費用的功能。此處以G 廠制造部沖壓車間的能源費為例進行說明,能源費由能耗用量和能源單價兩個因素來主導(dǎo),能源單價作為預(yù)算前提由人工導(dǎo)入到系統(tǒng)中。而能耗用量則進一步細分為電、水等類型,其中用電量就分為長時間開啟的24 小時設(shè)備能耗、與產(chǎn)量相關(guān)性較強的變動能耗和與工作日相關(guān)性較強的固定能耗(此處的變動、固定是以產(chǎn)量作為衡量標準)三個部分。根據(jù)具體設(shè)備能耗統(tǒng)計出每個部分的用電單耗,再乘以對應(yīng)的預(yù)算前提(自然日、產(chǎn)量、工作日)就能得出年度用電量情況。歷年費用推移功能是對年度費用預(yù)測功能的輔助和補充,顧名思義,該功能是系統(tǒng)自動對數(shù)據(jù)庫中所存儲的歷年費用情況進行整理,并輸出相應(yīng)的趨勢圖表供用戶分析和使用,同時系統(tǒng)后臺還會根據(jù)歷年費用情況對前文的費用預(yù)測結(jié)果進行修正。當(dāng)前G 廠制造部成本系統(tǒng)數(shù)據(jù)庫中已經(jīng)保存了從2012 年至今10 余年的數(shù)據(jù),數(shù)據(jù)量越多對于費用預(yù)測的修正結(jié)果也會越準確。
此功能模塊主要應(yīng)用于成本管理中的事中控制階段,針對重點的費用科目開發(fā)了一系列管理功能。主要包括用于管控低值易耗品、勞保用品等物料的用量管理功能、管控投資項目節(jié)點的項目管理功能等。此處重點說明使用較多的用量管理功能。
用量管理功能是一種可以快速匯總海量數(shù)據(jù)的交互式方法,對于一個生產(chǎn)部門來說,隨著時間的推移,與物料用量相關(guān)的如備件、勞保出入庫等明細數(shù)據(jù)會不斷累積。據(jù)初步統(tǒng)計,G 廠制造部1 年可產(chǎn)生的費用明細數(shù)據(jù)就達到10 萬條左右,其中更是涉及73 個不同的費用科目和3800 多種不同的物料。因此以往僅能通過初步統(tǒng)計后對用量最高的TOP5 或TOP10 物料進行詳細分析,再有針對性地開展過程管理。這種管理方式雖然也能在一定程度上把控高用量物料的使用趨勢,但并不能很好地發(fā)現(xiàn)低用量物料的異常。且隨著管理精細化程度的不斷提高,僅僅把握高用量的幾種物料情況顯然已經(jīng)無法滿足日常的業(yè)務(wù)需求。
用量管理功能可以全面覆蓋所有物料,并對每一種物料的用量、費用、單臺、單價等情況進行分析,如圖3 所示。根據(jù)業(yè)務(wù)需求,系統(tǒng)功能中內(nèi)置了多種維度的分析選項,如時間維度分為月度推移和年度推移,費用類型維度區(qū)分辦公費、維保費等等。使用者只需選擇對應(yīng)的查詢條件,系統(tǒng)就可以快速地在數(shù)據(jù)庫中找出相應(yīng)數(shù)據(jù),并整理輸出方便分析的目視化圖表。得益于系統(tǒng)的高效率算法,從查詢到生成任意一種物料的分析圖表只需要0.5 秒,即便需要生成一年內(nèi)使用過的全部物料的分析圖表也僅需半小時左右,極大地提高了工作效率。
圖3 某一物料用量情況分析
此功能模塊應(yīng)用于成本管理的事后分析階段,可以根據(jù)費用數(shù)據(jù)自主生成費用分析報表。事后分析是全面預(yù)算管理中不可或缺的一個階段,它在成本管理循環(huán)中處于承上啟下的關(guān)鍵環(huán)節(jié)。管理者及時地對當(dāng)期結(jié)果進行差異分析,才能進行下一期的戰(zhàn)略調(diào)整和預(yù)算調(diào)整,不斷提高預(yù)算的精確性和合理性。
費用預(yù)實分析模塊的功能主要集中在對財務(wù)出賬費用數(shù)據(jù)的預(yù)實分析上,包括每個月的費用預(yù)實推移、費用執(zhí)行率分析和當(dāng)月費用預(yù)實差異分析等功能。所有功能在時間維度上都以月為基礎(chǔ)分為當(dāng)月數(shù)據(jù)和累計數(shù)據(jù),在費用類型維度上分為基本預(yù)算、執(zhí)行預(yù)算和實際費用。常見的預(yù)實分析是對預(yù)算和實際之間的對比和分析,但為了進一步提高費用分析的準確率,G 廠在基本預(yù)算的基礎(chǔ)上使用了執(zhí)行預(yù)算的概念。相比起基本預(yù)算,執(zhí)行預(yù)算是將基本預(yù)算中的變動費用根據(jù)實際產(chǎn)量與預(yù)算產(chǎn)量的比值進行調(diào)整后的預(yù)算。
剔除了產(chǎn)量因素的影響,但同時也提高了計算的復(fù)雜性。尤其是隨著精細化管理的發(fā)展,各項變動費用的計算方式從最開始全年相同的變動比例到每個月不同的變動比例,再到如今的變動單臺,精確性逐步提高的同時也讓計算量成倍增加。費用預(yù)實分析模塊則內(nèi)置了執(zhí)行預(yù)算計算的算法,使用者只需輸入不同費用科目的變動單臺費用,系統(tǒng)就可以自主提取基本預(yù)算費用、預(yù)算產(chǎn)量、實際產(chǎn)量等相關(guān)數(shù)據(jù)計算出每一個月的執(zhí)行預(yù)算。
同時成本精細化管理也要求從更多維度來分析成本數(shù)據(jù),如區(qū)分不同費用類型(勞務(wù)費、管理費等7類)、不同的費用科目(73 個)、不同統(tǒng)計口徑(總計、可控費用)等。因此費用預(yù)實分析模塊針對性地開發(fā)了可控費用調(diào)整功能,如圖4 所示。
圖4 可控費用調(diào)整功能
該功能讓使用者可以通過勾選的方式來調(diào)整每一次生成的分析報表中包含的數(shù)據(jù)源,簡單來說就是允許使用者對73 個費用科目進行自由組合,系統(tǒng)會自動根據(jù)組合情況在數(shù)據(jù)庫中快速檢索相應(yīng)數(shù)據(jù),執(zhí)行計算后生成分析報表,如圖5 所示。這樣不管是任何維度或統(tǒng)計口徑下的成本分析需求都能快速滿足,極大地增強了數(shù)據(jù)分析的靈活性。
圖5 費用預(yù)實分析界面
本文的成本管理系統(tǒng)采用的是關(guān)系型數(shù)據(jù)庫,使用表來定義數(shù)據(jù)對象,不同的表之間使用關(guān)系連接。同時為了提高系統(tǒng)數(shù)據(jù)庫的安全性,降低開發(fā)難度,成本管理系統(tǒng)利用SQLAlchemy 來操作數(shù)據(jù)庫。它簡化了連接數(shù)據(jù)庫服務(wù)器、管理數(shù)據(jù)庫操作會話等各類工作,把底層的SQL 數(shù)據(jù)實體轉(zhuǎn)化為高層的Python 對象,讓開發(fā)者可以直接通過Python 代碼來完成數(shù)據(jù)庫操作。定義數(shù)據(jù)庫模型使用Python 類定義表模式,并聲明映射關(guān)系。所有的模型類都需要繼承SQLAlchemy 提供的db.Model 基類。表的字段由db.Column 類的實例表示,字段的類型通過Column類構(gòu)造方法的第一個參數(shù)傳入。
創(chuàng)建完數(shù)據(jù)模型后,SQLAlchemy 使用數(shù)據(jù)庫會話來管理數(shù)據(jù)庫操作。數(shù)據(jù)庫會話代表一個臨時存儲區(qū),對數(shù)據(jù)庫做出的任何改動都會存放在里面。開發(fā)者可以調(diào)用add()方法將新創(chuàng)建的對象添加到數(shù)據(jù)庫會話中,或是對會話中的對象進行更新。這些改動直到對數(shù)據(jù)庫會話對象調(diào)用commit()方法時,才會被提交到數(shù)據(jù)庫,確保了數(shù)據(jù)提交的一致性。同時,數(shù)據(jù)庫會話也支持回滾操作,當(dāng)開發(fā)者對會話調(diào)用rollback()方法時,添加到會話中且未提交的改動都將被撤銷。
系統(tǒng)采用單體架構(gòu),也就是較為典型的三層架構(gòu),按照前端表示層(Web)、中間業(yè)務(wù)邏輯層和數(shù)據(jù)庫層進行劃分,各相鄰層之間采用接口相互訪問,如圖6 所示。這種系統(tǒng)架構(gòu)的優(yōu)點在于分工明確,開發(fā)人員各司其職,不僅可以專注于各自架構(gòu)層功能的設(shè)計和開發(fā),提高開發(fā)效率,也有利于后續(xù)系統(tǒng)的更新和維護。
圖6 系統(tǒng)三層架構(gòu)圖
前端表示層與用戶直接接觸,主要功能是實現(xiàn)系統(tǒng)數(shù)據(jù)的傳入和輸出。對于傳入的數(shù)據(jù),前端表示層可以通過JavaScript 進行初步驗證,例如數(shù)據(jù)類型、數(shù)據(jù)長度和數(shù)據(jù)有效性的驗證等,但這類驗證的安全性往往存在弊端。因為Web 前端都是依賴客戶端的瀏覽器來生成頁面的,這意味著瀏覽器勢必會接收到前端表示層的代碼,懂得代碼知識的用戶可以通過修改代碼改變Web 頁面的表現(xiàn)形式來跳過安全驗證,使寫在前端的邏輯功能都無效化。所以前端表示層的數(shù)據(jù)驗證更像是一種數(shù)據(jù)篩選,用于規(guī)范常規(guī)用戶的輸入數(shù)據(jù)。
業(yè)務(wù)邏輯層用于實現(xiàn)主要功能,包括成本分析、結(jié)果輸出、報表生成等。同時作為串聯(lián)前端和數(shù)據(jù)庫的中間層,業(yè)務(wù)邏輯層也承擔(dān)了大部分安全檢測的功能,對于用戶的身份驗證、權(quán)限驗證、輸入數(shù)據(jù)驗證等均在此層完成,確保系統(tǒng)和數(shù)據(jù)庫的安全性。系統(tǒng)所使用的Flask 網(wǎng)絡(luò)框架封裝了很多安全性的措施,如使用ORM 對象關(guān)系映射的數(shù)據(jù)庫管理方式,對于SQL 注入擁有一定的防護力;使用Jinja2 模板引擎,默認將渲染變量進行HTML 轉(zhuǎn)義;使用提高安全性的加密函數(shù)等。經(jīng)過安全驗證的數(shù)據(jù)通過視圖函數(shù)里的算法、模型運算后,最終將結(jié)果再反饋至前端表示層。
至于數(shù)據(jù)的增、刪、改、查等操作則是在數(shù)據(jù)庫層來完成。數(shù)據(jù)庫層不包含任何代碼,訪問邏輯都放在業(yè)務(wù)邏輯層,只有數(shù)據(jù)庫和相關(guān)的存儲過程。這樣可以避免表示層直接訪問數(shù)據(jù)庫層,提高了數(shù)據(jù)安全性。
為應(yīng)對日趨激烈的市場競爭,提高企業(yè)的行業(yè)競爭力,技術(shù)創(chuàng)新是必不可少的。在數(shù)字化改革背景下,成本管理作為企業(yè)的重中之重,必須深入研究數(shù)字化創(chuàng)新,轉(zhuǎn)變固有的成本觀念。本文提出的基于Python語言自主開發(fā)的成本管理系統(tǒng)是G 廠制造部結(jié)合成本業(yè)務(wù)開展的一次內(nèi)部數(shù)字化探索,旨在通過系統(tǒng)功能進一步推動成本管理水平的提升。自2021 年初系統(tǒng)上線以來,通過數(shù)據(jù)管理、費用分析、費用預(yù)測和報表生成等功能,有效提高了成本管理人員數(shù)據(jù)處理的準確性和工作效率,同時系統(tǒng)分析的高效性和科學(xué)性也有助于管理者及時、準確地做出決策,展現(xiàn)了該系統(tǒng)降低成本和提高管理效率的使用效果。
隨著數(shù)字化浪潮的到來,汽車制造業(yè)也在積極探索數(shù)字化轉(zhuǎn)型,成本管理業(yè)務(wù)的數(shù)字化也是數(shù)字化轉(zhuǎn)型中不可或缺的一部分。下一步G 廠制造部將繼續(xù)通過系統(tǒng)開發(fā)等數(shù)字化改善對傳統(tǒng)的管理業(yè)務(wù)和方法進行優(yōu)化,不斷提高管理水平和工作效率。