public void exportArrearDatail(HttpServletRequest request, HttpServletResponse response){
String templateId = request.getParameter("templateId");
String fileNames = request.getParameter("fileName");
String fileName = null;
try {
fileName = java.net.URLDecoder.decode(fileNames, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String areaId = request.getParameter("areaId");
String dataType = request.getParameter("dataType");
ExcelUtil excel = new ExcelUtil();
Map<String, Object> map = new HashMap<String, Object>();
map.put("templateId", templateId);
if (areaId != null && !areaId.equals("")) {
map.put("areaId", areaId);
}
if ("effective".equals(dataType)) {
map.put("effective", "'有效'");
}
excel.createBookAndSheet(false, "sheet1");
excel.writeRow(0, "查询号码", "设备状态", "商品名称", "欠费账龄", "欠费金额",
"计费类型", "计费标签", "家长姓名", "区域名称", "学校名称", "班级名称", "学生姓名",
"计费号码", "登录账号");
int count = arrearAnalysisService.countUserNum(map);
if (count > 0) {
List list = new ArrayList();
ArrearInfo arrearInfo = null;
int rowNum = 1;
//就是下面这个循环
//我试了下就是参数里面的10000是每页显示的数字,如果超出10000它也不会生成第二页
//用什么值能替换它让它不是固定的 ,而是跟着总数走的
for (int row = 0; row < count/10000; row += 10000) {
Page<ArrearInfo> page = arrearAnalysisService.getArrearInfoByPage(map, row*10000, 10000, "arrearAmount", SqlOrderEnum.DESC.getAction());
list = page.getList();
for (int i = 0; i < list.size(); i++) {
arrearInfo = (ArrearInfo) list.get(i);
if (arrearInfo == null) {
break;
}
excel.writeRow(rowNum++, arrearInfo.getPhoneNumber(), arrearInfo.getDeviceStatus(), arrearInfo.getGoodsName(), arrearInfo.getArrearAge(),
arrearInfo.getArrearAmount(), arrearInfo.getBillingType(), arrearInfo.getBillingLabel(), arrearInfo.getUserName(),arrearInfo.getAreaName(),
arrearInfo.getShoolName(), arrearInfo.getClassName(), arrearInfo.getStudentName(), arrearInfo.getPayNumber(), arrearInfo.getLoginNumber());
}
}
}
Runtime.getRuntime().gc();
DownloadUtil.downloadXlsx(response, fileName + "用户信息", excel.getInputStream());
}