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

一步一步教你使用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:

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

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

关于业务处理

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

关于代码/下载

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

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-入库业务结尾工作-演示单据的打印

    回顾与说明      首先给大家说声抱歉,上一周忙了一些其他的事,博客也就差不多一周没有更新,让关注AgileEAS.NET平台的朋友们久等了,希望大家能继续关...

    魏琼东
  • 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-演示使用报表构建UI-入库业务查询模块

    回顾与说明     前面我们把“商品字典”、“商品入库”、“商品库存查询”三个模块已经概括或者详细的演示完了,这些模块涉及到简单数据的增、删、修,也涉及到复杂业...

    魏琼东
  • AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(一):下载平台并基于直连环境运行

    一、前言      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速...

    魏琼东
  • 【图文并茂】通过实例理解word2vec之Skip-gram

    word2vec主要实现方法是Skip-gram和CBOW,CBOW的目标是根据上下文来预测当前词的概率,且上下文所有的词对当前词出现概率的影响的权重是一样的,...

    zenRRan
  • 【论文详解】词向量ELMo: Embeddings from Language Models

    (1) 使用理念方面:在原先的词向量模型中, 每个词对应着一个向量, 但是这个模型是根据一个句子赋予每个词汇向量. 因此对于一个 n-tokens 的输入NLP...

    zenRRan
  • MongoDB数据库(一)

    在爬虫中我们会时常用到mongoDB数据库。mongoDB的优点在于易扩展,高性能,灵活的数据了类型。

    不断折腾
  • 英伟达GTC中国站开幕:宣布TensorRT3、自动机器处理器Xavier

    机器之心报道 参与:李泽南 9 月 26 日上午,英伟达 GTC 大会中国站在北京开幕。作为每年 GPU 开发者最为重要的盛会,GTC 和全球一系列活动为开发者...

    机器之心
  • H5 游戏开发 2:搭建 Egret 开发环境

    在上一期的“H5 游戏开发”教程中,猫哥介绍了如何通过 Whistle 工具对 Egret 文档进行资源修复和搜索增强。本期,我们以 Hello World 项...

    猫哥学前班
  • Restful API 设计指北

    近期学习了Go语言,跟着七米在学习,学习过程中了解到了 API 的一个设计规范,也就是本文要讲的 Restful API 设计模式,现在互联网处在前后端分离的阶...

    Debug客栈
  • NLP 点滴 :文本相似度 (下)

    在自然语言处理过程中,经常会涉及到如何度量两个文本之间的相似性,我们都知道文本是一种高维的语义空间,如何对其进行抽象分解,从而能够站在数学角度去量化其相似性。

    肖力涛

扫码关注云+社区

领取腾讯云代金券