物流管理系统.docx

上传人:b****5 文档编号:8783061 上传时间:2023-05-14 格式:DOCX 页数:33 大小:94.54KB
下载 相关 举报
物流管理系统.docx_第1页
第1页 / 共33页
物流管理系统.docx_第2页
第2页 / 共33页
物流管理系统.docx_第3页
第3页 / 共33页
物流管理系统.docx_第4页
第4页 / 共33页
物流管理系统.docx_第5页
第5页 / 共33页
物流管理系统.docx_第6页
第6页 / 共33页
物流管理系统.docx_第7页
第7页 / 共33页
物流管理系统.docx_第8页
第8页 / 共33页
物流管理系统.docx_第9页
第9页 / 共33页
物流管理系统.docx_第10页
第10页 / 共33页
物流管理系统.docx_第11页
第11页 / 共33页
物流管理系统.docx_第12页
第12页 / 共33页
物流管理系统.docx_第13页
第13页 / 共33页
物流管理系统.docx_第14页
第14页 / 共33页
物流管理系统.docx_第15页
第15页 / 共33页
物流管理系统.docx_第16页
第16页 / 共33页
物流管理系统.docx_第17页
第17页 / 共33页
物流管理系统.docx_第18页
第18页 / 共33页
物流管理系统.docx_第19页
第19页 / 共33页
物流管理系统.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

物流管理系统.docx

《物流管理系统.docx》由会员分享,可在线阅读,更多相关《物流管理系统.docx(33页珍藏版)》请在冰点文库上搜索。

物流管理系统.docx

物流管理系统

✧第一天国际物流杰信商贸+搭建环境

1.项目背景

杰信商贸是国际物流行业一家专门从事进出口玻璃器皿贸易的公司。

公司总部位于十一个朝代的帝王之都西安,业务遍及欧美。

随着公司不断发展壮大,旧的信息系统已无法满足公司的快速发展需求,妨碍公司成长,在此背景下,公司领导决定研发《杰信商贸综合管理平台》。

《杰信商贸综合管理平台》分三期完成。

一期完成仓储管理(包括:

采购单、仓库、货物、条形码、入库、出库、退货、盘点、库存、库存上限报警、统计查询)和展会管理(包括:

展会管理、出单管理),形成货物统一数字化管理。

二期完成货运全流程管理,包括购销合同、出货表统计、出口报运单、HOME装箱单、装箱单、委托书、发票、财务统计等。

三期完成决策分析(包括:

成本分析图、销售情况统计、重点客户、经营情况同期比对统计、工作绩效),为公司经营决策提供数据支持。

a)用例图

2.了解系统是所有功能模块

利用visio画系统功能结构图,目的让开发人员了解都有哪些业务模块,方便分工合作,根据每个页面模块的难度,复杂,投入的人力情况来衡量每个模块多少钱。

验收标准。

数据库建模,业界都使用PowerDesinger建模

3.系统架构

4.业务:

生产厂家

a)功能

在货物模块和附近模块,它们都有个生产厂家,讲生产厂家信息提出,成为一个单独的表。

b)需求调研《需求说明书》

生产厂家表FACTORY_C(_C业务后缀)

序号

名称

代码

是否

主键

类型(长度)

说明

编号

FACTORY_ID

VARCHAR2(40)

UUID

全称

FULL_NAME

VARCHAR2(200)

对应客户比较模糊,翻倍2到4倍

简称

FACTORY_NAME

VARCHAR2(50)

联系人

CONTACTS

VARCHAR2(30)

人名20/30

电话

PHONE

VARCHAR2(20)

手机

MOBILE

VARCHAR2(20)

传真

FAX

VARCHAR220)

验货员

INSPECTOR

VARCHAR2(30)

排序号

ORDER_NO

INT

备注

CNOTE

VARCHAR2(500)

如果感觉它可能和关键字冲突,给它加个C前缀

创建人

CREATE_BY

VARCHAR2(40)

权限字段,登陆人ID

