|
@@ -2606,281 +2606,333 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
@Override
|
|
@Override
|
|
@SneakyThrows
|
|
@SneakyThrows
|
|
public void exportProjectReport(SimulationManualProjectParam param) {
|
|
public void exportProjectReport(SimulationManualProjectParam param) {
|
|
-
|
|
|
|
- OutputStream os;
|
|
|
|
- HttpServletResponse response = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getResponse();
|
|
|
|
- //获取要生成的数据
|
|
|
|
- ResponseBodyVO<ProjectReportVo> bodyVO = selectProjectReportById(param);
|
|
|
|
- ProjectReportVo vo = bodyVO.getInfo();
|
|
|
|
- //下载 or 保存本地
|
|
|
|
- if (param.getIsCreateLocalPdfFile() != null && param.getIsCreateLocalPdfFile()) {
|
|
|
|
- File file = new File(param.getLocalPdfFilePath());
|
|
|
|
- os = new BufferedOutputStream(Files.newOutputStream(file.toPath()));
|
|
|
|
- } else {
|
|
|
|
- String fileName = vo.getProjectId() + "_" + vo.getProjectName();
|
|
|
|
- response.setContentType("application/x-download");
|
|
|
|
- response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".pdf");
|
|
|
|
- os = new BufferedOutputStream(response.getOutputStream());
|
|
|
|
- }
|
|
|
|
- // 监听生成pdf数据
|
|
|
|
Document document = new Document(PageSize.A4);
|
|
Document document = new Document(PageSize.A4);
|
|
- document.open();
|
|
|
|
- PdfWriter.getInstance(document, os);
|
|
|
|
- BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
|
|
|
- //* -------------------------------- 第一页 --------------------------------
|
|
|
|
- Paragraph paragraph1 = new Paragraph("评价报告", new Font(baseFont, 20));
|
|
|
|
- paragraph1.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
- document.add(paragraph1);
|
|
|
|
-
|
|
|
|
-// // 新的一页,横向显示
|
|
|
|
-// document.setPageSize(PageSize.A4.rotate());
|
|
|
|
-// document.newPage();
|
|
|
|
-
|
|
|
|
- //算法名称、算法得分、测试等级
|
|
|
|
- Paragraph algorithmNanmeElements = new Paragraph(
|
|
|
|
- 50,
|
|
|
|
- " 算法名称:" + vo.getAlgorithmName()
|
|
|
|
- + " 算法得分:" + vo.getAlgorithmScore()
|
|
|
|
- + " 测试等级:" + vo.getEvaluationLevel(),
|
|
|
|
- defaultFont(baseFont));
|
|
|
|
- algorithmNanmeElements.setAlignment(Element.ALIGN_LEFT); //靠左
|
|
|
|
- document.add(algorithmNanmeElements);
|
|
|
|
- //算法描述
|
|
|
|
- Paragraph algorithmDescribeFontElements = new Paragraph(
|
|
|
|
- 30,
|
|
|
|
- " 算法描述:" + vo.getAlgorithmDescribe(),
|
|
|
|
- defaultFont(baseFont));
|
|
|
|
- algorithmDescribeFontElements.setAlignment(Element.ALIGN_LEFT); //居中
|
|
|
|
- document.add(algorithmDescribeFontElements);
|
|
|
|
- //算法简评
|
|
|
|
- Font algorithmEvaluateFont = new Font(baseFont, 14); //字体
|
|
|
|
- Paragraph algorithmEvaluateElements = new Paragraph(
|
|
|
|
- 30,
|
|
|
|
- " 算法简评:" + vo.getAlgorithmEvaluation(),
|
|
|
|
- algorithmEvaluateFont);
|
|
|
|
- algorithmEvaluateElements.setAlignment(Element.ALIGN_LEFT); //居中
|
|
|
|
- document.add(algorithmEvaluateElements);
|
|
|
|
|
|
+ OutputStream os = null;
|
|
|
|
+ try {
|
|
|
|
+ HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
|
|
|
|
+
|
|
|
|
+ //获取要生成的数据
|
|
|
|
+ ResponseBodyVO bodyVO = selectProjectReportById(param);
|
|
|
|
+ ProjectReportVo vo = (ProjectReportVo) bodyVO.getInfo();
|
|
|
|
+
|
|
|
|
+ //下载 or 保存本地
|
|
|
|
+ if (param.getIsCreateLocalPdfFile() != null && param.getIsCreateLocalPdfFile()) {
|
|
|
|
+ File file = new File(param.getLocalPdfFilePath());
|
|
|
|
+ os = new BufferedOutputStream(Files.newOutputStream(file.toPath()));
|
|
|
|
+ } else {
|
|
|
|
+ String fileName = vo.getProjectId() + "_" + vo.getProjectName();
|
|
|
|
+ response.setContentType("application/x-download");
|
|
|
|
+ response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".pdf");
|
|
|
|
+ os = new BufferedOutputStream(response.getOutputStream());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 监听生成pdf数据
|
|
|
|
+ PdfWriter.getInstance(document, os);
|
|
|
|
+
|
|
|
|
+ // 以下生成PDF
|
|
|
|
+ BaseFont font = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
|
|
|
|
+
|
|
|
|
+ //标题
|
|
|
|
+ document.open();
|
|
|
|
+ Font titleFont = new Font(font, 20); //字体
|
|
|
|
+ Paragraph titleElements = new Paragraph("评价报告", titleFont);
|
|
|
|
+ titleElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
+ document.add(titleElements);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //算法名称、算法得分、测试等级
|
|
|
|
+ Paragraph algorithmNanmeElements = new Paragraph(
|
|
|
|
+ 50,
|
|
|
|
+ " 算法名称:" + vo.getAlgorithmName()
|
|
|
|
+ + " 算法得分:" + vo.getAlgorithmScore()
|
|
|
|
+ + " 测试等级:" + vo.getEvaluationLevel(),
|
|
|
|
+ defaultFont(font));
|
|
|
|
+ algorithmNanmeElements.setAlignment(Element.ALIGN_LEFT); //靠左
|
|
|
|
+ document.add(algorithmNanmeElements);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //算法描述
|
|
|
|
+ Paragraph algorithmDescribeFontElements = new Paragraph(
|
|
|
|
+ 30,
|
|
|
|
+ " 算法描述:" + vo.getAlgorithmDescribe(),
|
|
|
|
+ defaultFont(font));
|
|
|
|
+ algorithmDescribeFontElements.setAlignment(Element.ALIGN_LEFT); //居中
|
|
|
|
+ document.add(algorithmDescribeFontElements);
|
|
|
|
+
|
|
|
|
+ //算法简评
|
|
|
|
+ Font algorithmEvaluateFont = new Font(font, 14); //字体
|
|
|
|
+ Paragraph algorithmEvaluateElements = new Paragraph(
|
|
|
|
+ 30,
|
|
|
|
+ " 算法简评:" + vo.getAlgorithmEvaluation(),
|
|
|
|
+ algorithmEvaluateFont);
|
|
|
|
+ algorithmEvaluateElements.setAlignment(Element.ALIGN_LEFT); //居中
|
|
|
|
+ document.add(algorithmEvaluateElements);
|
|
|
|
+
|
|
/*
|
|
/*
|
|
测试得分表
|
|
测试得分表
|
|
*/
|
|
*/
|
|
- Paragraph scoreTableElements = new Paragraph(
|
|
|
|
- 50,
|
|
|
|
- "测试得分表",
|
|
|
|
- defaultFont(baseFont));
|
|
|
|
- scoreTableElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
- document.add(scoreTableElements);
|
|
|
|
- setBlankLineSpacing(20, baseFont, document);
|
|
|
|
- // 表头
|
|
|
|
- PdfPTable pdfPTable = new PdfPTable(5);
|
|
|
|
- pdfPTable.setHeaderRows(1);//换页每页显示表头
|
|
|
|
- addTitleList(pdfPTable, baseFont, new String[]{"测试项目", "场景数量", "测试权重(%)", "测试得分", "得分率(%)"});
|
|
|
|
-
|
|
|
|
- // 数据
|
|
|
|
- List<AlgorithmScoreVo> algorithmScoreList = vo.getAlgorithmScoreList();
|
|
|
|
- for (AlgorithmScoreVo asv : algorithmScoreList) {
|
|
|
|
- String[] data = new String[]{
|
|
|
|
- asv.getProjectName(), String.valueOf(asv.getSceneNum()), asv.getWeight(), String.valueOf(asv.getScore()), String.valueOf(asv.getScoreRatio())
|
|
|
|
- };
|
|
|
|
- addDataList(pdfPTable, baseFont, data);
|
|
|
|
- }
|
|
|
|
- document.add(pdfPTable);
|
|
|
|
-
|
|
|
|
- // 新的一页,横向显示
|
|
|
|
- document.setPageSize(PageSize.A4.rotate());
|
|
|
|
- document.newPage();
|
|
|
|
-
|
|
|
|
- // 算法测试评分细则(指标得分列表)
|
|
|
|
- Paragraph subListScoreElements = new Paragraph(
|
|
|
|
- 50,
|
|
|
|
- "算法测试评分细则",
|
|
|
|
- defaultFont(baseFont));
|
|
|
|
- subListScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
- document.add(subListScoreElements);
|
|
|
|
- setBlankLineSpacing(20, baseFont, document);
|
|
|
|
- List<Map> subListScoreLiTitle = vo.getSubListScoreLiTitle();
|
|
|
|
- int size = subListScoreLiTitle.size();
|
|
|
|
- PdfPTable pdfPTable2 = new PdfPTable(size);
|
|
|
|
- pdfPTable2.setHeaderRows(1);
|
|
|
|
- String[] slt = new String[size];
|
|
|
|
- for (int i = 0; i < size; i++) {
|
|
|
|
- slt[i] = subListScoreLiTitle.get(i).get("label").toString();
|
|
|
|
- }
|
|
|
|
- addTitleList(pdfPTable2, baseFont, slt);
|
|
|
|
- List<SubScListVo> subListScoreLi = vo.getSubListScoreLi();
|
|
|
|
- List<String[]> list = new ArrayList<>();
|
|
|
|
- int fieldNumber = 7;
|
|
|
|
- for (SubScListVo slv : subListScoreLi) {
|
|
|
|
- String[] slsi = new String[size];
|
|
|
|
|
|
+ Paragraph scoreTableElements = new Paragraph(
|
|
|
|
+ 50,
|
|
|
|
+ "测试得分表",
|
|
|
|
+ defaultFont(font));
|
|
|
|
+ scoreTableElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
+ document.add(scoreTableElements);
|
|
|
|
+
|
|
|
|
+ setBlankLineSpacing(20, font, document);
|
|
|
|
+
|
|
|
|
+ // 表头
|
|
|
|
+ PdfPTable pdfPTable = new PdfPTable(5);
|
|
|
|
+ pdfPTable.setHeaderRows(1);//换页每页显示表头
|
|
|
|
+ addTitleList(pdfPTable, font, new String[]{"测试项目", "场景数量", "测试权重(%)", "测试得分", "得分率(%)"});
|
|
|
|
+
|
|
|
|
+ // 数据
|
|
|
|
+ List<AlgorithmScoreVo> algorithmScoreList = vo.getAlgorithmScoreList();
|
|
|
|
+ for (AlgorithmScoreVo asv : algorithmScoreList) {
|
|
|
|
+ String[] data = new String[]{
|
|
|
|
+ asv.getProjectName(), String.valueOf(asv.getSceneNum()), asv.getWeight(), String.valueOf(asv.getScore()), String.valueOf(asv.getScoreRatio())
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ addDataList(pdfPTable, font, data);
|
|
|
|
+ }
|
|
|
|
+ document.add(pdfPTable);
|
|
|
|
+
|
|
|
|
+ // 评价等级(已去掉)
|
|
|
|
+// Paragraph levelTableElements = new Paragraph(
|
|
|
|
+// 50,
|
|
|
|
+// "评价等级",
|
|
|
|
+// defaultFont(font));
|
|
|
|
+// levelTableElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
+// document.add(levelTableElements);
|
|
|
|
+//
|
|
|
|
+// setBlankLineSpacing(20, font, document);
|
|
|
|
+//
|
|
|
|
+// PdfPTable pdfPTable1 = new PdfPTable(5);
|
|
|
|
+// addTitleList(pdfPTable1, font, new String[]{"测试项目", "90<总分<100", "80<总分<90", "70<总分<80", "0<总分<70"});
|
|
|
|
+// addDataList(pdfPTable1, font, new String[]{"评价等级", "优秀(G)", "良好(A)", "一般(M)", "较差(P)",
|
|
|
|
+// "评价等级", "++++++", "+++++", "++++", "+++",});
|
|
|
|
+// document.add(pdfPTable1);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ // 新的一页,横向显示
|
|
|
|
+ document.setPageSize(PageSize.A4.rotate());
|
|
|
|
+ document.newPage();
|
|
|
|
+
|
|
|
|
+ // 算法测试评分细则(指标得分列表)
|
|
|
|
+ Paragraph subListScoreElements = new Paragraph(
|
|
|
|
+ 50,
|
|
|
|
+ "算法测试评分细则",
|
|
|
|
+ defaultFont(font));
|
|
|
|
+ subListScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
+ document.add(subListScoreElements);
|
|
|
|
+ setBlankLineSpacing(20, font, document);
|
|
|
|
+ List<Map> subListScoreLiTitle = vo.getSubListScoreLiTitle();
|
|
|
|
+ int size = subListScoreLiTitle.size();
|
|
|
|
+ PdfPTable pdfPTable2 = new PdfPTable(size);
|
|
|
|
+ pdfPTable2.setHeaderRows(1);
|
|
|
|
+ String[] slt = new String[size];
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
- slsi[i] = "";
|
|
|
|
|
|
+ slt[i] = subListScoreLiTitle.get(i).get("label").toString();
|
|
}
|
|
}
|
|
- //目前最多支持到6级指标
|
|
|
|
- for (int i = 0; i < size - fieldNumber; i++) {
|
|
|
|
- if (i == 0) {
|
|
|
|
- if (slv.getSublistName1() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName1();
|
|
|
|
- }
|
|
|
|
- } else if (i == 1) {
|
|
|
|
- if (slv.getSublistName2() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName2();
|
|
|
|
- }
|
|
|
|
- } else if (i == 2) {
|
|
|
|
- if (slv.getSublistName3() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName3();
|
|
|
|
- }
|
|
|
|
- } else if (i == 3) {
|
|
|
|
- if (slv.getSublistName4() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName4();
|
|
|
|
- }
|
|
|
|
- } else if (i == 4) {
|
|
|
|
- if (slv.getSublistName5() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName5();
|
|
|
|
- }
|
|
|
|
- } else if (i == 5) {
|
|
|
|
- if (slv.getSublistName6() != null) {
|
|
|
|
- slsi[i] = slv.getSublistName6();
|
|
|
|
|
|
+ addTitleList(pdfPTable2, font, slt);
|
|
|
|
+ List<SubScListVo> subListScoreLi = vo.getSubListScoreLi();
|
|
|
|
+ List<String[]> list = new ArrayList<>();
|
|
|
|
+ int fieldNumber = 7;
|
|
|
|
+ for (SubScListVo slv : subListScoreLi) {
|
|
|
|
+ String[] slsi = new String[size];
|
|
|
|
+ for (int i = 0; i < size; i++) {
|
|
|
|
+ slsi[i] = "";
|
|
|
|
+ }
|
|
|
|
+ //目前最多支持到6级指标
|
|
|
|
+ for (int i = 0; i < size - fieldNumber; i++) {
|
|
|
|
+ if (i == 0) {
|
|
|
|
+ if (slv.getSublistName1() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName1();
|
|
|
|
+ }
|
|
|
|
+ } else if (i == 1) {
|
|
|
|
+ if (slv.getSublistName2() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName2();
|
|
|
|
+ }
|
|
|
|
+ } else if (i == 2) {
|
|
|
|
+ if (slv.getSublistName3() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName3();
|
|
|
|
+ }
|
|
|
|
+ } else if (i == 3) {
|
|
|
|
+ if (slv.getSublistName4() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName4();
|
|
|
|
+ }
|
|
|
|
+ } else if (i == 4) {
|
|
|
|
+ if (slv.getSublistName5() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName5();
|
|
|
|
+ }
|
|
|
|
+ } else if (i == 5) {
|
|
|
|
+ if (slv.getSublistName6() != null) {
|
|
|
|
+ slsi[i] = slv.getSublistName6();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ slsi[size - 7] = slv.getSceneNum();
|
|
|
|
+ slsi[size - 6] = slv.getErrorSceneNum();
|
|
|
|
+ slsi[size - 5] = slv.getNotScoredSceneNum();
|
|
|
|
+ slsi[size - 4] = slv.getNotStandardSceneNum();
|
|
|
|
+ slsi[size - 3] = slv.getStandardSceneNum();
|
|
|
|
+ slsi[size - 2] = slv.getLastScore();
|
|
|
|
+ slsi[size - 1] = slv.getFirstScore();
|
|
|
|
+
|
|
|
|
+ list.add(slsi);
|
|
|
|
+
|
|
|
|
+// addDataList(pdfPTable2, font, slsi);
|
|
}
|
|
}
|
|
- slsi[size - 7] = slv.getSceneNum();
|
|
|
|
- slsi[size - 6] = slv.getErrorSceneNum();
|
|
|
|
- slsi[size - 5] = slv.getNotScoredSceneNum();
|
|
|
|
- slsi[size - 4] = slv.getNotStandardSceneNum();
|
|
|
|
- slsi[size - 3] = slv.getStandardSceneNum();
|
|
|
|
- slsi[size - 2] = slv.getLastScore();
|
|
|
|
- slsi[size - 1] = slv.getFirstScore();
|
|
|
|
|
|
|
|
- list.add(slsi);
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
+ Map map = getSubScListCombineCoord(subListScoreLi, size);
|
|
|
|
|
|
- Map map = getSubScListCombineCoord(subListScoreLi, size);
|
|
|
|
|
|
+ Map<String, Integer> combineCoordList = (Map<String, Integer>) map.get("combineCoordList");
|
|
|
|
+ List<String> skipCoordList = (List<String>) map.get("skipCoordList");
|
|
|
|
|
|
- Map<String, Integer> combineCoordList = (Map<String, Integer>) map.get("combineCoordList");
|
|
|
|
- List<String> skipCoordList = (List<String>) map.get("skipCoordList");
|
|
|
|
|
|
+ for (int i = 0; i < list.size(); i++) {
|
|
|
|
+ String[] strings = list.get(i);
|
|
|
|
+ for (int j = 0; j < strings.length; j++) {
|
|
|
|
+ String coord = i + "," + j;
|
|
|
|
+
|
|
|
|
+ //是否要跳过
|
|
|
|
+ boolean contains = skipCoordList.contains(coord);
|
|
|
|
+ if (contains) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ PdfPCell pdfPCell = new PdfPCell(new Paragraph(strings[j], defaultFont(font)));
|
|
|
|
+
|
|
|
|
+ //是否要合并
|
|
|
|
+ Integer n = combineCoordList.get(coord);
|
|
|
|
+ if (n != null) {
|
|
|
|
+ pdfPCell.setRowspan(n);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ pdfPTable2.addCell(pdfPCell);
|
|
|
|
|
|
- for (int i = 0; i < list.size(); i++) {
|
|
|
|
- String[] strings = list.get(i);
|
|
|
|
- for (int j = 0; j < strings.length; j++) {
|
|
|
|
- String coord = i + "," + j;
|
|
|
|
|
|
|
|
- //是否要跳过
|
|
|
|
- boolean contains = skipCoordList.contains(coord);
|
|
|
|
- if (contains) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- PdfPCell pdfPCell = new PdfPCell(new Paragraph(strings[j], defaultFont(baseFont)));
|
|
|
|
- //是否要合并
|
|
|
|
- Integer n = combineCoordList.get(coord);
|
|
|
|
- if (n != null) {
|
|
|
|
- pdfPCell.setRowspan(n);
|
|
|
|
}
|
|
}
|
|
- pdfPTable2.addCell(pdfPCell);
|
|
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
|
|
- document.add(pdfPTable2);
|
|
|
|
|
|
+ document.add(pdfPTable2);
|
|
|
|
|
|
/*
|
|
/*
|
|
场景得分列表
|
|
场景得分列表
|
|
*/
|
|
*/
|
|
- Paragraph sceneScoreElements = new Paragraph(50, "详细得分情况", defaultFont(baseFont));
|
|
|
|
- sceneScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
- document.add(sceneScoreElements);
|
|
|
|
-
|
|
|
|
- setBlankLineSpacing(20, baseFont, document);
|
|
|
|
|
|
+ Paragraph sceneScoreElements = new Paragraph(50, "详细得分情况", defaultFont(font));
|
|
|
|
+ sceneScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
|
|
+ document.add(sceneScoreElements);
|
|
|
|
|
|
- List<Map> scoreLiTitle = vo.getSceneScoreLiTitle();
|
|
|
|
- int size2 = scoreLiTitle.size();
|
|
|
|
- PdfPTable pdfPTable3 = new PdfPTable(size2);
|
|
|
|
- pdfPTable3.setHeaderRows(1);
|
|
|
|
- String[] slt2 = new String[size2];
|
|
|
|
- for (int i = 0; i < size2; i++) {
|
|
|
|
- slt2[i] = scoreLiTitle.get(i).get("label").toString();
|
|
|
|
- }
|
|
|
|
- addTitleList(pdfPTable3, baseFont, slt2);
|
|
|
|
- List<SceneScListVo> sceneScoreLi = vo.getSceneScoreLi();
|
|
|
|
|
|
+ setBlankLineSpacing(20, font, document);
|
|
|
|
|
|
- List<String[]> list2 = new ArrayList<>();
|
|
|
|
-
|
|
|
|
- for (SceneScListVo sslv : sceneScoreLi) {
|
|
|
|
- String[] ssli = new String[size2];
|
|
|
|
|
|
+ List<Map> scoreLiTitle = vo.getSceneScoreLiTitle();
|
|
|
|
+ int size2 = scoreLiTitle.size();
|
|
|
|
+ PdfPTable pdfPTable3 = new PdfPTable(size2);
|
|
|
|
+ pdfPTable3.setHeaderRows(1);
|
|
|
|
+ String[] slt2 = new String[size2];
|
|
for (int i = 0; i < size2; i++) {
|
|
for (int i = 0; i < size2; i++) {
|
|
- ssli[i] = "";
|
|
|
|
|
|
+ slt2[i] = scoreLiTitle.get(i).get("label").toString();
|
|
}
|
|
}
|
|
- //目前最多支持到6级指标
|
|
|
|
- for (int i = 0; i < size2 - 5; i++) {
|
|
|
|
- if (i == 0) {
|
|
|
|
- if (sslv.getSublistName1() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName1();
|
|
|
|
- }
|
|
|
|
|
|
+ addTitleList(pdfPTable3, font, slt2);
|
|
|
|
+ List<SceneScListVo> sceneScoreLi = vo.getSceneScoreLi();
|
|
|
|
|
|
- } else if (i == 1) {
|
|
|
|
- if (sslv.getSublistName2() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName2();
|
|
|
|
- }
|
|
|
|
|
|
+ List<String[]> list2 = new ArrayList<>();
|
|
|
|
|
|
- } else if (i == 2) {
|
|
|
|
- if (sslv.getSublistName3() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName3();
|
|
|
|
- }
|
|
|
|
|
|
+ for (SceneScListVo sslv : sceneScoreLi) {
|
|
|
|
+ String[] ssli = new String[size2];
|
|
|
|
+ for (int i = 0; i < size2; i++) {
|
|
|
|
+ ssli[i] = "";
|
|
|
|
+ }
|
|
|
|
+ //目前最多支持到6级指标
|
|
|
|
+ for (int i = 0; i < size2 - 5; i++) {
|
|
|
|
+ if (i == 0) {
|
|
|
|
+ if (sslv.getSublistName1() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName1();
|
|
|
|
+ }
|
|
|
|
|
|
- } else if (i == 3) {
|
|
|
|
- if (sslv.getSublistName4() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName4();
|
|
|
|
- }
|
|
|
|
|
|
+ } else if (i == 1) {
|
|
|
|
+ if (sslv.getSublistName2() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName2();
|
|
|
|
+ }
|
|
|
|
|
|
- } else if (i == 4) {
|
|
|
|
- if (sslv.getSublistName5() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName5();
|
|
|
|
- }
|
|
|
|
|
|
+ } else if (i == 2) {
|
|
|
|
+ if (sslv.getSublistName3() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName3();
|
|
|
|
+ }
|
|
|
|
|
|
- } else if (i == 5) {
|
|
|
|
- if (sslv.getSublistName6() != null) {
|
|
|
|
- ssli[i] = sslv.getSublistName6();
|
|
|
|
- }
|
|
|
|
|
|
+ } else if (i == 3) {
|
|
|
|
+ if (sslv.getSublistName4() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName4();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else if (i == 4) {
|
|
|
|
+ if (sslv.getSublistName5() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName5();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else if (i == 5) {
|
|
|
|
+ if (sslv.getSublistName6() != null) {
|
|
|
|
+ ssli[i] = sslv.getSublistName6();
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ ssli[size2 - 5] = sslv.getSceneId();
|
|
|
|
+ ssli[size2 - 4] = sslv.getSceneIdType();
|
|
|
|
+ ssli[size2 - 3] = sslv.getSceneScore();
|
|
|
|
+ ssli[size2 - 2] = sslv.getTargetEvaluate();
|
|
|
|
+ ssli[size2 - 1] = sslv.getScoreExplain();
|
|
|
|
+
|
|
|
|
+ list2.add(ssli);
|
|
|
|
+
|
|
|
|
+// addDataList(pdfPTable3, font, ssli);
|
|
}
|
|
}
|
|
- ssli[size2 - 5] = sslv.getSceneId();
|
|
|
|
- ssli[size2 - 4] = sslv.getSceneIdType();
|
|
|
|
- ssli[size2 - 3] = sslv.getSceneScore();
|
|
|
|
- ssli[size2 - 2] = sslv.getTargetEvaluate();
|
|
|
|
- ssli[size2 - 1] = sslv.getScoreExplain();
|
|
|
|
|
|
|
|
- list2.add(ssli);
|
|
|
|
|
|
+ Map map2 = getSceneScListCombineCoord(sceneScoreLi, size2);
|
|
|
|
|
|
- }
|
|
|
|
|
|
+ Map<String, Integer> combineCoordList2 = (Map<String, Integer>) map2.get("combineCoordList");
|
|
|
|
+ List<String> skipCoordList2 = (List<String>) map2.get("skipCoordList");
|
|
|
|
|
|
- Map map2 = getSceneScListCombineCoord(sceneScoreLi, size2);
|
|
|
|
|
|
+ boolean b2 = false;
|
|
|
|
+ int num2 = 0;
|
|
|
|
+ for (int i = 0; i < list2.size(); i++) {
|
|
|
|
+ String[] strings = list2.get(i);
|
|
|
|
+ for (int j = 0; j < strings.length; j++) {
|
|
|
|
+ String coord = i + "," + j;
|
|
|
|
|
|
- Map<String, Integer> combineCoordList2 = (Map<String, Integer>) map2.get("combineCoordList");
|
|
|
|
- List<String> skipCoordList2 = (List<String>) map2.get("skipCoordList");
|
|
|
|
|
|
+ //是否要跳过
|
|
|
|
+ boolean contains = skipCoordList2.contains(coord);
|
|
|
|
+ if (contains) {
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ PdfPCell pdfPCell = new PdfPCell(new Paragraph(strings[j], defaultFont(font)));
|
|
|
|
+ //是否要合并
|
|
|
|
+ Integer n = combineCoordList2.get(coord);
|
|
|
|
+ if (n != null) {
|
|
|
|
+ pdfPCell.setRowspan(n);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ pdfPTable3.addCell(pdfPCell);
|
|
|
|
|
|
- for (int i = 0; i < list2.size(); i++) {
|
|
|
|
- String[] strings = list2.get(i);
|
|
|
|
- for (int j = 0; j < strings.length; j++) {
|
|
|
|
- String coord = i + "," + j;
|
|
|
|
|
|
|
|
- //是否要跳过
|
|
|
|
- boolean contains = skipCoordList2.contains(coord);
|
|
|
|
- if (contains) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- PdfPCell pdfPCell = new PdfPCell(new Paragraph(strings[j], defaultFont(baseFont)));
|
|
|
|
- //是否要合并
|
|
|
|
- Integer n = combineCoordList2.get(coord);
|
|
|
|
- if (n != null) {
|
|
|
|
- pdfPCell.setRowspan(n);
|
|
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- pdfPTable3.addCell(pdfPCell);
|
|
|
|
|
|
+ document.add(pdfPTable3);
|
|
|
|
|
|
|
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+
|
|
|
|
+ } finally {
|
|
|
|
+ document.close();
|
|
|
|
+ try {
|
|
|
|
+ os.close();
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- document.add(pdfPTable3);
|
|
|
|
- document.close();
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|