EMS智能管理系统

长沙理工大学继续教育学院
毕业论文
IEMS智能设管理系统


摘要

继蒸汽时代、电气时代、信息时代三大工业革命之后,全球化分工使生产要素加速流动和配置,市场风向变化和产品个性化的需求对企业反应时间和柔性化能力提出前所未有的要求,全球进入空前的创新密集和产业变革时代。基于此,以物联网和智能制造为主导的第四次工业革命悄然来袭。
早在2011年汉诺威工业博览会上,德国率先提出“工业4.0”的概念,之后美国也推出工业物联网、互联企业等类似概念。无论工业4.0还是工业互联网,其主要特征都是智能和物联,而主旨都在于将传统工业生产与现代信息技术相结合,从而提高资源利用率和生产灵活性、增强客户与商业伙伴紧密度并提升工业生产的商业价值。
“工业4.0”中,在生产线、生产设备中配备的传感器,能够实时抓取数据,然后经过无线通信连接互联网,传输数据,对生产本身进行实时的监控。设备传感和控制层的数据与企业信息系统融合形成了信息物理系统(CPS),使得生产大数据传到云计算数据中心进行存储、分析,形成决策并反过来指导设备运转。设备的智能化直接决定了“工业4.0”所要求的智能生产水平。
因此一个能够实现保证设备良好运行、降低设备故障率和事故率、节能降耗,提高设备利用率和工作效率,并为企业设备管理提供决策支持,从而提高企业经济效益!满足企业智能化工厂的新需求。 设备维护保养,EMS智能管理系统开发就成了当务之急。
本文主要介绍这套基于ASP.NET的EMS智能管理系统,详细介绍了系统分析、系统设计和数据库设计的一些思路和方法。另外,在系统设计这一章节作者列出了实现设备保养过程的详细算法。该系统凭借WEB服务器和客户的浏览器,利用电子工具高效率、低成本的特点,为客户提供保养平台、在Internet上发布设备保养信息,使保养人员可以查看保养单、处理保养设备、更好、更快的处理设备问题。
本论文较完整的完成了系统的最初设计思路,同时作者从中获取到了许多实践经验。

关键词:工业4.0、智能设备管理、ASP.NET,EMS

第1章 绪论

1.1开发背景以及课题意义

自德国政府于2013年在汉诺威工业博览会上正式公布,“工业4.0”概念就已席卷全球,并被认为是以信息物理系统(CPS)技术为核心的第四次工业革命。在未来的智能工厂,每个生产环节清晰可见、高度透明,整个车间有序且高效地运转。“工业4.0”中,自动化设备在原有的控制功能基础上,附加一定新功能,就可以实现产品生命周期管理、安全性、可追踪性与节能性等智能化要求。这些为生产设备添加的新功能是指通过为生产线配置众多传感器,让设备具有感知能力,将所感知的信息通过无线网络传送到云计算数据中心,通过大数据分析决策进一步使得自动化设备具有自律管理的智能功能,从而实现设备智能化。在此环节中因为大型设备比较贵,另外ISO9001和国军标都对设备有要求,人机料环法中的机,也是对设备作出要求需要定期维护,保养,计量器具定期校准等,而EMS智能管理系统可将企业各工厂、各车间、各类型的生产设备,瞬间变成系统中数字化、动态化、可视化的存在,通过一体化管理体系将其全部连接到一起,并支持设备被车间、产线、工序等无缝绑定,相关数据实时采集,维护状态自动提醒。而设备的运行情况和统计分析结果,更可同步融合到生产排产、派工、汇报、质检、分析等各个环节,在智能设备耗材治具管理系统可彻底打通生产设备管理壁垒,一秒构建企业智能制造的神经网络!
本课题是在大学期间学习数据库相关知识的基础上,熟悉Visual Studio 2017开发环境并能熟练使用C#编程语言的同时,运用软件工程理论知识,开发出的一套基于ASP.NET的EMS智能管理系统。在系统开发的过程中能够应用所学的知识,并促进作者更深入的学习C#的相关特性、积累更多Oracle的相关应用知识,这样不仅能将所学的书面知识和实际应用结合起来达到学以致用的目的,同时也为以后的工作和学习积累经验。

1.2系统开发环境的选择