创建部门

CREATE_DEPT

VARCHAR2(40)

登陆人所在部门的ID

创建时间

CREATE_TIME

TIMESTAMP

✧第二天生产厂家CRUD+购销合同

1.业务:

启用,停用

功能:

和杰信合作生产厂家突然有一天它以次品冒充优质品,杰信不跟这个厂家进行合作。

在货物中生产厂家选择框,不能选择这个不再合作的厂家。

在系统中不能直接删除这个厂家,因为我们的历史数据中含有对这个生产厂家的引用。

软件是采用“伪删除”方式来解决。

实际是在数据库表中加入列,作为标识,标识厂家是否可以被引用。

0停用1启用。

新增厂家默认1,可以修改某个厂家为停用。

在货物中选择厂家的下拉列表,只显示为启用。

2.加“启用”“停用”功能,修改状态。

3.货运管理核心流程:

购销合同

a)需求调研过程

软件企业就会到杰信去需求调研,

项目经理,他面对客户的高层中层领导,目的跟客户安排好调研日程。

设计人员,带领初级程序员到具体的业务部门调研。

聊天,围绕项目的目标,设计人员会自己记录谈话内容,(主干),初级程序员(所有内容)。

回来整理笔记,整理《需求调研报告》

报告中怎么体现纸质报表?

初级程序员将纸质报表转化成电子的。

b)购销合同业务分析

4.需求过程

杰信和生产厂家签到的合同,称为购销合同。

一个购销合同中包含多个货物信息,一个货物信息包括多个附件信息。

报表打印时,同一个生产厂家的货物信息才能放在同一个页上,不同生产厂家的货物信息不能放在同一个页上。

分析阶段,抠每个字段

5.出货表

设计方案一(传统设计)

合同表,货物表,附件表多次左连接,SQL极其复杂,由于附件值特殊,SQL不能直接完成,还需要代码去实现。

设计方案二(冗余设计)

通过冗余,都在货物表中,只需要合同表和货物表左连接即可。

6.分析过程

将用户的需求(大白话)转化为开发人员看得懂的数据库表,表之间的关系,业务逻辑。

给我们的开发人员看,开发人员依据设计来写代码。

复杂,大型项目画类图,序列图辅助开发人员开发。

在实际开发中,架构师搭建项目框架,框架的基类都有,基础工具类,统一样式表,统一的公用的js,图片。

公司提供一个CVS/SVN账号,配置环境,从中检出你负责的项目的代码。

代码一般以项目结构。

导入工程,在其上面开发新的业务模块。

7.业务需求

销售人员录入合同时,它为草稿状态,这时只能销售人员自己看到。

只有当销售人员检查合同无误,提交,状态变成“已上报”。

这时候,其他人员才可以看到。

销售的领导和船务专责才能看到。

利用这个状态字段来控制对当前用户是否可见。

(细粒度的权限控制-数据权限)

8.重点知识回顾

货运管理核心业务流程:

购销合同

1.定义

购销合同是杰信和生产厂家签订的合同。

2.业务复杂度

购销合同业务比较复杂,它是货运管理的一个流程,它包括三部分内容,合同的主信息和多个货物信息和多个附件信息。

合同主信息和货物是一对多,货物和附件信息是一对多。

3.从业务中迁出技术亮点

前期我参与了业务调研,重点负责购销合同。

给客户交流后,我编写了《需求说明书》,然后参数购销合同的表设计。

从需求说明书结合客户给的电子表格,我抽取出数据库表,利用PD进行建模。

设计:

1.跟客户聊天,要引导性和他们聊天。

业务基础术语,了解业务流程

2.深入内容,拿到客户手中现有某个模块表单,电子表格,填写的内容,每个内容要注意的事项。

来源:

手填,从其他模块来获取。

抠每个字段,电子表格中每个内容。

3.《详细说明书》功能的细化,业务逻辑说清楚,画图辅助开发,UML(类图、序列图、状态图)数据库建模细化。

目的:

