javaWEB模块物流项目四.docx
《javaWEB模块物流项目四.docx》由会员分享,可在线阅读,更多相关《javaWEB模块物流项目四.docx(19页珍藏版)》请在冰点文库上搜索。
javaWEB模块物流项目四
BOS物流管理系统第四天区域管理
今天内容安排:
1:
取派员修改
2、区域批量导入功能
(jqueryocupload一键上传、POIExcel文件解析、pinyin4j工具包)
3、区域列表查询(复习datagrid分页)
1.分页查询数据结果集优化配置
后续所有分页查询--->配置全局结果集配置
在不同XxxAction分页查询代码内部结果集统一配置SUCCESS
以后只要结果集是success--->json结果集
1:
BaseAction代码
子类Action分页代码
struts.xml结果集配置
2.任务一:
基础设置模块需求分析
参见需求文档2.6基础档案
●2.6.5区域设置
管理物流业务所能覆盖行政区域(省、市、区…)
行政区域信息不可更改!
●2.6.6管理分区
举例:
你是一个快递员,让你负责上海闵行区快件配送----行政区域太大了,不能直接分配给快递员负责,将区域进行划分,成为分区
●2.6.7管理定区、调度排班
区域、分区、定区几个概念的区别?
区域,行政区域,国家划分省、市、区
分区,因为区域很大,需要划分
(如果每个取派员负责一个分区,这样物流配送业务不够灵活)
定区:
为几个取派员划分到几个分区的负责,几个分区组成一个定区
3.任务二:
区域信息批量导入功能
导入功能,实现数据快速添加---------上传数据文件
区域数据文件上传
一键文件上传原理分析
回顾文件上传:
客户端:
●formenctype=”multipart/form-data”采用多媒体表单数据编码
●请求方式必须为post
●文件框,提供name属性
服务器:
●javaweb:
apachecommons-fileupload工具包实现上传
●struts2:
提供FileUploadInterceptor,将commons-fileupload进行封装
企业的系统,越来越多使用一键上传
好处:
页面只需要提供一个按钮或者链接,不需要上传浏览框
一键上传,页面没有刷新,使用隐藏iframe模拟Ajax效果
jqueryocupload(one-click)插件实现一键上传
下载网址:
获得:
jquery.ocupload-1.1.2.js
在项目引入ocupload
--一键上传-->region.jsp页面导入脚本
可以对页面任何一个元素使用一键上传
jqueryeasyui表格按钮
根据ocuploadoptions设置一键上传属性文档说明
●上面代码有点问题,没有添加文件格式校验
问题:
现在上传文件扩展名.xls或者.xlsx
选择文件后,不要立刻提交autoSubmit设置false,在onSelect进行校验,满足文件格式要求后,再进行提交
测试客户端上传完成!
struts2FileUploadInterceptor接收上传文件
FileUploadIntercptor就在DefaultStack中,无需任何其它配置
编写RegionAction接收上传文件
只需要在Action中提供成员变量和setter方法,自动将上传文件设置进来
文档查看完成开发excel解析
解析Excel中数据
解析Excel,生成Excel常用开发组件:
ApachePOI、JXL
官网:
http:
//poi.apache.org/
企业最常用的是使用POI解析Excel,生成Excel!
HSSF解析.xls格式(Excel97-2007前),XSSF解析.xlsx格式(Excel2007)
阅读“POI3.5_HSSF_和XSSF_Excel操作快速入门手册.pdf”
参考“POI整理.doc”
第一步:
在项目引入POI,使用maven坐标
org.apache.poi
poi
${poi.version}
org.apache.poi
poi-ooxml
${poi.version}
建议使用3.9的版本
3.9
第二步:
完善RegionAction的oneKeyUpload方法
POI解析:
Workbook文件----sheet工作薄----row行----cell单元格
action代码如下使用poi读取struts2上传文件!
步骤二修改Region注解主键策略因为区域表数据主键由外部文件excel提供
编写Action业务方法解析excel文件
代码编写
Sheet对象forEach迭代
父类BaseAction注入业务层对象
@Action(value="regionAction_importData",results={@Result(name="importData",type="json")})
publicStringimportData(){
//upload上传excel解析...apachepoi技术
//目标要明确excel数据解析封装java对象---->插入数据库List--->service--->Dao
//创建对Excel工作簿文件的引用
try{
HSSFWorkbookworkbook=newHSSFWorkbook(newFileInputStream(upload));
//创建对工作表的引用。
//本例是按名引用(让我们假定那张表有着缺省名"Sheet1")
HSSFSheetsheet=workbook.getSheetAt(0);
Listregions=newArrayList();
for(Rowrow:
sheet){
//每一行...0
if(row.getRowNum()==0){
continue;
}
//第二行读取数据一行对应一个Region对象
Regionr=newRegion();
//当前行第一个单元格数据
r.setId(row.getCell(0).getStringCellValue());
r.setProvince(row.getCell
(1).getStringCellValue());
r.setCity(row.getCell
(2).getStringCellValue());
r.setDistrict(row.getCell(3).getStringCellValue());
r.setPostcode(row.getCell(4).getStringCellValue());
//后期为了查询快捷设计城市简码简码由省市区自动生成...江苏省南京市玄武区njsjssnjsxwq
//r.setShortcode(shortcode);
//r.setCitycode(citycode);
regions.add(r);
}
regionService.save(regions);
push(true);
}catch(Exceptione){
push(false);
e.printStackTrace();
}
return"importData";
}
第三步:
调用业务层,批量添加region
DAO接口
第四步:
完善客户端回调函数
生成区域简码和城市编码
什么是区域简码?
省市区首字母,例如河北省石家庄市长安区HBSJZCA
什么是城市编码?
城市全拼例如:
上海市shanghai
问题:
汉子转换为拼音有什么用?
检索!
使用pinyin4j工具包,完成汉字到拼音的转换
下载:
第一步:
使用maven坐标导入pinyin4j
com.belerweb
pinyin4j
2.5.0
第二步:
使用pinyin4j转换
在项目导入Pinyin4jUtils工作类
简码制作
执行操作
测试区域批量导入!
4.任务二:
区域添加
区域添加时,因为id要指定,页面添加id输入框,如何保证不重复采用ajax校验!
\\
学员作业:
1区域添加2:
区域修改(参照取派员修改即可)3:
删除(可以做物理删除)
5.任务三区域分页查询
1:
分页查询
2:
编写action
3:
业务层
分页查询完成测试
分区数据查询区域时候不需要的排除
回顾:
jqueryeasyuidatagrid分页实现过程
1、编写datagrid设置url
2、页面第一次加载后,自动向url发送请求,请求包含page页码和rows每页记录数
3、服务器根据page和rows封装Pageable对象(PageRequest)
4、调用Springdata
PagefindAll(Pageable)返回Page对象
5、将Page数据转换到符合easyuidatagrid格式对象中Map
封装total总记录数、rows当前页数据
6、将结果转换json返回
修改页面url
在RegionActon添加pageQuery查询方法接收page和rows可以通过BaseAction复用
BaseAction代码
RegionAction代码将json结果集配置成全局结果集视图!
struts.xml
Action注解继承bos包
==================================
Action代码
Service代码
延迟加载错误,排除Region关联
6.当天完成作业:
1:
取派员修改easyui插件的使用回显数据
2:
poi批量导入解析过程掌握
3:
datagrid分页查询实现掌握