物流管理系统中封仓功能的设计与实现论文_第1页
物流管理系统中封仓功能的设计与实现论文_第2页
物流管理系统中封仓功能的设计与实现论文_第3页
物流管理系统中封仓功能的设计与实现论文_第4页
物流管理系统中封仓功能的设计与实现论文_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

南南 开开 大大 学学 本 科 生 毕 业 论 文(设 计) 题 目:津菱物流管理系统中封仓功能的设计与实现 学 号: 姓 名:韩晓玮 年 级:2000 级 学 院:软件学院 系 别:软件工程 专 业:软件工程 完成日期:2004 年 5 月 31 日 指导教师:张波副教授 津菱物流系统库内管理封仓部分的改进津菱物流系统库内管理封仓部分的改进 软件学院软件工程系 软件工程专业 韩晓玮 学号: 指导教师:张波 副教授 摘要摘要: 津菱物流管理系统对良菱物流管理系统的二次开发,笔者主要负责对封仓 部分的改进设计和实现。主要是根据津菱物流公司的实际业务流程修改了原有 的手动封仓解封功能,并在此基础上增加了过保质期自动封仓以及解封的功能。 并对整个封仓部分做了功能测试,保证了与其他各个部分的兼容性。 本文主要从项目背景和对原有系统的描述入手,介绍了津菱物流系统的总 体业务流程,根据封仓部分的需求分析,分析并描述了所需使用的主要技术。 着重对封仓部分设计,系统实现进行了介绍,并简单介绍了对系统所进行的功 能测试以及完成项目后的一些心得。 关键字:关键字: 物流系统,封仓,Sybase,PowerBuilder Abstract JinLing Logistics Management System is a revision version of the LiangLin Logistics Management System. Redesigning and implementing the warehouse frozening is the objective of this thesis. Based on JinLing Corps business flow, we mainly modify the origin manual warehouse freezing and unfrozening functions, and add the warehouse auto-frozening and auto-unfrozening functions when the goods passed the period of validation into the system. We also do the testing of the warehouse frozening sub-system, and make sure my works wont have any compatibility problems with the other parts of the whole system. This thesis starts with the introduction of the project background and the origin system, followed by the description of the main business flow of JinLing Corp. Based on the requirement of warehouse frozening, it analyses the primary techniques which are demanded, and emphasizes on the parts of system designing and implementation. At last, the system testing and prospect parts are touched upon. Key Words: Logistics System, Warehouse frozening,Sybase, PowerBuilder 目目 录录 第一章第一章 绪论绪论1 1.1 项目背景1 1.2 津菱物流管理系统概述1 第二章第二章 系统功能及需求系统功能及需求5 2.1 封仓部分功能概述5 2.2 封仓部分原有功能描述5 2.3 封仓部分需求分析6 第三章第三章 系统改进设计系统改进设计8 3.1 开发环境描述8 3.2 津菱系统总体设计8 3.3 封仓部分主要技术9 3.4 POWERBUILDER窗口设计11 3.5 数据库相关设计13 第四章第四章 系统开发实现系统开发实现16 4.1 POWERBUILDER窗口实现16 4.2 存储过程实现21 第五章第五章 系统功能测试系统功能测试26 5.1 封仓及解封功能测试26 5.2 SYBASSE数据库的复制技术 .30 第六章第六章 项目总结与展望项目总结与展望33 6.1 项目心得33 6.2 项目开发展望33 致致 谢谢35 参考文献参考文献36 第一章 绪论 - 1 - 第一章第一章 绪论绪论 1.1 项目背景项目背景 20 世纪 90 年代中期,第三方物流(3PL)的概念开始传入我国。什么 是第三方物流呢?第三方物流是由物品供、需两方以外的企业提供物流服 务的业务模式,是在供应链中,企业以合同的形式在一定期限内提供用户 所需的全部或部分物流服务。第三方物流企业的利润不是来自运费、仓储 等直接费用收入,而是来源于信息和知识。它可能包括、也可能不包括运 费 、仓储资产的所有权。津菱物流公司就是一个以第三方物流为主,兼营 其他几种物流方式的现代物流公司。 物流产业的发展已经到了这样一个阶段:现代物流的信息系统已经成为 企业物流管理和操作的一个不可或缺的要件。到 2002 年底,我国的 IT 业 和电子商务市场约达到 150 亿美元,供应链管理的软件和服务市场也达到 40 亿美元。实际上,有没有 IT 系统的支持已经成为现代物流运作的重要标 志之一。许多企业在选择第三方物流服务供应商的时候往往把它作为重要 的前提条件。所以,企业选择物流 IT 系统,与其说是一种信息技术选择, 不如说是一种企业管理模式和市场竞争战略的选择。 一般来说,物流/供应链管理系统的建立有两条路径:一是量身定制的 开发;二是集成系统的导入。众所周知,物流 IT 系统量身定制开发的前提 是企业物流运作流程的设计;集成系统的导入也往往要求企业改变现有的 物流运作流程。所以,无论走哪条路,企业建立物流 IT 系统的前提都是要 确定其物流运作流程。津菱物流管理系统就是在这种背景下从原有良菱物 流管理系统的基础上按照津菱物流公司业务流程度身改造而来。 1.2 津菱物流管理系统概述津菱物流管理系统概述 津菱物流管理系统是为津菱物流公司度身改造的全方位物流管理软件。 它的原型是上海良菱物流公司所采用的物流管理软件,其功能涵盖了津菱物流 第一章 绪论 - 2 - 公司的所有业务流程,从进货,到库内管理、盘点,到出货、退货,均可在此 软件中完成。且此软件可按照公司内不同的角色提供不同的功能和权限。且此 软件对于公司简化工作流程,加快工作进度,以适应日益发展的业务以及企业 信息化起到了非常积极的作用。 津菱物流管理系统按其角色可分为库内管理操作员,系统操作员,采购操 作员,其中库内管理功能操作频率可分为系统操作、进货、门店要货、配送、 仓库管理、各类查询和基本信息管理,如图 1-1 所示: 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 图 1-1:津菱系统库内管理操作员用例图 系统操作部分的功能分为系统操作、基本信息管理、物价管理、结算、各 类查询和统计分析。如图 1-2 所示: 第一章 绪论 - 3 - 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 图 1-2:系统操作员用例图 采购操作部分的功能分为系统操作、基本信息管理、进货和各类查询,如 下图 1-3 所示: 仓 仓 仓 仓 仓 仓仓 仓仓 仓 仓 仓仓 仓 仓 仓 仓 仓 仓 仓 仓 图 1-3:采购操作员用例图 仓库(即库内管理)又分为配送中心库存维护,配送中心商品封仓,配送 中心移库,配送中心库存盘点,仓库损益,分拣仓位优化 6 个部分的操作以及 库存查询功能。如下图 1-4 所示: 第一章 绪论 - 4 - 仓库 管理 配送中 心库存 维护 配送中 心商品 封仓 配送 中心 移库 配送中 心库存 盘点 仓库 损溢 分拣 仓位 优化 配送中 心库存 查询 图 1-4:仓库内管理模块 第二章 系统功能及需求 - 5 - 第二章第二章 系统功能及需求系统功能及需求 2.1 封仓部分功能概述封仓部分功能概述 封仓是津菱物流管理系统库内管理中相当重要的一部分。当物流公司仓 库内的商品保质期临近,而商品按照正常的配送出库方式尚需一定时间, 因此即使立即出库,当商品运达要货门店的时候已经过了保质期。所以对 于即将到达保质期的商品,需要进行封仓操作,使其不能参加出库。而当 改进了运输路线或者由于其他原因使得商品可以在保质期前送达的时候, 又需要对指定日期之前过期的商品进行解封,使其可以参加配送出库。由 于可能在指定日期过期的商品进行封仓和解封操作的商品较多,所以需要 对此操作实现批处理,即可以一次性对多个商品进行封仓和解封。 另外,由于一些其他原因,可能有一些个别商品不能参加配送,因此需 要对这些商品进行单独的封仓操作。由于不能参加配送,所以称此类封仓 为“配送封仓” 。 2.2 封仓部分原有功能描述封仓部分原有功能描述 现系统中封仓部分只有“配送中心封仓商品查询” , “配送中心自动封仓解 封” , “配送中心手工封仓解封”三个界面。只能对单个商品进行个别的封仓。 其用例图如图 2-1 所示: 仓 仓 仓 仓仓 仓 仓 仓仓 仓 仓 仓仓 仓 仓 仓 仓 仓 仓 图 2-1:原有的封仓部分用例图 第二章 系统功能及需求 - 6 - 操作员:即由系统提供的配送经理郭颂的权限登陆 配送封仓:对仓库内存储仓位上的货物进行封仓,使其不能参加配送出库, 一次只能操作一条记录的商品。 点菜封仓:对仓库内存储仓位上的货物进行封仓,使其不能参加点菜配送, 一次只能操作一条记录的商品。 解封:解封可以对已经被封仓的商品进行解封操作,可以一次解封一条商 品记录,或者用 Ctrl 或 Shift 键选择多条记录进行解封。 封仓查询:可以查询出被任何封仓类型所封的商品记录(包括配送封仓, 保留库存封仓,调换封仓,反品封仓,退货封仓等) 。 2.3 封仓部分需求分析封仓部分需求分析 总体描述:增加保质期封仓功能,并根据实际业务情况修改手工封仓部分 的功能,并保证封仓部分与配送部分能够兼容。其用例图如图 2-2 所示: 仓 仓 仓 仓仓 仓 仓 仓仓 仓 仓 仓仓 仓 仓 仓 仓 仓仓 仓 仓 仓 仓 仓 仓 图 2-2:改进后的封仓部分用例图 自动封仓:对所有商品按照有效期进行查询,并对距离有效期在一定时间 之内(默认值为 14 天,可根据实际情况进行修改)的商品进行批处理封仓。 自动封仓解封:对所有被保质期自动封仓的商品根据其有效期在某一时间 段内进行查询,并对这些商品进行批处理解封。也可以对查询出来的商品进行 选中单个或多个商品进行解封。 配送封仓:与原有功能相同,检查其兼容性。根据津菱公司的实际业务情 况,取消点菜封仓一项,使手动封仓只能对商品进行配送封仓,而不能进行点 菜封仓。 第三章 系统改进设计 - 7 - 手工解封:在维持原有功能的基础上,将手工解封的功能扩大至既可以解 封手工封仓的商品,也可以解封自动封仓的商品。 封仓查询:在维持原有功能的基础上,在封仓查询功能中添加自动封仓栏, 并取消点菜封仓相关栏目。如图 2-3 所示: 仓 仓 仓仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 仓 图 2-3:封仓与配送出库状态图 第三章 系统改进设计 - 8 - 第三章第三章 系统改进设计系统改进设计 3.1 开发环境描述开发环境描述 3.1.1 服务器端环境 硬件环境:稳定服务器 软件环境:Redhat Linux 7.3, Sybase 12.5 3.1.2 客户端环境 硬件环境:普通 PC 机 软件环境:Microsoft 公司 Windows 操作系统 3.1.3 开发环境 硬件环境:奔腾 2.4G Hz CPU,512M DDR 内存,17 寸纯平显示器、显 存 64M,80G 硬盘。 软件环境:Windows2003 Server,Powbuilder7,Sybase Central3.1,ER Win4.0 3.2 津菱系统总体设计津菱系统总体设计 津菱物流管理系统的是专门针对公司内部资源进行管理,业务逻辑比较复 杂,并且局限在公司局域网内部使用,所以此管理系统在总体结构设计上采取 C/S 的模式即能比较好的满足客户需求,采用此架构模式能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器,减轻了服务器的 负担,因而客户端响应速度快。相比较于目前流行的 B/S 架构模式,在开发上 更简单易行,系统的安全性也更高。其体系架构如图 3-1 所示: 第三章 系统改进设计 - 9 - Redhat Linux 7.3 服务器 Sybase12.5 数据库 Windows 操作系统 客户端 发出 SQL 到服务器 返回查询结 果到客户端 TCP/IP 图 3-1:津菱物流管理系统体系结构 3.3 封仓部分主要技术封仓部分主要技术 3.3.1 PowerBuilder 中的 DataWindow 技术 纵观 PowerBuilder 技术,数据窗口(DataWindow)可是说是其核心的核心, 它使得数据库的开发和应用变得更加简单,快捷。DataWindow 能够让用户在输 入数据和制作报表时,以多种不同的风格来显示数据。DataWindow 是一种为正 在被观察的数据保留数据信息的特有对象,因此,它为生成一个带有高质量的 数据库事务应用程序提供了强大的处理工具。数据窗口对象的主要功能是显示 数据并允许用户修改,因为在数据窗口对象中包含两个主要组件:数据信息和 显示格式。数据窗口需要数据库和其他非数据库的数据资源来组装自己,它按 照定义时制定的表现风格显示。用户定义了表现风格后,可以对其进行进一步 的修改,以增强数据窗口的功能。数据窗口不但自身显示数据还可以作为生成 所有报表的数据源。在一个实际的应用程序处理过程中,数据窗口一般位于应 用程序和数据库中间,按应用程序的要求来检索,操纵并显示数据。除了数据 第三章 系统改进设计 - 10 - 库之外,数据窗口还可以通过 ODBC,DDE(动态数据交换) ,OLE(对象嵌入 与连接)等方法访问文件中的数据。 数据窗口为应用程序提供了数据源和检索,操纵数据的方法与途径。它包 括数据窗口对象和数据窗口控件两个方面。 1数据窗口对象 数据窗口对象是由数据窗口画板创建,并作为一个独立的对象存入 PowerBuilder 库文件中。在实际应用中,数据窗口对象通过数据窗口控件被放 置在窗口中。数据窗口对象可以看成是封装数据的容器,数据窗口控件可以看 作是窗口和数据窗口之间的连接件。数据窗口控件拥有自己独立的属性,函数 和事件,拥有读取和修改数据窗口对象属性的函数(Describe 和 Modify) 。数据 窗口画板是创建和修改数据窗口对象的地方。数据窗口对象创建以后,被定义 为独立对象,而不必将它们限定到某个特殊窗口,甚至不必将它们限定到某个 应用程序中。数据窗口对象可以在窗口间进行共享,可以在需要访问相同表的 不同应用程序中使用相同的数据窗口对象,这体现了 PowerBuilder 的可重复使 用性。 2数据窗口控件 数据窗口对象是通过一个数据窗口控件来引用的,通过数据窗口控件将数 据窗口对象放置到窗口中,并通过数据窗口控件实现对数据窗口对象的操纵。 在窗口中添加放置数据窗口控件和添加放置其他控件一样。 1)将数据窗口控件放置到窗口上,设定其位置和大小。 2)将数据窗口控件连接到某个特定的数据窗口对象。 3)编写脚本代码,处理数据窗口控件和操纵数据窗口对象。 3.3.2 Sybase 数据库中的存储过程 存储过程是存储在数据库中的一段存储程序。当创建存储过程时,系统会 对其进行编译,并将执行代码存储到数据库中。 存储过程的优点: 1)安全性 当创建了存储过程之后,可以将执行该过程的权限授予其它用户,从而使 得他可以执行特定的数据库操作,而不能访问其它模式对象(例如表)。例如, 第三章 系统改进设计 - 11 - 你可以将执行过程(更新表)的权限授予其它用户,但不授予它们直接访问该 表的权限。 2) 性能 存储过程只被发送到数据库一次,相对于 SQL 语句或 PL/SQL 块而言,其网 络通信量更小。 当调用存储过程时,数据库会直接运行该存储过程,无需进行编译。相对 于 SQL 语句而言,其执行速度更快。 3) 内存分配 存储过程充分利用了 Sybase 共享内存的能力。在将存储过程装载到内存中 后,多个用户可以同时调用该存储过程,从而降低了应用对 Sybase 的实际内存 需求。 3.3.3 面向对象的软件设计 由于 PowerBuilder 是完全支持面向对象的开发工具,所以此系统的开发运 用了大量的面向对象的思想。如系统中的大部分窗口以及按钮都是从同一个基 类继承下来,大大减少了重复的工作量,增强了软件的复用性,加快了开发进 程。 3.4 PowerBuilder 窗口设计窗口设计 3.4.1 过保质期自动封仓窗口设计 此窗口可以对预警天数进行设定(默认值是 14 天) ,设定完毕后可以对选 定仓库编号和仓位编号进行查询未被封仓的商品。预警日期显示的为系统当前 日期与预警天数相加的日期。在数据窗口中可以对查询所得的商品进行判断, 通过 checkbox 决定是否将此商品自动封仓(默认值为选中) ,点击封仓按钮则 可将约束条件下的商品进行批处理封仓。 窗口对象:w_stkloc_autoclose_alarm 数据窗口控件:dw_1 数据窗口对象:d_stkloc_autoclose_alarm 数据源存储过程:Spq_Stk_CloseAlarm 涉及表:Tbb_StkLoc 第三章 系统改进设计 - 12 - 表 3-1:封仓窗口总体设计 PB 中的对象含义类型 w_stkloc_autoclose_alarm主窗口 sy_w_sheet sle_2预警天数录入框singlelineedit st_4预警天数statictext cbx_1打印复选框sy_u_cbx dw_2仓库编号数据窗口sy_u_dw dw_1数据输出窗口sy_u_dw em_1预警日期显示框sy_u_em st_3进度条statictext sle_1仓位编号输入框sy_u_sle st_2仓位编号statictext st_1仓库编号statictext 3.4.2 过保自动封仓解封设计 此窗口可以设置解封起始日期和解封终止日期(默认值解封起始日期为系 统当前日期,解封终止日期为系统当前日期 14 天以后的日期) ,并在选定仓库 信息和仓位编号(可以不填)后,点击查询,可以在数据窗口中得到当前仓库 和仓位中有效期在解封起始日期和解封终止日期之间的被自动封仓商品。按住 Ctrl 和 Shift 键可对此数据窗口中的记录进行单选或者多选,点击解封按钮可以 将选中商品解封。 窗口对象:w_stkloc_autoclose_unclose 数据窗口控件:dw_list 数据窗口对象:d_stkloc_autoclose_unclose 涉及存储过程:Spu_stkloc_unclose 涉及表:Tbb_StkLoc 第三章 系统改进设计 - 13 - 表 3-2:解封窗口总体设计 PB中的对象:含义类型 w_stkloc_autoclose_unclose 主窗口 sy_w_sheet dw_storage 仓库信息下拉框 dw_u_storage_query st_1 “仓位编号” statictext sle_stkcell 仓位编号输入框 sy_u_sle dw_list 数据输出窗口 sy_u_dw st_2 进度条外框 statictext st_3 进度条 statictext em_1 起始日期输入窗口 editmask em_2 终止日期输入窗口 editmask st_4 解封起始日期 statictext st_5 解封终止日期 statictext 3.4.3 其他窗口的修改 1在“配送中心手工封仓”窗口 w_stkloc_close 中去掉“点菜封仓”选项: 主要对其数据窗口控件 d_stkloc_list 进行修改,使其中的“点菜封仓” 选项为不可见,但是保留代码,以留作以后的接口之用。 2在“配送中心封仓商品查询”窗口 w_stkloc_close_query 中去掉“点菜 封仓”复选框: 主要对其数据窗口 d_stkloc_close_query 进行修改,去掉“点菜封仓” 一栏。 3.5 数据库相关设计数据库相关设计 3.5.1 数据库表 封仓部分功能的实现主要是编写存储过程对数据库中配送中心商品库存表 (Tbd_StkLoc)的进行修改操作。 表 Tbd_StkLoc 包含的各个字段: 表示商品所属标识的字段:DeptId(配送中心部门标识),StkLocId(配送中心 第三章 系统改进设计 - 14 - 库存标识) ,StkRegId(配送中心进货登记标识) ,StorageId(配送中心仓库标识) , StkCellId(配送中心仓位标识) ,ProvId(供应商标识) ,ArtiId(基商品标识) , ImpArtiId(进货类商品标识) 表示商品基本信息的字段:ArtiClassCode(商品分类码) ,ImpInclQty(进货 包装基商品含量) ,ImpUnit(进货包装计量单位) ,DistInclQty(配送包装基商品 含量) ,DistUnit(配送包装计量单位) 表示现存该商品信息的字段:StkQty(配送中心库存单品数量) ,TolQty(配送 中心库存单品可配送数量) ,TaxPrice(库存商品含税进价) ,UnTaxPrice(库存商 品无税进价) ,ITaxRate(商品进项税率) ,ImpDate(配送中心入库日期) , ProcDate(配送中心商品生产日期) ,ValidDate(配送中心商品有效日期) , BatchCode(配送中心商品批号) ,GiftTypeId(赠品类型标识) 表示库内该商品状态的字段:AutoCloseMark(自动封仓允许标志) , CloseDate(封仓日期) ,EmptyDate(仓卡结零日期) ,StkStatus(配送中心库存 状态) ,Note(配送中心库存说明) ,OptrId(操作员标识) 此表中的 StkStatus 为商品的库存状态值,其具体含义如下: 0-正常(可配送) 1-正在配送(不可出库) 2-手工点菜封仓(可配送) 4-手工配送封仓(不可点菜,不可配送) 8-到有效期自动封仓(不可点菜,不可配送) 16-配送中心内部返品封仓(不可点菜,不可配送) 32-配送返品封仓(不可点菜,不可配送) 64-保留库存封仓(不可点菜,不可配送) 128-退货封仓(不可点菜,不可配送) 256-与供应商调换封仓(不可点菜,不可配送) 512-配送中心内部移库过程封仓(中间状态) 注: 由于现有需求中对于点菜封仓不做要求,所以在用户操作界面上将与点菜 封仓有关的操作取消,但是考虑到由于公司以后业务的发展或者别的需求,点 菜封仓可能会在以后有所要求,所以在系统内部实现中保留与点菜封仓有关的 第三章 系统改进设计 - 15 - 字段及属性,以留作做将来功能扩展之用。 3.5.2 存储过程 存储过程主要完成对表的各种操作和修改,根据需求分析的要求,增加或 修改了以下存储过程: Spu_StkLoc_AutoClose:实现过保质期封仓操作 Spq_Stk_CloseAlarm:d_stkloc_autoclose_alarm 的数据源 Spu_stkloc_unclose:实现了对单个商品的解封操作 第四章 系统开发实现 - 16 - 第四章第四章 系统开发实现系统开发实现 4.1 PowerBuilder 窗口实现窗口实现 4.1.1 过保质期自动封仓窗口主要实现 1创建窗口主体 w_stkloc_autoclose_alarm 在 PB 中创建 Object-Window-w_stkloc_autoclose_alarm,按照设计,增 各个控件:sle_2(singlelineedit), st_4(statictext), cbx_1(sy_u_cbx), dw_2(sy_u_dw), dw_1(sy_u_dw), em_1(sy_u_em), st_3(statictext), sle_1(sy_u_sle), st_2(statictext), st_1(statictext) 。 2数据窗口的构建 编写存储过程 Spq_Stk_CloseAlarm,根据存储过程的设计确定传递参数: m_DeptIdint, /*配送中心部门标识*/ m_StorageIdint,/*配送中心仓库标识*/ m_StkCellNo varchar(20), /* 配送中心仓位编码 */ m_ValidDays datetime/* 预计封仓日 */ 在实现查询功能的事件 sy_query 中调用此数据窗口控件的 retrieve 函数, 并确定定此四个参数后数据窗口即调用存储过程进行查询,并将结果显示 在数据窗口控件 dw_1。参数值均从主窗口中的输入控件取得,主要代码如 下: li_storageid = dw_2.object.storageid dw_2.getrow ( ) s_stkcellno = sle_1.text ls_stkcellno = sle_1.text ld_em1 = date(em_1.text) ld_date = datetime(ld_em1) li_bak = dw_1.retrieve ( il_storeid , li_storageid , % + trim ( ls_stkcellno ) + % , ld_date ) 3封仓功能的实现(sy_autofengcang) 第四章 系统开发实现 - 17 - 封仓功能是通过事件 sy_autofengcang 实现的,在此事件中调用存储过 程 Spu_Stkloc_AutoClose,传递两个参数: m_AlarmDay int, -过保预警天数 m_CloseDate datetime = null -当前日期 该存储过程实现对有效期在封仓日期之前的商品进行封仓操作。事件在 调用存储过程完毕之后,再次调用查询函数,刷新数据窗口: this.triggerevent ( sy_query ) 4关闭窗口事件(closequery) 当用户改变了商品的自动封仓状态后如果没有保存就关闭窗口,则系统 回提示用户进行保存: if dw_1.getnextmodified ( 0 , primary! ) 0 then ll_result = messagebox ( 提示 , 数据已经修改 ,是否保存? , Question! , yesnocancel! , 3 ) 5其他功能 此窗口中的其他功能按钮均从系统中的父类继承,分别实现了复位,保 存,另存,预览,打印,关闭等功能。并能对数据窗口中的选中记录进行 到首,向前,向后,到尾操作。 4.1.2 过保质期自动封仓解封窗口主要实现 1创建窗口主体 w_stkloc_autoclose_unclose 在 PB 中创建 Object-Window- w_stkloc_autoclose_unclose,按照设计, 增各个控件:dw_storage(dw_u_storage_query), st_1(statictext), sle_stkcell(sy_u_sle), dw_list(sy_u_dw), st_2(statictext), st_3(statictext), em_1(editmask), em_2(editmask), st_4(statictext), st_5(statictext)。 2数据窗口的构建 通过 SQL Query 形式构造数据窗口对象 d_stkloc_autoclose_unclose,从 表: dbo.Tbb_Article(商品基表) dbo.Tbd_StkCell(仓位类型表) 第四章 系统开发实现 - 18 - dbo.Tbd_StkLoc(配送中心商品库存明细表) dbo.Tbd_StkStorage(配送中心仓库表) 中选取数据,返回给数据窗口控件,作为查询调用的结果。 检索参数: li_deptid number配送中心部门标识 li_storgeid number配送中心仓库标识 ls_stkcellno string配送中心仓位编号 ld_datestart Datetime解封起始日期 ld_dateend Datetime解封终止日期 确定检索条件(即已被封仓,且有效期在规定的时间段内的商品): Where ( dbo.Tbd_StkLoc.StkStatus /*出错信息*/ sqlca . autocommit = true execute fengcang ; 循环调用存储过程: for ll_row = 1 to ll_maxrow if dw_list . isselected ( ll_row ) then /*调用存储过程具体实现代码*/ end if next 解封结果处理: if ll_rowpoint = ii_rowall then/*解封成功*/ messagebox ( 提示信息 , 解封成功! ) st_3 . visible = false lm_menu . of_disable ( lm_menu . m_edit . m_item_1 ) ib_firstquery = false this . triggerevent ( sy_query ) return 1 else if ll_rowpoint = 1 then/*解封失败*/ messagebox ( 提示信息 , 解封失败! ) elseif ll_rowpoint 1 then 第四章 系统开发实现 - 21 - messagebox ( 提示信息 , 所选中的记录没有完全解封成 功! ) ib_firstquery = false this . triggerevent ( sy_query ) end if st_3 . visible = false lm_menu . of_disable ( lm_menu . m_edit . m_item_1 ) return -1 end if 5其他功能 此窗口中的其他功能按钮亦从系统中的父类继承,分别实现了复位,保 存,另存,预览,打印,关闭等功能。并能对数据窗口中的选中记录进行 到首,向前,向后,到尾操作。 4.1.3 手工封仓解封及查询主要实现 1在手工封仓中去掉点菜封仓的下拉菜单项: 打开数据窗口控件 d_stkloc_list,修改其中下拉列表控件 tbd_stkloc_stkstatus 的 edit 属性中的 code table 内容,去掉“点菜封仓” 。 2在配送中心封仓商品查询中去掉点菜封仓的复选框 打开数据窗口控件的 d_stkloc_close_query,去掉其中的 obj_控件即可。 4.2 存储过程实现存储过程实现 4.2.1 Spq_Stk_CloseAlarm 此存储过程被窗口 w_stkloc_autoclose_alarm 中的数据窗口对象调用,实现 了对有效期在预警日期之前的存储仓位商品进行查询的功能。其功能实现如下: 1)由用户在窗口输入框中的输入确定查询范围,如果有些输入框没有输入, 则默认为这些输入框中的内容不受限制,及全部选中。将结果放入临时表 StkCell 中: 第四章 系统开发实现 - 22 - selectm_StorageId = isnull ( m_StorageId , 0 ) , m_ValidDays = isnull ( m_ValidDays , dateadd ( dd , 1 , getdate ( ) ) ) if m_StkCellNo is NULL select m_StkCellNo = % else if charindex ( m_StkCellNo , % ) = 0 selectm_StkCellNo = rtrim ( m_StkCellNo ) + % selectc.DeptId , c.StorageId , StorageNo , StkCellId ,StkCellNo into#StkCell 2)由于在分拣仓位以及倾斜货架(津菱系统不要求,但作为以后的扩展接 口保留此类型货架)上的商品不能被封仓,所以不能在此窗口中显示这些商品: Where c . StkCellTypeId not in ( 100 ,110 ) /*StkCellTypeId 为 100 和 110,为放在分拣仓位和倾斜货架上的商品*/ 3)Tbb_Article 表中 LInclQty 定义为=商品的提前报警天数 将库存 Tbd_StkLoc 中 ValidDate - LInclQty 库内管理出库,进行测 试。 5.1.3 测试过程 第五章 系统功能测试 - 29 - I三明治集成: 自动封仓部分: a打开“配送中心商品封仓预警”窗口,设置预警天数为 90 天,查询 所得数据为有效期在系统日期后 90 天以内的所有存储仓位未被封仓 商品,查询功能正常。 b将查询所得所有商品进行过保质期自动封仓。打开“配送中心自动 封仓解封”查询已自动封仓商品,发现所封商品均在此处出现,封 仓功能正常。 自动解封部分: a打开“配送中心自动封仓解封”窗口,设置“解封起始日期”为 “2004/03/10” , “解封终止日期”为“2004/09/10” ,查询结果为所 有有效期在此时间段的已自动封仓商品,查询功能正常。 b选中其中一条记录,点击“解封” ,然后打开“配送中心商品封仓 预警”窗口查询,发现此商品均已解封。回到解封窗口,选中所商 品,点击“解封” ,再回到预警窗口,发现所有所有商品均已解封, 解封功能正常。 手动封仓解封与配送出库的集成: 测试使用商品数据: 利民酿造酱油 a仓库-配送中心商品封仓-配送中心库存商品封仓 (w_stkloc_close) b门店要货-要货单录入(w_out_entry) c配送-配送启动-配送启动(w_dist_multimanner): d配送-配送出库-配送出库(w_distribution) 自动封仓解封与配送出库的集成: 说明:此部分记录了与封仓有关的配送测试数据,发现已封仓商品将不 能参与配送出库,且已封仓商品的出库单号将不被记录在数据库中 当前测试计算机系统时间:2004-4-4 系统自动封仓预警天数:90,封仓日期:2004/07/03 第五章 系统功能测试 - 30 - 测试使用商品数据: 商品编号商品名称库存数量仓位编号仓卡号有效期 喜之郎 10 粒高纤 1*48 10 袋 CA 08-2-0249472004/03/12 a配送中心商品封仓预警 w_stkloc_autoclose_alarm b要货单录入 w_out_entry c配送启动 w_dist_multimanner d配送出库 w_distribution II系统测试 此部分文档记录了一次从进货要货配送出库全过程的数据流程, 主要目的是发现当修改了封仓部分代码后系统的其他部分是否能正常工作, 即是否破坏原有功能,故仓库内部管理部分没有算在这次测试业务流程之 内。 1)进货-进货与登记入库-采购订单录入 2)进货-进货与登记入库-进货登记与入库 3)门店要货-要货单录入 4)配送-配送启动-配送启动 5)配送-配送出库-配送出库 5.1.4 测试结果 1)三明治集成测试结果分析 配送中心自动封仓解封功能正常,配送中心手动封仓解封功能正常,且被 封仓商品虽然可以被要货但是最终不能被配送出库,被解封后能参加配送出库。 2)系统测试结果分析 封仓部分更改基本不会影响系统原有功能的实现。 第五章 系统功能测试 - 31 - 5.2 Sybasse 数据库的复制技术数据库的复制技术 5.2.1 为什么要进行数据库复制? 当项目在进行手工封仓解封和配送出库的集成测试的时候,测试变得难以 进行,因为发现虽然把存储仓位中某种商品全部都配送封仓,但是在配送出库 阶段总能出库,但是在代码中我又找不到错误,令人百思不得其解。后来发现, 原来同组财务部分的开发人员正在往仓库里进货,所以尽管把库中现存的商品 全部封仓,但是在这之后负责财务的开发人员由于开发需要又将此商品进货, 而配送出库成功即是将这些进来的货又出去了。由于对数据库的同时操作导致 了不同部分开发人员的测试与开发工作同时进行变得十分困难,有时甚至会产 生脏数据。 在导师的建议下,我对本项目组所使用的数据库 sytrade60 复制,产生新的 数据库 sytrade70,开发的时候使用数据库 sytrade60,测试的时候使用复制的新 数据库 sytrade70,保证了开发和测试工作的顺利进行。 5.2.2 数据库复制的环境和用到的工具 Sybase Central 3.1:这是 Sybase 公司的产品系列产品之一,此工具主要 实现了对一个数据库中所有表结构以及存储过程的导出,且在开发过程中对修 改存储过程也提供了十分方便的实现平台。 bcp 工具:Sybase 数据库自带的一个数据导入导出工具,主要实现对数据库 中表数据的导入导出。与其说 bcp 是一个命令,不如说它是一个十分好用的附 带工具。 PowerBuilder:用来生成导出所有表数据的 bcp 命令。由于系统所使用的数 据库中表太多,而每导入导出一个表的数据均需要使用一条 bcp 命令,所以最 好可以使用一个工具可以批处理一次性生成所有的 bcp 命令,在 PowerBuilder 中生成是我从网上找到的一个好方法。 isql 命令:向数据库导入所有的表结构,存储过程,触发器,用户等信息。 5.2.3 复制过程 1)创建新数据库 sytrade70 在 Sybase Central 中创建新的数据库 sytrade70,分配逻辑空间和数据空间。 2)原数据库表结构以及数据的导出 第六章 项目总结与展望 - 32 - 在 Sybase Central 中将数据库 Sybase60 中点中所有的表或者存储过程,从 右键选项中选择 Generate DDL,生成所有创建用户表,系统表,代理表,存储过 程,视图,用户,组,用户定义的数据类型,Java 对象,缺省,规则,段,扩 展存储过程的 SQL 语句,分别存储在扩展名为.sql 的文件中。 在 PowerBuilder 的数据库画板中生成所有用来导出表数据的 bcp 命令,将 这些命令放在一个批处理文件 out.bat 中。 执行批处理文件 out.bat,导出 sybase60 中的所有数据。 3)生成新数据库 使用 isql 命令执行所有创建表,存储过程等的.sql 文件,创建数据库主体。 同样再 PowerBuilder 中的数据库画板中生成所有导入表数据的 bcp 命令,将这 些命令放再一个批处理文件 in.bat 中。 执行批处理文件 in.bat,将所有数据导入 sybase70。 复制 Sybase12.5 数据库的工作至此全部完成。 5.2.3 其它复制方法简介 在复制数据库的过程中本人亦发现了一些其他的数据库复制的方法和工具, 但是由于时间所限,没有一一进行深究,在这里仅作简单介绍: 1)PowerDesigner:可将原数据库在 PowerDesigner 中先反向工程,然后可 以生成其表结构。但是 PowerDesigner 会检验数据库的正确性,如果有错误的 表结构,或者主外键关联等,则不能进行。 2)SQL Server2000:微软的 SQL Server2000 中自带一个数据导入导出的工 具,可以将一个 Sybase 数据库中所有的数据导入到另一个 Sybase

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论