开发人员可以依照详细设计开始开发。

详细设计本意能达到开发人员无需和客户沟通,就可以在设计人员的指导下就可以直接开发出客户满意的代码。

但实际中做不到。

设计不到位。

实际中开发往复比较多。

✧第三天购销合同+货物信息+附件信息

1.业务需求:

上报、取消

a)功能:

上报实现销售人员确定购销合同录入完毕,检查无误后,上报给领导,领导审核无误后,提交给船运部。

取消实现当船务专责未处理此相关的合同时,可以取消这个合同,重新修改合同内容,然后再次上报。

如果船运专责已经开始处理报运的业务,不能取消,必须走货物增补流程。

b)设计实现:

在表中增加状态字段,新增时默认状态为0草稿,当销售专责确认无误后,点击“上报”状态变为1已上报。

当船运专责未处理报运时,销售专责点击“取消”状态变为0,草稿。

状态为0时,只能销售专责自己看到,当状态为1时,他的领导和报运专责都可以看到。

✧?

第四天购销合同查看,SQL语句的Power

1.附件业务实现

随时携带主表的ID

2.购销合同查看

合同下货物,货物下面附件,在购销合同中全部浏览,体现货物和附件的关系。

构建对象关系

3.*细粒度权限控制

主菜单,左侧菜单,按钮,URL,方法,业界都称为粗粒度的权限控制。

日常的小系统,基于用户,角色,权限架构足够用。

在实际大型项目中,光有上面的用户角色,URL这样的控制粒度不够细致,还有数据访问权限。

1)对数据的访问列是可以自己定制的。

例如:

访问一个人员工资信息表,这个表中含有人员的工资。

2)对数据的访问行可以受权限控制。

例如:

工资表中有销售部人员的工资信息,还有船运部人员的工资信息。

当销售部领导登录时,他只能看到销售人员的工资信息,他不能看到船运部人员的工资信息。

3)直接浏览数据库表,工资列不能直接看到其值。

对这个数据库列进行加密。

上面统称为数据访问权限,这个权限加上角色用户这样这个系统才比较安全。

也称为细粒度的权限控制。

a)列访问控制:

单独建立表,权限分配某个角色能访问哪些列;

b)行访问控制:

1)只能看自己创建的记录,不能看到别人创建的记录

Wherecreate_by=当前登陆人ID

2)部门领导看到,他能看到本部门人员创建的记录,不能看到其他部门人员创建的记录

Wherecreate_dept=当前登陆人部门IDanduser_level<4

3)跨部门访问权限,分管领导跨部门,跨人员

再加一个配置表,分管领导可以管理的人和部门;

✧第七天异构数据库支持+出口报运核心业务

1.核心业务:

货运管理第二个流程,出口报运

a)定义:

做国际物流,货物要运往国外之前,向海关申报。

向海关申报符合国家标准的货物,和货物的体积和重量信息。

除了在合同中货物的基本信息外,在报运时新增7个字段,长,宽,高,毛重,净重,出口单价,含税。

分次报运

一个可以可以分多次来报运,体现在运输的货物数上。

例如:

10000货物,第一次报运运输6000,第二次报运运输4000.

可以多次报运,这种情况很少。

日常大多是一次报运。

b)分析设计

一个出口报运单来自多个购销合同(一对多);给货物信息新增的7个字段的内容。

创建一个出口报运单表

c)冗余设计

将货物信息冗余到报运单下的货物信息中。

一个实现读取数据快速,减小业务的复杂度,业务逻辑简单。

d)打断设计实现跳跃查询

避免关联层级过多,数据量大了后,访问奇慢。

打断设计。

(表设计不成为文规定,表之间的关联关系不超过4层)在设计时使用一个虚线箭头来表示表之间是存在关联关系,在设计时,不是往常的外键关系。

利用一个字段来存储主表和子表之间的关系。

X,Y

Wherecontract_idin(‘x’,’y’)。

经过打断设计,表之间的关系不存在,跳跃查询。

