SSM杰信商务平台项目day08

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

货运管理包括:购销合同、出口报运、装箱、委托、发票、财务统计。

1.装箱

海关批准杰信的申请,像船东申请集装箱,杰信找货代公司请他帮着订箱。
杰信找拖车公司,订拖车,拖车公司到码头拉空箱。拉着空箱到生产厂家的仓库。
生产厂家在杰信的验货员的监督下,先将货物装到纸箱子中,然后在将纸箱子装入集装箱。
拖车拉着满箱到海关指定的码头指定的地方卸货。这几个箱子风吹雨淋。海关进行抽检。
直到船来了。将集装箱放到船上。开船从装运港出发,到目的港。

装箱时,产生发票号。同时产生发票日期。
一个装箱单来自多个报运单(一对多)

2.发票,委托

在货物装船的同时,杰信就开具发票,这个发票只是一个通知单,它的内容就是告诉客户货物已经发出,请支付剩余款项。
同时快递客户一个提单。客户收到发票通知后,支付剩余款项,同时当货物到达目的港后,客户拿着提单去提货。
客户联系货代公司,联系拖车公司,拖车拉着满箱到客户指定的仓库,卸货。客户验货,整个货运流程完毕,杰信和客户的合同完成。

3.财务

财务模块不属于货运的业务流程。它是杰信自己内部进行财务核算的模块。统计这单合同有无赚取利润。形成统计报表给领导展示。

4.一对一特殊设计

一个委托来自一个发票,一个发票来自一个委托,一个财务来自一个委托。(一对一)
一对一的所有表内容可以合成一张表,结构不清晰,业务不清晰。

发票,委托,财务表的主键就是装箱单的ID。
上面三张表,它们的主键既外键。主外键一个值。

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

财务需要货物信息和附件信息,通过打断设计,可以直接跳过发票、委托,直接找到装箱,通过装箱的打断设计字段,直接去搜索报运下的货物和附件信息。因为之前进行了冗余设计,财务所需的货物信息和附件信息,在报运中都有。查询效率提高数倍。

5.出口报运的状态

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

体现流程,客户随时想了解订单进展情况,流程的跟踪。在报运的列表页面随时了解某个合同进行到哪里。

6.数据库优化

a)数据库表设计

由原来重视节省空间,变为重视性能。利用冗余,实现性能数倍提高。
表的优化,监测数据执行时间。
分表
1)分字段(纵向分表)精简完核心查询它只需要近30个字段。原来需要1分多的查询,现在只1秒多展现页面。
2)数据(横向分表)一个表数据量过大。业务中有些数据不常用,将这些不常用的数据放到另外一张表中,称这个表为历史表。专门做一个历史查询的模块,提供用户还可以查询。

表之间的关联关系不要太复杂。打断设计

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

Select * from contract_c,contract_product_c,ext_cproduct_c,factory_c
Where contract_id,contract_product_id,factory_id…

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

c)数据库的选型

单个数据库优先选择Oracle,DB2
集群mysql,读写分离,单独读数据数据库,单独写的数据库
Web应用服务增加,可以增大访问量,同时分担数据库服务器压力。

分表,购销合同历史
当前的活动表,它和历史表的结构一样。
主模块中的所有表,历史中都有有。例如:购销合同,合同、货物、附件都需要对应的历史表。

这里写图片描述

创建domain
批量新增SQL,JDBC jdbcTemple spring

7.在一个系统架构中

一般访问数据两种方式
hiberntate/mybatis 完成数据的持久化:新增,修改,删除,简单查询
jdbc/jdbcTemlpate/dbutil批量操作,批量新增,批量修改,级联删除,统计查询

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

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

合同表数据进行归档

INSERT INTO contract_his_c
SELECT * FROM contract_c WHERE contract_id IN ('x','y')

货物的数据进行归档

INSERT INTO contract_product_his_c
SELECT * FROM contract_product_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN('x','y'))

附件的数据进行归档

INSERT INTO ext_cproduct_his_c
SELECT * FROM ext_cproduct_c WHERE ext_cproduct_id IN (SELECT ext_cproduct_id FROM ext_cproduct_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN('x','y'))

删除合同

DELETE FROM contract_c
WHERE contract_id IN ('x','y'

)

删除货物

DELETE FROM contract_product_c
WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN('x','y'))

删除附件

DELETE FROM ext_cproduct_c
WHERE ext_cproduct_id IN (SELECT ext_cproduct_id FROM ext_cproduct_c WHERE contract_product_id IN (SELECT contract_product_id FROM contract_product_c WHERE contract_id IN('x','y'))

9.知识回顾

a)业务:货运管理,

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

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

杰信系统实现状态控制流程。
浏览每步流程开始时间,操作人,结束时间,审核人
突然在流程步骤中增加一步

工作流扩充流程时,非常方便,修改一下流程图,工作流自动记录所有操作的人和操作时间,操作意见。状态的代码配合工作流来实现。状态采用常量来定义,只有新增加的状态,才需要编码。

c)表设计

委托,发票,财务它们的表的主键既外键,它们的ID值都是装箱ID。
因为它们4个的关系都是一对一。关联时最近配置,需要前面业务数据时,可以实现跳跃查询。这样查询的效率高。

d)页面设计

装箱新增,它需要在新增页面表现装箱和报运的关系。Div URL链接。
携带的信息ID,checkbox中;no也放到checkbox,用竖杠隔开,一个checkbox传递了两个值,无需再次查询数据库,提升性能,手工解串。(大量(超过10个字段)或者信息比较敏感,不推荐使用这种方法,推荐还使用通过id查找其他内容)

课程视频内容

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值