diff --git a/src/main/java/common/controller/ContractController.java b/src/main/java/common/controller/ContractController.java index f670973..27e2a71 100644 --- a/src/main/java/common/controller/ContractController.java +++ b/src/main/java/common/controller/ContractController.java @@ -7,6 +7,9 @@ import dic.AuthMenuEnmm; import dic.ContractStatusEnum; import dic.OperateObjectTypeEnum; import org.apache.commons.io.IOUtils; +import org.apache.poi.hssf.usermodel.HSSFRow; +import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,6 +31,7 @@ import java.io.*; import java.math.BigDecimal; import java.net.URLEncoder; import java.text.DecimalFormat; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -97,9 +101,7 @@ public class ContractController { public void export(@CurrentAccount User loginAccount, @PathVariable String platform, @RequestParam String startDate , @RequestParam String endDate, HttpServletRequest request, HttpServletResponse response) { List<Contract> contractList = service.findAll(loginAccount, startDate, endDate, platform, null); - -// byte[] content = new byte[0]; - StringBuilder sb = new StringBuilder(); + /*StringBuilder sb = new StringBuilder(); //录入时间 合同编号 客户账号 我方签约主体 签约方 行业分类 销售 开始日期 结束日期 套餐类型 合同金额 签约类型 合同状态 回款状态 关联合同 sb.append("录入时间,合同编号,客户账号,我方签约主体,签约方,行业分类,销售,开始日期,结束日期,套餐类型,合同金额,签约类型,合同状态,回款状态,关联合同\r\n"); if (ValidateUtil.isValid(contractList)) { @@ -122,22 +124,50 @@ public class ContractController { .append("\r\n"); } } - String fileName = "合同管理_" + new DateTime(startDate).toString("yyyyMMdd") + "_" + new DateTime(endDate).toString("yyyyMMdd") + ".csv"; - this.exportWrite(fileName, sb.toString(), "合同管理", response); - -// InputStream in = new ByteArrayInputStream(sb.toString().getBytes()); -// try { -// content = IOUtils.toByteArray(in); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// HttpHeaders headers = new HttpHeaders(); -// response.setHeader("filename", "contract.csv"); -// response.setHeader("content-disposition", "attachment; filename=contract.csv"); -// response.setHeader("Content-Type", "text/csv"); -// response.setContentType("APPLICATION/OCTET-STREAM"); + this.exportWrite(fileName, sb.toString(), "合同管理", response);*/ + + //创建工作薄对象 + HSSFWorkbook workbook = new HSSFWorkbook();//这里也可以设置sheet的Name + //创建工作表对象 + HSSFSheet sheet = workbook.createSheet(); + //创建工作表的行 + HSSFRow row = sheet.createRow(0); + + List<String> title = Arrays.asList("录入时间,合同编号,客户账号,我方签约主体,签约方,行业分类,销售,开始日期,结束日期,套餐类型,合同金额,签约类型,合同状态,回款状态,关联合同" + .split(",")); + + int lineSize = title.size(); + for (int i = 0; i < lineSize; i++) { + row.createCell(i).setCellValue(title.get(i)); + } + + for (int i = 0; i < contractList.size(); i++) { + Contract contract = contractList.get(i); + HSSFRow rowBody = sheet.createRow(i + 1); + rowBody.createCell(0).setCellValue(new DateTime(contract.getCreateTime()).toString("yyyy-MM-dd")); + rowBody.createCell(1).setCellValue(contract.getContractCode()); + rowBody.createCell(2).setCellValue(contract.getEmail() == null ? "无" : contract.getEmail()); + rowBody.createCell(3).setCellValue(contract.getMyBodyName()); + rowBody.createCell(4).setCellValue(contract.getCustomerBody()); + rowBody.createCell(5).setCellValue(contract.getTradeName()); + rowBody.createCell(6).setCellValue(contract.getSaleName()); + rowBody.createCell(7).setCellValue(contract.getStartDate()); + rowBody.createCell(8).setCellValue(contract.getEndDate()); + rowBody.createCell(9).setCellValue(contract.getPriceLevel()); + rowBody.createCell(10).setCellValue(contract.getMoney()); + rowBody.createCell(11).setCellValue(CONTRACT_STATUS.get(contract.getContractType())); + rowBody.createCell(12).setCellValue(CONTRACT_STATUS.get(contract.getStatus())); + rowBody.createCell(13).setCellValue(CONTRACT_STATUS.get(contract.getBackStatus() + "_back")); + rowBody.createCell(14).setCellValue(contract.getRelationCode() == null ? "" : contract.getRelationCode()); + + } + + String fileName = "合同管理_" + new DateTime(startDate).toString("yyyyMMdd") + + "_" + new DateTime(endDate).toString("yyyyMMdd") + ".xls"; + this.exportWrite(fileName, workbook, "合同管理_", response); + NewUserLogThread userlog = new NewUserLogThread(loginAccount.getEmail(), loginAccount.getName(), OperateObjectTypeEnum.CUSTOMER.getKey(), platform, "导出合同", startDate, endDate, request, platform); userlog.start(); @@ -453,13 +483,51 @@ public class ContractController { String bodyCode, String serchName, HttpServletResponse response, HttpServletRequest request) { List<Contract> contracts = shareIncomeService.shareIncomeList(loginAccount, startDate, endDate, platform, bodyCode, serchName); - byte[] content = new byte[0]; + //byte[] content = new byte[0]; DecimalFormat df = new DecimalFormat("##,##0.00"); - StringBuilder sb = new StringBuilder(); + //StringBuilder sb = new StringBuilder(); /*sb.append("我方签约主体,签约方,合同编号,合同金额,不含税收入,合同开始时间,合同截止时间,区间使用天数,区间分摊收入,调整额,分摊总收入\r\n");*/ - sb.append("我方签约主体,签约方,合同编号,合同状态,合同金额,不含税收入,合同开始日期,合同截止日期,区间使用天数,区间分摊收入,调整额,分摊总收入\r\n"); + //sb.append("我方签约主体,签约方,合同编号,合同状态,合同金额,不含税收入,合同开始日期,合同截止日期,区间使用天数,区间分摊收入,调整额,分摊总收入\r\n"); + + //创建工作薄对象 + HSSFWorkbook workbook = new HSSFWorkbook();//这里也可以设置sheet的Name + //创建工作表对象 + HSSFSheet sheet = workbook.createSheet(); + //创建工作表的行 + HSSFRow row = sheet.createRow(0); + + List<String> title = Arrays.asList("我方签约主体,签约方,合同编号,合同状态,合同金额,不含税收入,合同开始日期,合同截止日期,区间使用天数,区间分摊收入,调整额,分摊总收入" + .split(",")); + + int lineSize = title.size(); + for (int i = 0; i < lineSize; i++) { + row.createCell(i).setCellValue(title.get(i)); + } + + for (int i = 0; i < contracts.size(); i++) { + Contract contract = contracts.get(i); + HSSFRow rowBody = sheet.createRow(i + 1); + rowBody.createCell(0).setCellValue(contract.getMyBodyName()); + rowBody.createCell(1).setCellValue(contract.getCustomerBody()); + rowBody.createCell(2).setCellValue(contract.getContractCode()); + rowBody.createCell(3).setCellValue(CONTRACT_STATUS.get(contract.getStatus())); + rowBody.createCell(4).setCellValue(df.format(contract.getMoney())); + rowBody.createCell(5).setCellValue(df.format(contract.getIncomeExcludingTax() * 1.0 / 100)); + rowBody.createCell(6).setCellValue(contract.getStartDate()); + rowBody.createCell(7).setCellValue(contract.getEndDate()); + rowBody.createCell(8).setCellValue(contract.getIntervalUseDays()); + rowBody.createCell(9).setCellValue(df.format(contract.getIntervaIncomeShare() * 1.0 / 100)); + rowBody.createCell(10).setCellValue(df.format(contract.getAdjustmentFund() * 1.0 / 100)); + rowBody.createCell(11).setCellValue(df.format(contract.getIncomeShareAll() * 1.0 / 100)); + } + + String fileName = "分摊收入报表_" + new DateTime(startDate).toString("yyyyMMdd") + + "_" + new DateTime(endDate).toString("yyyyMMdd") + ".xls"; + this.exportWrite(fileName, workbook, "分摊收入报表", response); + + - if (ValidateUtil.isValid(contracts)) { + /*if (ValidateUtil.isValid(contracts)) { for (Contract c : contracts) { sb.append(c.getMyBodyName()).append(",") .append(c.getCustomerBody()).append(",") @@ -478,10 +546,36 @@ public class ContractController { } String fileName = "分摊收入报表_" + new DateTime(startDate).toString("yyyyMMdd") + "_" + new DateTime(endDate).toString("yyyyMMdd") + ".csv"; - this.exportWrite(fileName, sb.toString(), "分摊收入报表", response); + this.exportWrite(fileName, sb.toString(), "分摊收入报表", response);*/ } + private void exportWrite(String fileName, HSSFWorkbook workbook, String exportName, HttpServletResponse response) { + OutputStream os = null; + try { + fileName = URLEncoder.encode(fileName, "UTF-8"); + response.setHeader("filename", fileName); + response.setHeader("content-disposition", "attachment; filename=" + fileName); + response.setHeader("Content-Type", "text/xls"); + response.setContentType("APPLICATION/OCTET-STREAM"); + response.setCharacterEncoding("UTF-8"); + os = response.getOutputStream(); + workbook.write(os); + os.flush(); + } catch (Exception e) { + logger.error(exportName + "报错", e); + } finally { + if (os != null) { + try { + os.close(); + } catch (IOException e) { + logger.error(exportName + "导出,关闭流报错", e); + } + } + + } + } + private void exportWrite(String fileName, String text, String exportName, HttpServletResponse response) { OutputStream os = null; try {