版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MES订单管理系统开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业生产系统中订单管理系统开发案例的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;然后根据功能点之间的逻辑关系,使用Modelfirst工具绘制数据库表之间的ER关系图。再根据每一个功能点,绘制对应的功能界面以及使用VisualStudio2019开发工具补充对应的后台逻辑,最后形成一个完整的订单管理系统功能。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识和专业技能解决实际问题的能力,强化课堂教学与实践教学相结合,锻炼学生的职业能力。二、实训准备1、掌握C#编程开发技能。2、了解工业生产系统工艺路线、工单等相关的业务知识。3、事先学习基于SIE开发包的单表、主从表的开发课程。4、安装好实训开发环境,下载实训工程源代码。三、实训环境Windows10操作系统、Visual
Studio2019开发工具安装、安装ODAC、安装Oracle客户端、安装PLSQL、安装EAP.Modelfirst四、实训步骤详细开发步骤本实训让学生体验一个完整项目从设计到开发的全过程,包括系统的需求分析到功能设计、数据库设计、页面设计、及功能实现等。通过本指导书展开详细的开发步骤。任务一:订单管理系统的实体建模和项目启动双击打开ModelFirst工具,右边的项目总管的命名层级与VS解决方案的项目工程一致,见图1-1。图1-1ModelFirst工具项目总管MES订单管理系统的八张表的建模以及之间的关系如下:物料表以及枚举类、之间的关系UML建模如图1-2,目录层级如图1-3工序表以及枚举类、之间的关系UML建模如图1-4,目录层级如图1-5工艺路线表相关的UML建模如图1-6,目录层级如图1-7工单表相关的UML建模如图1-8,目录层级如图1-9附加子表-工艺路线UML建模如右图1-10,目录层级同1-9附加子表-报工记录UML建模如右图1-11,目录层级同1-9附加子表-工单状态日志UML建模如右图1-12,目录层级同1-9附加子表-任务单列表UML建模如右图1-13,目录层级同1-9图1-2物料表UML建模 图1-3物料表建模目录层级图1-4工序表UML建模 图1-5工序表建模目录层级图1-6工艺路线表UML建模 图1-7工艺路线建模目录层级图1-8工单表UML建模图1-10附加子表-工艺路线UML建模 图1-9工单建模目录层级图1-11附加子表-报工记录UML建模图1-12附加子表-工单状态日志UML建模图1-13附加子表-任务单列表UML建模MES订单管理系统代码生成:实体类代码生成:鼠标右键选中需要生成代码的实体类,点击生成代码(图1-14),在弹窗中选中2018下面的模板(Entity.mft和WebViewConfig.mft),点击“Generate”生成代码即可生成完毕(图1-15)枚举类代码生成:鼠标右键选中需要生成代码的枚举类,点击生成代码(图1-16)。在弹窗中选中2018下面的模板(Entity.mft),点击“Generate”生成代码即可生成完毕(1-17)图1-14实体类代码生成 图1-15实体类代码生成选择的模板图1-16枚举类代码生成 图1-17枚举类代码生成选择的模板将生成的代码放入指定文件夹,并解决报错:将生成的”实体类.cs”文件连同文件夹(实体类s)一起放在SIE.Demo工程下面,并且在”实体类s”文件夹下创建Enum文件夹,并把生成的枚举类放入其中。将生成的”实体类ViewConfig.cs”文件连同文件夹(实体类s)一起放在SIE.Web.Demo工程下面。点击SIE.Demo工程下的”实体类s”文件夹下的”实体类.cs”,导入枚举类相关的包、DataEntity相关的包从而解决报错。注意:上述代码生成会产生四个文件夹(Items、Processes、ProcessRoutes、WorkOrders),其中工单和其附加子表都放在WorkOrders文件夹中。配置视图以及代码段添加字段:物料表:点击物料表的视图类ItemViewConfig.cs,配置列表视图和下拉视图见1-18,并且在物料表实体类Item.cs的类上加上”[DisplayMember(nameof(Code))]”标记,从而实现下拉物料回显物料编码。工序表:点击工序视图类ProcessViewConfig.cs,配置列表视图和下拉视图见1-19,并且在工序表实体类Process.cs类中加上”[DisplayMember(nameof(Name))]”标记,从而实现下拉工序回显工序名称。工艺路线表:点击工艺路线实体类ProcessRoute.cs,通过代码段(PFViewProperty)添加”产品名称”视图属性由Item.Name带出(见图1-20)。然后点击工艺路线表视图类ProcessRouteViewConfig.cs,配置列表视图(见图1-21)。工单表:点击工单实体类WorkOrder.cs,通过代码段(PFViewProperty)添加”产品名称”视图属性由Item.Name带出(可以参考图1-20)。然后点击工单视图类WorkOrderViewConfig.cs,在配置列表视图中添加Item的下拉编辑器带出产品名称,同图1-21中的红色标注部分。修改附加子表与父表的关系:将工单的附加子表(OrderRoute.cs、ReportingJournal.cs、TaskList.cs、WorkJournal.cs)实体类中的工单外键(WorkOrder)的WorkOrderIdProperty属性的ReferenceType从Normal(一般外键引用)改成Parent(父实体的引用),见图1-22。附加子表添加字段:在OrderRoute.cs实体类中通过代码段(PFProperty)添加两个string类型的字段(图1-23),并配置不映射数据库(图1-24);在WorkJournal.cs实体类中通过代码段(PFProperty)添加一个工单状态的枚举字段,名为”改变后工单状态”见图1-25;在TaskList.cs实体类中通过代码段(PFViewProperty)添加string类型的视图属性”ProcessName工序名称”,由工序外键带出(见图1-26),并添加员工表(SIE.Common.Employees.Employee)外键。然后添加一些报工需要的字段(见图1-27),配置上述员工外键和报工字段(图1-27中的所有字段)不映射数据库。配置附加子表的列表视图:配置WorkJournalViewConfig.cs视图类的列表视图(图1-28);配置ReportingJournalViewConfig.cs视图类的列表视图(图1-29);配置TaskListViewConfig.cs视图类的列表视图(图1-30)配置初始菜单,并启动项目生成数据库:在SIE.Web.Demo的DemoUiModule.cs中配置初始菜单(见图1-31),运行项目找到菜单功能,配置菜单,并点击实体元数据(数据字典)生成数据库。做完上述第一个任务就完成了,下面就进入到了每个功能的细化开发了。图1-18物料表配置列表视图(左)、配置下拉视图(右)图1-19工序表配置列表视图(左)、配置下拉视图(右)图1-20工艺路线实体类添加视图属性 图1-21工艺路线配置列表视图图1-22改变工单的四个附加子表中的工单外键关系 图1-24字段不映射数据库图1-23OrderRoute.cs实体类中通过代码段添加字段 图1-25WorkJournal.cs类中添加的枚举字段图1-26TaskList.cs类中代码段添加的视图属性 图1-27TaskList.cs类中代码段添加的报工字段图1-28WorkJournalViewConfig.cs类列表视图 图1-29ReportingJournalViewConfig.cs类列表视图图1-30TaskListViewConfig.cs类列表视图 图1-31在DemoUiModule.cs类中配置初始菜单任务二:物料表的开发启用禁用的实现:点击Item.cs类,在类中使用代码段(PFProperty)添加”State状态”字段,这个字段类型是SIE.Domain.State下的枚举类(见图2-1)。在Item.cs类中,实现IStateEntity接口(SIE.Domain.IStateEntity)图2-1Item.cs类中通过代码段添加的”状态”字段字段的校验:被引用不允许删除的校验:在SIE.Demo项目的Items文件夹下面创建一个物料规则校验类(ItemRule.cs),该类继承:NoReferencedRule<T>,泛型T指定为我们的Item实体类(代码见图2-2)。标准规则进行校验:在Item.cs类中的ItemConfig类下面重写AddValidations,在重写的方法内进行标准规则校验,具体见图2-3图2-2ItemRule.cs类被引用不允许删除 图2-3Item.cs实体类的参数校验重写查询实现模糊查询:见重写查询专栏重写添加命令给物料赋初值(可用):在SIE.Web.Demo的Items文件夹下创建Commands文件夹,在Commands文件夹下面创建添加命令的js类。命名规范:命令名称+类名.js。然后鼠标右键这个命令,点击属性->生成操作->嵌入的资源。重写的添加命令(见图2-4)在ItemViewConfig.cs中的配置列表视图中替换框架的添加命令为我们刚刚创建的添加命令(见图2-5)图2-4重写Item表的添加命令图2-5替换掉框架默认的添加命令任务三:工序表的开发字段的校验被引用不允许删除的校验:在SIE.Demo项目的Processes文件夹下面创建一个工序规则校验类(ProcessRule.cs),该类继承:NoReferencedRule<T>,泛型T指定为我们的Process实体类(代码见图3-1)标准规则进行校验:在Process.cs类中的ProcessConfig类下面重写AddValidations方法,在重写的方法内进行标准规则校验,具体见图3-2图3-1ProcessRule.cs类被引用不允许删除 图3-2Process.cs实体类的参数校验重写查询实现模糊查询:见重写查询专栏任务四:工艺路线表的开发字段的校验标准规则进行校验:在ProcessRoute.cs类中的ProcessRouteConfig类下面重写AddValidations方法,在这里面进行标准规则的校验。具体代码见附录”工艺路线标准规则校验”。重写保存命令进行校验:在SIE.Web.Demo工程下的ProcessRoutes文件夹下创建Commands文件夹用于存放命令文件,然后重写保存命令,记得嵌入资源。保存命令的js文件如图4-1,cs文件见附录”工艺路线保存命令cs”,该cs文件所调用的Controller内的方法见图4-2。然后在ProcessRouteViewConfig.cs类中替换框架默认的保存命令为我们刚刚重写的保存命令。图4-1工艺路线保存命令js图4-2工艺路线保存命令后端调用的controller的方法重写查询实现模糊查询:见重写查询专栏任务五:工单相关功能的开发字段的校验点击SIE.Demo模块下的WorkOrders文件夹中的WorkOrder.cs类,在WorkOrderConfig类中下面重写AddValidations方法,具体见附录”工单标准规则校验”。配置项自动生成工单号的实现在SIE.Web.Demo项目的WorkOrders文件夹下创建Commands文件夹在Commands文件夹下面创建添加命令的js类。命名规范:命令名称+类名.js。然后鼠标右键这个命令,点击属性->生成操作->嵌入的资源。命令的js代码见附录”AddWorkOrderCommand.js”在SIE.Demo项目的WorkOrders文件夹下创建WorkOrderController.cs类,该类继承DomainController,并写一个获取工单配置项规则自动生成工单号的方法(GetOrderNumber()方法),如图5-1。在第一步的Commands文件夹下创建一个与第一步的添加命令同名的cs类,该类继承ViewCommand,并重写Excute方法,在Excute方法内调用第二步中的GetOrderNumber()方法获取配置项自动生成的工单号。在SIE.Web.Demo模块中的WorkOrderViewConfig.cs类中的配置列表视图中替换添加命令,注意这里使用typeof指定我们刚刚开发的添加命令的cs类(顺便提醒一下js别忘记了嵌入资源)。记得开启表单编辑模式(View.FormEdit())如图5-2,然后顺便配置一下明细视图,因为表单编辑是走明细视图的。在SIE.Demo模块的WorkOrder.cs类中使用框架自带的配置项生成规则(注意,等项目跑起来了可以在工单页面的配置项中配置工单的生成规则,只要配置好了之后,就可以注释掉这个标记,防止配置项命令出现在工单中)如图5-3在SIE.Web.Demo模块的WorkOrders文件夹中创建Behaviors文件夹,并且创建AddWorkOrderBehavior.js行为,重写:onCreated()方法,并且在WorkOrderViewConfig的配置明细视图中使用该行为。如图5-4、5-5启动项目,在系统自带的配置项功能中配置一下工单号的生成算法。配置完成之后就能在添加工单的时候,在新的tap页中有系统自动生成的工单号了,然后就可以注释掉工单实体类上的那个配置项标记(参考5-3)。图5-1工单controller中获取配置项生成的工单号的方法图5-2WorkOrderViewConfig.cs中使用添加命令图5-3WorkOrder.cs中开启系统配置项规则的标记图5-4在Behaviors文件夹中定义添加工单的行为图5-5在WorkOrderViewConfig的配置明细视图中使用行为工艺路线附加到工单SIE.Demo中的WorkOrders文件夹下创建扩展文件夹(Extention),并在该文件夹下创建工单扩展类(WorkOrderExtention.cs),然后通过代码段(PFPropertyExtensionList)添加附加列表属性。记得在扩展类上加[SIE.ManagedProperty.CompiledPropertyDeclarer]标记。见图5-6在OrderRouteViewConfig.cs类中定义视图常量OrderRouteViewGroup,并且配置该视图(见图5-7)。在工单的视图配置类WorkOrderViewConfig中的配置列表视图和配置明细视图中使用AssociateChildrenProperty属性进行附加子表,其中列表视图要指定视图为OrderRouteViewConfig类下定义的OrderRouteViewGroup视图常量,明细视图不要指定。列表视图的附加如图5-8所示,其中用到的controller的方法见5-9。点击OrderRouteViewConfig.cs类,配置工艺路线附加表的列表视图(见图5-10)。其中用到的controller内的方法见图(5-11)。对附加子表中的属性进行校验:点击OrderRoute.cs类,重写AddValidations方法进行参数校验,代码见附录”附加子表-工艺路线标准规则校验”图5-6工艺路线扩展属性图5-7定义附加子表-工艺路线的视图图5-8工单列表视图-工艺路线附加到工单图5-9上一张图中调用的方法:获取附加子表-工艺路线图5-10配置OrderRouteViewConfig.cs列表视图 图5-11左图中调用的方法工单属性变更事件在之前开发的AddWorkOrderBehavior.js行为中重写onViewReady()方法,注册属性变更事件,并定义实现该事件(图5-12)。当ItemId或者WorkOrderType发生改变触发相应的处理函数,在函数中发送请求获取数据(发送请求需导入myAjax函数,见附录”myAjax”),并映射到页面中(图5-13)。第二步的函数发送请求走的是DataQueryer类,所以我们在SIE.Web.Demo项目下创建DataQuerys文件夹,并创建WorkOrderDataQuery.cs类,该类继承DataQueryer类,并定义第二步中请求接收的方法GetOrderRouteListByArgs,在该方法内我们处理相应业务逻辑(见附录”WorkOrderDataQuery”)。其中该方法调用的controller中的方法附录”ProcessRouteController”。图5-12注册并实现工单的物料和工单类型的属性变更事件图5-13属性变更发送请求并执行回调函数重写工单保存命令为什么重写工单的保存命令:为了实现保存后自动关闭工单页面、并且校验附加的子表-工艺路线是否满足顺序条件、是否满足需求文档上的各种条件。工单保存命令js文件如图5-14。保存命令的cs文件的开发:继承FormSaveCommand,并且类名要和上一步的js文件一致,重写DoSave方法,目的是为了在进行保存的时候给一些字段赋初值,重写Excute方法为了校验子表数据是否满足需求。代码见附件”SaveWorkOrderCommand”。图5-14重写工单保存命令重写工单修改命令需求分析:需求文档上要求只能修改:发放暂停、生产中暂停状态下的工单,并且两种状态的工单能修改的东西是不一样的,因此需要重写修改命令。重写修改命令的canExecute方法,该方法判断中判断工单状态,如果是发放暂停或者是生产中暂停,返回true让按钮亮起,否则则返会false让按钮置灰(图5-15)。在WorkOrderViewConfig的配置明细视图中,根据工单状态设置字段的Readonly属性(如图5-16)。在AddWorkOrderBehavior行为中去除修改生产中暂停的工单的附加子表-工艺路线的操作命令,如图(5-17)。在WorkOrderViewConfig的配置列表视图中使用我们刚刚重写的修改命令。图5-15重写工单修改命令图5-16配置工单明细视图图5-17行为中移除指定视图中的命令工单复制新增的实现重写复制新增命令(继承SIE.cmd.Copy),在_setCopyEntity方法中发送非异步请求(发送请求记得导入附件的”myAjax”函数)到后端获取一个配置项自动生成的工单号,并给一些字段赋初值(代码见附件”CopyWorkOrderCommand”)。注意:CopyWorkOrderCommand中发送请求给WorkOrderDataQuery中的GetOrderNumber方法,源码见附件”WorkOrderDataQuery”。解决一个很奇怪的bug:在AddWorkOrderBehavior里面重写onDataLoaded方法,该方法会在view数据加载后执行,在该方法内判断view.getCurrent()[0]的工单状态是否和view.getCurrent().data的工单状态相同,不相同则把工单状态设置为4(发放暂停)。Bug复现:复制新增一笔工单,然后暂停工单(后面会开发),再去修改工单(比如修改一下计划数量),点击保存之后,工单状态会变成发放。Bug产生的原因当作小练习,第三步只是避免这个bug的一种方式。工单数据导入的实现在工单的Commands文件夹下创建一个导入命令的js类(图5-18)并嵌入资源,再创建一个cs类(如图5-19),两个类的名字一定要相同。在后端的WorkOrders文件夹下创建WorkOrderImportHandle.cs类,实现IDisposable,IBusinessImport接口,并且加上[Services.Service(FallbackType=typeof(WorkOrderImportHandle),ServiceLifeStyle=Services.ServiceLifeStyle.Transient)]标记。代码见附件”WorkOrderImportHandle”,里面注释写的比较清晰。在WorkOrderViewConfig中重写ConfigImportView方法,配置导入模板的表头。在WorkOrderViewConfig的配置列表视图中使用我们重写的导入命令。图5-18重写工单导入命令js图5-19重写工单导入命令cs查看工单的实现在工单的Commands文件夹下面创建一个WatchWorkOrderCommand命令,继承修改命令,重写showView,在showView方法内配置视图组(图5-20)。在WorkOrderViewConfig中定义、授权、使用、配置查看工单的视图组(图5-21),工单的视图配置类见附件”WorkOrderViewConfig”。在WorkOrderViewConfig的配置列表视图中使用我们刚刚开发的查看工单命令。图5-20查看工单命令图5-21定义、授权查看工单视图组工单状态日志附加到工单点击后端WorkOrders文件夹下的Extention文件下的WorkOrderExtention.cs类,代码段(PFPropertyExtensionList)添加工单日志的扩展列表属性(图5-22)。将工单状态日志附加到查看工单视图:点击工单视图配置类WorkOrderViewConfig,在WatchWorkOrderView方法内将工单操作日志附加上去(图5-23),附加内调用的WorkOrderController见附件”WorkOrderController”。图5-22工单状态日志扩展列表属性图5-23工单状态日志附加到工单的查看工单视图暂停工单的实现在WorkOrder实体类中用代码段(PFProperty)添加两个string类型的字段Reason(原因)、IsPause(是否暂停),并且配置不映射数据库。在工单的Commands文件夹下创建命令PauseWorkOrderCommand.js,继承修改命令,重写canExecute判断什么状态的工单可以暂停,重写setDialogAttribute方法设置弹窗大小,重写showView弹框处理后续逻辑。代码见附件”PauseWorkOrderCommand”。补充说明:PauseWorkOrderCommand.js中的saveWorkOrderJournal_1方法发送了请求到WorkOrderDataQuery,在WorkOrderDataQuery中调用了WorkOrderController中的方法,具体见附件”WorkOrderDataQuery”和”WorkOrderController”。在WorkOrderViewConfig的配置列表视图中使用上述开发的命令,记得嵌入资源哦。在工单视图配置类WorkOrderViewConfig中定义并授权暂停弹窗命令中使用的视图组PurchaseOrderView,图5-21中可以看到。然后配置一下上述视图(见图5-24)图5-24配置暂停工单的弹窗视图(后续恢复和强制关闭也是走这个视图)恢复工单的实现在工单的Commands文件夹下创建命令WorkOrderLaunchCommand.js,继承修改命令,重写canExecute判断什么状态的工单可以恢复,重写setDialogAttribute设置弹窗大小,重写showView弹框处理后续逻辑。代码见附件”WorkOrderLaunchCommand”。在WorkOrderViewConfig的配置列表视图中使用上述开发的命令,记得嵌入资源哦。该命令实现步骤类似暂停工单,可去暂停工单的实现查看。强制关闭工单的实现在工单的Commands文件夹下创建命令ShutWorkOrderCommand.js,继承修改命令,重写canExecute判断什么状态的工单可以关闭,重写setDialogAttribute设置弹窗大小,重写showView弹框处理后续逻辑。代码见附件”ShutWorkOrderCommand”。在WorkOrderViewConfig的配置列表视图中使用上述开发的命令,记得嵌入资源哦。该命令实现步骤类似暂停工单,可去暂停工单的实现查看。附加任务单列表到工单打开后端的WorkOrders文件夹下的Extention文件夹的WorkOrderExtention.cs类,添加任务单列表扩展列表属性(代码段:PFPropertyExtensionList)见图5-25。打开WorkOrderViewConfig,在工单的配置列表视图中附加任务单列表(图5-26),其中调用的WorkOrderController中的方法参考附件,注意,列表视图请把工艺路线放前面,不然复制新增命令复制不到工艺路线。图5-25附加子表-任务单列表扩展属性图5-26任务单列表附加到工单列表视图中附加报工记录到工单打开后端的WorkOrders文件夹下的Extention文件夹的WorkOrderExtention.cs类,添加报工记录扩展列表属性(代码段:PFPropertyExtensionList)见图5-27。打开WorkOrderViewConfig,在工单的配置列表视图中附加报工记录(图5-28),其中调用的WorkOrderController中的方法参考附件,注意,列表视图请把工艺路线放前面,不然复制新增命令复制不到工艺路线。图5-27附加子表-报工记录扩展属性图5-28报工记录附加到工单列表视图中生成任务单的实现在工单的Commands文件夹下创建GenerateTaskCommand.js,并嵌入资源。继承编辑命令,重写canExecute判断工单是否生成过任务单,重写showView方法处理确认之后的回调逻辑,具体代码见附件”GenerateTaskCommand”。补充:在GenerateTaskCommand.js中调用了WorkOrderDataQuery中的GenerateTaskList方法,GenerateTaskList方法调用了WorkOrderController的GenerateTaskList方法,这几个文件之前已经给过了,见附录。在WorkOrderViewConfig中的配置列表视图中使用刚刚开发的生成任务单命令。下达功能的实现需求说明:点击没有生成过任务单的工单,生成任务单按钮亮起,点击生成任务单按钮弹出对话框询问是否确认,点击确认则按该工单的工艺路线来生成任务单,任务数量与工单计划数量一致,并且进行派工(工号为SMDC的员工)在工单的Commands文件夹下创建ReleaseTaskCommand.js文件,并嵌入资源。继承编辑命令,重写canExecute判断工单是否生成过任务单,重写showView方法处理确认之后的回调逻辑。源码见附录”ReleaseTaskCommand”。补充:在ReleaseTaskCommand.js中调用了WorkOrderDataQuery中的GenTaskAndExpatriateMDC方法,GenTaskAndExpatriateMDC方法调用了WorkOrderController的GenTaskAndExpatriateMDC方法,这几个文件之前已经给过了,见附录。在WorkOrderViewConfig中的配置列表视图中使用刚刚开发的下达命令,然后启动项目测试效果。派工功能的实现需求说明:点击状态为待派工的任务单,派工按钮亮起。点击派工,弹出弹窗下拉选择员工,然后点击确定则成功派工,派工之后要改变任务单状态、记录任务执行对象。在工单的Commands文件夹下创建ExpatriateTaskListCommand.js文件,并嵌入资源。继承编辑命令,重写canExecute方法判断工单是否生成过任务单,重写showView方法处理确认之后的回调逻辑,重写setDialogAttribute方法设置弹窗大小。源码见附录中的”ExpatriateTaskListCommand”文件。补充:在ExpatriateTaskListCommand.js中调用了WorkOrderDataQuery中的DoExpatriate方法,DoExpatriate方法调用了WorkOrderController的DoExpatriate方法,这几个文件之前已经给过了,见附录。在TaskListViewConfig.cs中的配置列表视图中使用刚刚开发的派工命令。在TaskListViewConfig中的定义派工视图,并授权和配置派工视图。具体可以见图5-29、5-30。图5-29定义任务单列表中的派工视图图5-30配置任务单列表中的派工视图报工功能的实现需求说明:点击状态为发放或生产中的工单下的状态为已派工、执行中的任务单,报工按钮亮起。点击报工,弹出弹窗显示一些数量,并且可用填写一些值,点击确定则走报工逻辑,具体请看需求文档。在工单的Commands文件夹下创建ReportingTaskListCommand.js文件,并嵌入资源。继承编辑命令,重写canExecute判断工单状态和任务单状态是否允许报工,重写showView方法处理确认之后的回调逻辑,重写setDialogAttribute设置弹窗大小,源码见附录中的”ReportingTaskListCommand”文件。补充:在ReportingTaskListCommand.js中调用了WorkOrderDataQuery中的DoReporting方法,DoReporting方法调用了WorkOrderController的DoReporting方法,这几个文件之前已经给过了,见附录。在TaskListViewConfig中的定义报工视图,并授权(图5-31)。在TaskListViewConfig配置刚刚定义好的报工视图(图5-32)。图5-31TaskListViewConfig中定义、授权报工视图图5-32TaskListViewConfig中配置刚刚定义的报工视图工单提交后事件需求说明:当选择发放暂停的工单时,我们可用修改计划数量,如果修改了计划数量,则把生成的任务单移除,并且把工单是否生成任务单改成false。在后端的WorkOrders文件夹下,创建WorkOrderOnSubmitting.cs类继承OnSubmitting类,泛型指定为工单,重写Invoke方法,然后处理后续逻辑。第一步中的代码见图5-33图5-33工单提交后事件重写查询专栏由于物料、工序、工艺路线、工单均需要实现模糊查询,故在此单独出一个重写查询的专栏,由于上面四张表的步骤大致相同,工单表查询字段更加多元化,因此我们这边选用工单作为重写查询的案例,下面就是重写查询的步骤。在SIE.Demo项目下的WorkOrders文件夹下创建一个查询类:WorkOrderCriteria.cs,继承Criteria类,并通过代码段(PFProperty)添加需求文档中的的查询字段,并在WorkOrderCriteria.cs类上加[QueryEntity,Serializable]标记。通过代码段添加的数据如左图所示,UI界面如右图所示:在WorkOrderCriteria.cs查询类中重写Fetch方法,并调用controller中的查询方法,具体如下图所示:在WorkOrderController中创建GetWorkOrderListByQueryArg,并在该方法中处理查询的逻辑。具体见下图:在重写了查询的实体类上加上[ConditionQueryType(typeof(查询实体类))]标记,并且注释掉[CriteriaQuery]标记,因为这两个标记不能同时使用,上述标记关联查询实体类。总结:string类型的使用IsNullOrEmpty()方法进行判空处理,如果不为空则拼接到查询条件中。枚举类型的用HasValue属性去判空处理,DateRange类型的先获取到开始时间和结束时间,也就是Date类型的,使用!=null进行判空,模糊查询的实现是使用Contains方法去做的,使用方式是:数据库字段.Contains(“%”+你的查询参数+“%”),这样就相当于给sql语句中你的参数前后拼上了%,从而实现了模糊查询。最后项目的全部代码在附录也提供了(Demo.zip),大家查漏补缺。附录 工业管理软件Api接口和调度功能开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业管理软件Api接口和调度功能的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;根据功能点的业务需求。使用VisualStudio2019及以上开发工具对其进行开发实现,然后在功能中进行测试,完成Api接口和调度功能的开发实现及效果验证。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识和专业技能解决实际问题的能力,强化课堂教学与实践教学相结合,锻炼学生的职业能力。二、实训准备1、掌握C#编程开发技能。2、了解工业管理软件的基础开发。3、事先要能够根据实训工程源代码,配置环境,搭建项目工程。4、安装好实训开发环境,下载实训工程源代码。5、Api接口和调度功能的开发依赖于采购订单,需要先完成采购订单功能的开发实现。三、实训环境Windows10或以上操作系统(不能是Windows11家庭版)、Visual
Studio2019或以上开发工具安装、数据库可以选择SqlServer数据库(安装VS时将VS自带的SqlServer安装上,就可以不用单独安装SqlServer的数据库)或者Oracle数据库(安装ODAC、安装Oracle客户端、安装PLSQL)、安装EAP.Modelfirst、VS中导入代码片段。四、实训步骤任务描述本实训让学生体验Api接口和调度功能的开发过程。通过本指导书展开详细的开发步骤。任务:Api接口和调度功能实现逻辑包括:Api接口:传入参数:传入参数:开始时间和结束时间(不可为空),页数(可为空,为空查第一页),页数据量(可为空,为空查所有);接口实现逻辑:传入的开始时间和结束时间去跟采购日期进行匹配,开始时间〈=采购日期〈=结束时间,根据页数和页数据量将满足条件的订单和对应订单明细的数据返回;接口返回值说明:订单包含的字段内容:订单号、采购日期、订单总金额、订单状态、备注;订单明细包含的字段内容:产品编码、产品名称、采购价、销售价、采购数量、总金额、备注;接口完成后需要编写接口卡。调度任务功能:调度任务执行逻辑:根据页数和页数据量查询采购信息,查询数据按采购时间的升序进行排序,通过调度定时去更改采购订单的状态,状态变更的条件:订单对应所有订单明细的入库数量为0,采购订单的状态变更为新建;订单对应所有订单明细的0〈入库数量〈采购数量,采购订单的状态变更为部分接收;订单对应所有订单明细的入库数量=采购数量,采购订单的状态变更为全部接收;调度参数:页数、页数据量,调度任务未配置页数和页数量,提示页数和页数据量必须配置;调度任务必须记录日志信息。Api开放接口效果:图1-1Api开放接口效果调度任务实现效果:图1-2调度任务效果详细开发步骤Api接口和调度功能开发环境配置介绍Api接口服务使用的是SIE.WebApiHost,要进行Api接口的调试测试,需要先将实现接口的服务端工程添加依赖到SIE.WebApiHost,如我是在SIE.Test工程实现的接口,需要先将该工程引用到SIE.WebApiHost,并配置对应工程的数据库连接。图1-3SIE.WebApiHost添加Api接口对应工程依赖和数据库配置调度功能:调度平台使用的数据库连接是hangfire,如果调试工程没有添加hangfire的数据库连接,需要先添加上。图1-4调度连接字符串配置调试工程需要依赖调度平台相关dll图1-5调试工程依赖调度的程序集调度平台的表如果使用的是SQLSERVER的数据库,是可以直接使用平台的升级数据库功能进行表的生成;如果使用的是oracle的数据库,则需要使用脚本在数据库中执行,脚本如下。图1-6调度平台oracle数据库脚本以上是做Api接口和调度功能要提前检查和配置的开发环境,环境准备好后,接下来就进入到Api接口和调度功能的开发实现了。Api接口的功能开发Api接口返回值订单明细类的定义。图1-7Api接口返回值订单明细类的定义Api接口返回值采购订单信息类的定义。图1-8Api接口返回值订单类的定义在SIE.Test工程的OrderTests文件夹下定义一个控制器,区分方法的控制器。图1-9接口控制器的定义订单控制器类声明为部分类。图1-10订单控制器类声明为部分类获取采购订单信息的Api接口的实现图1-11获取订单Api接口实现Api接口方法体的逻辑实现图1-12Api接口方法体的实现图1-13根据条件查询采购订单方法的实现接口实现完成后编写接口卡。图1-14接口卡编写请求效果图1-15接口卡编写返回值效果到这,Api接口的开发完成了。调度功能的开发实现调度参数类的开发实现。图1-16调度参数类的开发实现调度参数界面类的开发实现。图1-17调度参数界面类的开发实现根据业务条件保存订单逻辑的方法实现。图1-18保存订单信息调度类的开发实现。图1-19调度类的开发实现运行项目,配置调度任务,我们开发的采购订单任务在调度任务设置,添加按钮中可以展示出来。图1-20实现的调度任务到这,采购订单的状态更改调度任务就都开发完成了。效果验证以SIE.WebApiHost启用,允许SIE.WebApiHost项目,项目启动成功的效果。图1-21SIE.WebApiHost启动成功效果将服务的IP和端口复制到浏览器中效果,将*改成localhost。图1-22SIE.WebApiHost浏览器运行效果接口实现的效果。图1-23接口实现效果-参数和返回值说明图1-24接口实现效果-接口请求图1-25接口实现效果-接口响应在Api使用说明中获取票据。图1-26获取票据将票据粘贴到Api方法GetPurOrderList请求中的Ticket,配置传入参数的开始时间和结束时间。图1-27粘贴票据,配置传入参数开始时间和结束时间点击请求,查询Api接口的返回值效果图1-28供应商标签打印按钮效果到这Api接口的效果就验证完成了,如果返回值存在问题,可以在Api方法中设置断点,点击Post进行调试测试原因。在调度任务设置中添加调度任务。图1-29添加调度任务配置调度的表达式,如果要根据cron表达式定期执行周期,依赖于调度服务,实际项目中该表达式的执行周期不建议设置太短。图1-30cron表达式配置配置方法参数、库存组织和员工,点击保存,保存任务图1-31配置方法参数、库存组织和员工未配置任务参数,点击运行,日志中会记录错误,参数未配置。图1-32未配置参数任务执行效果调度任务参数配置,按如下配置,配置完成后点击保存数据。图1-33调度参数配置配置参数后,点击运行,调度任务执行的效果图1-34配置任务参数调度任务执行效果调度任务的验证到这也就完成了,如果调度任务执行保存,可以在job的ExecuteJob方法中设置断点进行调试跟进。到这Api接口和调度功能的开发和效果验证就都完成了。附录1.Api接口和调度功能后端实现,参考实训工程源代码:SIE.Test\JobSIE.Test\OrderTests2.Api接口和调度功能前端实现,参考实训工程源代码:SIE.Web.Test\JobParameters工业管理软件采购订单功能开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业管理软件采购订单功能的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;然后根据功能点之间的逻辑关系,使用Modelfirst工具绘制UML关系图。再根据每一个功能点,绘制对应的功能界面以及使用VisualStudio2019及以上开发工具补充对应的后台逻辑,最后形成一个完整的采购订单功能。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识和专业技能解决实际问题的能力,强化课堂教学与实践教学相结合,锻炼学生的职业能力。二、实训准备1、掌握C#编程开发技能。2、了解工业管理软件的基础开发。3、事先要能够根据实训工程源代码,配置环境,搭建项目工程。4、安装好实训开发环境,下载实训工程源代码。5、采购订单功能的开发依赖于产品管理功能,需要先完成产品管理功能的开发。三、实训环境Windows10或以上操作系统(不能是Windows11家庭版)、Visual
Studio2019或以上开发工具安装、数据库可以选择SqlServer数据库(安装VS时将VS自带的SqlServer安装上,就可以不用单独安装SqlServer的数据库)或者Oracle数据库(安装ODAC、安装Oracle客户端、安装PLSQL)、安装EAP.Modelfirst、VS中导入代码片段。四、实训步骤任务描述本实训让学生体验一个完整主从表从设计到开发的全过程,包括系统的需求分析到功能设计、数据库设计、页面设计及功能实现等。通过本指导书展开详细的开发步骤。任务:采购订单功能实现逻辑包括:主界面列属性:主列表列属性:单号、采购日期、总金额、状态、备注、创建人、创建时间、修改人、修改时间。明细列属性:产品编码、产品名称、采购价、采购数量、总金额、备注、创建人、创建时间、修改人、修改时间。主界面操作命令:主表:查询、添加、修改、删除、导出、配置项;明细:添加、修改、删除、保存、导出;编辑模式:主表:表单编辑;明细:行内编辑;查询命令:查询条件:单号、采购日期(默认当前月,不显示时分秒)、状态(默认为空);主表添加、修改命令:添加修改以打开Tab页签的形式操作,两列显示;操作命令:保存命令;点击保存,在添加修改界面的验证通过之后,保存订单和订单明细的数据;添加时单号根据配置项配置的编码规则自动生成,只读;采购日期默认为当前日期(不显示时分秒),非空可修改;状态枚举实现,枚举值包括:新建、部分接收、全部接收;默认为新建,不可修改;总金额=所有明细总金额之和,只读;订单明细逻辑说明;操作命令:添加、修改、删除、导出;编辑模式:行内编辑;一张订单明细数据不能为空;同一张订单中,订单明细不能有重复的产品;产品编码,下拉选择,关联的数据为产品管理;产品名称通过选择的产品编码自动带出,不可修改;采购价通过选择的产品编码自动带出,可修改,且这里修改的采购价要小于产品管理的销售价;采购数量为整数,必须大于1;总金额=采购价*采购数量;主表修改、删除操作控制;从表添加、修改、删除、保存操作控制;订单状态为部分接收和全部接收时,不可操作。采购订单功能界面实现效果:图1-1采购订单主界面效果图1-2采购订单编辑界面效果详细开发步骤数据库代码开发步骤打开EAP.ModelFirst。在项目总管中建一个SIE.Test的工程。在SIE.Test的工程中新建一个OrderTests的文件夹,右键文件夹可按图操作:图1-3创建Diagram创建完后将出现如下效果:图1-4Diagram效果建模完成后的采购订单的类图如下:图1-5采购订单功能类图采购订单类图创建完成后,选中类OrderTest、OrderDetailTest、枚举OrderDetailTest,右键生成代码。图1-6实体生成代码生成ER图实体类文件:图1-7生成实体类文件选中类OrderTest、OrderDetailTest,右键生成代码图1-8界面生成代码生成ER图界面类文件图1-9生成界面类文件生成的实体类文件放置到服务端工程代码目录如下:图1-10服务端代码目录图生成的界面类文件放置到客户端工程代码目录如下:图1-11客户端代码目录图按以上所有步骤,数据库设计我们已经完成,并且已生成了相关的类文件。接下来开始进入代码编写。采购订单服务端功能开发实现采购订单明细实体类的实现,添加名称空间的引用生成不报错,添加视图属性产品编码、产品名称、销售价。图1-12采购订单明细实体类实现采购订单配置实体类的实现。图1-13采购订单配置实体类的实现采购订单配置规则类的实现。图1-14采购订单配置规则类的实现采购订单实体类的实现,添加命名空间的引用的引用,配置查询面板和配置项图1-15采购订单实体类的实现采购订单验证规则的实现图1-16订单明细不能为空检验图1-17同一订单下明细数据不能重复校验图1-18采购价大于0校验图1-19采购价不能大于销售价校验采购订单控制器方法实现图1-20采购订单控制器方法实现采购订单客户端功能开发实现配置项配置界面的开发实现图1-21配置项配置界面的开发实现采购订单查询视图的开发实现图1-22采购订单查询视图的开发实现订单添加按钮的实现图1-23订单添加按钮的前端实现图1-24订单添加按钮的后端实现订单修改按钮的实现图1-25订单修改按钮的实现订单删除按钮的实现图1-26订单删除按钮前端实现图1-27订单删除按钮后端实现订单列表视图的开发实现图1-28订单列表视图的开发实现给订单号设置配置项配置的值的行为实现图1-29设置订单号的值订单表单视图的开发实现图1-30订单明细视图配置明细添加命令的开发实现,按钮是否允许点击的操作控制,属性变更事件的处理图1-31订单明细添加命令的实现订单明细修改命令的开发实现,按钮是否允许点击的操作控制,属性变更事件的处理图1-32订单明细修改命令的实现订单明细添加和修改命令调用的属性变更事件方法的实现,主要是处理主表和明细的总金额自动计算的实现图1-33订单明细属性变更事件方法的实现订单明细删除按钮的开发实现,需要处理按钮是否允许删除操作,删除明细后,主表总金额的处理图1-34订单明细删除命令的实现订单明细保存按钮的开发实现图1-35订单明细保存命令前端实现图1-36订单明细保存命令后端实现订单明细主列表的开发实现图1-37订单明细主列表的实现订单明细在主表添加修改命令的显示配置图1-38订单明细在主表添加修改命令的显示配置配置模块与初始化配置初始化菜单,在客户端工程的初始化类中配置采购订单初始菜单,注意订单明细不配置菜单。图1-39采购订单初始菜单配置运行项目,配置功能菜单图1-40配置后的效果采购订单功能的数据库表和序列的生成,在实体元数据功能中点击“升级数据库”按钮,进行数据库表的升级操作。图1-41升级数据库图1-42执行升级数据库操作更新验证,执行实体元数据的更新,需要更新采购订单的规则。图1-43更新采购订单规则校验效果验证采购订单主界面效果图1-44采购订单主界面效果操作按钮是否允许操作验证图1-45操作按钮是否允许操作验证订单编辑界面效果图1-46采购订单编辑界面效果订单明细非空校验。图1-47订单明细非空验证同一订单下,订单明细非重复校验。图1-48订单明细非重复校验校验通过,能够正常保存数据图1-49保存成功效果明细总金额变更,主表的总金额会自动计算图1-50明细编辑效果验证明细保存按钮效果验证图1-51明细保存按钮效果明细删除按钮校验。图1-52明细删除按钮效果到这采购订单功能的开发和效果验证就都完成了。附录1.采购订单功能后端实现,参考实训工程源代码:SIE.Test\OrderTests2.菜单订单功能前端实现,参考实训工程源代码:SIE.Web.Test\OrderTestsSIE.Web.Test\ScriptsSIE.Web.Test\TestModule.cs工业管理软件产品管理功能开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业管理软件产品管理功能的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;然后根据功能点之间的逻辑关系,使用Modelfirst工具绘制UML关系图。再根据每一个功能点,绘制对应的功能界面以及使用VisualStudio2019及以上开发工具补充对应的后台逻辑,最后形成一个完整的产品管理功能。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识和专业技能解决实际问题的能力,强化课堂教学与实践教学相结合,锻炼学生的职业能力。二、实训准备1、掌握C#编程开发技能。2、了解工业管理软件的基础开发。3、事先要能够根据实训工程源代码,配置环境,搭建项目工程。4、安装好实训开发环境,下载实训工程源代码。5、产品管理功能的开发依赖于供应商功能,需要先完成供应商功能的开发。三、实训环境Windows10或以上操作系统(不能是Windows11家庭版)、Visual
Studio2019或以上开发工具安装、数据库可以选择SqlServer数据库(安装VS时将VS自带的SqlServer安装上,就可以不用单独安装SqlServer的数据库)或者Oracle数据库(安装ODAC、安装Oracle客户端、安装PLSQL)、安装EAP.Modelfirst、VS中导入代码片段。四、实训步骤任务描述本实训让学生体验一个完整带附件功能的主从表从设计到开发的全过程,包括系统的需求分析到功能设计、数据库设计、页面设计及功能实现等。通过本指导书展开详细的开发步骤。任务:产品管理功能实现逻辑包括:主列表列属性:编码、名称、描述、品牌、图片、采购价、销售价、供应商、物料、创建人、创建时间、修改人、修改时间。操作命令:查询、添加、修改、删除、确定、取消、导出,其中确定和取消按钮在编辑界面展示;编辑模式:表单编辑;主列表显示配置:销售价<2*采购价,该行数据字体显示为红色;2*采购价<=销售价<=3*采购价,该行数据字体显示为蓝色;销售价>3*采购价,该行数据字体显示为绿色;图片在列表中能正常显示;查询命令:查询条件:编码、名称、供应商(以放大镜弹框方式操作,能够进行多选查询);添加、修改命令:以弹出dialog的形式操作;显示为两列,对话框高度和宽度自行定义(不能出现滚动条),第二列展示图片;编码不能为空和重复;名称不能为空;采购价和销售价必须大于0,且销售价>采购价;供应商必选,且选择的数据为启用状态下的供应商;物料必选,数据为对应供应商下的物料;切换供应商,需要提示是否切换供应商,选择是,物料选择的数据清空,选择否,还原供应商数据,物料选择数据不变;确定取消按钮;点击确定,保存数据,关闭dialog对话框;点击取消,还原数据,关闭dialog对话框;产品管理附件功能:附件列:文件名称、文件路径、文件扩展名、文件大小、创建人、创建时间、修改人、修改时间;附件能正常上传文件,下载文件和删除数据;相同产品下,文件名称不能重复。产品管理功能界面实现效果:图1-1产品管理主界面效果图1-2产品管理编辑界面效果详细开发步骤数据库代码开发步骤打开EAP.ModelFirst。在项目总管中建一个SIE.Test的工程。在SIE.Test的工程中新建一个ProductTests的文件夹,右键文件夹可按图操作:图1-3创建Diagram创建完后将出现如下效果:图1-4Diagram效果产品附件类图说明图1-5产品附件类建模完成后的产品管理的类图如下:图1-6产品管理功能类图产品管理类图创建完成后,选中类ProductTest、ProductAttachment,右键生成代码。图1-7实体生成代码生成ER图实体类文件:图1-8生成实体类文件选中类ProductTest,右键生成代码图1-9界面生成代码生成ER图界面类文件图1-10生成界面类文件生成的实体类文件放置到服务端工程代码目录如下:图1-11服务端代码目录图生成的界面类文件放置到客户端工程代码目录如下:图1-12客户端代码目录图按以上所有步骤,数据库设计我们已经完成,并且已生成了相关的类文件。接下来开始进入代码编写。产品管理服务端功能开发实现产品附件类的实现,需要修改生成代码,继承Attachment,添加实体仓库配置和启用实体插件,实现代码如下。图1-13产品附件类实现相同产品下,产品附件文件名称不能重复的校验实现。图1-14相同产品文件名不能重复校验采购价销售价大于0的校验实现,可以直接在实体中标记特性,我这里是使用的规则类对采购价和销售价分开实现的,当然也可以合并。图1-15采购价销售价大于0校验销售价大于采购价的校验实现图1-16销售价大于采购价校验从需求分析可知,框架的查询不能满足产品管理的查询需求,这里需要重写查询,需要创建一个查询实体类,属性包括编码、名称和供应商,实现如下:图1-17产品管理查询实体产品管理查询方法的实现图1-18产品管理查询方法实现重写产品管理查询实体的查询方法,关联到产品管理的查询方法图1-19查询实体查询方法实现产品管理实体类关联查询实体,标记下拉显示名称。图1-20使用自定义查询实体获取启用供应商的方法实现,在供应商的控制器中进行方法的实现。图1-21获取启用供应商方法实现获取供应商物料方法实现,因为物料供应商为创建控制器,统一在供应商控制器中进行实现。图1-22获取供应商下物料方法实现产品管理客户端功能开发实现产品管理查询界面开发实现图1-23产品管理查询界面的实现产品管理主列表根据条件控制字体颜色变更的实现图1-24产品管理主列表字体颜色变更实现添加按钮的实现图1-25添加按钮的实现修改按钮的实现图1-26产品管理修改按钮的实现产品管理列表视图的配置图1-27产品管理列表视图配置切换供应商,需要提示是否切换供应商,选择是,物料选择的数据清空,选择否,还原供应商数据,物料选择数据不变的实现,通过属性变更事件实现,因为是表单编辑,表单的属性变更事件是在行为中进行注册的,实现如下:图1-28切换供应商业务逻辑的实现产品管理添加修改界面配置图1-29产品管理编辑界面配置产品管理下拉选择配置图1-30产品管理下拉选择配置配置模块与初始化配置初始化菜单,在客户端工程的初始化类中配置产品管理初始菜单,注意产品附件不配置菜单。图1-31产品管理初始菜单配置运行项目,配置功能菜单图1-32配置后效果产品管理功能的数据库表和序列的生成,在实体元数据功能中点击“升级数据库”按钮,进行数据库表的升级操作。图1-33升级数据库图1-34执行升级数据库操作更新验证,执行实体元数据的更新,需要更新产品管理的规则。图1-35更新产品管理规则校验效果验证产品管理主界面效果图1-36产品管理主界面效果产品管理查询验证图1-37产品管理查询效果产品附件功能效果验证图1-38产品附件效果编辑界面效果验证,未输入信息,直接点击保存,必须如下。图1-39编辑界面非空验证采购价大于0校验效果。图1-40采购价大于0校验销售价大于0校验效果图1-41销售价大于0校验销售价大于采购价校验效果图1-42销售价大于采购价校验供应商和物料下拉效果验证图1-43供应商下拉选择效果图1-44未选择供应商物料下拉选择效果图1-45赛意供应商下物料信息图1-46选择赛意供应商下物料下拉效果切换供应商效果校验图1-47切换选择供应商提示效果图1-48点击是物料下拉选择数据清空图1-49点击否回退供应商数据录入正确的数据,点击保存,能够成功保存数据,且编辑窗体关闭。图1-50供应商物料删除按钮到这产品管理功能的开发和效果验证就都完成了。附录1.产品管理功能后端实现,参考实训工程源代码:SIE.Test\ProductTestsSIE.Test\SupplierTests2.产品管理功能前端实现,参考实训工程源代码:SIE.Web.Test\ProductTestsSIE.Web.Test\ScriptsSIE.Web.Test\TestModule.cs工业管理软件单据和标签打印开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业管理软件单据和标签打印的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;根据功能点的业务需求。使用VisualStudio2019及以上开发工具对其进行开发实现,然后在模板设置功能进行模板设置,最后在功能中进行测试,完成单据和标签打印的开发实现及效果验证。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识和专业技能解决实际问题的能力,强化课堂教学与实践教学相结合,锻炼学生的职业能力。二、实训准备1、掌握C#编程开发技能。2、了解工业管理软件的基础开发。3、事先要能够根据实训工程源代码,配置环境,搭建项目工程。4、安装好实训开发环境,下载实训工程源代码。5、单据打印是在采购订单功能中进行实现,需要先完成采购订单功能的开发实现。6、标签打印是在供应商功能中进行实现,需要先完成供应商功能的开发实现。三、实训环境Windows10或以上操作系统(不能是Windows11家庭版)、Visual
Studio2019或以上开发工具安装、数据库可以选择SqlServer数据库(安装VS时将VS自带的SqlServer安装上,就可以不用单独安装SqlServer的数据库)或者Oracle数据库(安装ODAC、安装Oracle客户端、安装PLSQL)、安装EAP.Modelfirst、VS中导入代码片段。四、实训步骤任务描述本实训让学生体验单据和标签打印的开发过程和模板设置。通过本指导书展开详细的开发步骤。任务:单据和标签打印实现逻辑包括:单据打印:在采购订单主列表中实现单据打印;启用的模板可正常打印;点击打印,可以打印主从表的数据,且如果从表存在多笔数据,多笔数据能够正常显示;在单据模板的数据源中,业务属性中文显示。标签打印:在供应商功能中实现标签打印;启用的模板可正常打印;点击打印,可以打印供应商标签,且logo的图片能够在打印模板中正常显示;在标签模板的数据源中,业务属性中文显示。单据打印实现效果:图1-1单据打印效果标签打印实现效果:图1-2标签打印效果详细开发步骤打印开发环境配置介绍平台的打印模板设计是在平台的模板设置功能进行设计的,而模板设置依赖于dev的控件、报表设计器和打印,做打印功能开发时需要将相关dll程序集直接或间接依赖到调试工程。图1-3dev相关程序集图1-4报表和打印程序集模板设置的模板是保存到对应服务器的,需要提前配置附件相关信息,附件方式支持ftp和ntfs两种方式配置:图1-5附件方式配置以上是做打印要提前检查和配置的开发环境,环境准备好后,接下来就进入到打印功能的开发实现了。采购订单功能单据打印开发实现和模板设计在服务端工程的OrderTests文件夹下新建一个命名为OrderTestPrintable,继承BillPrintable关联采购订单的实体类OrderTest,标记特性DisplayName。图1-6单据打印类的创建重写获取属性的方法GetPropertys,将数据源的业务属性转换为中文显示,实现如下。图1-7单据打印GetPropertys方法实现重写数据转换的方法ConverterData,主要是处理数据源的数据部分,需要注意的是在数据转换方法中要尽量减少数据库的查询,避免性能问题。图1-8单据打印ConverterData方法实现在采购订单实体中关联单据打印类。图1-9订单实体中配置单据打印类运行项目,在模板设置功能中进行单据打印的模板设置图1-10添加单据模板在打开的单据模板设计器中进行模板的设置,设计完成的效果如下:图1-11单据模板设计的效果图1-12单据模板设计说明单据模板设计完成后,保存单据模板。图1-13保存单据模板操作-1图1-14保存单据模板操作-2到这,采购订单单据打印的开发实现和模板设计就都开发完成了。供应商功能标签打印开发实现和模板设计在服务端工程的SupplierTests文件夹下新建一个命名为SupplierTestLabelPrintable,继承LabelPrintable关联供应商的实体类SupplierTest,标记特性DisplayName。图1-15标签打印类的创建重写获取属性的方法GetPropertys,将数据源的业务属性转换为中文显示,实现如下。图1-16标签打印GetPropertys方法实现类型和所在区域快码数据的处理,这里是在构造函数中进行数据查询处理,目的是减少数据库的查询,提升效率。图1-17类型和所在区域数据查询Logo图片转换类的实现,框架默认的数据源打印不能打印图片,这里需要自定义开发实现。图1-18图片转换类的开发实现重写数据转换的方法ConverterData,主要是处理数据源的数据部分,需要注意的是在数据转换方法中要尽量减少数据库的查询,避免性能问题。图1-19标签打印ConverterData方法实现运行项目,在模板设置功能中进行标签打印的模板设置图1-20添加标签模板在打开的标签模板设计器中进行模板的设置,设计完成的效果如下:图1-21标签模板设计的效果模板左边拖入图片控件,尺寸设置为图片缩放图1-22模板设计中图片控件设计图片的图像源设置为数据源的logo图1-23设置图片的图像源图片展示脚本处理,点击脚本,进入到设计器脚本编辑界面图1-24设计器脚本编辑界面处理图片打印前事件的方法实现,编写完成后点击√。图1-25图片打印前事件方法实现点击回到设计视图,标签模板设计完成后,保存标签模板。图1-26保存标签模板操作-1图1-27保存标签模板操作-2标签打印命令不像单据打印框架做了统一的实现可以直接调用,标签打印命令框架没有实现,需要自定义开发实现,实现包括命令的前端和后端实现,命令前端实现如下。图1-28标签打印前端实现标签打印命令后端实现图1-29标签打印后端实现获取供应商标签模板GetPrintTemplate方法和供应商打印数据GetSupplierPrintData方法的实现。图1-30标签打印后端调用方法的实现在供应商视图的配置列表视图ConfigListView方法中使用标签打印命令。图1-31使用标签打印命令到这,供应商标签打印的开发实现和模板设计就都开发完成了。效果验证采购订单单据打印模板数据源效果,业务属性全部中午显示。图1-32采购订单单据打印数据源效果将采购订单单据打印的模板设置为启用状态。图1-33采购订单单据打印模板设置为可用在采购订单功能中选择一笔数据点击打印,打印效果展示,可以显示多笔明细数据。图1-34采购订单打印按钮展示图1-35采购订单打印效果供应商标签打印模板数据源效果。图1-36供应商标签模板数据源效果供应商标签模板设置为可用,选择供应商标签打印的模板,点击启用命令,设置为可用。图1-37供应商标签模板设置为可用供应商标签打印按钮展示效果,在供应商功能能正常展示标签打印的按钮图1-38供应商标签打印按钮效果选择一笔或者多笔数据,点击供应商标签打印,打印效果如下。图1-39供应商标签打印一笔数据效果图1-40供应商标签打印多笔数据效果到这单据和标签打印的开发和效果验证就都完成了。附录1.打印功能后端实现,参考实训工程源代码:SIE.Test\OrderTestsSIE.Test\SupplierTests2.打印功能前端实现,参考实训工程源代码:SIE.Web.Test\SupplierTests工业管理软件单位功能开发案例实训指导书一、实训目的本课程的教学目的是让学生掌握工业管理软件单位功能的开发流程和关键技术。从系统的需求分析出发,了解到开发需要实现和满足的实际业务功能点;然后根据功能点之间的逻辑关系,使用Modelfirst工具绘制UML关系图。再根据每一个功能点,绘制对应的功能界面以及使用VisualStudio2019及以上开发工具补充对应的后台逻辑,最后形成一个完整的单位功能。通过综合实训帮助学生全面牢固地掌握教学内容、培养学生的实践动手能力,提高学生综合运用专业知识
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度爆炸物运输安全协议书3篇
- 服务行业安全管理工作总结
- 二零二五年度个人停车位使用权投资分红协议4篇
- 二零二五年度离婚协议流程指导与婚姻登记服务合同2篇
- 二零二五年度智慧家居个人工程承包合同范本2篇
- 【培训教材】医院消毒供应中心(CSSD)技术操作规范解读
- 通讯行业销售总监工作总结
- 二零二五年个人合伙清算协议书(清算后续合作)3篇
- 二零二五年度内陆淡水水库渔业开发承包合同3篇
- 二零二五年度家政服务销售返利合同范本
- 丰顺县县级集中式饮用水水源地基础状况调查和风险评估报告
- 重庆市2023-2024学年七年级上学期期末考试数学试题(含答案)
- 《七律二首 送瘟神》教案- 2023-2024学年高教版(2023)中职语文职业模块
- 2024年中考语文满分作文6篇(含题目)
- 2024年安全员之江苏省C2证(土建安全员)题库与答案
- 第一节-货币资金资料讲解
- 2018注册环保工程师考试公共基础真题及答案
- 如何提高售后服务的快速响应能力
- Unit-3-Reading-and-thinking课文详解课件-高中英语人教版必修第二册
- 婚介公司红娘管理制度
- 煤矿电气试验规程
评论
0/150
提交评论