word模板
生成结果
生成word表格代码
/**
* 导出专家评分总结果表
*
* @param expertEvaSummaryFile 生成文件
* @param subpackageInfo 分包信息
* @param tenderBidEvaHeadVO 评审头信息
*/
private void expertEvaSummary(File expertEvaSummaryFile, TenderProjectItemSubpackage subpackageInfo, TenderBidEvaHeadVO tenderBidEvaHeadVO) {
InputStream inputStream = null;
OutputStream outputStream = null;
try {
ConfigureBuilder builder = Configure.builder();
builder.useSpringEL(false);
//封装数据
Map<String, Object> map = new HashMap<>();
//渲染文本
map.put("tenderProject", subpackageInfo.getTenderProject());//项目名称
map.put("openBiddingTime", DateUtil.formatDateTime(subpackageInfo.getOpenBiddingTime()));//评标时间
//评标信息ID
String evaInfoId = tenderBidEvaHeadVO.getEvaInfoId();
//查询所有环节信息
List<TenderAttachEvaMethod> evaGroupList = tenderAttachEvaMethodService.lambdaQuery()
.eq(TenderAttachEvaMethod::getSubpackageId, subpackageInfo.getObjectID()).orderByAsc(TenderAttachEvaMethod::getOrderBy).list();
Map<String, List<TenderAttachEvaMethod>> evaGroupMap = evaGroupList.stream().collect(Collectors.groupingBy(TenderAttachEvaMethod::getGroupTypeId));
evaGroupMap.forEach((key, value) -> {
if (TenderEvaGroupTypeEnum.REVIEW.getValue().equals(key)) {
//评审项
List<Map<String, Object>> reviewDynamic = new ArrayList<>();
for (TenderAttachEvaMethod evaMethod : value) {
Map<String, Object> reviewDynamicMap = getReviewSummaryDynamicMap(evaMethod, evaInfoId);
reviewDynamic.add(reviewDynamicMap);
}
map.put("reviewTable", reviewDynamic);
} else if (TenderEvaGroupTypeEnum.SCORE.getValue().equals(key)) {
//评分项
List<Map<String, Object>> scoreDynamic = new ArrayList<>();
for (TenderAttachEvaMethod evaMethod : value) {
//查询评审任务数据
Map<String, Object> scoreDynamicMap = getScoreSummaryDynamicMap(evaMethod, evaInfoId);
scoreDynamic.add(scoreDynamicMap);
}
map.put("scoreTable", scoreDynamic);
} else if (TenderEvaGroupTypeEnum.REVIEW_SCORE.getValue().equals(key)) {
//评审评分项
List<Map<String, Object>> reviewScoreDynamic = new ArrayList<>();
for (TenderAttachEvaMethod evaMethod : value) {
//查询评审任务数据
Map<String, Object> reviewScoreDynamicMap = getReviewScoreSummaryDynamicMap(evaMethod, evaInfoId);
reviewScoreDynamic.add(reviewScoreDynamicMap);
}
map.put("reviewScoreTable", reviewScoreDynamic);
} else if (TenderEvaGroupTypeEnum.PRICE_REVIEW.getValue().equals(key)) {
//价格评分项
List<Map<String, Object>> priceReviewDynamic = new ArrayList<>();
for (TenderAttachEvaMethod evaMethod : value) {
//查询评审任务数据
Map<String, Object> priceReviewDynamicMap = getPriceReviewSummaryDynamicMap(evaMethod, evaInfoId);
priceReviewDynamic.add(priceReviewDynamicMap);
}
map.put("priceReviewTable", priceReviewDynamic);
} else if (TenderEvaGroupTypeEnum.PRICE_COMPARISON.getValue().equals(key)) {
//价格比较项
//价格比较项
List<Map<String, Object>> priceComparisonDynamic = new ArrayList<>();
for (TenderAttachEvaMethod evaMethod : value) {
//查询评审任务数据
Map<String, Object> priceComparisonDynamicMap = getPriceComparisonSummaryDynamicMap(evaMethod, evaInfoId);
priceComparisonDynamic.add(priceComparisonDynamicMap);
}
map.put("priceComparisonTable", priceComparisonDynamic);
}
});
inputStream = resourceLoader.getResource("classpath:static/template/评标结果-附件2_专家打分汇总.docx").getInputStream();
XWPFTemplate template = XWPFTemplate.compile(Objects.requireNonNull(inputStream), builder.build()).render(map);
outputStream = new FileOutputStream(expertEvaSummaryFile);
template.write(outputStream);
} catch (Exception e) {
log.error("POI文件生成异常:{}", e);
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.error("IO异常:{}", e);
}
}
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
log.error("IO异常:{}", e);
}
}
}
}
生成评审类表格
private Map<String, Object> getReviewSummaryDynamicMap(TenderAttachEvaMethod evaMethod, String evaInfoId) {
Map<String, Object> reviewDynamicMap = new HashMap<>();
reviewDynamicMap.put("groupName", evaMethod.getGroupName());
reviewDynamicMap.put("groupDesc", "有" + evaMethod.getVetoCondition().intValue() + "个不符合时否决投标。");
//查询环节汇总结果
SummaryEvaGroupResultVO summaryEvaGroupResultVO = tenderBidEvaHeadService.querySummaryEvaGroupResultByGroupId(evaMethod.getObjectID(), evaInfoId);
TenderAttachEvaMethodVO evaluationGroup = summaryEvaGroupResultVO.getEvaluationGroup();
List<TenderBidEvaSupplierVO> supplierList = summaryEvaGroupResultVO.getSupplierList();
List<Map<String, Object>> resultList = summaryEvaGroupResultVO.getResultList();
Map<Object, Map<String, Object>> resultListMap = resultList.stream().collect(Collectors.toMap(item -> item.get("id"), map -> map, (o1, o2) -> o1));
List<TenderEvaJudgesVO> evaJudgesVOList = null;
List<String> headerColList = new ArrayList<>();
int headerColSize = 0;
List<RowRenderData> rowList = new ArrayList<>();
MergeCellRule.MergeCellRuleBuilder builder = MergeCellRule.builder();
int groupStartRow = 1;
int groupEndRow = 1;
//列,开始行,结束行,此处合并第一行,和最后一行
for (TenderBidEvaSupplierVO tenderBidEvaSupplierVO : supplierList) {
List<TenderAttachEvaMethodReg> tenderAttachEvaMethodRegList = evaluationGroup.getTenderAttachEvaMethodRegList();
//查询供应商各评委的打分情况
EvaGroupRegulationResultVO evaGroupRegulationResultVO = tenderBidEvaHeadService
.querySupplierByEvaGroupId(evaMethod.getObjectID(), evaInfoId, tenderBidEvaSupplierVO.getSupplierAccount());
if (evaJudgesVOList == null) {
evaJudg