/*** 导出支付宝批量支付文件excel
*
*@paramname
*@parambegintime
*@paramendtime
*@paramp
*@paraml
*@paramk
*@paramrequest
*@paramresponse*/@RequestMapping("exportApplyBatchExcel")public voidexportApplyBatchExcel(String name, String begintime, String endtime, Integer p, Integer l, String k,
HttpServletRequest request, HttpServletResponse response) {//if (auth.getCurrentUserId(k) == null) {//ResponseUtil.json(JsonUtil.toString(GenericResponses.TOKEN_LOSE),//response);//return;//}//逐页查询数据,将所有数据导出到excel表中(注:此方法中不传p,l参数,使用的是service层中,默认的第1页开始,每页显示50条)
Integer pp = 1;
Long tt= 1l;
String[] headers= { "批次号", "付款日期", "付款人email", "账户名称", "总金额(元)", "总笔数"};
OutputStream out= null;while (true) {
pp++;//查询数据库
ListResponse> listResponse = this.finApi.selectApplyBatch(name, begintime, endtime, p, l, k);//获取总页数
Long total =listResponse.getTotal();if (tt > 0) {
tt= total -pp;
}else{break;
}//获取查询结果,数据列表
Object result =listResponse.getResult();//类型转换
if (result != null) {
List applyBatchMXVos =JsonUtil.readJsonList(JsonUtil.toString(result),
ApplyBatchMXVo.class);//导出
try{//设置导出excel文件
out =response.getOutputStream();
ZipOutputStream zipOutputStream= newZipOutputStream(out);
String fileName= "批量支付文件" + ".zip";
response.setContentType("application/octet-stream ");
response.setHeader("Connection", "close"); //表示不能用浏览器直接打开
response.setHeader("Accept-Ranges", "bytes");//告诉客户端允许断点续传多线程连接下载
response.setHeader("Content-Disposition","attachment;filename=" + new String(fileName.getBytes("GB2312"), "ISO8859-1"));
response.setCharacterEncoding("UTF-8");//遍历填充数据
for(ApplyBatchMXVo vo : applyBatchMXVos) {
List> datas = new ArrayList<>();
List data = new ArrayList<>();
data.add(vo.getId());//批次号
data.add(vo.getCreateTime());//付款时间
data.add(vo.getPayAccount());//付款人email
data.add(vo.getPayName());//账户名称
data.add(vo.getTotalCost());//总金额(元)
data.add(vo.getTotalCount());//总笔数
datas.add(data);
List data2 = new ArrayList<>();//插入第二行表头
data2.add("商户流水号");//商户流水号
data2.add("收款人email");//收款人email
data2.add("收款人姓名");//收款人姓名
data2.add("付款金额(元)");//付款金额(元)
data2.add("付款理由");//付款理由
datas.add(data2);for(ApplyMoneyMXVo amvo : vo.getApplyMoneyMXVos()) {
List data3 = new ArrayList<>();
data3.add(amvo.getApplyNo());//商户流水号
data3.add(amvo.getUserAccount());//收款人email
data3.add(amvo.getUserName());//收款人姓名
data3.add(amvo.getMoney());//付款金额(元)
data3.add(amvo.getPayCase());//付款理由
datas.add(data3);
}//导出文件zip压缩设置
Workbook book = GenerateXmlUtil.generateCreateXsl(headers, datas, "批量支付文件");
ZipEntry entry= new ZipEntry(vo.getId() + ".xls");
zipOutputStream.putNextEntry(entry);
book.write(zipOutputStream);
}//关闭输出流
zipOutputStream.flush();
zipOutputStream.close();
}catch(Exception e) {
e.printStackTrace();
ResponseUtil.text(TraceUtil.trace(e), response);
}
}//重新设置分页参数
p =pp;
}
}