湯明偉 鄭柳娟



摘? 要: 本章從某包裝有限公司的個性化物料采購倉儲的企業需求入手,介紹了基于ASP.NET的MVC框架開發的一套B/S結構下的定制化物料采購倉儲系統,將企業物料采購倉儲和各生產環節通過互聯網+的模式結合起來,為企業的生產提供了信息化保障,從而有效地規范了企業的物料采購倉儲流程,極大的降低了企業運行成本。
關鍵詞: 互聯網+; 物料; 采購; 倉儲; MVC; ASP.NET
中圖分類號:TP311.52? ? ? ? ? 文獻標志碼:A? ? ?文章編號:1006-8228(2018)12-44-05
Abstract: This paper starts with the needs of personalized material purchasing and warehousing of a packaging company, introduces a customized material purchasing and warehousing system of B/S structured based on ASP.NET MVC. The system combines material purchasing, warehousing and other production links through Internet plus mode to provide the information guarantee for the enterprise production, which effectively regulates the material purchasing and warehousing process of the enterprise, and greatly reduces the operation cost.
Key words: Internet plus; material; purchase; warehousing; MVC; ASP.NET
0 引言
江蘇申凱包裝高新技術股份有限公司成立于2002年,2016年銷售額2.77億,注冊資本8000萬元,2013年3月在天交所掛牌上市。
由于企業生產工藝和流程較為特殊,企業物料的采購和倉儲在ERP系統中無法實現企業定制化要求,而在ERP使用過程中造成了公司人力資源和員工的工作強度增加,但工作效率沒有得到顯著的提升。因此,企業員工仍舊采用手工的EXCEL表操作,雖然效率很低,但是至少員工都比較熟練操作流程。
1 需求分析設計
物料采購倉儲系統的開發,主要針對企業目前在生產環節中,對于生產過程中涉及到的物料的一整套發雜工藝流程的信息化管理,包括根據生產BOM單管理、供應商的管理、物料訂單管理、物料采購管理、物料倉儲管理等。
系統設計遵循以下原則。
⑴ 實用性原則:要力求最大限度地滿足實際工作的需要,充分考慮各業務層次、各管理環節數據處理的實用性。
⑵ 可擴展性與可維護性原則:系統設計盡可能模塊化、組件化,讓系統可以靈活配置,適應不同的情況。設計功能接口和數據結構跟企業ERP系統盡可能保持一致性,方便后續系統的可擴展性。
⑶ 安全可靠性原則:網站系統與數據庫系統的設計要做到安全可靠,防止非法用戶的入侵。數據庫的備份策略恰當,以防災難性事故發生。
⑷ 用戶界面設計原則:用戶界面的設計應做到美觀大方,實現“傻瓜型”人性化設計——易學、易用、易管理。
2 系統設計方案
2.1 系統方案總體設計
開發之初,針對企業提出的以上實際需求,系統采用B/S結構平臺。采用ASP.NET[1] MVC[2-3]三層框架和SQL SERVER數據庫[4]來實現系統功能,采用jQuery框架[5]和AJAX[6]技術實現系統界面操作的簡便性和人性化設計,如圖1所示。
2.2 系統總體功能設計
物料采購倉儲系統根據企業實際業務需求,總共分基礎中心、訂單中心、采購中心、倉儲中心和系統中心五大功能模塊。基礎中心包括部門管理、角色管理、用戶管理、供應商管理和BOM單管理(根據實際生產需求而定制的BOM單);訂單中心包括訂單管理、用料管理和成本管理;采購中心包括采購核算、采購下單、采購審核和采購統計;倉儲中心包括入庫單管理、備用管理、出庫單管理和退庫管理;系統中心包括登錄/退出、個人信息和密碼修改。如圖2所示。
2.3 系統用戶角色
本系統根據江蘇申凱包裝股份有限公司實際生產管理流程和各環節涉及管理部門,總共分為系統管理員、營銷主管、采購主管、倉儲主管、技術員、營銷員、倉庫出入員和車間科長八個角色,具體權限分配如表1所示。
2.4 系統數據庫設計
數據庫是管理系統的基礎與核心,數據庫設計的優劣將直接影響管理系統的性能。通過對系統功能模塊的劃分和設計,已明確了本系統所涉及的所有實體及實體間的關系。考慮和預估算本系統實際使用過程中產生的數據體量及數據規范性,系統數據庫采用SQL Server。根據各功能模塊所需,總共設計了14張數據表,分別有部門表、權限表、用戶表、倉庫表、供應商表、成品模板表、成品物料表、訂單表、實際物料表、采購表、專用出入庫表、公用正品庫表、公用次品庫表和公用報廢庫表。
⑴ 部門表(Tb_Department),包括:部門編號(自動增量)、部門名稱。
⑵ 權限表(Tb_Role),包括:權限編碼、權限名稱。
⑶ 用戶表(Tb_User),包括:用戶編號、用戶名、真實姓名、密碼、權限編號、部門編號。
⑷ 倉庫表(Tb_Storage),包括:倉庫編號、倉庫名稱。
⑸ 供應商表(Tb_Supplier),包括:供應商編號、供應商名稱、聯系人、聯系電話、傳真、省份、地級市、地址。
⑹ 成品模板表(Tb_ProMasterplate),包括:產品代碼、產品名稱、產品規格、產品形式、產品結構、PE配方、成品數量、工藝流。
⑺ 成品物料表(Tb_ProMaterialFlow),包括:編號、產品代碼、物料代碼、物料名稱、長、長的單位、寬、寬的單位、厚、厚的單位、高、高的單位、數量、數量的單位、物料分類、比重系數、物料系數。
⑻ 訂單表(Tb_Order),包括:訂單編號、客戶名稱、業務員、內勤編號、客戶下單時間、交貨日期、下生產單日期、預計生成日期、產品代碼、訂單數量、結算標記、采購標記、備注。
⑼ 實際物料表(Tb_ReaMaterialFlow),包括:編號、訂單編號、產品代碼、物料代碼、物料名稱、長、長的單位、寬、寬的單位、厚、厚的單位、高、高的單位、數量、數量的單位、物料分類、比重系數、標記、物料系數。
⑽ 采購表(Tb_Procure),包括:編號、供應商編號、訂單編號、實際物料編號、數量、單位、金額、交貨日期、要求、備注、審核標記。
⑾ 專用出入庫表(Tb_SpecStorage),包括:專用出入庫編號、訂單編號、實際物料編號、數量、數量單位、出入庫時間、操作員、倉庫編號、備注、庫位號。
⑿ 公用正品庫表(Tb_PubStorage),包括:公用出入庫編號、訂單編號、實際物料編號、數量、數量單位、出入庫時間、操作員、倉庫編號、備注、庫位號、備用標記。
⒀ 公用次品庫表(Tb_FakeStorage),包括:次品庫編號、訂單編號、實際物料編號、數量、數量單位、出入庫時間、操作員、倉庫編號、備注、庫位號、備用標記。
⒁ 公用報廢庫表(Tb_BrokenStorage),包括:報廢庫編號、訂單編號、實際物料編號、數量、數量單位、出入庫時間、操作員、倉庫編號、備注、庫位號、備用標記。
以上庫表設計,既滿足了企業ERP系統的數據對接,又為企業進一步規范操作管理助推。
3 系統開發實現
物料采購倉儲系統是一套基于B/S結構的信息化系統。采用了ASP.NET MVC三層設計模式,實現了系統業務功能流程、數據庫訪問操作和靜態頁面全分離。系統功能經過多年的運行和維護,系統功能各模塊都運行正常。本文通過采購單功能的實現來具體闡述本系統的開發與實現,采購單功能效果如圖3所示。
核心代碼:
/// <summary>
/// 保存按鈕按下功能
/// </summary>
/// <returns></returns>
protected void btnSave_Click(object sender, EventArgs e)
{ ProcureInfo pi=new ProcureInfo();
pi.ProcureId=new ProcureBiz().AutoInsertProcureId();
pi.SupplierModel=new SupplierBiz().GetSupplierModel
(Convert.ToInt32(ViewState["SupplierId"]));
pi.OrderModel=new OrderBiz().GetOrderModel
(ViewState["OrderId"].ToString());
pi.ReaMaterialFlowModel=new ReaMaterialFlowBiz()
.GetMaterialFlowModel(Convert.ToInt32(ViewState["MaterialFlowId"]));
pi.Num=Convert.ToSingle(txtNum.Text.Trim());
pi.Unit=lblNumUnit.Text.Trim();
pi.UnitPrice=Convert.ToSingle(txtUnitPrice.Text.Trim());
pi.AllSum=Convert.ToSingle(txtAllSum.Text.Trim());
pi.DeliveryTime=TimeHelper.getStringDateTime
(dataTxtDeliveryTime.Text.Trim());
pi.Require=txtNeed.Text.Trim();
pi.ReMark=txtRemark.Text.Trim();
pi.ExamineMark="0";
if (Convert.ToInt32(pi.OrderModel.ProduceTime)>=
Convert.ToInt32(pi.DeliveryTime))
{ int result1=new ProcureBiz().AddProcure(pi);
ReaMaterialFlowInfo rmfm=new
ReaMaterialFlowInfo();
rmfm.MaterialFlowId=Convert.ToInt32(ViewState
["MaterialFlowId"]);
rmfm.Long=Convert.ToSingle(txtLong.Text.Trim());
rmfm.Height=Convert.ToSingle(txtHeight.Text.Trim());
rmfm.Wide=Convert.ToSingle(txtWide.Text.Trim());
rmfm.Ply=Convert.ToSingle(txtPly.Text.Trim());
int result2=new ReaMaterialFlowBiz()
.UpDateRemoveReMark("2",Convert.ToInt32(ViewState["MaterialFlowId"]));
int result4=new ReaMaterialFlowBiz().UpDateGuige(rmfm);
int RemoveReMarkAmount=new
ReaMaterialFlowBiz().SearchRemoveReMark(ViewState["OrderId"].ToString());
if (RemoveReMarkAmount != 0)
{ string gotoBackUrl="PurchaseCheck.aspx?
OrderId="+ViewState["OrderId"].ToString();
if (result1>0 && result2>0 && result4>0)
{ MsgBoxHelper.ShowMsgAndRedirect(""保存成功!",
this.Page, gotoBackUrl);
}
else
{ MsgBoxHelper.ShowMsgAndRedirect("保存失敗!",
this.Page, gotoBackUrl);
}
}
else
{? int result3=new OrderBiz().UpdatePurchase
(ViewState["OrderId"].ToString(), "1");
//修改訂單表中的訂單狀態
string gotoBackUrl="PurchaseCheck.aspx?
OrderId="+ViewState["OrderId"].ToString();
if (result1>0 && result2>0 && result3>0 &&
result4>0)
{? MsgBoxHelper.ShowMsgAndRedirect("保存成功!",
this.Page, gotoBackUrl);
}
else
{? MsgBoxHelper.ShowMsgAndRedirect("保存失敗!",
this.Page, gotoBackUrl);
}
}
}
else
{ MsgBoxHelper.ShowMsgBox("交貨日期不能晚于訂單
預計生產日期!", this.Page);
}
}
4 系統運行測試
系統從開發、測試,到交付客戶,正式上線使用,再經過系統功能的充實和再完善,已經經歷了近幾年時間。通過這幾年的實際應用,本系統不論是從響應效率、功能操作、界面顯示均工作正常,得到了企業各部門各類用戶的一致認可,極大的提高了企業的工作效率,極大的節約了企業運行成本。
5 結論
本文從需求分析、系統方案總體設計、系統功能設計、數據庫設計和系統開發實現等方面對物料采購系統進行了詳細的介紹。系統正式上線使用近幾年時間,至今系統界面操作方便、運行穩定、Web服務響應快速、數據安全可靠,達到了預期開發的效果。
目前,系統服務于江蘇申凱包裝高新技術股份有限公司的生產、物料采購、倉儲等多個環節,在互聯網+時代大背景下,本系統的上線,極大的推動了企業的業務流程標準化,大大地節約了企業的人、財、物運行成本,為企業創造了巨大的利潤。系統表現出其使用價值和推廣價值。
參考文獻(References):
[1] 明日科技著.ASP.NET從入門到精通(第4版)[M].清華大學出版社,2017.
[2] [美]Adam Freeman著,張成彬,徐燕萍,李萍,林逸 譯.精通ASP.NET MVC 5[M].人民郵電出版社,2016.
[3] 鄒瓊俊著.ASP.NET MVC企業級實戰[M].清華大學出版社,2017.
[4] 陳暢亮,吳一晴著.SQL Server性能調優實戰[M].機械工業出版社,2015.
[5] 單東林,張曉菲,魏然等著.鋒利的jQuery(第2版)[M].人民郵電出版社,2012.
[6] 李慶松,徐小瓏,鄒佳等編.面向服務的AJAX架構模式與應用開發[M].人民郵電出版社,2011.