一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-复杂业务的实现(商品入库)-附案例操作视频

简介:

系列回顾

     WinForm篇前面我用了两篇文章实例演示了一个基于AgileEAS.NET实现一个简单的增加、删除、修改、查询与打印的典型的简单应用案例,这应该是一个典型的MIS系统的应用场景。

     在前一篇文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-在UI中应用DataUIMapper组件完成了商品字典编辑界面中的代改造,由原来的显示与写回代码改成DataUIMapper组件的DataObject<==>UI控件的映射方式。

     结合前面的两篇文章,示例中的第一个模块“产品字典”可以说是告一段落了,接下来的工作,我们将开始第二个模快“商品入库”的开发。

本文内容

     “商品入库”模块将是一个典型的业务处理模块,在产品入库的过程中,我们要求“一张入库单可以包含1-N个入库记录,并且在同一入库单中不得存在两条同品种的商品记录”,在本模块中,我们将会涉及到入库业务的票价打印、事务处理、业务层编码、缓存查询等一些技术专注点。

     下面我就以视频的方式展现一下我们要达到的目标(截取案例的运行结果)【第一次弄这玩意,效果比较差,大家理解一下】: 

关于表的ID列和入库单据号

      在这个简单的应用案例中,一共定义了三个表,产品字典db.PRODUCT,产品库存表dbo.PSTORE,产品入库记录表dbo.PIN,在三个表中都定义了一个与业务无关的列ID,产品表的主键为商品编码[Code],产品入库表的主键为单据号+商品编码[BillCode+Code],库存表为商品编码+价格[Code+Price]。所有表中的ID字段的取值参考DotNET企业架构应用实践-数据库表记录的唯一性设计的设计兼议主键设定原则一文,入库单位号由日期(yyyyMMdd)+6位最大序列号组成,所有最大号当前值记录由一个单独表存放,AgileEAS.NET平台中存储在表eas.IDENTITYVALUES中,在本示例中存储在表dbo.IDENTITYVALUES,取值和更新由过程dbo.GetIdentityValue/dbo.GetIdentityValue完成,在程序中采用以下方式读取最大号:

复制代码
 1          ///   <summary>
 2          ///  取记录号。
 3          ///   </summary>
 4          ///   <returns></returns>
 5          public   int  GetMaxNewIdn()
 6         {
 7             ParameterCollection pc  =   new  ParameterCollection();
 8             pc.Add( " ITEMKEY " this .DbTableName);
 9              return  ( int ) this .DataAccessor.Query( " exec dbo.GetIdentityValue @itemkey=? " , pc);
10         }
11 
12          ///   <summary>
13          ///  取单据号。
14          ///   </summary>
15          ///   <returns></returns>
16          public   string  GetMaxBillCode()
17         {
18             ParameterCollection pc  =   new  ParameterCollection();
19             pc.Add( " ITEMKEY " " ProductInBillCode " );
20              int  code  =  ( int ) this .DataAccessor.Query( " exec dbo.GetIdentityValue @itemkey=? " , pc);
21              return  DateTime.Now.ToString( " yyyyMMdd " +  code.ToString( " D6 " );
22         }
复制代码

       注:本案例的Product.UI项目中增加了一个“唯一键值更新sql语句.sql”包含了本案例所需要上述的sql脚步,请自行更新到数据库。

实现商品入库

      要实现产品入库,我们需要在Product.UI项目中增加两个新的窗体ProductInForm和SelectDictForm,其中ProductInForm为产品入库的业务运行界面,SelectDictForm为其附加界面,用于完成从产品字典中检索产品信息,我们分别来看一下这两个界面,ProductInForm:

PT{$6X%MT)Z8[Z0C0Y_G6N6

 

ProductInForm为产品入库模块的主界面,操作员通过在产品编辑输入框输入产品编码的拼音简码,比如:青霉素(QMS)然后按回车键打开SelectDictForm窗体:

_2KS39}Q5L~QV]@OA][Z(MU

 

SelectDictForm会根据操作员输入产品拼音简码检索数据库并列出与之匹配的所有字典记录供操作员选择,操作选择一条记录按回车键或者空格键或者点击“选择”按钮跳转回ProductInForm,操作中输入产品价格及数量之后回车,系统会把刚才的输入结果暂存在界面下边的ListView控件中,一个单据可以输入多条产品入库记录,也可以选择入库列表记录通过delete键删除入库记录,最后通过“入库”按钮完成一次入库业务。

关于业务处理

     对于本示例的商品入库处理,我提出了独立的业务对象处理其输入,在项目Product.BL中定义了ProductInBL业务层对象,代码请自己参考,关于业务分层请参考DotNET企业架构应用实践-实例架构设计中的业务分层-提取独立的业务层一文。

关于代码/下载

      本文今天就到这儿,“商品入库”业务模块中的详细代码我就不在这贴了,太多,大家下载了完整代码之后自己看吧,在接下的文章中我将介绍缓存查询的应用。

      有关本例所涉及的数据表结构请参考基于AgileEAS.NET平台基础类库进行应用开发-总体说明及数据定义一文,有关数据对象模型定义文件、文档、DDL脚本请下载:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本例完整代码下载:Product.Demo.rar

      最后,声明一句,不欢迎“巴克球”!我不想再说什么,别来凑热闹了。

链接

一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录

AgileEAS.NET平台开发指南-系列目录

AgileEAS.NET应用开发平台介绍-文章索引

AgileEAS.NET平台应用开发教程-案例计划

AgileEAS.NET官方网站

敏捷软件工程实验室

QQ群:116773358

 


作者:魏琼东 
出处:http://www.cnblogs.com/eastjade
关于作者:有13年的软件从业经历,专注于中小软件企业软件开发过程研究,通过在技术与管理帮助中小软件企业实现技术层面开源节流的目的。熟悉需求分析、企业架构、项目管理。现主要从事基于AgileEAS.NET平台的技术咨询工作,主要服务于医疗卫生、铁路、电信、物流、物联网、制造、零售等行业。如有问题或建议,请多多赐教! 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,如有问题,可以通过mail.james@qq.com 联系我,也可以加入QQ群:113723486、199463175、116773358、116773358、212867943、147168308、59827496、193486983、15118502和大家共同讨论,非常感谢。


    本文转自魏琼东博客园博客,原文链接:http://www.cnblogs.com/eastjade/archive/2010/10/19/1854389.html,如需转载请自行联系原作者


相关文章
|
9月前
|
开发框架 .NET 中间件
.net8 使用 license 证书授权案例解析
本文介绍了如何使用 `.NET CLI` 创建并改造一个 `ASP.NET Core Web API` 项目,以实现基于许可证的授权机制。具体步骤包括创建项目、添加必要的 NuGet 包(如 `Standard.Licensing` 和 `Swashbuckle.AspNetCore`),以及修改 `Program.cs` 文件以集成自定义的许可证验证中间件。项目结构中新增了 `LicenseController` 接口用于处理授权相关操作,并通过测试流程验证了默认天气接口在未授权和授权状态下的响应情况。整个过程确保了应用程序能够在启动时正确验证许可证,保障系统的安全性与可控性。
438 8
.net8 使用 license 证书授权案例解析
|
11月前
|
C# Android开发 iOS开发
2025年全面的.NET跨平台应用框架推荐
2025年全面的.NET跨平台应用框架推荐
463 23
|
12月前
|
弹性计算 开发框架 安全
基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
本文将基于云效 Flow 流水线 Windows 构建环境和云效 Packages Nuget 制品仓库手把手教你如何开发并部署一个 .NET 应用,从环境搭建到实战应用发布的详细教程,帮助你掌握 .NET 开发的核心技能。
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
221 5
|
JSON 算法 安全
JWT Bearer 认证在 .NET Core 中的应用
【10月更文挑战第30天】JWT(JSON Web Token)是一种开放标准,用于在各方之间安全传输信息。它由头部、载荷和签名三部分组成,用于在用户和服务器之间传递声明。JWT Bearer 认证是一种基于令牌的认证方式,客户端在请求头中包含 JWT 令牌,服务器验证令牌的有效性后授权用户访问资源。在 .NET Core 中,通过安装 `Microsoft.AspNetCore.Authentication.JwtBearer` 包并配置认证服务,可以实现 JWT Bearer 认证。具体步骤包括安装 NuGet 包、配置认证服务、启用认证中间件、生成 JWT 令牌以及在控制器中使用认证信息
464 2
|
数据采集
爬虫案例—爬取ChinaUnix.net论坛板块标题
爬虫案例—爬取ChinaUnix.net论坛板块标题
168 0
爬虫案例—爬取ChinaUnix.net论坛板块标题
|
12月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
339 5
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
441 0
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
231 7
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
268 0