系统开发的平台和选择语言的优劣及相互协调的程度,将直接影响到开发的效率和系统的质量。
1、编程语言的选择
本系统采用C#语言作为开发语言。目前主流的动态网站的设计技术有ASP、PHP、.NET和JSP等。而其中最受欢迎的是.NET和JSP。.NET上支持多种语言的开发,如C#和VB。
本系统之所以采用C#开发,有以下几个原因:首先,Microsoft C#是一种简单的、流行的、面向对象的、类型安全的编程语言,它是为生成运行在.NET Framework上的、广泛的企业级应用程序而设计的。其次,它较容易上手,特别是和JSP比较起来,能够在短时间内开发出一个较完整的系统。最后,C#是我学习时间最长、也是作者我最熟悉的编程语言,采用该语言将为系统的开发节省不少时间。
2、开发环境的选择
Microsoft .NET Framework是一个平台,在这个平台上可以使用多种语言开发Windows应用程序、ASP.NET Web应用程序、移动Web应用程序以及XML WEB Service等。.NET框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为ASP.NET的Active Server Pages组件化版本。
Visual Studio.NET是一套完整的开发工具,用于生成ASP.NET应用程序、XML Web Services、桌面应用程序和移动应用程序。Visual Basic.NET、Visual C++.NET、Visual C#.NET和Visual J#.NET全都使用相同的集成开发环境(IDE),该环境允许它们共享工具并有助于创建混合语言解决方案。
鉴于Visual C# .NET开发平台和C#语言的这些优点,所以本系统采用了以上平台和语言。

1.3系统数据库环境的选择

前市场上已有的数据库系统包括MYSQL、Access、Microsoft SQL Server 、Oracle Database,其中以后两种数据库最为普遍。本系统采用的是Oracle Database数据库系统,原因如下:
1.它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
2.提供了与第三代高级语言的接口软件PRO系列,能在C,C++等主语言中嵌入SQL语句及过程化(PL/SQL)语句,对数据库中的数据进行操纵。加上它有许多优秀的前台开发工具如 POWER BUILD、SQLFORMS、VISIA BASIC 等,可以快速开发生成基于客户端PC 平台的应用程序,并具有良好的移植性。
3.由于公司是工厂性质数据量比较大,在处理大数据方面Oracle会更稳定一些。

第2章 系统分析

2.1可行性分析

可行性分析主要包括社会可行性、经济可行性、技术可行性,操作可行性
1.社会可行性:随着科学技术的发展,社会进步,计算机技术迅速的发展,设备管理的方法也日新月异,以前全是由人工管理的方法现存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。为了提高设备管理效率,减轻劳动强度,提高信息处理速度和准确性,为设备管理员提供更方便、科学的服务项目。我选择了由计算机来设计一个设备管理系统的方案。让计算机对设备进行自动管理,设备管理员可以直接在计算机上实现设备信息的管理,并能在一定程度上实现自动化。通过对企业进行的实际深入调研,我开发出这套功能比较完整、通用性比较强、成本低廉的EMS智能管理系统。
2…经济可行性:现在市场上流行的《设备管理系统》之类的软件通用性、灵活性稍微要差一些,不能完全提供所需的要求。另外,该系统的价格一般相当昂贵,一般的中小型企业承受不了昂贵的支付能力。所以应该根据企业的具体情况设计适合企业的软件系统。
3.技术可行性:根据管理员提出的系统功能、性能及实现系统的各项约束条件,本系统是一个数据库管理和查询的系统,因此,要使用一种具有强大的数据库操作功能、面向对象的可视化语言来进行代码的编写。Microsoft VS2017中文版的使用简单,功能强大,完全可以实现这些功能。Microsoft VS2017使用灵活,操作简单,可视化的操作界面为高效的开发过程提供了前提。Oracle Database19C功能强大,可以很好的完成数据库的建立,并可以与Microsoft VS2017进行配合,两者相辅相成,共同开发数据库软件是种很合理的选择。此系统采用微软Oracle Database19C建立数据库,用Microsort VS2017来创建界面
4.操作可行性:操作可行性采用此系统,可以减轻管理人员的工作量,使管理人员从大量繁琐的添表、查表、手工制表中解放出来。能够节省大量的人力、物力,工作效率大大提高,预计查询速度可以比原人工查询提高几倍以上,并且可以大大提高准确性和精确性,而且可以安全地、完整地保存大量的设备记录。使设备的管理更加规范化,系统化。此项目虽然经济效益不是太大,但可以减轻工作人员的劳动强度,并可以促进企业对设备管理的规范化和自动化,而且价格低廉,所以是有应用价值的,而且在技术上完全是可行的,可以进行开发工作。

2.2系统功能需求分析

随着计算机技术的迅猛发展以及Internet进入商业和社会应用阶段,设备的种类、数量越来越多,如何利用先进的网络技术和日新月异的计算机设备来有效地收集、处理这些设备,建立以信息化为核心的管理本制,减轻管理人员和业务人员的数据处理负担,极大地提高设备管理效率和管理手段,己经成为当今社会的潮流。在现代化大型研究所信息化管理体系建设中,设备管理系统被看作是重中之重。因为设备是工厂生产中的主体,随着科学技术的不断发展,生产设备日益机械化、自动化、大型化、高速化和复杂化,设备在现代工业生产中的作用和影响也随之增大,在整个工业生产过程中对设备的依赖程度也越来越高,设备管理的各项制度、流程涉及的点多面广。设备管理系统则是一个以人为主导,利用计算机硬件、软件、网络设备通信设备以及其他办公设备,进行信息的收集、传输、加工、储存、更新和维护,以战略竟优、提高效率为目的,支持高层决策、中层控制、基层运作的集成化的人机系统。而设备管理是管理系统的一个子系统,它具有管理信息系统的共性,同时也具有其特殊性。设备是生产的生命线,对研究所正常生产起着决定性的作用。信息安全设备管理已成为现代研究所管理的一个重要组成部分。把信息安全设备管理纳入研究所管理的重要组成部分已经成为一种趋势。

