麦迪康公司数据采集软件详细设计.doc_第1页
麦迪康公司数据采集软件详细设计.doc_第2页
麦迪康公司数据采集软件详细设计.doc_第3页
麦迪康公司数据采集软件详细设计.doc_第4页
麦迪康公司数据采集软件详细设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

麦迪康公司数据采集软件详细设计(初稿)1、 前言2008年1月18日,本人走访麦迪康公司与该公司的软件工程师讨论关于“数据采集软件”开发事宜,现根据讨论结果,及本人的想法,撰写本设计(初稿),请回复。2、 麦迪康公司的仓储流程麦迪康公司是一家从事药品、医疗器械的销售公司,该公司从各地的供货商购进药品、医疗器械,然后做销售。相关工作流程如下:1 下订单公司根据销售情况向供货商提出商品需求,并下订单,后购进货品。2 收货供货商将货品送到仓库,公司的员工根据订单收货。3 上架当公司员工对货品的种类、数量等确认无误后,将货品用叉车运往存储区或直接上货架。4 下销售单当销售人员联系客户,并确定销售货品的种类、数量,在系统中生成销售单。5 拣货(出货)客户拿销售单到仓库提货,工作人员根据销售单在货架上拣货,清点货品无误后由客户直接提取。6 补货(类似转仓)一般情况下,大多数货品都堆放在存储区,而货架上的货品是即将出货的货品。当货架上的货品数量不足,或第二天将会有客户提走大量货品时,会从存储区运来相应货品,并存放在货架上,以备提货之用。3、 利用条码实现货品的高效管理药品有生产批号的概念,当遇到药品回收情况时,要求能及时查出该生产批号的药品在仓库中具体的位置和数量,并即时与相应的供货商协商,作出处理。但由于该公司可能从不同的供货商购进相同批号的相同货品,所以对于该公司来说,即使是同一生产批号的同一种货品,因为购进的供货商的不同,也认为是不同的货品,所以,在该公司的软件系统里,用一种特定的规则,根据供货商、货品种类和生产批号等条件,生成一个唯一的系统批号,用以区分货品,而不是只从货品条码和生产批号来区分。该公司软件工程师曾提出:在收货之后,上架之前,生成系统批号条码,然后由仓库工作人员把条码贴在所有货品上,以方便货品管理,但仓库管理人员坚决反对。原因如下:首先,货品数量太多,如果每一件货品都要贴上条码,工作量会非常的大;其次,成本高;第三,在收货后才生成条码,那么收货时就不能使用系统批号条码,这样增加了工作量。鉴于上述情况,本人建议使用“货牌”来识别货品。首先,当供货商将货品送到仓库,在实际收货之前,应利用仓库的两台电脑,根据订货单的资料和货品的条码,以及生产批号、灭菌批号等条件,立即生成并打印系统批号条码,同时打印供货商的名称、货品的名称、规格、生产批号、灭菌批号等资料,制作成“货牌”(这种货牌应至少做三个,一个放在货位,第二个做成尺寸较小的,可放在货架上,第三个可在补货时使用);其次,在系统生成系统批号的同时,系统根据订单和系统批号,在系统中生成相应的收货单报表。报表用收货单号和系统批号来作为主键,以标识货品,实收数量初始值为零;第三,仓库工作人员在手持终端上输入收货单号(不是订货单号),并调出相应的订单作参考(收货单中应有一个字段和订单相关联)。在收货时,仓库工作人员只需扫一次系统批号的条码,而无需输入如供货商名称、生产批号等资料,大大节约了收货时间和提高工作效率;第四,以后的所有操作都可以用系统批号条码来作为唯一标识货品的关键字;第五,在同一供货商同一生产批号的同一种货品销售完以后,可把贴在“货牌”上的资料撕掉,再贴上另一种货品的资料,以达到循环使用的目的。“货牌”方法,既可实现条码的高效管理,又减少仓库工作人员的工作量,更可以减少成本。4、 目前麦迪康公司信息管理系统的架构目前麦迪康公司使用的是一套自行开发的信息管理软件,相关情况如下:服务器端:操作系统:Windows 2003 SP2数据库:Oracle 9iWeb 服务器:Apache(用于Oracle的管理) IIS (用于架设C#编写的Web Service)服务器的内网地址:192.168.0.251数据库的名称:DB251分配给本软件的数据库用户名和密码:都为wms09testIIS服务器端口号:暂未清楚(由于网络管理员外出)注:由于以上参数的不确定性,以及其对本软件编写至关重要,所以本人决定在编程时使用配置文件,这就可在软件发布时再修改这些参数,而不影响程序运行。5、 本软件的架构本软件采用手持终端上的软件、基于IIS的Web Service和数据库三层组成。IIS数据库 通过存储过程写 通过Sql语句读服务器 Web Service 有线网络AP5131手持终端 无线网络1 手持终端上的软件手持终端上的软件通过调用Web Service上的公共函数来读取或更新数据库。2 Web ServiceWeb Service一方面提供一个接口给手持终端上的软件,另一方面和数据库进行交互操作。与数据库进行交互操作包括读操作和写操作。读操作可用SQL语句直接对数据库进行读,而写操作就不可以,因为麦迪康公司的信息管理系统是一套自行开发的系统,里面包含复杂的数据逻辑,对一个表格进行插入、删除或更新将会影响其它表格,而对这套系统最熟悉的人是开发这套系统的麦迪康公司的软件工程师,所以本人希望由该公司的软件工程师来编写相应的存储过程,本人只需要知道相应的存储过程的名字、相应参数的个数,以及各参数的类型、长度等信息即可,这样做可以更快更好地编写程序,以达到春节年前完成软件的编写工作。相反,如果一定要本人编写这些存储过程,那么必须让本人有充分的时间对整个系统进行深入了解。如:登录模块,需了解用户名和密码存放的表格、密码是否加密,如果有,那么它是采用什么方式(对称的或非对称的)加密,密钥是什么,权限是怎样分配,登录过程是否要做日志,日志应该怎样写等等,这样做需要花费大量的时间。3 数据库数据库端主要是几个存储过程。用存储过程,而不用函数,是因为函数只有一个返回值,而存储过程虽然没有返回值,但是它的参数既可以作为输入参数,也可以作为输出参数,更加可以同时作为输入输出参数,而且输出参数可以不只一个。同时,存储过程主要是实现对数据完整性、合法性的判别,以及采用事务方式,保证插入、删除和更新的完整性和正确性。6、 本软件各功能模块的详细设计1 登录每个工作人员都有一个工牌,工牌上都有一个唯一的用条码打印的工号,当要登录时,只需扫描工牌上的条码,就可以自动录入工号,然后手动输入密码,再点击确定就可以。在本模块中需要确定的信息:登录存储过程的名称输入参数:用户名、密码输出参数:应能表示以下答案:登录成功用户名或密码错误用户名正确,但该用户没有权限登录。登录业务逻辑:先扫描用户工号,然后再输入密码,点“登录”按钮,通过Pr_RFLogin过程取得用户信息及用户的权限信息,登录不成功,可通过AError得到出错信息,成功则通过AUserRights得到权限信息,然后根据权限,再控制RF上面菜单按钮信息。登录过程:Pr_RFLogin(AUser_Code varchar2(20),APass varchar2(50), AUserRights out sys_Refcursor, AResult out char(1),AError varchar2(50);AUser_Code 用户工号APass 用户密码AResult 0(登录不成功),1(登录成功)AError 不成功提示信息AUserRights 登录用户权限集合,即返回一个权限的数据集2 收货收货是指当供货商用卡车将货品送到仓库时,工作人员卸货,并按一定的规则将货品堆放在收货区,检验质量和数量的过程。在这个过程中,工作人员先根据一定的规则制作货牌,并生成收货单(在PC上完成),然后通过输入收货单号,调出该收货单的信息,后输入数量,点击上传按钮完成收货过程(在PDA上完成)。在本模块中需要知道的信息:收货单表的名称字段:收货单号、系统批号、货品名称和规格、生产批号收货存储过程的名称输入参数:收货单号、系统批号、实收数量、经手人工号输出参数:表示是否成功,以及出错的原因收货业务逻辑:扫描用户工号,再扫描单号,通过Pr_RFGetReceive过程取得收货信息,然后一个产品一个产品进行收货,先扫描托盘码,再扫描产品码,输入数量,收货批号,生产批号,灭菌批号,有效期等等一系列信息,点发送,调Pr_RFAddShelf发送后即时生成上架单,一个托盘生成一张上架单。取收货单数据过程:Pr_RFGetReceive(ARecevie_Code varchar2(20) ,AReceiveData out Sys_Refcursor , AResult out char(1),AError out varchar2(50);参数说明:AReceive_Code 收货单号AReceiveData为返回的数据集,包括以下数据(主要取自收货单子表wms_receive_item),收货单ID(Reveive_ID),收货单明细ID(Sheet_ID),产品ID(Prod_ID),数量(Prod_Num),产品名称(Prod_Name),产品规格(Spec)。AResult 0(登录不成功),1(登录成功)AError 不成功提示信息保存收货数据过程(主要包括保存上架明细数据,生成建议货位,生成批次条码等):Pr_RFAddShelf(AProd_Code varchar2(20),ABatch_No varchar2(50),AProduce_Batch varchar2(50),AValid_Date varchar2(10),AAsepsis_No varchar2(50),AQty number(10,4),ATray_No varchar2(50),ADeal_User integer, AResult out char(1),AError out varchar2(50) );参数说明:AProd_Code 产品编号ABatch_No 收货批号AProduce_Batch 生产批号AValid_Date 有效期AAsepsis_No 灭菌批号AQty 数量ATray_No 托盘号ADeal_User 经手人AResult 0(登录不成功),1(登录成功)AError 不成功提示信息收货上架表:wms_receive_item_item,主要字段如下:收货单ID(receive_id), 产品ID(prod_id),生产批次(produce_batch),有效期(valid_date),灭菌批号(asepsis_no),收货批次(batch_no),数量(Fact_Num),托盘码(Tray_Serial_No),制单人(Make_User)。3 上架上架是指将堆放在收货区的货品,用叉车运往存储区或货架,并摆放在相应货位或货架的过程。这在数据逻辑中,是一个货品和货位的关联过程。在这个过程中,工作人员将货品,及制作好的货牌,运往相应的货位,将货牌挂在货位上,并将货品堆放在货位上。工作人员通过输入收货单号,调出相应的收货单,通过扫描货牌上的系统批次条码,调出相应货品的名称、规格等,再扫描货位条码号(每个货位或货架上都有一个唯一的编号条码),最后输入存放在该货位的货品的数量(这里,可能出现一种货品堆放在不同货位,或者一个货位堆放不同货品的情况,所以要输入实际堆放数量),按上传完成上架过程。在本模块中需要知道的信息:收货单表的名称字段:收货单号、系统批号、货品名称和规格、生产批号、货位编号上架存储过程的名称输入参数:收货单号、系统批号、货位(货架)号、数量、经手人工号输出参数:表示是否成功,以及出错的原因上架业务逻辑:扫描托盘码,通过Pr_RFGetShelf找到上架单,自动带出产品、建议货位、上架数量,再扫描货位,即得到实际货位,如果数量无误(可改),点发送调Pr_RFSetShelf将数据上传,上架完成取上架信息数据过程:Pr_RFGetShelf(ATrayNo varchar2(20) ,AShelfData out Sys_Refcursor , AResult out char(1),AError out varchar2(50);参数说明:ATrayNo 托盘码AShelfData为返回的数据集,包括以下数据(取自上架表wms_receive_item_item),上架单明细ID(ID),产品ID(Prod_ID),建议货位(Advice_Shelf),收货数量(Fact_Num),产品名称(Prod_Name),产品规格(Spec)。AResult:返回值,0-不成功,1-成功AError:返回错误信息,只有在AResult=0的情况下才有效上传上架数据过程(主要是确定实际货位、实际数量、改变单据状态):Pr_RFSetShelf(AID integer,AFact_Shelf integer,AFact_Num number(10,4),ADeal_User integer,AResult out char(1),AError out varchar2(50) );参数说明:AID 上架明细IDAFact_Shelf 实际货位AFact_Num 实际数量ADeal_User 经手人AResult:返回值,0-不成功,1-成功AError:返回错误信息,只有在AResult=0的情况下才有效4 拣货拣货是指将指定数量的货品从指定的货架上搬下来,然后按货品的不同分别堆放在拣货区上,等待客户来提货。工作人员通过输入拣货单号,调出拣货单,根据提示前往相应的货架拣货,在货架边上,扫描货牌上的系统批号,后扫描货架编号,再输入数量,点击保存,当拣货完成,点击数据上传即可。在本模块中需要知道的信息:拣货单表的名称字段:拣货单号、系统批号、生产批号、货品名称、货架编码、拣货数量拣货存储过程的名称输入参数:拣货单号、系统批号、货架编号、拣货数量、经手人工号输出参数:表示是否成功,以及出错的原因拣货业务逻辑:拣货单分整件拣货单和拆零拣货单(拆零拣货单要拣货箱,整件不需要)先扫描员工工号,通过Pr_RFGetNextPick得到一张拣货单,再并返回此拣货单详细信息,自动带出客户、集货位、产品、批号、拣货部品总数量(不是指批号数量)、拣货位、拣货箱号,然后拣货,扫描货架,输入拣货数量,然后保存,拣货完成后,然后上传,上传过程Pr_RFSetPick。取拣货信息数据过程:Pr_RFGetNextPick (APick_No varchar2(20) ,APickData out Sys_Refcursor , AUserNo varchar2(20),AResult out char(1),AError out varchar2(50);参数说明:APick_No 拣货单号APickData为返回的拣货数据集,包括以下数据(主要取自wms_pick_batch),拣货单ID(ID),客户(Buyer_ID),集货位(Collect_Shelf),产品ID(Prod_ID),拣货位(Shelf_ID),拣货箱数(Theroy_Boxs),理论拣货件数(Theory_Picecs),理论拣货数量(Theory_Num),拣货件数(Fact_Picecs),拣货数量(Fact_Num),产品条码批次(Batch_Barcode),拣货箱ID(Box_ID),产品名称(Prod_Name),产品规格(Spec)。AUserNo 锁定此单用户AResult 返回值,0-不成功,1-成功AError 返回错误信息,只有在AResult=0的情况下才有效上传拣货数据过程():Pr_RFSetPick(AID integer,AFact_Shelf integer,ABatch_Barcode varchar(50),AFact_Num number(10,4),ADeal_User integer,ABox_ID integer,AResult out char(1),AError out varchar2(50) );参数说明:AID 拣货批号明细IDAFact_Shelf 实际货位ABatch_Barcode 批次条码AFact_Num 实际数量ADeal_User 经手人ABox_ID 拣货箱(拆零拣货单才有拣货箱)AResult 返回值,0-不成功,1-成功AError 返回错误信息,只有在AResult=0的情况下才有效5 补货补货是指将指定数量的货品从存储区的指定货位运往指定货架的过程(其实就是转仓过程)。工作人员通过输入补货单号,调出补货单,然后根据提示的货位把货品搬下来(下架),扫描货牌上的系统批号,后扫描货位号,再输入数量,点击保存,然后根据提示的货架号,前往指定的货架,把货品搬上货架(上架),扫描货牌上的系统批号,再扫描货架编号,核对数量,点击保存,当补货完成,点击数据上传。在这个功能模块,本人会把它分成下架和上架两个页面,以方便操作。由于系统批号可以唯一地确定货品,所以在上架时,只需扫描货牌上的系统批号,就可把刚才录入的下架信息调出来,不会造成混乱。在本模块中需要知道的信息:补货单表的名称字段:补货单号、系统批号、源货位编号、目的货架编号、补货数量补货存储过程的名称输入参数:补货单号、系统批号、源货位编号、目的货架编号、补货数量、经手人工号输出参数:表示是否成功,以及出错的原因补货业务逻辑:先扫描员工工号,通过Pr_RFGetNextFeed得到一张补货单,再并返回此补货单详细信息,自动带出补货单号、货主、源货位、目的货位、产品、批次条码、补货数量,然后补货,先扫描补货货架,输入补货数量,然后将货物运到拣货位,扫描拣货位,输入拣货数量,然后保存,补货完成后,然后上传,上传过程Pr_RFSetFeed。取拣货信息数据过程:Pr_RFGetNextFeed (AFeed_No varchar2(20) ,AFeedData out Sys_Refcursor , AUserNo varchar2(20),AResult out char(1),AError out varchar2(50);参数说明:AFeed_No 补货单号AFeedData为返回的补货数据集,包括以下数据(主要取自wms_feed、wms_feed_batch),补货单ID(ID),货主(Owner_ID),源补货区(source_whouse),目的补货区(desc_w

温馨提示

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

评论

0/150

提交评论