|
@@ -58,6 +58,7 @@ import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
import java.net.URLEncoder;
|
|
import java.net.URLEncoder;
|
|
import java.nio.charset.StandardCharsets;
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
+import java.nio.file.Files;
|
|
import java.text.ParseException;
|
|
import java.text.ParseException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
@@ -1881,61 +1882,60 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
SimulationManualProjectParam query = new SimulationManualProjectParam();
|
|
SimulationManualProjectParam query = new SimulationManualProjectParam();
|
|
query.setId(projectId);
|
|
query.setId(projectId);
|
|
query.setPackageId(scenePackageId);
|
|
query.setPackageId(scenePackageId);
|
|
- List<SublistScoreVo> pos = simulationProjectMapper.selectSubScore2(query);
|
|
|
|
|
|
+ List<SublistScoreVo> sublistScoreVoList = simulationProjectMapper.selectSubScore2(query);
|
|
HashMap<String, Object> hashMap = new HashMap<>();
|
|
HashMap<String, Object> hashMap = new HashMap<>();
|
|
- int size = 0;
|
|
|
|
|
|
+ int maxHeaderNumber = 0;
|
|
List<List<String>> result = new ArrayList<>();
|
|
List<List<String>> result = new ArrayList<>();
|
|
//递归指标名称得分
|
|
//递归指标名称得分
|
|
- for (SublistScoreVo po : pos) {
|
|
|
|
- if (ObjectUtil.isNotNull(po.getPackageAndRules()) && (po.getFirTarget() != null || po.getLasTarget() != null)) {
|
|
|
|
|
|
+ for (SublistScoreVo sublistScoreVo : sublistScoreVoList) {
|
|
|
|
+ if (ObjectUtil.isNotNull(sublistScoreVo.getPackageAndRules()) && (sublistScoreVo.getFirTarget() != null || sublistScoreVo.getLasTarget() != null)) {
|
|
//末级指标
|
|
//末级指标
|
|
- setParent(po, null, pos, scenePackageId);
|
|
|
|
-
|
|
|
|
- String sublistName = po.getSublistName();
|
|
|
|
- Double firScore = po.getFirScore();
|
|
|
|
|
|
+ setParent(sublistScoreVo, null, sublistScoreVoList, scenePackageId);
|
|
|
|
+ String sublistName = sublistScoreVo.getSublistName();
|
|
|
|
+ Double firScore = sublistScoreVo.getFirScore();
|
|
String firstScore = ""; // first得分
|
|
String firstScore = ""; // first得分
|
|
if (firScore != null) {
|
|
if (firScore != null) {
|
|
firstScore = saveTwoDecimalPlaces(firScore, 1).toString();
|
|
firstScore = saveTwoDecimalPlaces(firScore, 1).toString();
|
|
}
|
|
}
|
|
- Double lasScore = po.getLasScore();
|
|
|
|
|
|
+ Double lasScore = sublistScoreVo.getLasScore();
|
|
String LastScore = ""; // last得分
|
|
String LastScore = ""; // last得分
|
|
if (lasScore != null) {
|
|
if (lasScore != null) {
|
|
LastScore = saveTwoDecimalPlaces(lasScore, 1).toString();
|
|
LastScore = saveTwoDecimalPlaces(lasScore, 1).toString();
|
|
}
|
|
}
|
|
- String sceneNum = po.getSceneNum();//场景数量
|
|
|
|
- String notScoredSceneNum = po.getNotScoredSceneNum(); // 未参与评分数量
|
|
|
|
- String notStandardSceneNum = po.getNotStandardSceneNum(); // 未达标场景数量
|
|
|
|
- String standardSceneNum = po.getStandardSceneNum(); // 达标场景数量
|
|
|
|
|
|
+ String sceneNum = sublistScoreVo.getSceneNum(); // 场景数量
|
|
|
|
+ String errorSceneNum = sublistScoreVo.getErrorSceneNum(); // 仿真异常场景个数
|
|
|
|
+ String notScoredSceneNum = sublistScoreVo.getNotScoredSceneNum(); // 未参与评分数量
|
|
|
|
+ String notStandardSceneNum = sublistScoreVo.getNotStandardSceneNum(); // 未达标场景数量
|
|
|
|
+ String standardSceneNum = sublistScoreVo.getStandardSceneNum(); // 达标场景数量
|
|
|
|
|
|
if (ObjectUtil.isNotNull(sublistName)) {
|
|
if (ObjectUtil.isNotNull(sublistName)) {
|
|
sublistName += ProjectConstants.SEPARATOR
|
|
sublistName += ProjectConstants.SEPARATOR
|
|
+ sceneNum + ProjectConstants.SEPARATOR
|
|
+ sceneNum + ProjectConstants.SEPARATOR
|
|
|
|
+ + errorSceneNum + ProjectConstants.SEPARATOR
|
|
+ notScoredSceneNum + ProjectConstants.SEPARATOR
|
|
+ notScoredSceneNum + ProjectConstants.SEPARATOR
|
|
+ notStandardSceneNum + ProjectConstants.SEPARATOR
|
|
+ notStandardSceneNum + ProjectConstants.SEPARATOR
|
|
+ standardSceneNum + ProjectConstants.SEPARATOR
|
|
+ standardSceneNum + ProjectConstants.SEPARATOR
|
|
+ LastScore + ProjectConstants.SEPARATOR
|
|
+ LastScore + ProjectConstants.SEPARATOR
|
|
+ firstScore;
|
|
+ firstScore;
|
|
String[] split = sublistName.split(ProjectConstants.SEPARATOR);
|
|
String[] split = sublistName.split(ProjectConstants.SEPARATOR);
|
|
-
|
|
|
|
-
|
|
|
|
- List<String> strings = new LinkedList<>();
|
|
|
|
- strings.addAll(Arrays.asList(split));
|
|
|
|
- if (size < strings.size()) {
|
|
|
|
- size = strings.size();
|
|
|
|
- }
|
|
|
|
- result.add(strings);
|
|
|
|
|
|
+ maxHeaderNumber = Math.max(maxHeaderNumber, split.length); // 求最大表头数量
|
|
|
|
+ result.add(Arrays.asList(split));
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
-
|
|
|
|
-
|
|
|
|
- List<SubScListVo> objects = new ArrayList<>();
|
|
|
|
- //结果补全
|
|
|
|
|
|
+ // 结果补全
|
|
|
|
+ List<SubScListVo> values = new ArrayList<>();
|
|
|
|
+ int fieldNumber = 7;
|
|
for (List<String> list : result) {
|
|
for (List<String> list : result) {
|
|
- int start = list.size() - 4;
|
|
|
|
|
|
+ int start = list.size() - fieldNumber;
|
|
SubScListVo subScListVo = new SubScListVo();
|
|
SubScListVo subScListVo = new SubScListVo();
|
|
|
|
+ subScListVo.setSceneNum(list.get(start));
|
|
|
|
+ subScListVo.setErrorSceneNum(list.get(start + 1));
|
|
|
|
+ subScListVo.setNotScoredSceneNum(list.get(start + 2));
|
|
|
|
+ subScListVo.setNotStandardSceneNum(list.get(start + 3));
|
|
|
|
+ subScListVo.setStandardSceneNum(list.get(start + 4));
|
|
|
|
+ subScListVo.setLastScore(list.get(start + 5));
|
|
|
|
+ subScListVo.setFirstScore(list.get(start + 6));
|
|
for (int i = 0; i < start; i++) {
|
|
for (int i = 0; i < start; i++) {
|
|
if (0 == i) {
|
|
if (0 == i) {
|
|
subScListVo.setSublistName1(list.get(i));
|
|
subScListVo.setSublistName1(list.get(i));
|
|
@@ -1950,32 +1950,22 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
} else if (5 == i) {
|
|
} else if (5 == i) {
|
|
subScListVo.setSublistName6(list.get(i));
|
|
subScListVo.setSublistName6(list.get(i));
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
- subScListVo.setSceneNum(list.get(start + 0));
|
|
|
|
- subScListVo.setNotScoredSceneNum(list.get(start + 1));
|
|
|
|
- subScListVo.setNotStandardSceneNum(list.get(start + 2));
|
|
|
|
- subScListVo.setStandardSceneNum(list.get(start + 3));
|
|
|
|
- subScListVo.setLastScore(list.get(start + 4));
|
|
|
|
- subScListVo.setFirstScore(list.get(start + 5));
|
|
|
|
-
|
|
|
|
- objects.add(subScListVo);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ values.add(subScListVo);
|
|
}
|
|
}
|
|
-
|
|
|
|
List<Map<Object, Object>> headerList = new ArrayList<>();
|
|
List<Map<Object, Object>> headerList = new ArrayList<>();
|
|
- for (int i = 0; i < size - 4; i++) {
|
|
|
|
|
|
+ for (int i = 0; i < maxHeaderNumber - fieldNumber; i++) {
|
|
addHeaders(i, headerList);
|
|
addHeaders(i, headerList);
|
|
}
|
|
}
|
|
headerList.add(ImmutableMap.builder().put("label", "场景数量").put("prop", "sceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "场景数量").put("prop", "sceneNum").build());
|
|
|
|
+ headerList.add(ImmutableMap.builder().put("label", "仿真异常场景个数").put("prop", "errorSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "未参与评分场景个数").put("prop", "notScoredSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "未参与评分场景个数").put("prop", "notScoredSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "未达标场景数量").put("prop", "notStandardSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "未达标场景数量").put("prop", "notStandardSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "达标场景个数").put("prop", "standardSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "达标场景个数").put("prop", "standardSceneNum").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "得分").put("prop", "lastScore").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "得分").put("prop", "lastScore").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "总分").put("prop", "firstScore").build());
|
|
headerList.add(ImmutableMap.builder().put("label", "总分").put("prop", "firstScore").build());
|
|
hashMap.put("headerList", headerList);
|
|
hashMap.put("headerList", headerList);
|
|
- hashMap.put("result", objects);
|
|
|
|
|
|
+ hashMap.put("result", values);
|
|
|
|
|
|
|
|
|
|
return hashMap;
|
|
return hashMap;
|
|
@@ -2428,7 +2418,7 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
//下载 or 保存本地
|
|
//下载 or 保存本地
|
|
if (param.getIsCreateLocalPdfFile() != null && param.getIsCreateLocalPdfFile() == true) {
|
|
if (param.getIsCreateLocalPdfFile() != null && param.getIsCreateLocalPdfFile() == true) {
|
|
File file = new File(param.getLocalPdfFilePath());
|
|
File file = new File(param.getLocalPdfFilePath());
|
|
- os = new BufferedOutputStream(new FileOutputStream(file));
|
|
|
|
|
|
+ os = new BufferedOutputStream(Files.newOutputStream(file.toPath()));
|
|
} else {
|
|
} else {
|
|
String fileName = vo.getProjectId() + "_" + vo.getProjectName();
|
|
String fileName = vo.getProjectId() + "_" + vo.getProjectName();
|
|
response.setContentType("application/x-download");
|
|
response.setContentType("application/x-download");
|
|
@@ -2491,12 +2481,12 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
|
|
|
|
setBlankLineSpacing(20, font, document);
|
|
setBlankLineSpacing(20, font, document);
|
|
|
|
|
|
- //表头
|
|
|
|
|
|
+ // 表头
|
|
PdfPTable pdfPTable = new PdfPTable(5);
|
|
PdfPTable pdfPTable = new PdfPTable(5);
|
|
pdfPTable.setHeaderRows(1);//换页每页显示表头
|
|
pdfPTable.setHeaderRows(1);//换页每页显示表头
|
|
addTitleList(pdfPTable, font, new String[]{"测试项目", "场景数量", "测试权重(%)", "测试得分", "得分率(%)"});
|
|
addTitleList(pdfPTable, font, new String[]{"测试项目", "场景数量", "测试权重(%)", "测试得分", "得分率(%)"});
|
|
|
|
|
|
- //数据
|
|
|
|
|
|
+ // 数据
|
|
List<AlgorithmScoreVo> algorithmScoreList = vo.getAlgorithmScoreList();
|
|
List<AlgorithmScoreVo> algorithmScoreList = vo.getAlgorithmScoreList();
|
|
for (AlgorithmScoreVo asv : algorithmScoreList) {
|
|
for (AlgorithmScoreVo asv : algorithmScoreList) {
|
|
String[] data = new String[]{
|
|
String[] data = new String[]{
|
|
@@ -2524,20 +2514,18 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
// document.add(pdfPTable1);
|
|
// document.add(pdfPTable1);
|
|
|
|
|
|
|
|
|
|
- //新的一页,横向显示
|
|
|
|
|
|
+ // 新的一页,横向显示
|
|
document.setPageSize(PageSize.A4.rotate());
|
|
document.setPageSize(PageSize.A4.rotate());
|
|
document.newPage();
|
|
document.newPage();
|
|
|
|
|
|
- //指标得分列表
|
|
|
|
|
|
+ // 算法测试评分细则(指标得分列表)
|
|
Paragraph subListScoreElements = new Paragraph(
|
|
Paragraph subListScoreElements = new Paragraph(
|
|
50,
|
|
50,
|
|
"算法测试评分细则",
|
|
"算法测试评分细则",
|
|
defaultFont(font));
|
|
defaultFont(font));
|
|
subListScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
subListScoreElements.setAlignment(Element.ALIGN_CENTER); //居中
|
|
document.add(subListScoreElements);
|
|
document.add(subListScoreElements);
|
|
-
|
|
|
|
setBlankLineSpacing(20, font, document);
|
|
setBlankLineSpacing(20, font, document);
|
|
-
|
|
|
|
List<Map> subListScoreLiTitle = vo.getSubListScoreLiTitle();
|
|
List<Map> subListScoreLiTitle = vo.getSubListScoreLiTitle();
|
|
int size = subListScoreLiTitle.size();
|
|
int size = subListScoreLiTitle.size();
|
|
PdfPTable pdfPTable2 = new PdfPTable(size);
|
|
PdfPTable pdfPTable2 = new PdfPTable(size);
|
|
@@ -2547,51 +2535,47 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
|
|
slt[i] = subListScoreLiTitle.get(i).get("label").toString();
|
|
slt[i] = subListScoreLiTitle.get(i).get("label").toString();
|
|
}
|
|
}
|
|
addTitleList(pdfPTable2, font, slt);
|
|
addTitleList(pdfPTable2, font, slt);
|
|
-
|
|
|
|
List<SubScListVo> subListScoreLi = vo.getSubListScoreLi();
|
|
List<SubScListVo> subListScoreLi = vo.getSubListScoreLi();
|
|
-
|
|
|
|
List<String[]> list = new ArrayList<>();
|
|
List<String[]> list = new ArrayList<>();
|
|
|
|
+ int fieldNumber = 7;
|
|
for (SubScListVo slv : subListScoreLi) {
|
|
for (SubScListVo slv : subListScoreLi) {
|
|
String[] slsi = new String[size];
|
|
String[] slsi = new String[size];
|
|
for (int i = 0; i < size; i++) {
|
|
for (int i = 0; i < size; i++) {
|
|
slsi[i] = "";
|
|
slsi[i] = "";
|
|
}
|
|
}
|
|
//目前最多支持到6级指标
|
|
//目前最多支持到6级指标
|
|
- for (int i = 0; i < size - 4; i++) {
|
|
|
|
|
|
+ for (int i = 0; i < size - fieldNumber; i++) {
|
|
if (i == 0) {
|
|
if (i == 0) {
|
|
if (slv.getSublistName1() != null) {
|
|
if (slv.getSublistName1() != null) {
|
|
slsi[i] = slv.getSublistName1();
|
|
slsi[i] = slv.getSublistName1();
|
|
}
|
|
}
|
|
-
|
|
|
|
} else if (i == 1) {
|
|
} else if (i == 1) {
|
|
if (slv.getSublistName2() != null) {
|
|
if (slv.getSublistName2() != null) {
|
|
slsi[i] = slv.getSublistName2();
|
|
slsi[i] = slv.getSublistName2();
|
|
}
|
|
}
|
|
-
|
|
|
|
} else if (i == 2) {
|
|
} else if (i == 2) {
|
|
if (slv.getSublistName3() != null) {
|
|
if (slv.getSublistName3() != null) {
|
|
slsi[i] = slv.getSublistName3();
|
|
slsi[i] = slv.getSublistName3();
|
|
}
|
|
}
|
|
-
|
|
|
|
} else if (i == 3) {
|
|
} else if (i == 3) {
|
|
if (slv.getSublistName4() != null) {
|
|
if (slv.getSublistName4() != null) {
|
|
slsi[i] = slv.getSublistName4();
|
|
slsi[i] = slv.getSublistName4();
|
|
}
|
|
}
|
|
-
|
|
|
|
} else if (i == 4) {
|
|
} else if (i == 4) {
|
|
if (slv.getSublistName5() != null) {
|
|
if (slv.getSublistName5() != null) {
|
|
slsi[i] = slv.getSublistName5();
|
|
slsi[i] = slv.getSublistName5();
|
|
}
|
|
}
|
|
-
|
|
|
|
} else if (i == 5) {
|
|
} else if (i == 5) {
|
|
if (slv.getSublistName6() != null) {
|
|
if (slv.getSublistName6() != null) {
|
|
slsi[i] = slv.getSublistName6();
|
|
slsi[i] = slv.getSublistName6();
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- slsi[size - 4] = slv.getSceneNum();
|
|
|
|
- slsi[size - 3] = slv.getNotStandardSceneNum();
|
|
|
|
|
|
+ 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 - 2] = slv.getLastScore();
|
|
slsi[size - 1] = slv.getFirstScore();
|
|
slsi[size - 1] = slv.getFirstScore();
|
|
|
|
|