1、摘 要随着中国企业加入全球化竞争的序列,高利润的年代似乎已经过去,取而代之的是所谓的微利时代。企业产品成本的准确的核算数据,企业的完整的生产计划,可向企业的管理者提供更多信息,帮助其做出更好决策,如定价等,同时还有利于计划控制和业绩评价。在传统模式下,手工管理有许多弊端,如管物的部门不管钱,库存台账只记物料的数量不记金额。财会信息总是落后于物料的变动,财务总是事后算账,因此资金起不到企业生产经营的调控作用。手工管理的信息流更是断裂的、支离破碎。 企业采用计算机管理系统,各部门连贯起来,并实现人机结合。解决生产流程的信息在线揭露,所有人在一定权限范围内,可轻易从计算机上得知各部门的相关数据, 例
2、如订单及出货的情形,避免资源与人事上不必要的浪费,节约成本。经理人也可以从这些迅速而正确的数据中,做出最好的决策。由于信息的透明化、实时化,企业更有条件达到立即反应、整体规划的目标,提高效率。本系统主要应用了.NET3.5 框架,采用了 C/S 架构,应用 Visual C#进行开发,使用了 SQLServer2005 作为后台数据库。本文首先通过对本课题的研究背景进行了简单的介绍,然后介绍了开发本系统的技术背景,另外介绍了对本系统的概要设计部分,最后介绍了详细设计过程,并对整体工作做了总结。关键字: Visual C#, SQLServer2005, .Net 框架,管理系统Abstract
3、With the globalization of Chinese enterprises to join the competition series, highly profitable over the past decade seems to have been replaced by the era of the so-called profit. Enterprise Product of accurate cost accounting data, the production of a complete business plan can be made to the mana
4、gers of enterprises to provide more information to help them make better decision-making, such as pricing, but also help control and performance evaluation plan. In traditional mode, the manual management there is many drawbacks. Accounting information is always lagging behind the changes in materia
5、ls, finance after always scared, so funds would not serve any purpose of the regulation and control enterprise production and management role. Manual management of information flow is broken and fragmented. Enterprise Computer Management System consistent with the sector and to achieve human-compute
6、r combination. Production process to expose the information online, all within a certain jurisdiction, can be obtained easily from the computer that the various departments of the relevant data, for example, the case of orders and shipments, and personnel resources to avoid unnecessary waste, cost s
7、avings. Managers can quickly and correctly from these data, to make the best decisions. Transparency of information, real-time, business conditions to achieve a more immediate response, the overall goals of the plan, improve efficiency.The main application of the system Dot NET3.5 framework, the use
8、 of the C / S architecture, the application of Visual C # for development, SQLServer2005 used as the background database.In this paper, first of all through research on the subject of the background of the brief introduction, and then introduced to develop the technical background of the system, and
9、 introduced a summary of the system design of the final detailed design of the process of introduced and summarized the overall work.Keywords: Visual C#, SQLServer2005, .Net framework,MIS目录摘要 1Abstract21 引言 41.1 课题研究的内容 .41.2 研究现状 .51.2.1 国内现状 .51.2.2 国外现状 .61.3 文章的结构 .62 开发技术简介 82.1 .Net 框架简介 82.2
10、Visual C#简介 82.3 MSSQLServer2005 简介 .93 系统设计 .103.1 需求分析 103.1.1 功能需求 103.1.2 性能需求 103.2 系统总体设计 103.3 数据库设计 114 系统开发 .144.1 系统结构 144.2 数据库配置功能实现 164.3 生产计划详细设计 184.3.1 滚动计划 184.3.2 生产计划查询详细设计 304.4 成本核算详细设计 365 结束语 .41参考文献 .42致谢 .431 引 言随着中国企业加入全球化竞争的序列,高利润的年代似乎已经过去,取而代之的是所谓的微利时代。企业产品成本的准确数据,一个完整的生产
11、计划,可向管理当局提供更多信息,帮助其作出更好决策,如定价等,同时还有利于计划控制和业绩评价。在传统模式下,手工管理出现了种种弊端如管物的部门不管钱,库存台账只记物料的数量不记金额。财会信息总是落后于物料的变动,财务总是事后算账,因此资金起不到企业生产经营的调控作用。手工管理的信息流更是断裂的、支离破碎。而一些企业使用不同的计算机系统,使得企业的各个部门大都各自为政,业务与生产部门互不相关,生产部门的人无法直接从计算机上直接查到订单的数量,更不用谈信息共享与整合。本系统所扮演的角色便是将各部门连贯起来,并实现人机结合,互动,在解决生产流程的同时让所有信息在线揭露,所有人只要有账号、密码,在一定
12、权限范围内,便可轻易从计算机上得知各部门的相关数据, 例如订单及出货的情形,避免资源与人事上不必要的浪费,节约成本。经理人也可以从这些迅速而正确的数据中,做出最好的决策。由于信息的透明化、实时化,企业更有条件达到立即反应、整体规划的目标,提高效率。1.1 课 题 研 究 的 内 容在针对沈阳电梯有限公司的物资保管帐管理系统需求说明书,设计了属于其子系统的企业生产计划与成本核算系统,同时参与设计了整体物资保管帐管理系统的数据库部分,具体工作如下:(1) 根据需求说明书进行概要设计:依据物资保管帐管理系统的需求说明书对企业生产计划和成本核算部分的描述,在系统总体的概要设计的基础之上完成了对企业生产
13、计划与成本核算系统的概要设计。(2) 数据库的设计:根据各个模块对数据的要求,笔者参与了数据库的设计,使设计的数据库满足了第三范式,并完全满足了系统对数据的需求。(3) 系统实现:通过需求分析对系统进行了设计和编码工作,并对本系统进行了功能测试。1.2 研 究 现 状1.2.1 国 内 现 状ERP 在中国的推广与应用已经历了近 20 年风风雨雨的历程,据不完全统计,我国目前已约有 700 家用户使用它来管理自己的企业。它作为一种先进的管理思想和工具已得到了人们的普遍共识,一些企业也很快就获得了应有的回报,从主流上来说 ERP 在中国的发展加速了我国企业管理现代化的进程,使得越来越多的企业认识
14、到只有实现企业管理信息化、现代化,企业才有活力和竞争实力,并渴望采用这种先进的管理模式和拥有这种先进的管理工具。例如大众汽车有限公司使用的 SAP R/3 系统,虽然其长期影响仍在观察统计当中。但从一汽大众总经理陆林奎的一 席话已经可以窥见一斑:“原来我们测算了一下一汽大众的年保本点可能要达到 8 万辆,利用先进的管理技术详细测算了我们汽车成本的构成后,积极开发了一些盈利高的汽车产品,最后实际生产 3.5 万辆就可实现保本,所以我们 1997 年的生产销售超过了 4.2 万辆,年底盈利了 2 个亿” 。而中油国际工程有限责任公司从 2001 年 7 月开始正式实施集团 ERP 财务管理系统,历
15、经半年多的建设,最终系统顺利上线,上线初期在国内的 5 个公司成功实施,2002 年开始推广到海外项目点。截至目前,已经在国外 16 个国家,42 个项目点成功实施。1.2.2 国 外 现 状由于较早的使用 ERP 系统使得国外企业软件大都满足规范化管理,既软件运行的规范化,保证管理流程的规范化。其次,国外软件系统集成度高。管理软件的主要特征是信息集成,用通俗的话来讲,就是:来源唯一、信息共享。任何数据,由一个部门、一位员工负责输入,任何其他部门、其他人员不再需要重复输入。这样可以做到减少重复劳动、提高效率、避免差错。AfriSam 是南非一家主要的水泥、集料和预拌混凝土供应商。该公司总部位于
16、南非的 Roodeport,承诺要在建筑材料行业中贯彻意义深远的“黑人经济振兴(Black Economic Empowerment) ”战略。它在非洲撒哈拉以南地区运营着 74 家工厂,雇用了约1,800人。数年前,该公司决定执行一项集中式 ERP 解决方案,以操纵生产和财务流程。SAP 的实现令 AfriSam 月末结算周期减少了2天。而 Alcan Packaging 是一家目前在全球30多个国家拥有超过180家的工厂。作为世界领先的包装供应商,Alcan Packaging 在食品、药品、化妆品包装领域世界排名第一,烟草包装排名第二,总部位于巴黎的增值特种包装方面的领军企业 Alcan
17、 包装公司,与半径解决方案公司合作,推行 PECAS 版本的 ERP 系统来管理其全球业务。Alcan 表示,挑选用于管理该组织生产经营的 PECAS 版本,特别适合需要多个工厂、多种语言、多种货币能力的跨国业务。在31个国家中,该公司有128家工厂,包装工厂已经在包括欧洲、亚洲和北美洲在内的12个目标工厂中的10个铺开了这种系统。1.3 文 章 的 结 构第一章, 介绍了本课题的研究背景和文章的总体结构。第二章, 介绍了开发本系统的技术背景。第三章, 介绍了对本系统的概要设计部分,通过对系统需求说明书的分析制定出本系统的功能需求和性能需求。第四章, 本系统的详细设计部分,通过对各个功能模块的
18、设计,针对需求分析部分对系统的要求,对系统的主要功能的实现过程进行了介绍。第五章, 对以上的工作进行了总结。2 开 发 技 术 简 介2.1 .Net 框 架 简 介Microsoft .NET 框架是生成、部署和运行 Web 服务及应用程序的平台。它提供了一个生产率高且基于标准的多语言环境,用于将现有投资与下一代应用程序和服务集成,同时提供了解决 Internet 规模应用程序的部署和操作难题的灵活性。.NET 框架由三个主要部分组成:公共语言运行库、统一类库的分层集合和称为 ASP.NET 的 Active Server Pages 组件化版本。公共语言运行库(CLR)是用于 .NET 框
19、架应用程序的执行引擎。通用类型系统(CTS)是一个内置在公共语言运行库中的丰富的类型系统,它支持大多数编程语言中存在的类型和操作。通用类型系统支持广泛的编程语言的完整实现。公共语言规范(CLS)是一组构造和约束,它充当库编写器和编译器的向导。Microsoft 中间语言 (MSIL)是与 CPU 无关的指令集,其中编译进了 .NET 框架程序。托管代码是为面向公共语言运行库的服务编写的代码。2.2 Visual C#简 介C#是一种面向对象的编程语言,它将作为 Visual Studio 中的一部分推出。C#(发音为“C-Sharp” )既保持了 C+中熟悉的语法,并且还包含了大量的高效代码和
20、面向对象特性。C#还包含使 XML 编程更为轻松的技术。由于 C#是一种面向对象的开发语言,所以 C#可以大范围的适用于高层商业应用和底层系统的开发。即使是通过简单的 C#构造也可以各种组件方便的转变为基于 WEB 的应用,并且能够通过 Internet 被各种系统或是其他开发语言所开发的应用调用。即使抛开上面所提到的优点,C#也可以为 C/C+开发人员提供快速的开发手段而不需要牺牲任何 C/C+语言的特点/优点。从继承角度来看,C#在更高层次上重新实现了 C/C+,熟悉 C/C+开发的人员可以很快的转变为 C#开发人员。目前的各种基于 WEB 应用的软件开发向传统的商业应用软件开发提出了挑战
21、,开发者被组织起来开发具有更短开发周期的各种应用,并且需要能够提供更好的可修正性,而不是建立一个可以长久使用的软件系统。C#的设计正是充分考虑了这些因素。C#会帮助开发者通过更少的代码完成相同的功能,并且能够更好的避免错误发生。新的开发模式意味着需要更好的利用现有的各种 WEB 标准,例如HTML,XML,SOAP(简单对象存取协议) 。现存的开发工具是在 Internet 出现前或是未得到充分应用前出现的,所以都不能很好的适应目前 WEB 技术的开发需要。C#开发者可以方便的在 M$网络平台上扩展自己的应用。C#可以将任何组件转变为 WEB 服务,并且可以被运行于 Internet 上的任何
22、平台的任何应用调用,重要的是 C#对这一特性提供了内置的支持。更重要的一点,WEB 服务框架可以让任何 WEB 服务都看起来类似于 C#的内置对象,所以可以让开发人员在开发过程中继续使用他们已经具备的面向对象的开发方法和技巧。2.3 MSSQLServer2005 简 介SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是本企业数据管理解决方
23、案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。3 系 统 设 计本章主要依据沈阳电梯有限公司的物资保管帐管理系统需求说明书中对其子系统企业生产计划与成本核算系统的要求,阐述了其子系统的需求,并针对需求进行了需求分析,然后介绍了系统的总体设计情况和数据库设计情况。3.1 需 求 分 析3.1.1 功 能 需 求依据沈阳电梯有限公司的物资保管帐管理系统的需求说明书,笔者提取并描述了其子系统企业生产计划
24、与成本核算系统的功能需求。对于车间班组核算部分主要是为了能够各个班组的详细信息进行检索操作,其主要的检索条件就是时间的范围,这样能够对不同的车间的不同班组进行费用使用情况进行统计计算,同时能够详细信息到个人。3.1.2 性 能 需 求本系统主要电梯有限公司内部,对性能没有很大的要求,主要保障系统的稳定性和系统的稳定,同时也要求了系统的安全性和数据的完整性,所以对于系统的同时在线人数和并发访问量的要求不是考察的重点。通过对需求说明书的分析,笔者总结出本子系统的性能需求主要有长时间无故障运行、系统安全以及用户同时在线人数。对于系统的安全性主要保障来自于服务器的系统安全性和防杀病毒软件的使用,系统地
25、无故障运行时间的主要是由系统的内存管理方法和服务器操作系统决定,对于内存的管理.NET 会帮助完成。对于同时在线人数主要决定于系统服务的性能。因此本系统如果完全使用.NET 框架,就能够基本满足上述要求。3.2 系 统 总 体 设 计根企业生产计划与成本核算系统的需求分析,设计子系统的框架如下图示。图 3.1 系统框架图3.3 数 据 库 设 计在对需求的分析和对系统总体的设计的基础之上,对以生产计划为例部分系统数据库的设计如下:表 3.1 滚动计划 RollingPlan序号 字段名称 类型 字段说明 备注1 PlanCode V(20) 滚动计划编码 PF2 PlanName V(200)
26、 计划名称3 OrderCode V(20) 订单计划编码 FK3OrderPlan4 PlanMonth datetime 计划月份5 MakeDate datetime 制表时间6 CreateDate datetime 创建时间7 Creator V(10) 创建人 FK1User8 Department V(4) 部门 FK2Department9 Manager V(10) 总经理序号 字段名称 类型 字段说明 备注10 Principal V(10) 生产部负责人11 DeleteFlag bit 删除标识12 PrincipalConfirm bit 负责人审批13 Manage
27、rConfirm bit 总经理审批14 Category V(4) 产品类型 FK4ProductCategory15 IsUsed bit 使用标识16 FlowCode V(10) 生产流程 FK5ProductionFlow17 Description V(200) 描述滚动计划表滚动计划编码创建时间制表时间负责人审批创建人生产部负责人计划名称总经理审批使用标识滚动计划编码生产流程部门总经理审批总经理计划月份删除标识 描述图 3.2 滚动消息实体图表 3.2 任务清单 Task序号 字段名称 类型 字段说明 备注1 TaskCode V(20) 任务编码 PK2 PlanCode V(
28、20) 滚动计划编码 FK1RollingPlan序号 字段名称 类型 字段说明 备注3 WorkingCode V(20) 流程工序编码 FK5WorkingOnFlow流程工序4 FinishDate datetime 完成时间5 ExecuteStatus Char(2) 执行状态 FK2ExecuteState6 TaskStatus Char(2) 任务状态 FK3TaskStatus7 TaskMonth datetime 所属月份8 ModifyStatus Char(2) 修改状态 FK4ModifyStatus9 CreateDate datetime 创建时间10 Dele
29、teFlag Bit 删除标识11 Finished Bit 完成标识任务清单表完成时间创建时间任务状态所属月份完成标识滚动计划编码修改状态执行状态删除标识流程工序编码任务编码图 3.3 任务清单实体图4 系 统 开 发本章主要介绍了本系统的详细设计过程,通过总体功能的介绍对目标任务作了详细的总结,然后介绍了主要功能的设计和实现方法。4.1 系 统 结 构本系统是根据订单而制定生产计划,交由设计部门进行设计,根据设计图纸,确定材料的需求,审核过后报给采购部门进行原料采购,之后库存,最后进行核算,这样的实际工作流程设计的。主要功能有生产计算和成本核算两部分。生产计划部分采用生产滚动计划,这是一种
30、动态编制计划的方法。它不像静态分析那样,等一项计划全部执行完了之后再重新编制下一时期的计划,而是在每次编制或调整计划时,均将计划按时间顺序向前推进一个计划期,即向前滚动一次,按照制订的项目计划进行施工,对保证项目的顺利完成具有十分重要的意义。滚动计划法计算机已被广泛应用的今天,其优点十分明显。 1. 把计划期内各阶段以及下一个时期的预先安排有机地衔接起来,而且定期调整补充,从而从方法上解决了各阶段计划的衔接和符合实际的问题。 2. 较好地解决了计划的相对稳定性和实际情况的多变性这一矛盾,使计划更好地发挥其指导生产实际的作用。3. 采用滚动计划法,使企业的生产活动能够灵活地适应市场需求,把供产销
31、密切结合起来,从而有利于实现企业预期的目标。 生产计划功能图如下所示:序号工号项目名称型号签约期交货期生产编号生产批号A 类件图号 出图总采购明细生产准备油漆机加电气件机械外购制作结构序号生产批号产品名称型号数量完工日期投产编号图号 备注滚动计划编辑与查询生产计划生产计划查询图 4.1 生产计划图成本核算部分主要提供相对准确的成本信息。本系统纠正了传统成本计算使生产量大、技术不很复杂的产品成本偏高,生产量小、技术比较复杂产品成本偏低的假象,如实反映不同产品生产耗费的真实面貌。使产品定价及策略建立在科学基础上。有利于加强公司在市场竞争中的地位,提高产品市场占有率。帮助管理者做出正确的决策,提高公
32、司的经济效益。例如进入或者退出某种产品市场,扩大或缩小某种产品生产,以及资本支出决策等等。提高预算制定的科学性。分作业、以作业成本为基础制定预算,使预算目标明晰且易于操作,提高预算精度和有效性,有助于降低成本、加强成本控制。可以帮助管理者发现和减少不增值作业,控制关键作业,降低作业成本消耗。成本核算图见图 4.2。图 4.2 成本核算图4.2 数 据 库 配 置 功 能 实 现设计本模块主要是为了用户可以自己的配置数据库,屏蔽了因为数据库联接错误而引起的系统错误。其实现结果如下图所示:图 4.3 数据库配置功能其具体实现如下所示:namespace MaterialManager.UserIn
33、terface.Configurationpartial class DatabaseConfig/数据库备至功能private System.ComponentModel.IContainer components = null;protected override void Dispose(bool disposing)if (disposing base.Dispose(disposing);/设计数据库配置功能界面的各个部分功能#region Windows Form Designer generated codeprivate void InitializeComponent()th
34、is.CloseButton = new System.Windows.Forms.Button();this.OKButton = new System.Windows.Forms.Button();this.connectConfig1 = new MaterialManager.UserInterface.Configuration.ConnectConfig();this.SuspendLayout();/取消按钮的实现this.CloseButton.Anchor = (System.Windows.Forms.AnchorStyles)(System.Windows.Forms.A
35、nchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);this.CloseButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;this.CloseButton.FlatStyle = System.Windows.Forms.FlatStyle.System;this.CloseButton.Location = new System.Drawing.Point(418, 105);this.CloseButton.Name = “CloseButto
36、n“;this.CloseButton.Size = new System.Drawing.Size(68, 23);this.CloseButton.TabIndex = 7;this.CloseButton.Text = “取消(this.CloseButton.UseVisualStyleBackColor = true;/ 确定按钮的实现this.OKButton.Anchor = (System.Windows.Forms.AnchorStyles)(System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.Anc
37、horStyles.Right);this.OKButton.DialogResult = System.Windows.Forms.DialogResult.OK;this.OKButton.FlatStyle = System.Windows.Forms.FlatStyle.System;this.OKButton.Location = new System.Drawing.Point(345, 105);this.OKButton.Name = “OKButton“;this.OKButton.Size = new System.Drawing.Size(67, 23);this.OKB
38、utton.TabIndex = 6;this.OKButton.Text = “确定(this.OKButton.UseVisualStyleBackColor = true;this.OKButton.Click += new System.EventHandler(this.OKButton_Click);/ / 联接配置的实现添加了上面连个按钮和选择数据库路径按钮/ this.connectConfig1.Location = new System.Drawing.Point(0, -1);this.connectConfig1.Name = “connectConfig1“;this
39、.connectConfig1.Size = new System.Drawing.Size(499, 100);this.connectConfig1.TabIndex = 0;this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.ClientSize = new System.Drawing.Size(498, 140);this.Controls.Add(this.CloseButton);
40、this.Controls.Add(this.OKButton);this.Controls.Add(this.connectConfig1);this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;this.Name = “DatabaseConfig“;this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;this.Text = “数据库配置“;this.ResumeLayout(false);#endregio
41、nprivate ConnectConfig connectConfig1;private System.Windows.Forms.Button CloseButton;private System.Windows.Forms.Button OKButton;4.3 生 产 计 划 详 细 设 计4.3.1 滚 动 计 划在滚动计部分,主要设计了滚动计划的添加、修改、删除、查询等功能。首先介绍滚动计划的添加,在添加功能主要有两种,一种是直接通过系统的提供的模块填写对应项,然后保存到数据库中;另一种是通过外部文件导入到数据库中。一种按照对应项添写对应数据添加的功能是一种常见的功能在所有的管理系
42、统中都存在,笔者以创建订单计划为例,介绍滚动计划创建的实现方法,并重点介绍了第二种,从外部文件导入数据的事项功能。本系统实现了订单计划的创建功能,其实现结果如下图所示:图 4.4 创建订单计划功能结果图其具体实现代码如下,首先是连接数据库部分,public delegate void ProcessItemList(Product item);public partial class OriginalPlanForm : FormBaseprivate PlanDataAccess _PlanDataAccess;private DictionaryDataAccess _DicDataAcc
43、ess;public OriginalPlanForm()InitializeComponent();_PlanDataAccess = new PlanDataAccess();PlanMonthBox.Value = DateTime.Now;_DicDataAccess = new DictionaryDataAccess();SaveButton.Enabled = false;orderCompanyBindingSource.DataSource = _DicDataAccess.GetAvCompanies();productCategoryBindingSource.DataS
44、ource = _DicDataAccess.GetProductCateories();下部分代码是导出数据部分功能的实现:private void ImportExcelButton_Click(object sender, EventArgs e)ImportPlan importPlan = new ImportPlan();importPlan.ProcessItem = ImportData;importPlan.ShowInTaskbar = false;importPlan.ShowDialog();private ListViewGroup AddGroup(string g
45、roupName)foreach (ListViewGroup group in ProductListView.Groups)if (group.Name.Equals(groupName)return group;int index = ProductListView.Groups.Add(new ListViewGroup Name = groupName, Header = string.Format(“产品工号:0“, groupName) );return ProductListView.Groupsindex;/添加列表显示数据private void ImportData(Pr
46、oduct item)ListViewGroup group = AddGroup(item.WorkNumber);ListViewItem listItem = new ListViewItem(item.ProductionCode, group);listItem.SubItems.Add(item.WorkNumber);listItem.SubItems.Add(item.ProductName);listItem.SubItems.Add(item.BaseDate.ToLongDateString();listItem.SubItems.Add(item.BaseCode);l
47、istItem.SubItems.Add(item.Memo);listItem.Tag = item;ProductListView.Items.Add(listItem);SaveButton.Enabled = true;在对记录集进行修改后,对数据的修改要进行保存,保存按钮功能的实现如下所示:private void SaveButton_Click(object sender, EventArgs e)if (!ValidateChildren() return;if (ProductListView.Items.Count = 0) return;OrderPlan orderPl
48、an = new OrderPlan();orderPlan.OrderCode = DictionaryDataAccess.GetSequenceNumber(new OrderPlanDictionary();orderPlan.OrderName = PlanNameBox.Text;orderPlan.Category = ProductCategoryBox.SelectedValue.ToString();orderPlan.OrderCompany = CompanyBox.SelectedValue.ToString();orderPlan.OrderMonth = Plan
49、MonthBox.Value.ResetDateTime();orderPlan.RollFlag = false;orderPlan.DeleteFlag = false;orderPlan.Creator = User.UserName;orderPlan.CreateDate = DictionaryDataAccess.GetServerCurrentDate();IList planList = new List();foreach (ListViewItem item in ProductListView.Items)Product product = (Product)item.Tag;product.OrderCode = orderPlan.OrderCode;SetupBase setupBase = new SetupBase BaseName = product.BaseCode ;_PlanDataAccess.AddSetupbase(setupBase);product.BaseCode = setupBase.BaseCode;product.Department = User.DepartmentCode;product.Oper