From ddd2f1fa803ef0c0690772a0aa5e338f80774523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Wed, 28 Apr 2021 09:50:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=20=E6=8A=A5=E8=A1=A8?= =?UTF-8?q?=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../extend/export/entity/CbpsExportData.java | 31 ++ .../export/entity/RvwFirstExportData.java | 35 -- .../common/ExportCommonFeignService.java | 20 +- .../impl/ExportCommonFeignServiceImpl.java | 47 +- .../service/impl/CbpsExportServiceImpl.java | 308 ++++--------- .../service/impl/DfhzExportServiceImpl.java | 410 +++++++++--------- .../export/service/impl/FirstRvwImpl.java | 113 ----- .../service/impl/ZjgrExportServiceImpl.java | 6 +- .../feign/client/ProjectFeignService.java | 2 +- .../extend/feign/client/RsmsFeignService.java | 81 ++-- .../feign/client/TenderFeignService.java | 2 +- .../client/factory/ExportServiceFallback.java | 75 +++- .../entity}/BidEvalDetailJudgesSummaryVO.java | 2 +- .../entity}/BidEvalDetailSummaryVO.java | 2 +- .../vo => feign/entity}/BidEvalDetailVO.java | 2 +- .../entity}/BidEvalEarlyJudgesSummaryVO.java | 2 +- .../entity}/ReviewConfigCategory.java | 7 +- .../feign/entity/ReviewConfigCategoryDTO.java | 1 - .../entity}/ReviewConfigDetail.java | 2 +- .../feign/entity/ReviewConfigDetailDTO.java | 11 +- .../entity}/ReviewConfigStandard.java | 2 +- .../entity}/SupplierRegisterVO.java | 3 +- src/main/resources/model/初步评审.docx | Bin 23687 -> 0 bytes 23 files changed, 522 insertions(+), 642 deletions(-) create mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java delete mode 100644 src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailJudgesSummaryVO.java (95%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailSummaryVO.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalDetailVO.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/BidEvalEarlyJudgesSummaryVO.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigCategory.java (92%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigDetail.java (98%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/bean => feign/entity}/ReviewConfigStandard.java (96%) rename src/main/java/com/chinaunicom/mall/ebtp/extend/{export/vo => feign/entity}/SupplierRegisterVO.java (90%) delete mode 100644 src/main/resources/model/初步评审.docx diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java new file mode 100644 index 0000000..011eb90 --- /dev/null +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/CbpsExportData.java @@ -0,0 +1,31 @@ +package com.chinaunicom.mall.ebtp.extend.export.entity; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.ArrayList; +import java.util.List; + +@Data +@Accessors(chain = true) +public class CbpsExportData { + + private String index; + + /** + * 评审项名称 + */ + private String scoreItem; + + /** + * 审查标准 + */ + private String rvwStandard; + + /** + * 得分 + */ + private List scores = new ArrayList<>(); + + +} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java deleted file mode 100644 index baf7c35..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/entity/RvwFirstExportData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.entity; - - -import com.deepoove.poi.expression.Name; -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Data; -import lombok.experimental.Accessors; -import org.springframework.format.annotation.DateTimeFormat; - -import java.io.Serializable; -import java.time.LocalDateTime; - - -/** - * 初步评审导出数据实体 - */ -@Data -@Accessors(chain = true) -public class RvwFirstExportData implements Serializable { - - private static final long serialVersionUID = 1L; - - private Integer index; - - private String title; - - private String projName; - - private String projNum; - - private String date; - - @Name("detail_table") - private ExportTableData tableData; -} diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java index 7430bf0..479b706 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/ExportCommonFeignService.java @@ -1,6 +1,8 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; @@ -46,7 +48,7 @@ public interface ExportCommonFeignService { */ List tenderGetSupplierRegisterByRoomId(String roomId); - +// ------------------------------------------------ rsms -------------------------------- /** * 查询初审汇总数据 * @@ -54,7 +56,21 @@ public interface ExportCommonFeignService { * @return */ List rsmsFindScoreEarlySummary(ExportParam param); - + /** + * 评委供应商 + * + * @param param + * @return + */ + List findRegisterAndUser(ExportParam param); + /** + * 打分汇总表 + * + * @param param + * @return + */ + Map> exportScoreSummary(ExportParam param); +// ------------------------------------------------ rsms end -------------------------------- /** * 通过评审室Id查询评委会成员数据及签到数据 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java index 5a590f4..686e160 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/common/impl/ExportCommonFeignServiceImpl.java @@ -2,7 +2,9 @@ package com.chinaunicom.mall.ebtp.extend.export.service.common.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.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.BizAssessRoom; import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; @@ -100,7 +102,7 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { return response.getData(); } - +// ------------------------------------------------ rsms -------------------------------- @Autowired private RsmsFeignService rsmsFeignService; @@ -112,16 +114,49 @@ public class ExportCommonFeignServiceImpl implements ExportCommonFeignService { */ @Override public List rsmsFindScoreEarlySummary(ExportParam param) { - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - BaseResponse> response = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO); + BaseResponse> response = rsmsFeignService.exportEarly(param.getAssessRoomId()); if (response == null || response.getData() == null) { return new ArrayList<>(); } return response.getData(); } + /** + * 评委供应商 + * + * @param param + * @return + */ + @Override + public List findRegisterAndUser(ExportParam param) { + BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); + bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); + bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); + bidEvalInfoDTO.setReviewType(param.getReviewType()); + //所有评委数据源 + BaseResponse> response = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO); + if (response == null || response.getData() == null) { + return new ArrayList<>(); + } + return response.getData(); + } + + /** + * 打分汇总表 + * + * @param param + * @return + */ + @Override + public Map> exportScoreSummary(ExportParam param) { + BaseResponse>> response = rsmsFeignService.exportScoreSummary(param.getAssessRoomId()); + if (response == null || response.getData() == null) { + return new HashMap<>(); + } + return response.getData(); + } + + // ------------------------------------------------ rsms end -------------------------------- /** * 通过评审室Id查询评委会成员数据及签到数据 * 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 5e7c2f1..a8a8838 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 @@ -1,44 +1,37 @@ 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.*; -import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; -import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; +import com.chinaunicom.mall.ebtp.common.poiExport.constant.ExportConstant; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTable; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTd; +import com.chinaunicom.mall.ebtp.common.poiExport.entity.ExcelTr; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.entity.CbpsExportData; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import lombok.SneakyThrows; -import org.apache.poi.ss.usermodel.*; -import org.apache.poi.ss.util.CellRangeAddress; -import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.util.StringUtils; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -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; /** - * 初步评审 + * 初步评审表 + * + * @author fqj */ @Service("cbps") public class CbpsExportServiceImpl implements ExportService { - private final RsmsFeignService rsmsFeignService; - private final ProjectFeignService projectFeignService; - public CbpsExportServiceImpl(ProjectFeignService projectFeignService, RsmsFeignService rsmsFeignService) { - this.projectFeignService = projectFeignService; - this.rsmsFeignService = rsmsFeignService; - } + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 @@ -50,216 +43,105 @@ public class CbpsExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - //查询项目名称 - ProjectSectionVO projectSectionVO = new ProjectSectionVO(); - projectSectionVO.setId(param.getSectionId()); - BaseResponse list = projectFeignService.selectById(projectSectionVO); + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //初审评分信息 + List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - //供应商 - List listBaseResponse = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO).getData(); + ExcelTable table = new ExcelTable("初步评审表"); + table.setFileName("初步评审表"); - //列头 - StringBuffer titles0 = new StringBuffer("序号,评审因素,评审标准"); - //供应商 顺序 - ArrayList strings = new ArrayList<>(); - for (int i = 0; i < listBaseResponse.size(); i++) { - strings.add(listBaseResponse.get(i).getSupplierRegisterId()); - titles0.append("," + listBaseResponse.get(i).getSupplierRegisterName()); + List list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("初步评审表").setCellStyleKey("export_title_1").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("项目名称:" + proj.getProjectName()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("招标编号:" + proj.getProjectBizNum()).setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("序号")); + list.add(new ExcelTd().setTdValue("评审因素")); + list.add(new ExcelTd().setTdValue("评审标准")); + for (BizSupplierRegister supplier : suppliers) { + list.add(new ExcelTd().setTdValue(supplier.getCompanyName())); } - String titles = titles0.toString(); - //最右侧列值 - Integer index = (titles.split(",").length) - 1; - //自定义序号 - Integer num = 1; + table.add(new ExcelTr().setExcelTdList(list)); - // 创建工作簿 - SXSSFWorkbook wb = new SXSSFWorkbook(); - //表格样式 - CellStyle cellStyle = wb.createCellStyle(); - //水平居中 - cellStyle.setAlignment(HorizontalAlignment.CENTER); - //垂直居中 - cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); - //边框 - cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + List datas = new ArrayList<>(); + //所有评审项 + List detailList = new ArrayList<>(); + earlySummary.stream().map(ReviewConfigCategoryDTO::getDetailList).forEach(detailList::addAll); - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); - BaseResponse> scoreRecord = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO); - List dataList = scoreRecord.getData(); - - // 创建表格 - Sheet sheet = wb.createSheet("评审汇总"); - sheet.createFreezePane(1, 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("项目名称 : " + list.getData().getProjectName()); - //3行 - CellRangeAddress region3 = new CellRangeAddress(2, 2, 0, index); - sheet.addMergedRegion(region3); - Row title3 = sheet.createRow(rowIndex++); - Cell titleCell3 = title3.createCell(0); - titleCell3.setCellValue("招标编号 : " + list.getData().getBidSectBizNum()); - //4行 列头 - 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); - } - // 5行开始渲染 - for (ReviewConfigCategoryDTO object : dataList) { - List detailList = object.getDetailList(); - String name = object.getName(); - for (ReviewConfigDetailDTO reviewConfigDetailDTO : detailList) { - colIndex = 0; - Row titleRowN = sheet.createRow(rowIndex++); - Cell cell = titleRowN.createCell(colIndex++); - cell.setCellStyle(cellStyle); - //供应商结论是否合格 - Map scoreMap = reviewConfigDetailDTO.getEarlyMap(); - if (StringUtils.isEmpty(name)) { - cell.setCellValue("结论"); - - Cell cell1 = titleRowN.createCell(colIndex++); - cell1.setCellValue("是否通过初审检查"); - cell1.setCellStyle(cellStyle); - //占位列 - Cell cell2 = titleRowN.createCell(colIndex++); - cell2.setCellValue(""); - cell2.setCellStyle(cellStyle); - - if (scoreMap != null) { - for (String string : strings) { - Boolean actualValue; - String all = null; - if (scoreMap.get(string) != null) { - actualValue = scoreMap.get(string).getJudgesResult(); - if (actualValue != null) { - if (actualValue) { - all = "合格"; - } else { - all = "不合格"; - } - } else { - all = "空"; - } - } - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); - cell4.setCellValue(all); - } - } else { - for (int j = 0; j < strings.size(); j++) { - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); + for (int i = 0; i < detailList.size(); i++) { + ReviewConfigDetailDTO dto = detailList.get(i); + CbpsExportData data = new CbpsExportData(); + data.setIndex(String.valueOf(i)) + .setScoreItem(dto.getScoreItem()) + .setRvwStandard(dto.getRvwStandard()); + //打分数据 + Map earlyMap = dto.getEarlyMap(); + if (earlyMap != null && earlyMap.size() > 0) { + if (i != detailList.size() - 1) { + for (BizSupplierRegister supplier : suppliers) { + if (earlyMap.containsKey(supplier.getId())) { + BidEvalEarlyJudgesSummaryVO summaryVO = earlyMap.get(supplier.getId()); + String sbl = (summaryVO.getJudgesResult() ? "✔" : "✖") + + "(" + summaryVO.getQualified() + "✔" + + summaryVO.getUnqualified() + "✖" + ")"; + data.getScores().add(sbl); + } else { + data.getScores().add("-"); } } } else { - cell.setCellValue(num++); - //评审因素 - Cell cell1 = titleRowN.createCell(colIndex++); - cell1.setCellValue(reviewConfigDetailDTO.getScoreItem()); - cell1.setCellStyle(cellStyle); - //评审标准 - Cell cell2 = titleRowN.createCell(colIndex++); - cell2.setCellValue(reviewConfigDetailDTO.getRvwStandard()); - cell2.setCellStyle(cellStyle); - - if (scoreMap != null) { - for (String string : strings) { - Boolean actualValue; - String all = null; - String qua = null; - String unqua = null; - if (scoreMap.get(string) != null) { - actualValue = scoreMap.get(string).getJudgesResult(); - if (actualValue != null) { - qua = scoreMap.get(string).getQualified(); - unqua = scoreMap.get(string).getUnqualified(); - if (actualValue) { - all = "√(√" + qua + ",×" + unqua + ")"; - } else { - all = "×(√" + qua + ",×" + unqua + ")"; - } - } else { - all = "空"; - } - } - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); - cell4.setCellValue(all); - } - } else { - for (int j = 0; j < strings.size(); j++) { - Cell cell4 = titleRowN.createCell(colIndex++); - cell4.setCellStyle(cellStyle); + //汇总数据 + for (BizSupplierRegister supplier : suppliers) { + if (earlyMap.containsKey(supplier.getId())) { + BidEvalEarlyJudgesSummaryVO summaryVO = earlyMap.get(supplier.getId()); + data.setIndex("结论") + .setScoreItem("是否通过初步评审") + .setRvwStandard("") + .getScores().add(summaryVO.getJudgesResult()? "合格":"不合格"); + } else { + data.getScores().add("-"); } } } } - - //合并结论 - if (StringUtils.isEmpty(name)) { - sheet.addMergedRegion(new CellRangeAddress(rowIndex - 1, rowIndex - 1, 1, 2)); - } + datas.add(data); } - //倒第2行 - Row title5 = sheet.createRow(rowIndex++); - Cell titleCell5 = title5.createCell(0); - titleCell5.setCellValue("全体评委签字:"); - CellRangeAddress region5 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, index); - sheet.addMergedRegion(region5); - //最后一行 - CellStyle cellStyle1 = wb.createCellStyle(); - cellStyle1.setVerticalAlignment(VerticalAlignment.CENTER); - cellStyle1.setAlignment(HorizontalAlignment.RIGHT); - Row title6 = sheet.createRow(rowIndex++); - Cell titleCell6 = title6.createCell(0); - Date date = new Date(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 "); - titleCell6.setCellValue("日期: " + sdf.format(date)); - titleCell6.setCellStyle(cellStyle1); - CellRangeAddress region6 = new CellRangeAddress(rowIndex - 1, rowIndex - 1, 0, index); - sheet.addMergedRegion(region6); + for (CbpsExportData data : datas) { + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue(data.getIndex())); + list.add(new ExcelTd().setTdValue(data.getScoreItem())); + list.add(new ExcelTd().setTdValue(data.getRvwStandard())); + for (String score : data.getScores()) { + list.add(new ExcelTd().setTdValue(score)); + } + table.add(new ExcelTr().setExcelTdList(list)); + } - 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), "ISO8859-1"))); - wb.write(response.getOutputStream()); + list = new ArrayList<>(); + list.add(new ExcelTd().setTdValue("全体评委签字:").setCellStyleKey("export_title_2").setIsRowMerge(true).setRowMergeNum(suppliers.size() + 3)); + table.add(new ExcelTr().setExcelTdList(list)); + ExportConstant.exportFile(response, ExportConstant.generateExcelByTable(table)); } } 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 2e03fee..2898ebd 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,15 +1,13 @@ 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.*; +import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; +import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; +import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; +import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailJudgesSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailSummaryVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import lombok.SneakyThrows; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; @@ -17,6 +15,7 @@ import org.apache.poi.xssf.streaming.SXSSFCell; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; @@ -44,6 +43,9 @@ public class DfhzExportServiceImpl implements ExportService { } + @Autowired + private ExportCommonFeignService commonFeignService; + /** * 导出 * @@ -54,233 +56,225 @@ public class DfhzExportServiceImpl implements ExportService { @SneakyThrows @Override public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO(); - bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalInfoDTO.setReviewType(param.getReviewType()); - //所有评委数据源 - BaseResponse> judges = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO); - BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO(); - bidEvalDetailDTO.setAssessRoomId(param.getAssessRoomId()); - bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId()); - bidEvalDetailDTO.setReviewType(param.getReviewType()); + //查询包 + ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); + //查询项目 + ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); + + //供应商信息 + List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); + + //评委 + List registerVOList = commonFeignService.findRegisterAndUser(param); + //所有类型打分数据源 - BaseResponse>> list = rsmsFeignService.findCategoryResultSummary(bidEvalDetailDTO); - if (list != null && judges != null) { - //所有供应商 - List registerVOList = judges.getData(); + Map> detailList = commonFeignService.exportScoreSummary(param); - //打分数据 - Map> detailList = list.getData(); + //所有评委 + List memberAll = registerVOList.stream().findFirst().get().getMembers(); - //所有评委 - List memberAll = registerVOList.stream().findFirst().get().getMembers(); - // 创建工作簿 - SXSSFWorkbook wb = new SXSSFWorkbook(); - //表格样式 - CellStyle cellStyle = wb.createCellStyle(); - //水平居中 - cellStyle.setAlignment(HorizontalAlignment.CENTER); - //垂直居中 - cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); - //边框 - cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 - cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 - cellStyle.setBorderTop(BorderStyle.THIN);//上边框 - cellStyle.setBorderRight(BorderStyle.THIN);//右边框 + // 创建工作簿 + SXSSFWorkbook wb = new SXSSFWorkbook(); + //表格样式 + CellStyle cellStyle = wb.createCellStyle(); + //水平居中 + cellStyle.setAlignment(HorizontalAlignment.CENTER); + //垂直居中 + cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); + //边框 + cellStyle.setBorderBottom(BorderStyle.THIN); //下边框 + cellStyle.setBorderLeft(BorderStyle.THIN);//左边框 + cellStyle.setBorderTop(BorderStyle.THIN);//上边框 + cellStyle.setBorderRight(BorderStyle.THIN);//右边框 - SXSSFSheet sheet = wb.createSheet(); - int rowIndex = 0; - //头 - SXSSFRow titleRow = createRow(sheet, rowIndex++); - Cell titleCell1 = titleRow.createCell(0); - titleRow.setHeightInPoints(35); - titleCell1.setCellValue("打分汇总表"); - //项目和招标名称数据 - 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(proj.getProjectName()); - //招标编号 - SXSSFRow projectNumRow = sheet.createRow(rowIndex++); - SXSSFCell projectNumCell0 = projectNumRow.createCell(0); - projectNumCell0.setCellValue("项目编号:"); - SXSSFCell projectNumCell1 = projectNumRow.createCell(1); - 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++) { - List detailScore = new ArrayList<>(); - if (i == 0) { - if (detailList.containsKey("1")) { - detailScore = detailList.get("1"); - } - } else if (i == 1) { - if (detailList.containsKey("2")) { - detailScore = detailList.get("2"); - } - } else { - if (detailList.containsKey("5")) { - detailScore = detailList.get("5"); - } - } + SXSSFSheet sheet = wb.createSheet(); + int rowIndex = 0; + //头 + SXSSFRow titleRow = createRow(sheet, rowIndex++); + Cell titleCell1 = titleRow.createCell(0); + titleRow.setHeightInPoints(35); + titleCell1.setCellValue("打分汇总表"); - this.createRow(sheet, rowIndex++); - SXSSFRow row = this.createRow(sheet, rowIndex++); - if (i == 0) { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("商务分数"); - } else if (i == 1) { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("技术分数"); - } else { - SXSSFCell cell = row.createCell(0); - cell.setCellValue("服务分数"); - } - - - row = sheet.createRow(rowIndex++); - int cellIndex = 0; - for (String tit : titles0) { - this.createCell(row, cellIndex++, cellStyle, tit); - } - int index = 1; - - for (SupplierRegisterVO vo : registerVOList) { - cellIndex = 0; - row = sheet.createRow(rowIndex++); - 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, "-"); - - } else { - 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())); - } - } - } - - //报价 + //项目名称 + SXSSFRow projectNameRow = sheet.createRow(rowIndex++); + SXSSFCell projectNameCell0 = projectNameRow.createCell(0); + projectNameCell0.setCellValue("项目名称:"); + SXSSFCell projectNameCell1 = projectNameRow.createCell(1); + projectNameCell1.setCellValue(proj.getProjectName()); + //招标编号 + SXSSFRow projectNumRow = sheet.createRow(rowIndex++); + SXSSFCell projectNumCell0 = projectNumRow.createCell(0); + projectNumCell0.setCellValue("项目编号:"); + SXSSFCell projectNumCell1 = projectNumRow.createCell(1); + projectNumCell1.setCellValue(proj.getProjectBizNum()); + //列头 + 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++) { List detailScore = new ArrayList<>(); - - if (detailList.containsKey("0")) { - detailScore = detailList.get("0"); + if (i == 0) { + if (detailList.containsKey("1")) { + detailScore = detailList.get("1"); + } + } else if (i == 1) { + if (detailList.containsKey("2")) { + detailScore = detailList.get("2"); + } + } else { + if (detailList.containsKey("5")) { + detailScore = detailList.get("5"); + } } - sheet.createRow(rowIndex++); - SXSSFRow row = sheet.createRow(rowIndex++); - SXSSFCell c = row.createCell(0); - c.setCellValue("价格分数"); - row = this.createRow(sheet, rowIndex++); + this.createRow(sheet, rowIndex++); + SXSSFRow row = this.createRow(sheet, rowIndex++); + if (i == 0) { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("商务分数"); + } else if (i == 1) { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("技术分数"); + } else { + SXSSFCell cell = row.createCell(0); + cell.setCellValue("服务分数"); + } - this.createCell(row, 0, cellStyle, "投标人名称"); - this.createCell(row, 1, cellStyle, "投标序号"); - this.createCell(row, 2, cellStyle, "价格得分"); + row = sheet.createRow(rowIndex++); + int cellIndex = 0; + for (String tit : titles0) { + this.createCell(row, cellIndex++, cellStyle, tit); + } int index = 1; + for (SupplierRegisterVO vo : registerVOList) { - int cellIndex = 0; + 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, "-"); + for (MemberVO memberVO : memberAll) { + this.createCell(row, cellIndex++, cellStyle, "-"); + + } + 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)); - } + 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())); + } + } + } + + //报价 + List detailScore = new ArrayList<>(); + + 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("全体评委签名:"); - - - 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()); } + + //汇总 + 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("全体评委签名:"); + + + 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()); } private SXSSFRow createRow(SXSSFSheet sheet, int rowIndex) { diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java deleted file mode 100644 index d654cf7..0000000 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/service/impl/FirstRvwImpl.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.chinaunicom.mall.ebtp.extend.export.service.impl; - -import cn.hutool.core.date.DateUtil; -import com.chinaunicom.mall.ebtp.extend.export.bean.ExportParam; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectRecordVO; -import com.chinaunicom.mall.ebtp.extend.export.entity.ExportTableData; -import com.chinaunicom.mall.ebtp.extend.export.entity.RvwFirstExportData; -import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.service.common.ExportCommonFeignService; -import com.chinaunicom.mall.ebtp.extend.export.service.policy.DetailTablePolicy; -import com.chinaunicom.mall.ebtp.extend.export.service.templateFile.TemplateFileService; -import com.chinaunicom.mall.ebtp.extend.feign.entity.BizSupplierRegister; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.config.Configure; -import com.deepoove.poi.data.*; -import lombok.SneakyThrows; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.List; - - -/** - * 初步评审表 - * - * @author fqj - */ -@Service("firstRvw") -public class FirstRvwImpl implements ExportService { - - private static final String DATE_FORMATTER = "yyyy年MM月dd日"; - - @Autowired - private ExportCommonFeignService commonFeignService; - - @Autowired - private TemplateFileService templateFileService; - - - /** - * 导出 - * - * @param param - * @param request - * @param response - */ - @SneakyThrows - @Override - public void doExport(ExportParam param, HttpServletRequest request, HttpServletResponse response) { - //查询包 - ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId()); - //查询项目 - ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId()); - - //供应商信息 - List suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId()); - - //初审评分信息 - List earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param); - - RvwFirstExportData data = new RvwFirstExportData(); - data.setProjName(proj.getProjectName()) - .setProjNum(proj.getProjectBizNum()); - - - ExportTableData tableData = new ExportTableData(); - //供应商 - List cells = new ArrayList<>(); - for (BizSupplierRegister supplier : suppliers) { - cells.add(Cells.of(supplier.getCompanyName()).center().create()); - } - - //评分项 - List rows = new ArrayList<>(); - int i = 1; - for (ReviewConfigCategoryDTO dto : earlySummary) { - RowRenderData e = Rows.of(String.valueOf(i++), dto.getCategory(), dto.getConfigId()).center().create(); - e.addCell(Cells.of("1").create()); - e.addCell(Cells.of("2").create()); - e.addCell(Cells.of("3").create()); - rows.add(e); - } - RowRenderData e = Rows.of("结论", "是否通过初步评审", "").center().create(); - for (BizSupplierRegister supplier : suppliers) { - e.addCell(Cells.of("").center().create()); - } - - -//.setCellMerge(MergeCellRule.builder().map(MergeCellRule.Grid.of(1, 3), MergeCellRule.Grid.of(1, 5)).build()) - data.setTableData(tableData.setCells(cells).setRows(rows)) - .setDate(DateUtil.format(LocalDateTime.now(),DATE_FORMATTER)); - - - //获取模板 -// InputStream file = templateFileService.getExportTemplet("firstRvw"); - File file = getExportTemplet("初步评审.docx"); - Configure config = Configure.builder().bind("detail_table", new DetailTablePolicy()).build(); - XWPFTemplate template = XWPFTemplate.compile(file, config).render(data); - - String fileName = new String("初步评审表.docx".getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); - - this.write(template, fileName, response); - - } -} 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 f1bebb6..45972ad 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 @@ -5,9 +5,9 @@ import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.ProjectFeignService; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.service.ExportService; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailVO; import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ProjectSectionVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigDetailDTO; @@ -79,7 +79,7 @@ public class ZjgrExportServiceImpl implements ExportService { } String titles = titles0.toString(); //最右侧列值 - Integer index = (titles.split(",").length) - 1; + int index = (titles.split(",").length) - 1; // 创建工作簿 diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java index b0d02ff..bc27036 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/ProjectFeignService.java @@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestBody; /** * 调用 PROJECT_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.project}",fallbackFactory = ProjectFeignFallbackFactory.class) +@FeignClient(value = "${mconfig.feign.name.project}",fallbackFactory = ProjectFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-project/") public interface ProjectFeignService { /** diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java index 0f78fe6..6eac2a1 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/RsmsFeignService.java @@ -1,9 +1,14 @@ package com.chinaunicom.mall.ebtp.extend.feign.client; import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; -import com.chinaunicom.mall.ebtp.extend.export.bean.*; +import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveFileReturnVO; +import com.chinaunicom.mall.ebtp.extend.export.bean.ArchiveLink; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalDetailDTO; +import com.chinaunicom.mall.ebtp.extend.export.bean.BidEvalInfoDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.BidEvalDetailSummaryVO; +import com.chinaunicom.mall.ebtp.extend.export.vo.SupplierRegisterPriceScoreVO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.SupplierRegisterVO; import com.chinaunicom.mall.ebtp.extend.feign.client.factory.ExportServiceFallback; -import com.chinaunicom.mall.ebtp.extend.export.vo.*; import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; @@ -19,7 +24,7 @@ import java.util.Map; /** * 调用 RSMS_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.rsms}", fallbackFactory = ExportServiceFallback.class) +@FeignClient(value = "${mconfig.feign.name.rsms}", fallbackFactory = ExportServiceFallback.class, url = "http://127.0.0.1:10087/") public interface RsmsFeignService { /** * 不同供应商的打分 @@ -30,26 +35,6 @@ public interface RsmsFeignService { @PostMapping("/v1/bid/eval/record/findScoreRecord") BaseResponse> findScoreRecord(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - - /** - * 评委供应商 - * - * @param bidEvalInfoDTO - * @return - */ -// @PostMapping("/v1/bid/archive/findRegister") - @GetMapping("/v1/bid/eval/detail/findRegister") - BaseResponse> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO); - - /** - * 初审汇总 - * - * @param bidEvalDetailDTO - * @return - */ - @PostMapping("/v1/bid/eval/summary/findScoreEarlySummary") - BaseResponse> findScoreEarlySummary(@RequestBody BidEvalDetailDTO bidEvalDetailDTO); - /** * 价格打分 * @@ -92,18 +77,20 @@ public interface RsmsFeignService { /** * 详细评审表|专家打分表|价格打分表|打分汇总表 - * @param sectionId 标段ID + * + * @param sectionId 标段ID * @param isReviewMethod 是否为资审方式 0 否 1 是 - * @param list 节点集合 - * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> + * @param list 节点集合 + * @return com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse> * @author dino * @date 2021/1/19 15:08 */ @ApiOperation("详细评审表|专家打分表|价格打分表|打分汇总表") @PostMapping("/v1/bid/archive/findDetailArchiveList") - BaseResponse>> findDetailArchiveList(@RequestParam("sectionId") String sectionId, - @RequestParam("isReviewMethod") String isReviewMethod, - @RequestBody List list) ; + BaseResponse>> findDetailArchiveList(@RequestParam("sectionId") String sectionId, + @RequestParam("isReviewMethod") String isReviewMethod, + @RequestBody List list); + /** * 评审报告 * @@ -124,12 +111,46 @@ public interface RsmsFeignService { * 通过评审室查询detail表数据 * * @param assessRoomId - * * @return */ @ApiOperation("通过评审室查询detail表数据") @GetMapping("/v1/reviewresult/queryDetailByRoomId/{assessRoomId}") BaseResponse> get(@ApiParam(value = "评审室id", required = true) @PathVariable String assessRoomId); + + + + + + + /** + * 评委供应商11111 + * + * @param bidEvalInfoDTO + * @return + */ +// @PostMapping("/v1/bid/archive/findRegister") + @GetMapping("/v1/bid/eval/detail/findRegister") + BaseResponse> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO); + + /** + * 初审汇总111111 + * + * @param roomId 评审室ID + * @return + * @date 2021年4月27日 + */ + @GetMapping("/v1/bid/report/exportEarly/{roomId}") + BaseResponse> exportEarly(@ApiParam(value = "评审室ID", required = true) @PathVariable("roomId") String roomId); + + /** + * 打分汇总表 + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @GetMapping("/exportScoreSummary/{roomId}") + BaseResponse>> exportScoreSummary(@PathVariable("roomId") String roomId); + + } diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java index 27872fd..b9c5ee4 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/TenderFeignService.java @@ -14,7 +14,7 @@ import java.util.List; /** * 调用 TENDER_SERVICE */ -@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class) +@FeignClient(value = "${mconfig.feign.name.tender}", fallbackFactory = TenderFeignFallbackFactory.class,url = "http://10.242.31.158:8806/biz-service-ebtp-tender/") public interface TenderFeignService { @ApiOperation("查询评审室下初审投标状态") diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java index 5c8648a..2093056 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/client/factory/ExportServiceFallback.java @@ -5,14 +5,11 @@ import com.chinaunicom.mall.ebtp.common.base.entity.BaseResponse; import com.chinaunicom.mall.ebtp.extend.export.bean.*; import com.chinaunicom.mall.ebtp.extend.feign.client.RsmsFeignService; import com.chinaunicom.mall.ebtp.extend.export.vo.*; -import com.chinaunicom.mall.ebtp.extend.feign.entity.JuryPrintVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ResultDetailVO; -import com.chinaunicom.mall.ebtp.extend.feign.entity.ReviewConfigCategoryDTO; +import com.chinaunicom.mall.ebtp.extend.feign.entity.*; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -23,21 +20,23 @@ public class ExportServiceFallback implements FallbackFactory @Override public RsmsFeignService create(Throwable throwable) { RsmsFeignService back = new RsmsFeignService() { + /** + * 不同供应商的打分 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse> findScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { return null; } - @Override - public BaseResponse> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) { - return null; - } - - @Override - public BaseResponse> findScoreEarlySummary(BidEvalDetailDTO bidEvalDetailDTO) { - return null; - } - + /** + * 价格打分 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse> findPriceScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) { return null; @@ -48,6 +47,12 @@ public class ExportServiceFallback implements FallbackFactory return null; } + /** + * 打分汇总 + * + * @param bidEvalDetailDTO + * @return + */ @Override public BaseResponse>> findCategoryResultSummary(BidEvalDetailDTO bidEvalDetailDTO) { return null; @@ -98,12 +103,50 @@ public class ExportServiceFallback implements FallbackFactory return null; } + /** + * 通过评审室查询detail表数据 + * + * @param assessRoomId + * @return + */ @Override public BaseResponse> get(String assessRoomId) { - log.error("评审室id:{}", assessRoomId); - return BaseResponse.fail(new ArrayList<>()); + return null; } + /** + * 评委供应商11111 + * + * @param bidEvalInfoDTO + * @return + */ + @Override + public BaseResponse> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) { + return null; + } + + /** + * 初审汇总111111 + * + * @param roomId 评审室ID + * @return + * @date 2021年4月27日 + */ + @Override + public BaseResponse> exportEarly(String roomId) { + return null; + } + + /** + * 打分汇总表 + * + * @param roomId 评审室ID + * @date 2021年4月27日 + */ + @Override + public BaseResponse>> exportScoreSummary(String roomId) { + return null; + } }; log.error(ExceptionUtil.stacktraceToString(throwable)); return null; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java similarity index 95% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java index b8d3c2f..24df0f0 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java index b208986..3ac2c20 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java index 2b7f54e..99c05d9 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalDetailVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalDetailVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java index 67f9487..7c0c76d 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/BidEvalEarlyJudgesSummaryVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/BidEvalEarlyJudgesSummaryVO.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java similarity index 92% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java index 2089c61..1e89c75 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigCategory.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategory.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -41,12 +41,15 @@ public class ReviewConfigCategory extends BaseEntity implements Serializable { @JsonSerialize(using = ToStringSerializer.class) private String configId; - @ApiModelProperty(value = "类别名称") + @ApiModelProperty(value = "自定义类别名称") private String name; @ApiModelProperty(value = "类别:0:报价;1:商务;2:技术;5:服务。初审项类别:0:形式评审;1:资格审查项;2:响应性评审;7:符合性审查") private String category; + @ApiModelProperty(value = "类别名称") + private String categoryName; + @JsonInclude(value = JsonInclude.Include.NON_NULL) @ApiModelProperty(value = "权重") private BigDecimal weights; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java index fe05581..060af33 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigCategoryDTO.java @@ -1,6 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.feign.entity; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigCategory; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java similarity index 98% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java index 632c577..cd092a5 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigDetail.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetail.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java index e10a6db..a85d997 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigDetailDTO.java @@ -1,9 +1,5 @@ package com.chinaunicom.mall.ebtp.extend.feign.entity; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigDetail; -import com.chinaunicom.mall.ebtp.extend.export.bean.ReviewConfigStandard; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalDetailVO; -import com.chinaunicom.mall.ebtp.extend.export.vo.BidEvalEarlyJudgesSummaryVO; import com.fasterxml.jackson.annotation.JsonInclude; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -37,6 +33,13 @@ public class ReviewConfigDetailDTO extends ReviewConfigDetail implements Seriali @ApiModelProperty(value = "类别") private String category; + /** + * excel导入时用来分组使用 + */ + @JsonInclude(value = JsonInclude.Include.NON_NULL) + @ApiModelProperty(value = "类别名称") + private String categoryName; + @JsonInclude(value = JsonInclude.Include.NON_EMPTY) @ApiModelProperty(value = "评分标准集合") private List standardList; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java similarity index 96% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java index cd3e1ec..7cbe761 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/bean/ReviewConfigStandard.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/ReviewConfigStandard.java @@ -1,4 +1,4 @@ -package com.chinaunicom.mall.ebtp.extend.export.bean; +package com.chinaunicom.mall.ebtp.extend.feign.entity; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; diff --git a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java similarity index 90% rename from src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java rename to src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java index 0a561b8..de0f31e 100644 --- a/src/main/java/com/chinaunicom/mall/ebtp/extend/export/vo/SupplierRegisterVO.java +++ b/src/main/java/com/chinaunicom/mall/ebtp/extend/feign/entity/SupplierRegisterVO.java @@ -1,5 +1,6 @@ -package com.chinaunicom.mall.ebtp.extend.export.vo; +package com.chinaunicom.mall.ebtp.extend.feign.entity; +import com.chinaunicom.mall.ebtp.extend.export.vo.MemberVO; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; diff --git a/src/main/resources/model/初步评审.docx b/src/main/resources/model/初步评审.docx deleted file mode 100644 index a9dc4466344a4de78cd56539877e08eaa7549f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23687 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 PsLwL0x$61JjaUB$X72oK