2.2.1 系统维护模块功能需求分析

系统维护模块主要是将系统所需使用的基础信息进行设定功能,系统维护模块的功能需求如下:

  1. 厂别资料:进行厂区设定,线别设定和账号设定。
  2. 行事历设定:进行行事历设定。
  3. 邮件资料:进行邮件服务器和邮件格式设定。
  4. 系统资料:进行群组权限设定,部门设定,职称设定,语系设定,工作中心,参数设定。

2.2.2 仓库资讯模块功能需求分析

仓库资讯模块主要是将系统设备治具进出库操作和库位盘点的功能,仓库资讯维护模块的功能需求如下:

  1. 仓库管理:进行仓库设定
  2. 进出管理:进行设备治具入库,设备治具出库/退库的功能。
  3. 库位盘点:进行仓库中治具耗材定期库存数量盘点功能。
  4. 物料维护:进行料号设定和BOM设定

2.2.3 生产管理模块功能需求分析

生产管理模块主要是将系统物料进行申请的功能,生产管理模块的功能需求如下:

  1. 申请单管理:进行新增物料申请单和删除或修改此物料申请单的功能。

2.2.4 设备治具资讯模块功能需求分析

  1. 设备治具管理:进行资讯维护用于查看设备治具状态和详细信息
  2. 设备治具查询:进行新增设备治具,产生设备和治具对应的系统编码,指定该设备和治具对应车间和库位,指定保管部门和保管人员,设备需要绑定公司对应设备保管编号达到后期方便管理的新增维护功能。
  3. 设备治具资料:由于治具在使用中会和对应生产的机种相关联,设备和治具需要对应的厂商信息,所以此模块可以进行机种查看维护和厂商信息查看维护功能。

2.2.5 耗材管理模块功能需求分析

  1. 耗材入库:进行用于设备的材料和其他耗材录入系统,生成入库单号进行系统管理
  2. 耗材出库退库申请单:录入的耗材进行领用或者调拨到其他地方使用,填写申请产生申请单由上级主管和耗材仓库管理人员进行签核然后领取耗材。
  3. 耗材出库:耗材出库退库申请单在此模块进行出库动作,针对仓库管理耗材特定人员才能开通此权限。
  4. 耗材清单查询:进行耗材数量汇总,用于查看耗材库存信息明细。

2.2.6 批次治具管理模块功能需求分析

  1. 批次治具入库:进行新增批次治具,通过料号进行批量入库。
  2. 批次治具领用退库申请单:录入的治具进行领用或者调拨到其他地方使用,填写申请产生申请单由上级主管和治具仓库管理人员进行签核然后领取治具。
  3. 批次治具出库/退库:批次治具出库退库申请单在此模块进行出库动作,针对治具仓管理治具特定人员才能开通此权限。
  4. 批次治具清单查询:进行批次治具数量汇总,用于查看批次治具库存信息明细。

2.2.7 保养校验模块功能需求分析

  1. 保养暨校验:保养项目,保养计划,计数点,计划查询,项目查询。
  2. 保养单管理:启动保养单,保养单领料,保养单退料,保养单报工,保养单结案。
  3. 保养案查询
  4. 设备点检

2.2.8 设备治具维修模块功能需求分析

  1. 故障项目:不良群组,现象分类,原因分类,处理分类。
  2. 故障处理:临时叫修看板,故障叫修,故障起修,维修记录,维修报工,维修结案,维修发料,维修退料。
  3. 履历查询

2.2.9 管理报表模块功能需求分析

  1. 设备清单分析:系统所有设备详细信息界面,可以通过特定条件进行筛选和导出设备清单数据。
  2. 耗材使用量报表:耗材出库退库申请时领用到车间的属于损耗型的耗材直接进行数量扣减,该部分使用量在此报表中查看和进行数据导出。
  3. 治具入库分析ZP30:治具入系统资料分为人工手动录入和通过ERP系统进行数据对接直接抛转到此系统,改报表可以用于查看治具类型ERP抛转明细
  4. 耗材入库分析ZP50:耗材入系统资料分为人工手动录入和通过ERP系统进行数据对接直接抛转到此系统,改报表可以用于查看耗材类型ERP抛转明细
  5. 顶针治具交易记录:系统单支治具出库交易详细信息界面,可以通过特定条件进行筛选和导出顶针治具交易清单数据。
  6. 批次治具交易记录: 批次治具领用退库申请单进行出库记录查询明细,可以通过特定条件进行筛选和导出批次治具交易清单数据。
  7. 耗材入库明细
  8. 耗材仓调拨明细
  9. 耗材库存交易报表
  10. 耗材领用转嫁明细表
  11. 设备状态看板

