重构 报表打印

This commit is contained in:
付庆吉
2021-04-28 09:50:54 +08:00
parent 90a2d2e351
commit ddd2f1fa80
23 changed files with 522 additions and 642 deletions

View File

@ -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<String> scores = new ArrayList<>();
}

View File

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

View File

@ -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<BizSupplierRegister> tenderGetSupplierRegisterByRoomId(String roomId);
// ------------------------------------------------ rsms --------------------------------
/**
* 查询初审汇总数据
*
@ -54,7 +56,21 @@ public interface ExportCommonFeignService {
* @return
*/
List<ReviewConfigCategoryDTO> rsmsFindScoreEarlySummary(ExportParam param);
/**
* 评委供应商
*
* @param param
* @return
*/
List<SupplierRegisterVO> findRegisterAndUser(ExportParam param);
/**
* 打分汇总表
*
* @param param
* @return
*/
Map<String, List<BidEvalDetailSummaryVO>> exportScoreSummary(ExportParam param);
// ------------------------------------------------ rsms end --------------------------------
/**
* 通过评审室Id查询评委会成员数据及签到数据

View File

@ -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<ReviewConfigCategoryDTO> rsmsFindScoreEarlySummary(ExportParam param) {
BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO();
bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId());
bidEvalDetailDTO.setReviewType(param.getReviewType());
BaseResponse<List<ReviewConfigCategoryDTO>> response = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO);
BaseResponse<List<ReviewConfigCategoryDTO>> response = rsmsFeignService.exportEarly(param.getAssessRoomId());
if (response == null || response.getData() == null) {
return new ArrayList<>();
}
return response.getData();
}
/**
* 评委供应商
*
* @param param
* @return
*/
@Override
public List<SupplierRegisterVO> findRegisterAndUser(ExportParam param) {
BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO();
bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId());
bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId());
bidEvalInfoDTO.setReviewType(param.getReviewType());
//所有评委数据源
BaseResponse<List<SupplierRegisterVO>> response = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO);
if (response == null || response.getData() == null) {
return new ArrayList<>();
}
return response.getData();
}
/**
* 打分汇总表
*
* @param param
* @return
*/
@Override
public Map<String, List<BidEvalDetailSummaryVO>> exportScoreSummary(ExportParam param) {
BaseResponse<Map<String, List<BidEvalDetailSummaryVO>>> response = rsmsFeignService.exportScoreSummary(param.getAssessRoomId());
if (response == null || response.getData() == null) {
return new HashMap<>();
}
return response.getData();
}
// ------------------------------------------------ rsms end --------------------------------
/**
* 通过评审室Id查询评委会成员数据及签到数据
*

View File

@ -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<ProjectSectionVO> list = projectFeignService.selectById(projectSectionVO);
//查询
ProjectSectionVO section = commonFeignService.projectGetSectionById(param.getSectionId());
//查询项目
ProjectRecordVO proj = commonFeignService.projectGetProjById(section.getProjectId());
//供应商信息
List<BizSupplierRegister> suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId());
//初审评分信息
List<ReviewConfigCategoryDTO> earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param);
BidEvalInfoDTO bidEvalInfoDTO = new BidEvalInfoDTO();
bidEvalInfoDTO.setAssessRoomId(param.getAssessRoomId());
bidEvalInfoDTO.setReviewTurnId(param.getReviewTurnId());
bidEvalInfoDTO.setReviewType(param.getReviewType());
//供应商
List<SupplierRegisterVO> listBaseResponse = rsmsFeignService.findRegisterAndUser(bidEvalInfoDTO).getData();
ExcelTable table = new ExcelTable("初步评审表");
table.setFileName("初步评审表");
//列头
StringBuffer titles0 = new StringBuffer("序号,评审因素,评审标准");
//供应商 顺序
ArrayList<String> strings = new ArrayList<>();
for (int i = 0; i < listBaseResponse.size(); i++) {
strings.add(listBaseResponse.get(i).getSupplierRegisterId());
titles0.append("," + listBaseResponse.get(i).getSupplierRegisterName());
List<ExcelTd> 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<CbpsExportData> datas = new ArrayList<>();
//所有评审项
List<ReviewConfigDetailDTO> detailList = new ArrayList<>();
earlySummary.stream().map(ReviewConfigCategoryDTO::getDetailList).forEach(detailList::addAll);
BidEvalDetailDTO bidEvalDetailDTO = new BidEvalDetailDTO();
bidEvalDetailDTO.setReviewTurnId(param.getReviewTurnId());
bidEvalDetailDTO.setReviewType(param.getReviewType());
BaseResponse<List<ReviewConfigCategoryDTO>> scoreRecord = rsmsFeignService.findScoreEarlySummary(bidEvalDetailDTO);
List<ReviewConfigCategoryDTO> 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<ReviewConfigDetailDTO> 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<String, BidEvalEarlyJudgesSummaryVO> 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 = "合格";
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<String, BidEvalEarlyJudgesSummaryVO> 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 {
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);
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 + ")";
//汇总数据
for (BizSupplierRegister supplier : suppliers) {
if (earlyMap.containsKey(supplier.getId())) {
BidEvalEarlyJudgesSummaryVO summaryVO = earlyMap.get(supplier.getId());
data.setIndex("结论")
.setScoreItem("是否通过初步评审")
.setRvwStandard("")
.getScores().add(summaryVO.getJudgesResult()? "合格":"不合格");
} 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);
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));
}
}

View File

@ -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,28 +56,24 @@ 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<List<SupplierRegisterVO>> 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<BizSupplierRegister> suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId());
//评委
List<SupplierRegisterVO> registerVOList = commonFeignService.findRegisterAndUser(param);
//所有类型打分数据源
BaseResponse<Map<String, List<BidEvalDetailSummaryVO>>> list = rsmsFeignService.findCategoryResultSummary(bidEvalDetailDTO);
if (list != null && judges != null) {
//所有供应商
List<SupplierRegisterVO> registerVOList = judges.getData();
//打分数据
Map<String, List<BidEvalDetailSummaryVO>> detailList = list.getData();
Map<String, List<BidEvalDetailSummaryVO>> detailList = commonFeignService.exportScoreSummary(param);
//所有评委
List<MemberVO> memberAll = registerVOList.stream().findFirst().get().getMembers();
// 创建工作簿
SXSSFWorkbook wb = new SXSSFWorkbook();
//表格样式
@ -97,10 +95,7 @@ public class DfhzExportServiceImpl implements ExportService {
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);
@ -112,7 +107,7 @@ public class DfhzExportServiceImpl implements ExportService {
SXSSFCell projectNumCell0 = projectNumRow.createCell(0);
projectNumCell0.setCellValue("项目编号:");
SXSSFCell projectNumCell1 = projectNumRow.createCell(1);
projectNumCell1.setCellValue(proj.getBidSectBizNum());
projectNumCell1.setCellValue(proj.getProjectBizNum());
//列头
List<String> titles0 = new ArrayList<>();
titles0.add("投标人名称");
@ -281,7 +276,6 @@ public class DfhzExportServiceImpl implements ExportService {
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) {
return sheet.createRow(rowIndex);

View File

@ -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<BizSupplierRegister> suppliers = commonFeignService.tenderGetSupplierRegisterByRoomId(param.getAssessRoomId());
//初审评分信息
List<ReviewConfigCategoryDTO> earlySummary = commonFeignService.rsmsFindScoreEarlySummary(param);
RvwFirstExportData data = new RvwFirstExportData();
data.setProjName(proj.getProjectName())
.setProjNum(proj.getProjectBizNum());
ExportTableData tableData = new ExportTableData();
//供应商
List<CellRenderData> cells = new ArrayList<>();
for (BizSupplierRegister supplier : suppliers) {
cells.add(Cells.of(supplier.getCompanyName()).center().create());
}
//评分项
List<RowRenderData> 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);
}
}

View File

@ -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;
// 创建工作簿

View File

@ -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 {
/**

View File

@ -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<List<ReviewConfigCategoryDTO>> findScoreRecord(@RequestBody BidEvalDetailDTO bidEvalDetailDTO);
/**
* 评委供应商
*
* @param bidEvalInfoDTO
* @return
*/
// @PostMapping("/v1/bid/archive/findRegister")
@GetMapping("/v1/bid/eval/detail/findRegister")
BaseResponse<List<SupplierRegisterVO>> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO);
/**
* 初审汇总
*
* @param bidEvalDetailDTO
* @return
*/
@PostMapping("/v1/bid/eval/summary/findScoreEarlySummary")
BaseResponse<List<ReviewConfigCategoryDTO>> findScoreEarlySummary(@RequestBody BidEvalDetailDTO bidEvalDetailDTO);
/**
* 价格打分
*
@ -92,6 +77,7 @@ public interface RsmsFeignService {
/**
* 详细评审表|专家打分表|价格打分表|打分汇总表
*
* @param sectionId 标段ID
* @param isReviewMethod 是否为资审方式 0 否 1 是
* @param list 节点集合
@ -104,6 +90,7 @@ public interface RsmsFeignService {
BaseResponse<Map<String, List<ArchiveFileReturnVO>>> findDetailArchiveList(@RequestParam("sectionId") String sectionId,
@RequestParam("isReviewMethod") String isReviewMethod,
@RequestBody List<ArchiveLink> list);
/**
* 评审报告
*
@ -124,12 +111,46 @@ public interface RsmsFeignService {
* 通过评审室查询detail表数据
*
* @param assessRoomId
*
* @return
*/
@ApiOperation("通过评审室查询detail表数据")
@GetMapping("/v1/reviewresult/queryDetailByRoomId/{assessRoomId}")
BaseResponse<List<ResultDetailVO>> 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<List<SupplierRegisterVO>> findRegisterAndUser(@SpringQueryMap BidEvalInfoDTO bidEvalInfoDTO);
/**
* 初审汇总111111
*
* @param roomId 评审室ID
* @return
* @date 2021年4月27日
*/
@GetMapping("/v1/bid/report/exportEarly/{roomId}")
BaseResponse<List<ReviewConfigCategoryDTO>> exportEarly(@ApiParam(value = "评审室ID", required = true) @PathVariable("roomId") String roomId);
/**
* 打分汇总表
* @param roomId 评审室ID
* @date 2021年4月27日
*/
@GetMapping("/exportScoreSummary/{roomId}")
BaseResponse<Map<String, List<BidEvalDetailSummaryVO>>> exportScoreSummary(@PathVariable("roomId") String roomId);
}

