From 1ada1598c524852e9011c1a8325911c7f1010b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Thu, 25 Feb 2021 19:34:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8A=A5=E8=A1=A8=E6=89=93?= =?UTF-8?q?=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ebtp/extend/export/model/价格打分.xls | Bin 4123 -> 0 bytes .../ebtp/extend/export/model/初步评审.xls | Bin 4135 -> 0 bytes .../ebtp/extend/export/model/打分汇总表.xls | Bin 6375 -> 0 bytes .../ebtp/extend/export/model/评委打分.xls | Bin 8394 -> 0 bytes .../extend/export/model/评标专家承诺书.docx | Bin 18117 -> 15812 bytes .../impl/BizExportDictServiceImpl.java | 8 +- .../service/impl/CbpsExportServiceImpl.java | 4 +- .../service/impl/DfhzExportServiceImpl.java | 403 ++++++++---------- .../service/impl/JgdfExportServiceImpl.java | 4 +- .../service/impl/JudgesExportServiceImpl.java | 2 +- .../service/impl/KbjlExportServiceImpl.java | 9 +- .../service/impl/PbbgExportServiceImpl.java | 2 +- .../service/impl/PszjExportServiceImpl.java | 3 +- .../service/impl/ZjgrExportServiceImpl.java | 2 +- src/main/resources/application.yml | 2 +- 15 files changed, 204 insertions(+), 235 deletions(-) delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/价格打分.xls delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/初步评审.xls delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/打分汇总表.xls delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/评委打分.xls diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/价格打分.xls b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/价格打分.xls deleted file mode 100644 index 5c3dd8368642721321ea191abf4922cc8273b8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4123 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 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/初步评审.xls b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/初步评审.xls deleted file mode 100644 index 042d8af0fafa2bb70eb9d58688f18acf5de9dca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4135 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 W4ZMcjPSDWskry$NI&G&BTnH4#mOTS5T;Zy@Vn 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 Vcj2rG0s=Pt^B5k0MpQR<{{b)YOl1H7 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/评标专家承诺书.docx b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/model/评标专家承诺书.docx index 53cb5dc43430ae8edde93029c3e71e408e8781c3..ef5d43e58cdb1b16c939e26ad7c3033ce3bbe8e4 100644 GIT binary patch literal 15812 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 literal 18117 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�XCHpS-X_`a^LxU5j{=mu07Tm-q&n1CY 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 bizExportDict.getUrl().length() < 5); }); - - + //删除value为空的key + resultsMap.values().removeIf(List::isEmpty); return resultsMap; } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java index 3eebf8e..372ea38 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/CbpsExportServiceImpl.java @@ -119,7 +119,7 @@ public class CbpsExportServiceImpl implements ExportService { sheet.addMergedRegion(region3); Row title3 = sheet.createRow(rowIndex++); Cell titleCell3 = title3.createCell(0); - titleCell3.setCellValue("招标编号 : " + list.getData().getBidSectName()); + titleCell3.setCellValue("招标编号 : " + list.getData().getBidSectBizNum()); //4行 列头 Row titleRow5 = sheet.createRow(rowIndex++); // 设置高度为30 @@ -251,7 +251,7 @@ public class CbpsExportServiceImpl implements ExportService { sheet.addMergedRegion(region6); - String filename = "初步评审表.xls"; + String filename = "初步评审表.xlsx"; filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java index 7a08ca7..7588604 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/DfhzExportServiceImpl.java @@ -1,9 +1,8 @@ package com.chinaunicom.mall.ebtp.extend.export.service.impl; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; -import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParame; +import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.feign.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.export.feign.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailJudgesSummaryVO; @@ -12,6 +11,7 @@ import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.streaming.SXSSFCell; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFSheet; @@ -22,10 +22,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.nio.charset.StandardCharsets; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; /** @@ -34,9 +35,11 @@ import java.util.stream.Collectors; @Service("dfhz") public class DfhzExportServiceImpl implements ExportService { private final RsmsFeignService rsmsFeignService; + private final ProjectFeignService projectFeignService; - public DfhzExportServiceImpl(RsmsFeignService rsmsFeignService) { + public DfhzExportServiceImpl(RsmsFeignService rsmsFeignService, ProjectFeignService projectFeignService) { this.rsmsFeignService = rsmsFeignService; + this.projectFeignService = projectFeignService; } @@ -50,8 +53,6 @@ public class DfhzExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParame param, HttpServletRequest request, HttpServletResponse response) { - - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); @@ -74,7 +75,6 @@ public class DfhzExportServiceImpl implements ExportService { //所有评委 List memberAll = registerVOList.stream().findFirst().get().getMembers(); - ArrayList strings = memberAll.stream().map(MemberVO::getUserId).collect(Collectors.toCollection(ArrayList::new)); // 创建工作簿 SXSSFWorkbook wb = new SXSSFWorkbook(); //表格样式 @@ -92,265 +92,228 @@ public class DfhzExportServiceImpl implements ExportService { SXSSFSheet sheet = wb.createSheet(); int rowIndex = 0; //头 - SXSSFRow titleRow = sheet.createRow(rowIndex++); + SXSSFRow titleRow = createRow(sheet, rowIndex++); Cell titleCell1 = titleRow.createCell(0); titleRow.setHeightInPoints(35); titleCell1.setCellValue("打分汇总表"); - titleCell1.setCellStyle(cellStyle); - + //项目和招标名称数据 + ProjectSectionVO projectSectionVO = new ProjectSectionVO(); + projectSectionVO.setId(param.getSectionId()); + ProjectSectionVO proj = projectFeignService.selectById(projectSectionVO).getData(); //项目名称 SXSSFRow projectNameRow = sheet.createRow(rowIndex++); SXSSFCell projectNameCell0 = projectNameRow.createCell(0); projectNameCell0.setCellValue("项目名称:"); SXSSFCell projectNameCell1 = projectNameRow.createCell(1); - projectNameCell1.setCellValue("了大方拉酥颗点肌肤"); + projectNameCell1.setCellValue(proj.getProjectName()); //招标编号 SXSSFRow projectNumRow = sheet.createRow(rowIndex++); SXSSFCell projectNumCell0 = projectNumRow.createCell(0); projectNumCell0.setCellValue("项目编号:"); SXSSFCell projectNumCell1 = projectNumRow.createCell(1); - projectNumCell1.setCellValue("1111"); - + projectNumCell1.setCellValue(proj.getBidSectBizNum()); + //列头 + List titles0 = new ArrayList<>(); + titles0.add("投标人名称"); + titles0.add("投标序号"); + //评委专家信息添加到列头 根据参加打分专家的id到所有专家列表中查询名字 + memberAll.forEach(x -> titles0.add(x.getName())); + //添加最后一列 + titles0.add("平均分"); //商务 技术 服务 for (int i = 0; i < 3; i++) { - boolean hasContains = false; + List detailScore = new ArrayList<>(); if (i == 0) { - hasContains = detailList.containsKey("1"); + if (detailList.containsKey("1")) { + detailScore = detailList.get("1"); + } } else if (i == 1) { - hasContains = detailList.containsKey("2"); + if (detailList.containsKey("2")) { + detailScore = detailList.get("2"); + } } else { - hasContains = detailList.containsKey("5"); + if (detailList.containsKey("5")) { + detailScore = detailList.get("5"); + } } - if (!hasContains) { - continue; - } - //列头 - List titles0 = new ArrayList<>(); - titles0.add("投标人名称"); - titles0.add("投标序号"); - //评委专家信息添加到列头 根据参加打分专家的id到所有专家列表中查询名字 - memberAll.forEach(x -> titles0.add(x.getName())); - //添加最后一列 - titles0.add("平均分"); - - SXSSFRow row = sheet.createRow(rowIndex++); - SXSSFCell c = row.createCell(0); + this.createRow(sheet, rowIndex++); + SXSSFRow row = this.createRow(sheet, rowIndex++); if (i == 0) { - c.setCellValue("商务分数"); + SXSSFCell cell = row.createCell(0); + cell.setCellValue("商务分数"); } else if (i == 1) { - c.setCellValue("技术分数"); + SXSSFCell cell = row.createCell(0); + cell.setCellValue("技术分数"); } else { - c.setCellValue("服务分数"); + SXSSFCell cell = row.createCell(0); + cell.setCellValue("服务分数"); } + + row = sheet.createRow(rowIndex++); int cellIndex = 0; for (String tit : titles0) { - c = row.createCell(cellIndex++); - c.setCellValue(tit); + this.createCell(row, cellIndex++, cellStyle, tit); } int index = 1; for (SupplierRegisterVO vo : registerVOList) { cellIndex = 0; row = sheet.createRow(rowIndex++); - c = row.createCell(cellIndex++); - c.setCellValue(vo.getSupplierRegisterName()); - c = row.createCell(cellIndex++); - c.setCellValue(index++); + this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); + + if (detailScore.isEmpty()) { + for (MemberVO memberVO : memberAll) { + this.createCell(row, cellIndex++, cellStyle, "-"); + + } + this.createCell(row, cellIndex, cellStyle, "-"); - BidEvalDetailSummaryVO detailScore; - if (i == 0) { - detailScore = detailList.get("1").stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); - } else if (i == 1) { - detailScore = detailList.get("2").stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); } else { - detailScore = detailList.get("5").stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + Map memberScoreMap = detailSummary.getScoreMap(); + for (MemberVO memberVO : memberAll) { + BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); + this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); + } + this.createCell(row, cellIndex, cellStyle, detailSummary.getFinalScore() == null ? "" : String.valueOf(detailSummary.getFinalScore())); } - - - Map memberScoreMap = detailScore.getScoreMap(); - for (MemberVO memberVO : memberAll) { - BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); - c = row.createCell(cellIndex++); - c.setCellValue(score == null ? "" : String.valueOf(score)); - } - c = row.createCell(cellIndex); - c.setCellValue(detailScore.getFinalScore() == null ? "" : String.valueOf(detailScore.getFinalScore())); - } } + //报价 + List detailScore = new ArrayList<>(); - //渲染所有数据表格 - List createList = null; - /** - * 一共4个表,固定循环4次 - */ -// for (int k = 0; k < 4; k++) { -// // 创建表格 -// Sheet sheet = null; -// if (k == 0) { -// sheet = wb.createSheet("商务得分"); -// } else if (k == 1) { -// sheet = wb.createSheet("服务得分"); -// } else if (k == 2) { -// sheet = wb.createSheet("价格得分"); -// titles = "投标人名称,投标序号,价格得分"; -// -// } else { -// sheet = wb.createSheet("评分汇总表"); -// titles = "投标人名称,投标序号,商务得分,服务得分,价格得分,综合得分"; -// -// } -// sheet.createFreezePane(1, 1); -// -// //最右侧列值 -// Integer index = (titles.split(",").length) - 1; -// //行 -// int rowIndex = 0; -// //列 -// int colIndex = 0; -// -// // 1行 表头 -// CellRangeAddress region1 = new CellRangeAddress(0, 0, 0, index); -// sheet.addMergedRegion(region1); -// Row title1 = sheet.createRow(rowIndex++); -// Cell titleCell1 = title1.createCell(0); -// title1.setHeightInPoints(35); -// titleCell1.setCellValue("打分汇总表"); -// titleCell1.setCellStyle(cellStyle); -// // 2行 -// /* CellRangeAddress region2 = new CellRangeAddress(1, 1, 0, index); -// sheet.addMergedRegion(region2); -// Row title2 = sheet.createRow(rowIndex++); -// Cell titleCell2 = title2.createCell(0); -// titleCell2.setCellValue("包名 :bao123456"); -// //3行 -// CellRangeAddress region3 = new CellRangeAddress(2, 2, 0, index); -// sheet.addMergedRegion(region3); -// Row title3 = sheet.createRow(rowIndex++); -// Cell titleCell3 = title3.createCell(0); -// titleCell3.setCellValue("招标编号 bh123456");*/ -// //4行 得分标题 -// CellRangeAddress region4 = new CellRangeAddress(1, 1, 0, index); -// sheet.addMergedRegion(region4); -// Row title4 = sheet.createRow(rowIndex++); -// Cell titleCell4 = title4.createCell(0); -// if (k == 0) { -// titleCell4.setCellValue("商务得分"); -// createList = list1; -// } else if (k == 1) { -// titleCell4.setCellValue("服务得分"); -// createList = list2; -// } else if (k == 2) { -// titleCell4.setCellValue("价格得分"); -// createList = list3; -// } else { -// titleCell4.setCellValue("评分汇总"); -// } -// -// //5行 列头 -// Row titleRow5 = sheet.createRow(rowIndex++); -// // 设置高度为30 -// titleRow5.setHeightInPoints(30); -// for (String title : titles.split(",")) { -// sheet.setColumnWidth(colIndex, 17 * 256); -// Cell titleCell = titleRow5.createCell(colIndex++); -// titleCell.setCellValue(title); -// //设置样式 -// titleCell.setCellStyle(cellStyle); -// } -// //6行 数据行 -// int num = 1; -// if (k == 3) { -// for (int i = 0; i < all.size(); i++) { -// //3为最终汇总表 -// Row titleRowN = sheet.createRow(rowIndex++); -// colIndex = 0; -// //投标人名称 -// Cell cell = titleRowN.createCell(colIndex++); -// cell.setCellStyle(cellStyle); -// cell.setCellValue(all.get(i).getSupplierRegisterName()); -// //序号 -// Cell cell1 = titleRowN.createCell(colIndex++); -// cell1.setCellStyle(cellStyle); -// cell1.setCellValue(num++); -// //商务汇总 -// Cell cell2 = titleRowN.createCell(colIndex++); -// cell2.setCellStyle(cellStyle); -// cell2.setCellValue(all.get(i).getBusinessAllScore().toString()); -// //服务汇总 -// Cell cell3 = titleRowN.createCell(colIndex++); -// cell3.setCellStyle(cellStyle); -// cell3.setCellValue(all.get(i).getServiceAllScore().toString()); -// //价格汇总 -// Cell cell4 = titleRowN.createCell(colIndex++); -// cell4.setCellStyle(cellStyle); -// cell4.setCellValue(all.get(i).getPriceAllScore().toString()); -// //综合得分 -// Cell cell5 = titleRowN.createCell(colIndex++); -// cell5.setCellStyle(cellStyle); -// cell5.setCellValue(all.get(i).getAllScore().toString()); -// } -// } else { -// for (int i = 0; i < createList.size(); i++) { -// colIndex = 0; -// Row titleRowN = sheet.createRow(rowIndex++); -// //投标人名称 -// Cell cell = titleRowN.createCell(colIndex++); -// cell.setCellStyle(cellStyle); -// cell.setCellValue(createList.get(i).getSupplierRegisterName()); -// //序号 -// Cell cell1 = titleRowN.createCell(colIndex++); -// cell1.setCellStyle(cellStyle); -// cell1.setCellValue(num++); -// if (k == 2) { -// //价格得分 2时无专家评分,有最终评分 -// Cell cellN1 = titleRowN.createCell(colIndex++); -// cellN1.setCellStyle(cellStyle); -// cellN1.setCellValue(createList.get(i).getFinalScore().toString()); -// } else { -// //所有专家 -// for (int j = 0; j < createList.get(i).getScoreMap().size(); j++) { -// Map scoreMap = createList.get(i).getScoreMap(); -// //获取专家的顺序 -// if (scoreMap != null) { -// String score = null; -// for (String string : strings) { -// if (scoreMap.get(string) != null) { -// score = (scoreMap.get(string).getScore()).toString(); -// } else { -// score = "无"; -// } -// Cell cellN = titleRowN.createCell(colIndex++); -// cellN.setCellStyle(cellStyle); -// cellN.setCellValue(score); -// } -// -// } -// -// -// } -// //平均分 -// Cell cellN1 = titleRowN.createCell(colIndex++); -// cellN1.setCellStyle(cellStyle); -// cellN1.setCellValue(createList.get(i).getFinalScore().toString()); -// } -// } -// } -// } + if (detailList.containsKey("0")) { + detailScore = detailList.get("0"); + } + sheet.createRow(rowIndex++); + SXSSFRow row = sheet.createRow(rowIndex++); + SXSSFCell c = row.createCell(0); + c.setCellValue("价格分数"); + + row = this.createRow(sheet, rowIndex++); + + this.createCell(row, 0, cellStyle, "投标人名称"); + this.createCell(row, 1, cellStyle, "投标序号"); + this.createCell(row, 2, cellStyle, "价格得分"); + + int index = 1; + for (SupplierRegisterVO vo : registerVOList) { + int cellIndex = 0; + row = sheet.createRow(rowIndex++); + this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); + + if (detailScore.isEmpty()) { + this.createCell(row, cellIndex++, cellStyle, "-"); + + } else { + BidEvalDetailSummaryVO detailSummary = detailScore.stream().filter(f -> f.getSupplierRegisterId().equals(vo.getSupplierRegisterId())).findFirst().get(); + Map memberScoreMap = detailSummary.getScoreMap(); + for (MemberVO memberVO : memberAll) { + if (memberScoreMap.containsKey(memberVO.getUserId())) { + BigDecimal score = memberScoreMap.get(memberVO.getUserId()).getScore(); + this.createCell(row, cellIndex++, cellStyle, score == null ? "" : String.valueOf(score)); + } + } + } + } + + //汇总 + sheet.createRow(rowIndex++); + row = sheet.createRow(rowIndex++); + c = row.createCell(0); + c.setCellValue("评分汇总表"); + + row = sheet.createRow(rowIndex++); + this.createCell(row, 0, cellStyle, "投标人名称"); + this.createCell(row, 1, cellStyle, "投标序号"); + this.createCell(row, 2, cellStyle, "商务得分"); + this.createCell(row, 3, cellStyle, "技术得分"); + this.createCell(row, 4, cellStyle, "服务得分"); + this.createCell(row, 5, cellStyle, "价格得分"); + this.createCell(row, 6, cellStyle, "综合得分"); + + index = 1; + for (SupplierRegisterVO vo : registerVOList) { + int cellIndex = 0; + row = sheet.createRow(rowIndex++); + this.createCell(row, cellIndex++, cellStyle, vo.getSupplierRegisterName()); + this.createCell(row, cellIndex++, cellStyle, String.valueOf(index++)); + + BigDecimal avgBd = + //商务 + scoreSummaryCell(row, cellIndex++, cellStyle, "1", detailList, vo.getSupplierRegisterId()) + //技术 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "2", detailList, vo.getSupplierRegisterId())) + //服务 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "5", detailList, vo.getSupplierRegisterId())) + //报价 + .add(scoreSummaryCell(row, cellIndex++, cellStyle, "0", detailList, vo.getSupplierRegisterId())); + this.createCell(row, cellIndex, cellStyle, String.valueOf(avgBd)); + } + + this.createRow(sheet, rowIndex++); + row = this.createRow(sheet, rowIndex++); + c = row.createCell(0); + c.setCellValue("全体评委签名:"); - String filename = "打分汇总表.xls"; + this.createRow(sheet, rowIndex++); + row = this.createRow(sheet, rowIndex); + c = row.createCell(titles0.size() - 3); + c.setCellValue("日期:"); + c = row.createCell(titles0.size() - 2); + c.setCellValue(new SimpleDateFormat("yyyy年MM月dd日").format(new Date())); + + //合并表头 + CellRangeAddress region = new CellRangeAddress(0, 0, 0, titles0.size() - 1); + sheet.addMergedRegion(region); + + String filename = "打分汇总表.xlsx"; filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader("Content-Disposition", "attachment;filename=".concat(new String(filename.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1))); wb.write(response.getOutputStream()); } - - //return BaseResponse.fail(ERROR_MESSAGE); - } + + private SXSSFRow createRow(SXSSFSheet sheet, int rowIndex) { + return sheet.createRow(rowIndex); + } + + private Cell createCell(Row row, int cellIndex, CellStyle style, String val) { + Cell cell = row.createCell(cellIndex); + cell.setCellStyle(style); + cell.setCellValue(val); + return cell; + } + + + //汇总表添加cell + private BigDecimal scoreSummaryCell(Row row, int cellIndex, CellStyle style, String cage, Map> detailList, String supplierRegisterId) { + BigDecimal avgBd = new BigDecimal(0); + Cell c = row.createCell(cellIndex); + c.setCellStyle(style); + if (detailList.containsKey(cage)) { + BidEvalDetailSummaryVO summaryVO = detailList.get(cage).stream().filter(f -> f.getSupplierRegisterId().equals(supplierRegisterId)).findFirst().get(); + String score = "-"; + if (summaryVO.getFinalScore() != null) { + score = String.valueOf(summaryVO.getFinalScore()); + avgBd = avgBd.add(summaryVO.getFinalScore()); + } + c.setCellValue(score); + } else { + c.setCellValue("-"); + } + + return avgBd; + } + + } + diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java index 36a44cb..c1a40f5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JgdfExportServiceImpl.java @@ -147,7 +147,7 @@ public class JgdfExportServiceImpl implements ExportService { sheet.addMergedRegion(region2); Row title2 = sheet.createRow(rowIndex++); Cell titleCell2 = title2.createCell(0); - titleCell2.setCellValue("招标编号 : " + list.getData().getBidSectName()); + titleCell2.setCellValue("招标编号 : " + list.getData().getBidSectBizNum()); //标题行 Row titleRow = sheet.createRow(rowIndex++); @@ -229,7 +229,7 @@ public class JgdfExportServiceImpl implements ExportService { CellRangeAddress region7 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, 6); sheet.addMergedRegion(region7); - String filename = "价格打分.xls"; + String filename = "价格打分.xlsx"; filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java index a39328d..07ac9ce 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/JudgesExportServiceImpl.java @@ -71,7 +71,7 @@ public class JudgesExportServiceImpl implements ExportService { put("time", ""); if (list != null) { - put("bh", list.getData().getBidSectCode()); + put("bh", list.getData().getBidSectBizNum()); put("mc", list.getData().getProjectName()); } else { put("bh", ""); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java index 7056f0c..b271760 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/KbjlExportServiceImpl.java @@ -17,6 +17,8 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.OutputStream; import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -64,7 +66,8 @@ public class KbjlExportServiceImpl implements ExportService { data.put("tbr", (listBaseResponse.getData().get(i).getBidUserName())); data.put("bj", (listBaseResponse.getData().get(i).getNewPrice())); data.put("yy", ""); - data.put("sign", (listBaseResponse.getData().get(i).getContactName()) + ":" + (listBaseResponse.getData().get(i).getSignTime())); + LocalDateTime signTime = listBaseResponse.getData().get(i).getSignTime(); + data.put("sign", signTime == null ? "" : (listBaseResponse.getData().get(i).getContactName()) + ":" + DateTimeFormatter.ofPattern("yyyy年MM月dd日").format(signTime)); maps.add(data); } @@ -92,8 +95,8 @@ public class KbjlExportServiceImpl implements ExportService { if (project.getData() != null) { put("mc", project.getData().getProjectName()); - put("bh", project.getData().getSectionNumber()); - put("bao", project.getData().getBidSectBizNum()); + put("bh", project.getData().getBidSectBizNum()); + put("bao", project.getData().getBidSectName()); } else { put("mc", ""); put("bh", ""); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java index 9a2fc3e..2c97737 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PbbgExportServiceImpl.java @@ -206,7 +206,7 @@ public class PbbgExportServiceImpl implements ExportService { .bind("table7", policy7).bind("table8", policy8).build(); - File file = new File("d:/评标报告.docx"); + File file = getExportTemplet("评标报告.docx"); XWPFTemplate template = XWPFTemplate.compile(file, config).render(all); String fileName = new String("评标报告.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java index 3b56078..b76d660 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/PszjExportServiceImpl.java @@ -16,6 +16,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.OutputStream; import java.nio.charset.StandardCharsets; +import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -55,7 +56,7 @@ public class PszjExportServiceImpl implements ExportService { data.put("phone", listBaseResponse.getData().get(i).getMobile()); data.put("idCard", listBaseResponse.getData().get(i).getCertificate()); data.put("isTrue", listBaseResponse.getData().get(i).getAttitude() == 1 ? "是" : "否"); - data.put("time", listBaseResponse.getData().get(i).getLoginTime()); + data.put("time", DateTimeFormatter.ofPattern("yyyy年MM月dd日").format(listBaseResponse.getData().get(i).getLoginTime())); maps.add(data); } } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java index 52ce9e2..8099fc0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/ZjgrExportServiceImpl.java @@ -234,7 +234,7 @@ public class ZjgrExportServiceImpl implements ExportService { } - String filename = "评标打分表.xls"; + String filename = "评标打分表.xlsx"; filename = filename.substring(0, filename.lastIndexOf('.')) + filename.substring(filename.lastIndexOf('.')); response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index caf4dfc..027b4e3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: dev \ No newline at end of file + active: test \ No newline at end of file