2.2.9 首页管理模块功能需求分析

  1. 账号登入:输入在系统维护模块中的账号设定中添加的账号和密码登入系统。
  2. 修改密码:账号登入后点击修改密码可以更改IEMS智能管理系统的登入密码。
  3. 账号登出:点击登出后实现安全退出。

2.3 数据流程分析

数据流图是描绘系统逻辑模型的图像工具,它描述了系统的组成部分及各部分的联系,以及信息流和数据转换。
EMS智能管理系统首先由管理员将工厂基础信息通过系统管理模块提供的资料维护功能录入数据库;然后用户在申请系统管理员为其建立系统账号之后即可进入所开对应权限模块进行操作,不同部门具有不同权限模块,之后即可录入数据,操作数据。管理员每天都会处理用户需求下达的新用户建立和权限分类,新功能需求,并予以执行。本系统的管理员与用户间数据流程如图2-3-1所示。

在这里插入图片描述
图2-3-1 管理员与用户间数据流程图
对于系统销售模块来说,主要的数据由买家输入,主要包括注册信息、登录信息、选购商品信息的输入,输出的则是订单信息。对于系统管理模块来说,主要的数据由卖家输入,主要包括商品信息、新闻信息的输入,输出的则是系统销售模块所看到的所有信息。总体数据流程如图2-2所示。

第3章 系统设计

本章节的总体目标是将上一章节需求分析阶段得到的目标系统的逻辑模型,变换为目标系统的物理模型,具体将从系统的结构设计和数据库的设计两方面进行讲解。简单的说就是根据上一章节中需求分析的”做什么”,确定系统应该”怎么做”。

3.1 总体结构设计

系统结构和功能是系统设计的核心部分,通过系统结构图可以清楚的看出整个系统的结构。针对每个结构模块分别做分析,为以后的设计和实现打下基础。根据功能需求,本系统总体上系统管理模块和用户使用操作模块,用户使用操作模块功能供各模块使用者使用,系统管理模块功能供管理员使用。系统总体结构如图3-1所示。
在这里插入图片描述

图3-1总体结构设计图

3.2 模块功能设计

本系统分系统管理模块和用户使用模块,每个模块又有若干个子模块构成,其中系统管理模块主要包括:厂区设定、线别设定、账号设定、行事历设定、群组权限设定、部门设定、职称设定、语系设定、工作中心、参数设定、服务器设定、邮件格式设定等子模块。用户使用模块主要包括:设备治具管理、耗材管理、库存物料管理、库位设定、批次治具管理等子模块。具体的模块功能设计如下。

3.2.1 系统管理模块

系统管理模块主要用于系统管理员对系统进行基础资料维护和管理使用者账号和权限的功能。
系统管理模块的结构如图3-2-1
在这里插入图片描述
图3-2-1系统管理模块的结构图

3.2.2 用户使用模块

用户使用模块主要是用于设备治具管理、耗材管理、库存物料管理、库位设定、批次治具管理,报表查看的功能。
用户使用模块的结构如图3-2-2
在这里插入图片描述
图3-2-2用户使用模块结构图

3.3 数据库设计

系统分析结束后进入设计阶段,抽象地分析数据,理解数据之间的关系,建立E-R模型,然后对数据库进行概念结构设计和逻辑结构设计。由于由于公司是工厂性质数据量比较大,在处理大数据方面Oracle会更稳定一些,Oracle提供了新的分布式数据库能力。可通过网络较方便地读写远端数据库里的数据,并有对称复制的技术,Oracle的安全机制比Sql server好,所以本系统采用了Oracle19C进行数据库的存储管理与维护。

3.3.1 概念结构设计

