基于MVC的物料采购仓储系统设计与实现
2018-02-13汤明伟郑柳娟
汤明伟 郑柳娟
摘 要: 本章从某包装有限公司的个性化物料采购仓储的企业需求入手,介绍了基于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.