SSM杰信商务平台项目day07

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

1.同时支持多种主流数据,oracle/mysql/sqlserver

a)异构系统

Java实际开发中无法完全支持异构系统,同时支持windows,linux。
西安市政府网站,在windows平台上开发,在linux环境运行。
实现页面的静态化。按一定规则new/1009.shtml。
(html静态页面缺点,它无法实现文件包含,业界推出新技术shtml,它扩展了html,它也是静态页面,它实现了文件包含。要支持这个tomcat的修改ssi配置,默认这个支持配置关闭)
第一次调用时,这个静态文件不存在,系统就报404,系统用filter拦截404错误,去查询数据库,动态生成new/1009.shtml文件。

发现一个问题,在window平台没问题,到linux,它无法获取域名,它可以获取IP地址。

b)异构数据库,都有哪些要注意的呢?

这里写图片描述

2.核心业务:货运管理第二个流程,出口报运

a)定义:

做国际物流,货物要运往国外之前,向海关申报。向海关申报符合国家标准的货物,和货物的体积和重量信息。除了在合同中货物的基本信息外,在报运时新增7个字段,长,宽,高,毛重,净重,出口单价,含税。

分次报运
一个可以可以分多次来报运,体现在运输的货物数上。
例如:10000货物,第一次报运运输6000,第二次报运运输4000.
可以多次报运,这种情况很少。日常大多是一次报运。

b)分析设计

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

c)冗余设计

将货物信息冗余到报运单下的货物信息中。一个实现读取数据快速,减小业务的复杂度,业务逻辑简单。

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

避免关联层级过多,数据量大了后,访问奇慢。打断设计。(表设计不成为文规定,表之间的关联关系不超过4层)
在设计时使用一个虚线箭头来表示表之间是存在关联关系,在设计时,不是往常的外键关系。利用一个字段来存储主表和子表之间的关系。
Where contract_id in (‘x’,’y’)
经过打断设计,表之间的关系不存在,跳跃查询。无需查询合同表,直接查询合同下的货物表。(新增)
经过上面的设计,后续业务变的更加简单。

这里写图片描述

这里写图片描述

创建映射文件
创建PO对象
创建dao层
创建Service层
创建Controller
出口报运新增,新增时要选择多个关联的货物。报运单自身的信息在修改中补录。

3.批量修改,批量提交,批量保存

a)动态表格技术dhtml

可以用js动态创建表格,行,单元格,设置单元格内容 DHTML
创建单元格写入内容innerText/innerHTML,利用innerHTML插入文本框,在这个文本框中显示数据

b)如果页面多个名称,springmvc如何封装,

如果是字符类型,拼接成一个字符串,之间用逗号隔开;
如何是日期类型,整形,浮点型,只保留第一个值,其他值丢掉。
页面有两个boxNum=10 boxNum=20,Integer boxNum,第二值丢失 boxNum=10;用数组声明方式;request.getParameterValues();–没有类型概念,它都是字符串,手工转类型。

c)批量MRecord控件,自定义控件,esayUI/extJS GRID

拼接js串

d)Body onload事件和jQuery ready()事件

Onload有bug,有时执行动态js插入数据到页面时,有时可以有时报错。很不稳定。
所以使用ready事件替代。

Mrecord控件使用方法:
1)引入两个js,jQuery、tabledo.js

 <script type="text/javascript" src="${ctx}/components/jquery-ui/jquery-1.2.6.js"></script>
    <script type="text/javascript" src="${ctx}/js/tabledo.js"></script>

2)反复调用addRecord方法
3)后台准备数据,拼接addRecord串
4)利用jQuery 的ready事件,调用js串

4.业务,劳保报表

这里写图片描述

6000个单元格
哪个单元格的内容进行修改,代码只修改修改的框。给每个文本框增加一个隐藏域。12000个信息要提交。本来目的是优化,结果速度更慢。
最终每行添加一个隐藏域,当这行的数据进行了修改,在文本框的失去焦点事件onBlur,动态设置这个隐藏域为1。在修改代码时根据这个值判断,只有1的时候,数据才进行修改。不是1跳过。

批量新增,增加一个新增按钮,点一次调研一次addRecord方法,它的属性值,都为空串。
批量删除,表格dhtml提供删除行操作,remove,它把行从table中删除。数据库并没有删除,删除多个框时,记录下它们的id值,拼成一个串,用逗号隔开。后台代码判断这个隐藏域提交值不为空,删除这几个数据。

5.知识回顾

a)打断设计:

1.数据库设计先按照三范式,之后对一些需要优化的地方,使用反三范式设计(冗余)(以空间换设计)
2.实际业务非常复杂,关联层级过多,随着系统上线运行,用户的数据随着使用的时间,线性增长。不成文规定:关联层级在设计不超过4层。打断设计,在主表中加一个字段,字段来存储两个表之间的关系。多个的时候,之间用逗号隔开。一般情况下都是一次报运,就是一个合同一次报运,个别情况下多个合同一次报运,极端情况下3个合同一次报运。

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

b)核心业务:货运管理,出口报运

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

6.页面控制

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

用户选择报运关联的多个合同,代码直接进行数据的保存。保存相关合同的id集合,合同号集合,保存冗余的货物信息,保存冗余的附件信息。

b)批量修改

Mrecord自定义控件,来信息补录。批量,在页面上利用DHTML动态表格技术,实现表格元素的动态增加,动态创建行,动态创建单元格,利用innerHTML动态向单元格插入文本框,带数据的。
在后台准备数据,拼接成js串,将它写入一个变量中,在页面的jQuery的ready事件中,调用这个变量,形成多个js串,依次执行。动态添加到表格中。由于js运行很快,用户感觉不到添加的过程,以为直接展示。这样为用户提供一个非常方便的操作。
可以批量来修改货物信息。每行利用一个隐藏域,来存放是否修改标识,这样在记录行数过多时,修改的效应也非常高。

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

课程视频内容

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值