|
@@ -260,14 +260,21 @@ public class TaskManager {
|
|
throw new RuntimeException("------- TaskService--state 项目" + projectId + "的任务" + task2Id + " 打分出错,命令为:" + scoreCommand + " 修改状态为:" + DictConstants.TASK_ABORTED + "\n" + e.getMessage());
|
|
throw new RuntimeException("------- TaskService--state 项目" + projectId + "的任务" + task2Id + " 打分出错,命令为:" + scoreCommand + " 修改状态为:" + DictConstants.TASK_ABORTED + "\n" + e.getMessage());
|
|
}
|
|
}
|
|
taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
|
|
taskOfLeaf.setReturnSceneId(score.getUnit_scene_ID());
|
|
- taskOfLeaf.setScore(score.getUnit_scene_score());
|
|
|
|
taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
|
|
taskOfLeaf.setTargetEvaluate(score.getEvaluate_item());
|
|
taskOfLeaf.setScoreExplain(score.getScore_description());
|
|
taskOfLeaf.setScoreExplain(score.getScore_description());
|
|
taskOfLeaf.setModifyUserId(userId);
|
|
taskOfLeaf.setModifyUserId(userId);
|
|
taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
|
|
taskOfLeaf.setModifyTime(TimeUtil.getNowForMysql());
|
|
scoreExplain.set(score.getScore_description());
|
|
scoreExplain.set(score.getScore_description());
|
|
taskOfLeaf.setRunState(DictConstants.TASK_COMPLETED);
|
|
taskOfLeaf.setRunState(DictConstants.TASK_COMPLETED);
|
|
- taskMapper.updateSuccessStateAndScoreResultWithStopTime(taskOfLeaf, DictConstants.TASK_COMPLETED, TimeUtil.getNowForMysql());
|
|
|
|
|
|
+ double taskScore = score.getUnit_scene_score();
|
|
|
|
+ if (taskScore == -1.0) {
|
|
|
|
+ taskOfLeaf.setScore(0.0);
|
|
|
|
+ taskOfLeaf.setScored(false);
|
|
|
|
+ } else {
|
|
|
|
+ taskOfLeaf.setScore(taskScore);
|
|
|
|
+ taskOfLeaf.setScored(true);
|
|
|
|
+ }
|
|
|
|
+ taskMapper.updateSuccessState(taskOfLeaf, DictConstants.TASK_COMPLETED);
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
taskOfLeaf.setRunState(DictConstants.TASK_ABORTED);
|
|
taskOfLeaf.setRunState(DictConstants.TASK_ABORTED);
|
|
@@ -280,19 +287,19 @@ public class TaskManager {
|
|
|
|
|
|
// 计算不合格的任务数(不到100分就是不合格,执行失败的不算)
|
|
// 计算不合格的任务数(不到100分就是不合格,执行失败的不算)
|
|
// 计算叶子指标下任务得分总和
|
|
// 计算叶子指标下任务得分总和
|
|
- int errorSceneNumber = 0;
|
|
|
|
- int notScoredSceneNumber = 0;
|
|
|
|
|
|
+ int errorSceneNumber = 0; // 仿真失败的任务
|
|
|
|
+ int notScoredSceneNumber = 0; // 评分失败的任务
|
|
int notStandardSceneNumber = 0;
|
|
int notStandardSceneNumber = 0;
|
|
int standardSceneNumber = 0;
|
|
int standardSceneNumber = 0;
|
|
double leafSum = 0.0;
|
|
double leafSum = 0.0;
|
|
for (TaskPO task : taskListOfLeafIndex) {
|
|
for (TaskPO task : taskListOfLeafIndex) {
|
|
Double scoreTemp = task.getScore();
|
|
Double scoreTemp = task.getScore();
|
|
- if (scoreTemp == null) { // 失败状态的任务是没有分数的,计为 0 分。
|
|
|
|
|
|
+ if (scoreTemp == null) { // 失败状态的任务是没有分数的,计作 0 分。
|
|
errorSceneNumber++;
|
|
errorSceneNumber++;
|
|
scoreTemp = 0.0;
|
|
scoreTemp = 0.0;
|
|
- } else if ("-1".equals(task.getScore().toString())) { // 如果得分是 -1 ,说明是评分规则无法打分,即也不参与计分
|
|
|
|
|
|
+ } else if (!task.getScored()) { // 如果评分失败,也计作 0 分
|
|
notScoredSceneNumber++;
|
|
notScoredSceneNumber++;
|
|
- continue;
|
|
|
|
|
|
+ scoreTemp = 0.0;
|
|
} else if (scoreTemp < 100.0) {
|
|
} else if (scoreTemp < 100.0) {
|
|
notStandardSceneNumber++;
|
|
notStandardSceneNumber++;
|
|
} else if (scoreTemp == 100.0) {
|
|
} else if (scoreTemp == 100.0) {
|
|
@@ -303,17 +310,13 @@ public class TaskManager {
|
|
}
|
|
}
|
|
|
|
|
|
// 计算任务的个数
|
|
// 计算任务的个数
|
|
- long taskNumberToScore = errorSceneNumber + notStandardSceneNumber + standardSceneNumber;
|
|
|
|
|
|
+ long taskNumberToScore = taskListOfLeafIndex.size();
|
|
log.info("TaskManager--score 项目 " + projectId + " 的叶子指标 " + indexId
|
|
log.info("TaskManager--score 项目 " + projectId + " 的叶子指标 " + indexId
|
|
+ " 下参与计算的任务总数为 " + taskNumberToScore
|
|
+ " 下参与计算的任务总数为 " + taskNumberToScore
|
|
+ ":仿真异常场景个数 " + errorSceneNumber
|
|
+ ":仿真异常场景个数 " + errorSceneNumber
|
|
+ "、未达标场景个数 " + notStandardSceneNumber
|
|
+ "、未达标场景个数 " + notStandardSceneNumber
|
|
+ "、达标场景个数 " + standardSceneNumber
|
|
+ "、达标场景个数 " + standardSceneNumber
|
|
);
|
|
);
|
|
- // 如果叶子指标下的所有任务得分都是 -1,则直接跳过该指标,不参与后边的总分计算
|
|
|
|
- if (taskNumberToScore == 0) {
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
|
|
|
|
// 计算叶子指标得分(任务得分总和 / 任务数量)
|
|
// 计算叶子指标得分(任务得分总和 / 任务数量)
|
|
double leafIndexScore = NumberUtil.cut(leafSum / taskNumberToScore, 2);
|
|
double leafIndexScore = NumberUtil.cut(leafSum / taskNumberToScore, 2);
|