View File

@ -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("查询评审室下初审投标状态")

View File

@ -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<RsmsFeignService>
@Override
public RsmsFeignService create(Throwable throwable) {
RsmsFeignService back = new RsmsFeignService() {
/**
* 不同供应商的打分
*
* @param bidEvalDetailDTO
* @return
*/
@Override
public BaseResponse<List<ReviewConfigCategoryDTO>> findScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) {
return null;
}
@Override
public BaseResponse<List<SupplierRegisterVO>> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) {
return null;
}
@Override
public BaseResponse<List<ReviewConfigCategoryDTO>> findScoreEarlySummary(BidEvalDetailDTO bidEvalDetailDTO) {
return null;
}
/**
* 价格打分
*
* @param bidEvalDetailDTO
* @return
*/
@Override
public BaseResponse<List<SupplierRegisterPriceScoreVO>> findPriceScoreRecord(BidEvalDetailDTO bidEvalDetailDTO) {
return null;
@ -48,6 +47,12 @@ public class ExportServiceFallback implements FallbackFactory<RsmsFeignService>
return null;
}
/**
* 打分汇总
*
* @param bidEvalDetailDTO
* @return
*/
@Override
public BaseResponse<Map<String, List<BidEvalDetailSummaryVO>>> findCategoryResultSummary(BidEvalDetailDTO bidEvalDetailDTO) {
return null;
@ -98,12 +103,50 @@ public class ExportServiceFallback implements FallbackFactory<RsmsFeignService>
return null;
}
/**
* 通过评审室查询detail表数据
*
* @param assessRoomId
* @return
*/
@Override
public BaseResponse<List<ResultDetailVO>> get(String assessRoomId) {
log.error("评审室id{}", assessRoomId);
return BaseResponse.fail(new ArrayList<>());
return null;
}
/**
* 评委供应商11111
*
* @param bidEvalInfoDTO
* @return
*/
@Override
public BaseResponse<List<SupplierRegisterVO>> findRegisterAndUser(BidEvalInfoDTO bidEvalInfoDTO) {
return null;
}
/**
* 初审汇总111111
*
* @param roomId 评审室ID
* @return
* @date 2021年4月27日
*/
@Override
public BaseResponse<List<ReviewConfigCategoryDTO>> exportEarly(String roomId) {
return null;
}
/**
* 打分汇总表
*
* @param roomId 评审室ID
* @date 2021年4月27日
*/
@Override
public BaseResponse<Map<String, List<BidEvalDetailSummaryVO>>> exportScoreSummary(String roomId) {
return null;
}
};
log.error(ExceptionUtil.stacktraceToString(throwable));
return null;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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<ReviewConfigStandard> standardList;

View File

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

View File

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