|
@@ -131,6 +131,7 @@ public class TaskService {
|
|
SshUtil.execute(sessionKafka, topicDeleteCommand);
|
|
SshUtil.execute(sessionKafka, topicDeleteCommand);
|
|
SshUtil.stop(clientKafka, sessionKafka);
|
|
SshUtil.stop(clientKafka, sessionKafka);
|
|
List<TaskPO> taskList = taskMapper.selectTaskListByProjectId(projectId); // 所有任务信息
|
|
List<TaskPO> taskList = taskMapper.selectTaskListByProjectId(projectId); // 所有任务信息
|
|
|
|
+ log.info("------- /state 共有 " + taskList.size() + "个任务!");
|
|
taskIndexMapper.deleteFirstByProjectId(projectId);
|
|
taskIndexMapper.deleteFirstByProjectId(projectId);
|
|
taskIndexMapper.deleteLastByProjectId(projectId);
|
|
taskIndexMapper.deleteLastByProjectId(projectId);
|
|
// -------------------------------- 查询叶子指标 --------------------------------
|
|
// -------------------------------- 查询叶子指标 --------------------------------
|
|
@@ -143,6 +144,9 @@ public class TaskService {
|
|
for (int i = 0; i < leafIndexTemplateList.size(); i++) {
|
|
for (int i = 0; i < leafIndexTemplateList.size(); i++) {
|
|
IndexTemplatePO indexTemplatePO = leafIndexTemplateList.get(i);
|
|
IndexTemplatePO indexTemplatePO = leafIndexTemplateList.get(i);
|
|
String indexId = indexTemplatePO.getIndexId();
|
|
String indexId = indexTemplatePO.getIndexId();
|
|
|
|
+ String parentId = indexTemplatePO.getParentId();
|
|
|
|
+ String rootId = indexTemplatePO.getRootId();
|
|
|
|
+ String weight = indexTemplatePO.getWeight();
|
|
log.info("------- /state 开始执行对第 " + (i + 1) + " 个叶子节点 " + indexId + " 进行打分!");
|
|
log.info("------- /state 开始执行对第 " + (i + 1) + " 个叶子节点 " + indexId + " 进行打分!");
|
|
String ruleName = indexTemplatePO.getRuleName(); // 打分脚本名称,例如 AEB_1-1
|
|
String ruleName = indexTemplatePO.getRuleName(); // 打分脚本名称,例如 AEB_1-1
|
|
String ruleDetails = indexTemplatePO.getRuleDetails(); // 打分脚本内容
|
|
String ruleDetails = indexTemplatePO.getRuleDetails(); // 打分脚本内容
|
|
@@ -231,6 +235,10 @@ public class TaskService {
|
|
.target(indexTemplatePO.getIndexId())
|
|
.target(indexTemplatePO.getIndexId())
|
|
.notStandardSceneNum((int) notStandardSceneNum)
|
|
.notStandardSceneNum((int) notStandardSceneNum)
|
|
.score(leafIndexScore)
|
|
.score(leafIndexScore)
|
|
|
|
+ .indexId(indexId)
|
|
|
|
+ .parentId(parentId)
|
|
|
|
+ .rootId(rootId)
|
|
|
|
+ .weight(weight)
|
|
.build();
|
|
.build();
|
|
leafTaskIndex.setCreateUserId(USER_ID);
|
|
leafTaskIndex.setCreateUserId(USER_ID);
|
|
leafTaskIndex.setCreateTime(TimeUtil.getNowForMysql());
|
|
leafTaskIndex.setCreateTime(TimeUtil.getNowForMysql());
|
|
@@ -246,7 +254,7 @@ public class TaskService {
|
|
taskIndexManager.batchInsertLeafIndex(leafTaskIndexList);
|
|
taskIndexManager.batchInsertLeafIndex(leafTaskIndexList);
|
|
// 保存一级指标分数
|
|
// 保存一级指标分数
|
|
log.info("------- /state 根据每个指标的得分和权重算出各个一级指标的得分(即 project 对应的场景测试包下的一级指标)!");
|
|
log.info("------- /state 根据每个指标的得分和权重算出各个一级指标的得分(即 project 对应的场景测试包下的一级指标)!");
|
|
- computeFirst(leafIndexTemplateList, projectId);
|
|
|
|
|
|
+ computeFirst(leafTaskIndexList, projectId);
|
|
|
|
|
|
// 调用 server 的接口,计算评价等级
|
|
// 调用 server 的接口,计算评价等级
|
|
String tokenUrl = tokenUri + "?grant_type=client_credentials"
|
|
String tokenUrl = tokenUri + "?grant_type=client_credentials"
|
|
@@ -260,7 +268,7 @@ public class TaskService {
|
|
log.info("------- /state 仿真云平台 token 为:" + accessToken);
|
|
log.info("------- /state 仿真云平台 token 为:" + accessToken);
|
|
Map<String, String> headers = new HashMap<>();
|
|
Map<String, String> headers = new HashMap<>();
|
|
headers.put("Authorization", "Bearer " + accessToken);
|
|
headers.put("Authorization", "Bearer " + accessToken);
|
|
- log.info("------- /state 访问仿真云平台评价等级接口:" + accessToken);
|
|
|
|
|
|
+ log.info("------- /state 访问仿真云平台评价等级接口:" + evaluationLevelUri);
|
|
HttpUtil.post(closeableHttpClient, requestConfig, evaluationLevelUri, headers, null);
|
|
HttpUtil.post(closeableHttpClient, requestConfig, evaluationLevelUri, headers, null);
|
|
log.info("------- /state 项目 " + projectId + " 打分完成");
|
|
log.info("------- /state 项目 " + projectId + " 打分完成");
|
|
|
|
|
|
@@ -275,39 +283,49 @@ public class TaskService {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- public void computeFirst(List<IndexTemplatePO> leaf, String projectId) {
|
|
|
|
- Map<String, List<IndexTemplatePO>> parentIndexMap = leaf.stream().collect(Collectors.groupingBy(IndexTemplatePO::getParentId));
|
|
|
|
- Set<String> parentIdSet = parentIndexMap.keySet();
|
|
|
|
- List<String> parentIdList = CollectionUtil.setToList(parentIdSet);
|
|
|
|
- log.info("------- /state 将叶子指标按父指标分组父指标集合为:" + parentIdSet);
|
|
|
|
- List<IndexTemplatePO> parentIndexList = indexTemplateMapper.selectByIdList(parentIdList);
|
|
|
|
- // 计算父指标得分
|
|
|
|
- parentIndexList.forEach(index1 -> {
|
|
|
|
- double sum = parentIndexMap.get(index1.getIndexId()).stream().mapToDouble(index2 -> index2.getTempScore() * Double.parseDouble(index2.getWeight())).sum();
|
|
|
|
- index1.setTempScore(sum);
|
|
|
|
- });
|
|
|
|
- Iterator<IndexTemplatePO> parentIndexIterator = parentIndexList.iterator();
|
|
|
|
- while (parentIndexIterator.hasNext()) {
|
|
|
|
- IndexTemplatePO parentIndex = parentIndexIterator.next();
|
|
|
|
- String parentId = parentIndex.getParentId();
|
|
|
|
- String rootId = parentIndex.getRootId();
|
|
|
|
|
|
+ public void computeFirst(List<TaskIndexPO> leafTaskIndexList, String projectId) {
|
|
|
|
+
|
|
|
|
+ log.info("------- /state computeFirst 计算父指标得分:" + leafTaskIndexList);
|
|
|
|
+ Iterator<TaskIndexPO> leafTaskIndexIterator = leafTaskIndexList.iterator();
|
|
|
|
+ while (leafTaskIndexIterator.hasNext()) {
|
|
|
|
+ TaskIndexPO leafTaskIndex = leafTaskIndexIterator.next();
|
|
|
|
+ String parentId = leafTaskIndex.getParentId();
|
|
|
|
+ String rootId = leafTaskIndex.getRootId();
|
|
if (parentId.equals(rootId)) {
|
|
if (parentId.equals(rootId)) {
|
|
- TaskIndexPO totalTaskIndex = TaskIndexPO.builder()
|
|
|
|
|
|
+ taskIndexMapper.insertFirstIndex(leafTaskIndex);
|
|
|
|
+ }
|
|
|
|
+ leafTaskIndexIterator.remove();
|
|
|
|
+ }
|
|
|
|
+ if (leafTaskIndexList.size() > 0) {
|
|
|
|
+ Map<String, List<TaskIndexPO>> sonTaskIndexMap = leafTaskIndexList.stream().collect(Collectors.groupingBy(TaskIndexPO::getParentId));
|
|
|
|
+ Set<String> parentIdSet = sonTaskIndexMap.keySet();
|
|
|
|
+ List<String> parentIdList = CollectionUtil.setToList(parentIdSet);
|
|
|
|
+ List<IndexTemplatePO> parentIndexTemplateList = indexTemplateMapper.selectByIdList(parentIdList);
|
|
|
|
+ // 计算父指标得分
|
|
|
|
+ List<TaskIndexPO> parentIndexList = new ArrayList<>();
|
|
|
|
+ parentIndexTemplateList.forEach(indexTemplate -> {
|
|
|
|
+ String weight = indexTemplate.getWeight();
|
|
|
|
+
|
|
|
|
+ List<TaskIndexPO> sonTaskIndexList = sonTaskIndexMap.get(indexTemplate.getIndexId());
|
|
|
|
+ double parentScore = sonTaskIndexList.stream().mapToDouble(taskIndex -> taskIndex.getScore() * Double.parseDouble(taskIndex.getWeight())).sum();
|
|
|
|
+ TaskIndexPO parentTaskIndex = TaskIndexPO.builder()
|
|
.id(StringUtil.getRandomUUID())
|
|
.id(StringUtil.getRandomUUID())
|
|
.pId(projectId)
|
|
.pId(projectId)
|
|
- .target(parentIndex.getIndexId())
|
|
|
|
- .score(parentIndex.getTempScore())
|
|
|
|
|
|
+ .target(indexTemplate.getIndexId())
|
|
|
|
+ .score(parentScore)
|
|
|
|
+ .indexId(indexTemplate.getIndexId())
|
|
|
|
+ .parentId(indexTemplate.getParentId())
|
|
|
|
+ .rootId(indexTemplate.getRootId())
|
|
|
|
+ .weight(weight)
|
|
.build();
|
|
.build();
|
|
- totalTaskIndex.setCreateUserId(USER_ID);
|
|
|
|
- totalTaskIndex.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
|
- totalTaskIndex.setModifyUserId(USER_ID);
|
|
|
|
- totalTaskIndex.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
- totalTaskIndex.setIsDeleted("0");
|
|
|
|
- taskIndexMapper.insertTotalIndex(totalTaskIndex);
|
|
|
|
- parentIndexIterator.remove();
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (parentIndexList.size() > 1) {
|
|
|
|
|
|
+ parentTaskIndex.setCreateUserId(USER_ID);
|
|
|
|
+ parentTaskIndex.setCreateTime(TimeUtil.getNowForMysql());
|
|
|
|
+ parentTaskIndex.setModifyUserId(USER_ID);
|
|
|
|
+ parentTaskIndex.setModifyTime(TimeUtil.getNowForMysql());
|
|
|
|
+ parentTaskIndex.setIsDeleted("0");
|
|
|
|
+ parentIndexList.add(parentTaskIndex);
|
|
|
|
+ });
|
|
|
|
+ // 将父指标作为叶子指标递归
|
|
computeFirst(parentIndexList, projectId);
|
|
computeFirst(parentIndexList, projectId);
|
|
}
|
|
}
|
|
}
|
|
}
|