@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;
}
}