无需查询合同表,直接查询合同下的货物表。

(新增)

经过上面的设计,后续业务变的更加简单。

2.业务,劳保报表

领用周期不同

帽子

手套

毛巾

军大衣

洗衣粉

饭盒

班组1

10

10

5

班组2

20

20

3

6000个单元格

哪个单元格的内容进行修改,代码只修改修改的框。

给每个文本框增加一个隐藏域。

12000个信息要提交。

本来目的是优化,结果速度更慢。

最终每行添加一个隐藏域,当这行的数据进行了修改,在文本框的失去焦点事件onBlur,动态设置这个隐藏域为1。

在修改代码时根据这个值判断,只有1的时候,数据才进行修改。

不是1跳过。

批量新增,增加一个新增按钮,点一次调研一次addRecord方法,它的属性值,都为空串。

批量删除,表格dhtml提供删除行操作,remove,它把行从table中删除。

数据库并没有删除,删除多个框时,记录下它们的id值,拼成一个串,用逗号隔开。

后台代码判断这个隐藏域提交值不为空,删除这几个数据。

3.知识回顾

a)打断设计:

1.数据库设计先按照三范式,之后对一些需要优化的地方,使用反三范式设计(冗余)(以空间换设计)

2.实际业务非常复杂,关联层级过多,随着系统上线运行,用户的数据随着使用的时间,线性增长。

不成文规定:

关联层级在设计不超过4层。

打断设计,在主表中加一个字段,字段来存储两个表之间的关系。

多个的时候,之间用逗号隔开。

一般情况下都是一次报运,就是一个合同一次报运,个别情况下多个合同一次报运,极端情况下3个合同一次报运。

由于打断设计,实现“跳跃查询”。

报运需要合同下的货物信息时,无需通过多个合同对象,就可以直接查询货物的信息,通过这个打断设计的字段,利用SQL的in子查询。

b)核心业务:

货运管理,出口报运

业务,杰信获得订单后,安排多个生产厂家生产货物,与此同时杰信准备报关的材料,除了海关要求的一些制式文档和杰信系统打印的《出口商品报运单》,交给海关进行审核。

4.页面控制

a)报运单新增,暗度陈仓。

用户选择报运关联的多个合同,代码直接进行数据的保存。

保存相关合同的id集合,合同号集合,保存冗余的货物信息,保存冗余的附件信息。

b)批量修改

Mrecord自定义控件,来信息补录。

批量,在页面上利用DHTML动态表格技术,实现表格元素的动态增加,动态创建行,动态创建单元格,利用innerHTML动态向单元格插入文本框,带数据的。

在后台准备数据,拼接成js串,将它写入一个变量中,在页面的jQuery的ready事件中,调用这个变量,形成多个js串,依次执行。

动态添加到表格中。

由于js运行很快,用户感觉不到添加的过程,以为直接展示。

这样为用户提供一个非常方便的操作。

可以批量来修改货物信息。

每行利用一个隐藏域,来存放是否修改标识,这样在记录行数过多时,修改的效应也非常高。

Mrecord控件它可以实现动态新增,还可以实现批量删除,自动排序。

✧第八天装箱、委托、发票、财务业务+合同归档

货运管理包括:

购销合同、出口报运、装箱、委托、发票、财务统计。

1.装箱

海关批准杰信的申请,像船东申请集装箱,杰信找货代公司请他帮着订箱。

杰信找拖车公司,订拖车,拖车公司到码头拉空箱。

拉着空箱到生产厂家的仓库。

生产厂家在杰信的验货员的监督下,先将货物装到纸箱子中,然后在将纸箱子装入集装箱。

拖车拉着满箱到海关指定的码头指定的地方卸货。

这几个箱子风吹雨淋。

海关进行抽检。

直到船来了。

将集装箱放到船上。

开船从装运港出发,到目的港。

装箱时,产生发票号。

同时产生发票日期。

一个装箱单来自多个报运单(一对多)

2.发票,委托