将需求分析得到的用户需求抽象为信息结构即概念结构设计,这一步是数据库设计的关键。一般采用自底向上的方法进行数据抽象和结构设计。在本系统中涉及到的实体如下所示:

  1. 厂区设定(厂区ID、厂区代码、厂区名称、厂区英文名称、区域代码、MES厂别代码、损耗管理人)
  2. 线别设定(线别ID、线别代码、车间、区域、线别名称、所属厂区、线长)
  3. 账号设定(使用者ID、登录账号、登录密码、姓名、信箱、英文姓名、部门、职称、直属主管、代理人、员工工号、权限群组、厂区(对应厂区ID))
  4. 邮件资料服务器(服务器ID、厂区、PROT、寄件者、寄件者mail、账号、是否启用SSL、是否启用)
  5. 邮件资料格式设定(格式设定ID、格式类型、邮件住址、所属厂区)
  6. 群组权限(群组ID、群组名称、群组名称(英)、群组类别、类别)
  7. 部门设定(部门ID、部门名称、部门名称英、成本中心、部门描述)
  8. 职称设定(职称ID、职称名称中、职称名称英)
  9. 语系设定(语系ID、语系代码、语系名称、语系名称英)
  10. 工作中心(工作中心ID、工作中心、描述、控制键值、部门、负责人)
  11. 参数设定(参数ID、参数名称、参数名称英、参数值、备注、参数项目、更新时间)
  12. 行事历设定(事历ID、厂区名称、年度名称)
  13. 仓库设定(仓库ID、仓库代码、SAP代码、仓库名称中、仓库名称英、库管员、仓库类别、仓库状态、所属厂区)
  14. 设备治具入库(ID、入库时间、入库单号、料号、设备治具名称、机种、入库数量、设备治具备注、仓库名称、入库人、供应商名称、费用属性、)
  15. 设备治具出库\退库申请单(ID、领用/退库单号、厂区、领用/退库部门、领用/退库申请人、创建时间、领用/退库原因、备注)
  16. 设备治具出库\退库(ID、领用/退库单号、厂区、领用/退库部门、领用/退库申请人、创建时间、领用/退库原因、备注、操作)
  17. 库存盘点(ID、编号、名称、盘点日期、备注、操作)
  18. 料号设定(ID、料号、料号描述、类别、不良群组、库位、安全库存数、更新时间)
  19. BOM设定(ID、BOM料号、物料描述、生效日期)
  20. 设备治具资讯管理资讯维护(ID、MES编号、物料编号、设备序号、设备名称、线别、状态、保管编号、不良群组、维修责任组、财产编号、工作中心、WBS编号、最大可生产数、已生产数)
  21. 设备治具资料查询(ID,治具编码、财产编号、料号、流水号、设备管理编号、设备治具名称)
  22. 厂商资料(ID、厂商名称、厂商名称英、产地)
  23. 机种查询(ID,机种名)
  24. 设备治具类别(ID、编号、类别名称、类别名称英)
  25. 保养项目(ID、项目编号、项目描述、工作中心、保养责任组、保养策略)
  26. 保养计划(计划ID、计划名称、料号、周期、预计工时、是否设置闲置、备注)
  27. 计数点(ID、计数点编码、计数点描述、功能区域、设备编号、MES编号、设备名称、年度预估使用量、上周保养总计数)
  28. 计划查询(计划ID、计划名称、料号、周期、预计工时、是否设置闲置、备注、形态)
  29. 项目查询(项目ID、项目内容中、项目规格中、项目内容英、项目规格英、类别、结果形态、项目形态)
  30. 已保养案查询(保养单号、设备编号、设备管理编号、设备名称、厂商、型号、线长、预定日期、计划名称、周期、保养总次数、要求保养日期、完成保养日、超过天数、目前状态)
  31. 启动保养单(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
  32. 保养单领料(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
  33. 保养单退料(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
  34. 保养单报工(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
  35. 保养单结案(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
  36. 设备点检模板维护(ID、版本号、模板名称、文件名称、创建人、创建日期、更新人、更新日期)
  37. 设备点检数据导入导出(ID、点检单号、模板名称、机台号、厂别、创建人、创建日期、修改人、修改日期)
  38. 设备项目不良群组(ID、群组名称、下级群组、群组层级、群组描述、更新时间)
  39. 故障现象分类(ID、故障现象编码、故障现象描述、故障群组、现象类型)
  40. 故障原因分类(ID、故障原因、故障原因英)
  41. 故障处理分类(ID、故障处理、故障处理英)
  42. 临时叫修看板(ID、临时叫修单号、设备ID、线别ID、制程ID、站点ID、不良类别、不良现象描述、临时叫修时间、状态、判定备注、判定人、判定时间、EMS叫修单号、删除标记、厂别ID)
  43. 故障叫修(ID、叫修单号、叫修类别、厂别ID、线别ID、叫修位置、叫修人、叫修时间、叫修处理结束时间、维修等待时间、状态、是否邮件通知、更新者、更新时间、不良现象类型、设备ID、不良现象ID、不良现象补充)
  44. 维修资料表(起修/工时回报/结案)(ID、叫修单号、起修单号、起修者、起修时间、工时回报者、工时回报时间、工时、结案者、结案时间、状态 、是否邮件通知、备注、更新者、更新时间、维修责任群组ID、维修工作中心)
  45. 维修记录(ID、起修/维修单号、设备ID、记录序号、维修部位、维修方式、故障原因、维修内容、维修结果、维修对策、外包PO、维修人员ID、维修工作中心、资料更新者、资料更新时间)
  46. 维修附加材料表(ID、维修单号、料号编码、单位、数量、库位、更新者、更新时间)
  47. 耗材入库/耗材清单(ID、入库单号、料号、料号描述、订单号、成本中心、成本中心描述、入库库位、入库数量、单位、厂区、更新人、更新时间、物料状态、备注)
  48. 耗材领用/退库申请单(出库)(ID、领用/退库单号、厂区、领用退库部门、领用退库人、创建时间、状态、发送状态、发送人、审核状态、审核进度)
  49. 批次治具入库/批次治具清单(ID、入库单号、料号、料号描述、机种名称、订单号、成本中心、成本中心描述、入库库位、入库数量、单位、厂区、更新人、更新时间、物料状态、备注)
  50. 批次治具领用/退库申请单(出库)(ID、领用/退库单号、厂区、领用退库部门、领用退库人、创建时间、状态、发送状态、发送人、审核状态、审核进度)

在该系统中,各个实体的关系为:一个管理员可同时管理厂区设定、线别设定、账号设定、邮件资料服务器、邮件资料格式设定、群组权限等多个实体对象,并且它们之间都是一对多的关系;一个账号实体可以对应多个群组权限实体,一个群组权限实体对应多个用户操作模块实体;一个耗材领用单/批次治具领用单大类信息拥有若干料号信息实体和机种信息实体,而一个料号实体信息又拥有多个不良群组类别实体。

3.3.2 逻辑结构设计

系统数据库设计的优劣直接影响到以后网站与数据连接的速度和更新查询的复杂度。本节介绍本系统基于关系数据库的数据库总体结构设计及数据表的设计。
本系统的数据库设计是在系统功能分析后,依据系统的需求目标而做出的设计。本系统为基于ASP.NET的EMS智能管理系统,所以最重要的数据表就是存放群组权限信息数据表、注册用户信息表、设备治具信息表、耗材信息表、维修信息表、保养信息表、库位信息表、申请单信息表等,表3-3-2为本系统所涉及到的重要数据表。
表3-3-2数据表列表

表名 主要属性
ACCOUNT 注册用户信息表 (使用者ID、登录账号、登录密码、姓名、信箱、英文姓名、部门、职称、直属主管、代理人、员工工号、权限群组、厂区(对应厂区ID))
ACCOUNTGROUP 群组权限信息数据表(群组ID、群组名称、群组名称(英)、群组类别、类别)
G_SUP_IN_STORE 耗材信息表(ID、入库单号、料号、料号描述、订单号、成本中心、成本中心描述、入库库位、入库数量、单位、厂区、更新人、更新时间、物料状态、备注)
MACHINE 设备治具信息表(ID、入库时间、入库单号、料号、设备治具名称、机种、入库数量、设备治具备注、仓库名称、入库人、供应商名称、费用属性、)
EMS_R_BEGIN 维修信息表 (起修/工时回报/结案)(ID、叫修单号、起修单号、起修者、起修时间、工时回报者、工时回报时间、工时、结案者、结案时间、状态 、是否邮件通知、备注、更新者、更新时间、维修责任群组ID、维修工作中心)
EMS_M_DOC_HEAD 保养信息表(ID、保养单号、厂别、工作中心、线体名称、计划开始时间、计划结束时间)
STORE 库位信息表(仓库ID、仓库代码、SAP代码、仓库名称中、仓库名称英、库管员、仓库类别、仓库状态、所属厂区)
G_OUT_STORE_DETAIL 设备治具申请单信息表(ID、领用/退库单号、厂区、领用/退库部门、领用/退库申请人、创建时间、领用/退库原因、备注)
G_BAT_TOOLING_OUT_STORE_DETAIL 批次治具申请单信息表(ID、领用/退库单号、厂区、领用退库部门、领用退库人、创建时间、状态、发送状态、发送人、审核状态、审核进度)
G_SUP_USE_ORDER 耗材申请单信息表 (ID、领用/退库单号、厂区、领用退库部门、领用退库人、创建时间、状态、发送状态、发送人、审核状态、审核进度)

3.3.3 数据表详细设计

各个数据表之间主键和外键之间存在某种关系,他们的对应关系一般是用户ID、群组权限ID、料号ID、机种ID、申请ID、保养ID、维修ID、设备ID、治具ID、耗材ID等各个元素的主键相链接的,关系图如图3-3-3所示。

在这里插入图片描述

第4章 系统实现

总体设计阶段完成了软件的结构设计,划分了模块,并规定了各个模块的功能及他们之间的联系。在此之后,按软件开发工程化的观点,应进入系统的详细设计阶段,即系统实现。该阶段的根本目标是确定应该怎样实现所要求的系统,给出软件模块结构中各个模块的内部过程描述。本章将分模块对系统的实现给予介绍。

4.1 系统管理模块的实现

系统管理模块主要包括:用户管理、厂区管理、部门管理、线别管理、权限管理、工作中心管理,注销登录等子模块。
在本节中将以系统登录、用户管理和权限管理为例介绍系统管理模块各个子模块的实现过程。

4.1.1 登录模块的实现

为了系统的安全性,系统管理模块必须由成功输入用户信息的用户才能进入,同时在用户成功登录后将其登录信息存入Session会话变量。同时在系统管理模块的非登录页面,当页面第一次加载的时候判断Session中是否存在管理员的登录信息,这样就可防止用户通过在地址栏中直接键入系统管理页面的地址、绕过登录页面直接进入系统管理模块,其中登录模块首页布局如图4-1-1所示。

在这里插入图片描述
本模块在登录页面输入在用户信息表中的用户名和密码登录系统,点击登出实现安全登出,点击修改密码,修改为最新密码,修改后需重新登入。

4.1.2 用户管理功能的实现

用户管理通过管理员登录系统进行用户账号新增和管理,此块介绍如何新增账号。
新增界面如图4-1-2
在这里插入图片描述
在此模块主要检查新增和修改验证账号是否已经创建,选择的所属群组与账号信息进行绑定,进入各模块进行权限控制。
账号验证的核心代码如下:

新增
      //檢查是否有同名帳號
                if (handler.AccountExist(model.Account1))
                {
                    ModelState.AddModelError("Account1", "此帳號已存在");
                } 
 修改                
                // 有改帳號名稱,檢查帳號是否重複
            if (model.Account1 != dest.ACCOUNT1)
            {
                if (db.ACCOUNT.Where(x => x.DELETEFLAG == (int)BooleanType.否 && x.ACCOUNT1 == model.Account1).Any())
                {
                    throw new Exception("已有同名帳號,不可重複");
                }
            }

4.1.3 权限管理功能的实现

在EMS智能管理系统中权限管理模块主要进行管理各用户进入各操作模块的权限,在权限模块进行权限群组的划分
新增权限群组界面如图4-1-3
在这里插入图片描述
该模块中关键的设计有两部分:一是权限设定信息二级联动,当管理员选择权限大类信息的时候,隶属于该权限大类信息的权限小类信息应该实现绑定;
此绑定权限小类代码如下:

public List<TreeViewItemModel> GetPermissionTreeView(int? groupId)
        {
            var functions = db.FUNCTIONS.Where(x => x.FUNCTIONTYPE == (int)FunctionType.Permission && x.VISIBLE == (int)BooleanType.是).OrderBy(x => x.SEQUENCE).AsEnumerable();
            // 該角色可以使用的FunctionID
            var groupFunctions = groupId.HasValue ? GetRolePermission(groupId.Value) : Enumerable.Empty<decimal>();
            var setGroupFunctions = new HashSet<decimal>(groupFunctions);

            var treeNode = new List<TreeViewItemModel>();

            foreach (var f in functions)
            {
                var isChecked = setGroupFunctions.Contains(f.ID);
                var itemModel = new TreeViewItemModel
                {
                    Id = f.ID.ToString(),
                    Checked = isChecked,
                };

                if (f.LEVEL1 != null && f.LEVEL2 == null && f.LEVEL3 == null && f.LEVEL4 == null)
                {
                    itemModel.Text = f.LEVEL1;
                    treeNode.Add(itemModel);
                }
                else if (f.LEVEL1 != null && f.LEVEL2 != null && f.LEVEL3 == null && f.LEVEL4 == null)
                {
                    itemModel.Text = f.LEVEL2;
                    var node = treeNode.First(x => x.Text == f.LEVEL1);
                    node.Items.Add(itemModel);
                    node.HasChildren = true;
                }
                else if (f.LEVEL1 != null && f.LEVEL2 != null && f.LEVEL3 != null && f.LEVEL4 == null)
                {
                    itemModel.Text = f.LEVEL3;
                    var node = treeNode.First(x => x.Text == f.LEVEL1).Items.First(x => x.Text == f.LEVEL2);
                    node.Items.Add(itemModel);
                    node.HasChildren = true;
                }
                else if (f.LEVEL1 != null && f.LEVEL2 != null && f.LEVEL3 != null && f.LEVEL4 != null)
                {
                    itemModel.Text = f.LEVEL4;
                    var node = treeNode.First(x => x.Text == f.LEVEL1).Items.First(x => x.Text == f.LEVEL2).Items.First(x => x.Text == f.LEVEL3);
                    node.Items.Add(itemModel);
                    node.HasChildren = true;
                }
            }

            TreeGlobalization(treeNode);

            return treeNode;
        }

4.2 系统用户操作模块的实现

系统用户操作模块主要包括:耗材管理、设备管理、治具管理、批次治具管理、保养管理、维修管理,仓库管理等子模块。
在本节中将以仓库管理、设备管理、维修管理为例介绍系统管理模块各个子模块的实现过程。

4.2.1 仓库管理功能的实现

仓库管理模块主要进行新增修改库位信息和物料维护添加料号信息和BOM信息,其目的是在其他用户使用的模块会使用到此界面添加的库位和物料信息此模块以仓库设定为例介绍界面和实现
新增库位界面如图4-2-1
在这里插入图片描述
本模块主要应用了界面数据和数据库的数据交互,实现数据的存储和更新。

4.2.2 设备管理功能的实现

设备管理模块主要进行设备资料维护生成设备对应的设备编码,绑定设备的部门信息和保管人等信息,以便后期进行设备保养和维修及其库位设备盘点时使用。
新增设备入系统界面如图4-2-2
在这里插入图片描述
本模块关键的设计有两部分主要一部分设备编码由系统自己产生,按照用户给定的规则产生设备编码,另一部分 应用了界面数据和数据库的数据交互,实现数据的存储和更新。
产生设备编码的代码如下:

   private string GetCustodyNo()
        {
            Entities entiry = new Entities();
            var obj = new System.Data.Entity.Core.Objects.ObjectParameter("TRES", typeof(string));
            int count = entiry.SJ_GET_MACHINECODES4(UserSession.Plant.Id, 1, obj);
            return obj.Value.ToString();
        }

4.2.3 维修管理功能的实现

维修管理模块主要进行设备叫修、设备起修、维修记录、维修报工、维修发料、维修退料的主要功能和其他功能,主要对设备进行维修再使用的管理系模块。此模块以设备叫修为例介绍界面和功能实现
新增设备故障叫修界面如图4-2-3
在这里插入图片描述
图4-2-3新增设备故障叫修
本模块关键的设计有两部分主要一部分设备编码输入后,点击回车带出设备名称,不良现象和设备编码也是二级联动关系,另一部分可以实现多设备编号和多不良现象进行添加,添加显示在临时grid中。
关键代码如下:
在这里插入图片描述
在这里插入图片描述

4.3 实现效果评价

本系统的最初设计思路是:将系统分为系统管理模块和用户使用模块。其中系统管理模块的功能由系统管理员使用,可以进行各工厂配置基础信息、用户信息、管理用户权限等。用户使用模块主要是公司各部门员工使用设备治具管理、耗材管理、库存物料管理、库位设定、批次治具管理等模块,将以往的工作进行系统化工作。
根据目前系统完成的情况,大部分的功能均已实现。但是部分功能尚待修改,比如设备维修模块的维修功能,目前只实现了基础的设备叫修功能到维修结束的功能,后期需要完善为设备进行连线自动进行叫修和实时更新设备状态,并用邮件及其智能设备提醒到对应的保养和维修的关键人员,并为该系统增加了部分必要的功能,例如设备保养和设备维修模开发年度绩效看板等的功能。
系统开发过程中遇到的问题主要有:1.日期和字符串装换问题,在做设备维修和保养的时候都需要进行时间差计算,由于使用参数问题传值导致无法直接进行时间差计算。解决方法是进行时间转换后再进行时间差公式相减后得出值。2.动态页面中加入静态的控件,导致不能成功获取所需的信息;忽略了每次向服务器提交请求后客户端页面都将重新加载的情况,以致无法将预期的数据提交到服务器。解决方法是通过在页面后台代码中加入断点、单步调试最终找出了问题的所在,也就是在该问题的解决过程中,作者认识到了调试方法的重要性。

总结

本系统较完整的实现了基于ASP.NET的EMS智能管理系统的基本功能。完成了最初系统管理模块以建立系统基本资料、管理用户和模块权限为主要功能、用户表使用管理模块以商品信息管理为主要功能的初衷。另外,本系统也实现了购物过程发生前期的各种资源(例如商品信息、商品类别信息、会员信息等)的管理以及后期的订单记录的查询。
从本系统的开发过程中,我受益匪浅。首先,我认识到了代码规范的重要性,特别是在一些大型项目中,用到的函数可能有数百个,如果编写的代码不规范会给后期的检查带来极大的麻烦。而且完整的代码测试也非常重要,有些错误可能在很久以后才能发现。其次,我意识到了软件设计的重要性,原来接触的项目往往是快速开发类型的,几乎不需要在软件的逻辑设计上花费太多时间,往往可以边开发边进行下一步的设计。但是这一次我意识到做软件设计很重要,当初一个设计没注意,可能造成后来的编码大面积的返工。最后就是调试方法的重要性,系统的调试过程要比开发过程繁琐的多。每个操作、每次向服务器提交请求,其实都包括了很多小段代码的执行,如果不能够采用正确的调试方法,就很难找出程序中的错误。
系统开发过程中主要遇到了下列问题:忽略了每次向服务器提交请求后客户端页面都将重新加载的情况,以致无法将预期的数据提交到服务器。
与当今市场上已有的系统相比,本系统没有做到像它们一样适合各种各样的用户,而只是适合小型企业用户,适用范围较为局限,这是本系统的有待改进之处。

猜你喜欢

转载自blog.csdn.net/caoguanghui0804/article/details/110919286
今日推荐