在货物装船的同时,杰信就开具发票,这个发票只是一个通知单,它的内容就是告诉客户货物已经发出,请支付剩余款项。

同时快递客户一个提单。

客户收到发票通知后,支付剩余款项,同时当货物到达目的港后,客户拿着提单去提货。

客户联系货代公司,联系拖车公司,拖车拉着满箱到客户指定的仓库,卸货。

客户验货,整个货运流程完毕,杰信和客户的合同完成。

3.财务

财务模块不属于货运的业务流程。

它是杰信自己内部进行财务核算的模块。

统计这单合同有无赚取利润。

形成统计报表给领导展示。

4.一对一特殊设计

一个委托来自一个发票,一个发票来自一个委托,一个财务来自一个委托。

(一对一)

一对一的所有表内容可以合成一张表,结构不清晰,业务不清晰。

发票,委托,财务表的主键就是装箱单的ID。

上面三张表,它们的主键既外键。

主外键一个值。

举例,假定拿到ID,不论是装箱、委托、发票、财务,都可以查询它们其中任何一个数据。

实现跳跃查询。

财务需要货物信息和附件信息,通过打断设计,可以直接跳过发票、委托,直接找到装箱,通过装箱的打断设计字段,直接去搜索报运下的货物和附件信息。

因为之前进行了冗余设计,财务所需的货物信息和附件信息,在报运中都有。

查询效率提高数倍。

5.出口报运的状态

0-草稿1-已上报2-装箱3-委托4-发票5-财务

体现流程,客户随时想了解订单进展情况,流程的跟踪。

在报运的列表页面随时了解某个合同进行到哪里。

6.数据库优化

a)数据库表设计

●由原来重视节省空间,变为重视性能。

利用冗余,实现性能数倍提高。

●表的优化,监测数据执行时间。

分表1)分字段(纵向分表)精简完核心查询它只需要近30个字段。

原来需要1分多的查询,现在只1秒多展现页面。

2)数据(横向分表)一个表数据量过大。

业务中有些数据不常用,将这些不常用的数据放到另外一张表中,称这个表为历史表。

专门做一个历史查询的模块,提供用户还可以查询。

●表之间的关联关系不要太复杂。

打断设计

b)SQL优化,在做复杂关联关系,SQL优化极其重要。

Select*fromcontract_c,contract_product_c,ext_cproduct_c,factory_c

Wherecontract_id,contract_product_id,factory_id…

先找最小的结果集,只查询某个合同下的货物,只查询某个货物下的附件,只要查看这个合同

c)数据库的选型

●单个数据库优先选择Oracle,DB2

●集群mysql,读写分离,单独读数据数据库,单独写的数据库

●Web应用服务增加,可以增大访问量,同时分担数据库服务器压力。

分表,购销合同历史

当前的活动表,它和历史表的结构一样。

主模块中的所有表,历史中都有有。

例如:

购销合同,合同、货物、附件都需要对应的历史表。

创建domain

批量新增SQL,JDBCjdbcTemplespring

7.在一个系统架构中

一般访问数据两种方式

●hiberntate/mybatis完成数据的持久化:

新增,修改,删除,简单查询

●jdbc/jdbcTemlpate/dbutil批量操作,批量新增,批量修改,级联删除,统计查询

主要框架来完成日常业务,一般批量查询使用jdbc,对于这些模块,缓存就要注意使用。

有时不要配置缓存。

8.购销合同归档,取消归档

--合同表数据进行归档

INSERTINTOcontract_his_c

SELECT*FROMcontract_cWHEREcontract_idIN('x','y')

--货物的数据进行归档

INSERTINTOcontract_product_his_c

SELECT*FROMcontract_product_cWHEREcontract_product_idIN(SELECTcontract_product_idFROMcontract_product_cWHEREcontract_idIN('x','y'))

--附件的数据进行归档

INSERTINTOext_cproduct_his_c

SELECT*FROMext_cproduct_cWHEREext_cproduct_idIN(SELECText_cproduct_idFROMext_cproduct_cWHEREcontract_product_idIN(SELECTcontract_product_idFROMcontract_product_cWHEREcontract_idIN('x','y'))

--删除合同

DELETEFROMcontract_c

WHEREcontract_idIN('x','y')

--删除货物

DELETEFROMcontract_product_c

WHEREcontract_product_idIN(SELECTcontract_product_idFROMcontract_product_cWHEREcontract_idIN('x','y'))

--删除附件

DELETEFROMext_cproduct_c

WHEREext_cproduct_idIN(SELECText_cproduct_idFROMext_cproduct_cWHEREcontract_product_idIN(SELECTcontract_product_idFROMcontract_product_cWHEREcontract_idIN('x','y'))

9.知识回顾

a)业务:

货运管理,

购销合同,出口报运,home装箱单(预装箱),装箱,委托,发票(通知),财务统计。

b)【面试】工作流实现有什么好处?

杰信系统实现状态控制流程。

浏览每步流程开始时间,操作人,结束时间,审核人

突然在流程步骤中增加一步

工作流扩充流程时,非常方便,修改一下流程图,工作流自动记录所有操作的人和操作时间,操作意见。

状态的代码配合工作流来实现。

状态采用常量来定义,只有新增加的状态,才需要编码。

c)表设计

委托,发票,财务它们的表的主键既外键,它们的ID值都是装箱ID。

因为它们4个的关系都是一对一。

关联时最近配置,需要前面业务数据时,可以实现跳跃查询。

这样查询的效率高。

d)页面设计

装箱新增,它需要在新增页面表现装箱和报运的关系。

DivURL链接。

携带的信息ID,checkbox中;no也放到checkbox,用竖杠隔开,一个checkbox传递了两个值,无需再次查询数据库,提升性能,手工解串。

(大量(超过10个字段)或者信息比较敏感,不推荐使用这种方法,推荐还使用通过id查找其他内容)

✧?

第九天图形报表~让微软都羡慕的报表

1.Java要实现图形报表都有什么方式?

●jFreeChart纯javaAPI,利用生成一张图片。

●excel图形报表,poi不能直接操作图形报表控件。

变相解决,先做一个excel模板,插入好图表控件,然后利用poi动态设置它的数据。

用户打开excel,图表直接展现。

●第三方的报表软件,可视化开发。

开发效率极高。

可视化布局界面,配置数据源即可。

(SQL的结果集)。

收费。

数巨报表(10w,每年服务费1w)。

做一个应用程序,(C/S程序),IE上安装插件。

兼容性。

●amChartsFLASH,只需要构建数据xml。

1)需要swf控件,例如饼形通用

2)setting.xml不通用的

3)data.xml、data.txt,xml格式更加直观,不通用的

●sqlDao查询结果集的封装,通用

●工作原理

amCharts只需要一次配置,公用flash,改造index.html,访问公用的swfobject.js和公用的flashswf原来文件。

样式文件访问本地的,这样可以方便修改配置颜色,坐标,显示样式等。

数据data.xml文件。

将从数据库中读取的数据拼接成xml节点,写入到这个文本的文件中。

转向jStat.jsp统一转向对应的forward参数目录下的index.html。

(注意:

html浏览器默认都有缓存,在做index.html要去掉缓存)

21:

57GMT">

2.jFreeChart、excel、amChartsPK比较

●jFreeChart纯javaapi,缺点:

图形非常粗糙,它实际是利用jFreeChartapi生成的图片,表现力差,专门的api需要记忆。

a)生产厂家销售情况-饼形图

需求:

生产厂家销售情况,厂家+销售

SELECT

f.factory_name,cp.sumnum

FROM

(SELECTfactory_id,factory_nameFROMfactory_cWHEREstate=1)f

LEFTJOIN

SELECTfactory_id,SUM(cnumber)ASsumnumFROMcontract_product_c

GROUPBYfactory_id

)cp

ONf.factory_id=cp.factory_id

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2