fix(测试跟踪): 修复测试计划报告环境显示不全的问题

--bug=1015084 --user=宋天阳
【测试跟踪】测试计划-报告列表,报告里的运行环境少了一个
https://www.tapd.cn/55049933/s/1205607
This commit is contained in:
song-tianyang 2022-07-20 17:39:16 +08:00 committed by 建国
parent c012ff0738
commit a4e4bb60b9
3 changed files with 62 additions and 20 deletions

View File

@ -3,7 +3,9 @@ package io.metersphere.track.dto.testplan;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Getter
@ -14,24 +16,38 @@ public class TestPlanReportRunInfoDTO {
private String runMode;
// <测试计划场景关联表ID, <项目ID环境ID>>
private Map<String, Map<String,String>> scenarioRunInfo;
private Map<String, Map<String, List<String>>> scenarioRunInfo;
// <测试计划用例关联表ID, <项目ID环境ID>>
private Map<String, Map<String,String>> apiCaseRunInfo;
private Map<String, Map<String, String>> apiCaseRunInfo;
public TestPlanReportRunInfoDTO(){
public TestPlanReportRunInfoDTO() {
scenarioRunInfo = new HashMap<>();
apiCaseRunInfo = new HashMap<>();
}
public void putScenarioRunInfo(String scenarioResourceId,String projectId,String environmentId){
scenarioRunInfo.put(scenarioResourceId,new HashMap<>(){{
this.put(projectId,environmentId);
}});
public void putScenarioRunInfo(String scenarioResourceId, String projectId, String environmentId) {
if (scenarioRunInfo.containsKey(scenarioResourceId)) {
if (scenarioRunInfo.get(scenarioResourceId).containsKey(projectId)) {
if (!scenarioRunInfo.get(scenarioResourceId).get(projectId).contains(environmentId)) {
scenarioRunInfo.get(scenarioResourceId).get(projectId).add(environmentId);
}
} else {
scenarioRunInfo.get(scenarioResourceId).put(projectId, new ArrayList<>() {{
this.add(environmentId);
}});
}
} else {
scenarioRunInfo.put(scenarioResourceId, new HashMap<>() {{
this.put(projectId, new ArrayList<>() {{
this.add(environmentId);
}});
}});
}
}
public void putApiCaseRunInfo(String apiCaseResourceId,String projectId,String environmentId){
apiCaseRunInfo.put(apiCaseResourceId,new HashMap<>(){{
this.put(projectId,environmentId);
public void putApiCaseRunInfo(String apiCaseResourceId, String projectId, String environmentId) {
apiCaseRunInfo.put(apiCaseResourceId, new HashMap<>() {{
this.put(projectId, environmentId);
}});
}
}

View File

@ -226,7 +226,7 @@ public class TestPlanReportService {
}
public TestPlanScheduleReportInfoDTO genTestPlanReportBySchedule(String planReportId, String planId, String userId, String triggerMode, RunModeConfigDTO runModeConfigDTO) {
TestPlanReport testPlanReport = this.getTestPlanReport(planReportId);
TestPlanReport testPlanReport = this.getTestPlanReport(planReportId);
TestPlanScheduleReportInfoDTO returnDTO = new TestPlanScheduleReportInfoDTO();
if (testPlanReport != null) {
returnDTO.setTestPlanReport(testPlanReport);
@ -305,11 +305,11 @@ public class TestPlanReportService {
try {
Map<String, String> envMap = JSONObject.parseObject(model.getEnvironment(), Map.class);
if (MapUtils.isNotEmpty(envMap)) {
String envId = null;
for (String envIdStr : envMap.values()) {
envId = envIdStr;
for (Map.Entry<String, String> entry : envMap.entrySet()) {
String projectId = entry.getKey();
String envIdStr = entry.getValue();
runInfoDTO.putScenarioRunInfo(model.getId(), projectId, envIdStr);
}
runInfoDTO.putScenarioRunInfo(model.getId(), model.getProjectId(), envId);
}
} catch (Exception ignore) {
}
@ -991,10 +991,10 @@ public class TestPlanReportService {
testPlanReportDTO.setRunMode(StringUtils.equalsIgnoreCase(runInfoDTO.getRunMode(), "serial") ? Translator.get("serial") : Translator.get("parallel"));
Map<String, Set<String>> projectEnvMap = new LinkedHashMap<>();
if (MapUtils.isNotEmpty(runInfoDTO.getApiCaseRunInfo())) {
this.setProjectEnvMap(projectEnvMap, runInfoDTO.getApiCaseRunInfo());
this.setApiCaseProjectEnvMap(projectEnvMap, runInfoDTO.getApiCaseRunInfo());
}
if (MapUtils.isNotEmpty(runInfoDTO.getScenarioRunInfo())) {
this.setProjectEnvMap(projectEnvMap, runInfoDTO.getScenarioRunInfo());
this.setScenarioProjectEnvMap(projectEnvMap, runInfoDTO.getScenarioRunInfo());
}
Map<String, List<String>> showProjectEnvMap = new LinkedHashMap<>();
for (Map.Entry<String, Set<String>> entry : projectEnvMap.entrySet()) {
@ -1012,7 +1012,33 @@ public class TestPlanReportService {
}
}
private void setProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, String>> caseEnvironmentMap) {
private void setScenarioProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, List<String>>> caseEnvironmentMap) {
if (projectEnvMap == null || caseEnvironmentMap == null) {
return;
}
for (Map<String, List<String>> map : caseEnvironmentMap.values()) {
if (MapUtils.isEmpty(map)) {
continue;
}
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
String projectId = entry.getKey();
List<String> envIdList = entry.getValue();
if (CollectionUtils.isNotEmpty(envIdList)) {
envIdList.forEach(envId -> {
if (projectEnvMap.containsKey(projectId)) {
projectEnvMap.get(projectId).add(envId);
} else {
projectEnvMap.put(projectId, new LinkedHashSet<>() {{
this.add(envId);
}});
}
});
}
}
}
}
private void setApiCaseProjectEnvMap(Map<String, Set<String>> projectEnvMap, Map<String, Map<String, String>> caseEnvironmentMap) {
if (projectEnvMap == null || caseEnvironmentMap == null) {
return;
}

View File

@ -8,11 +8,11 @@
v-if="report.envGroupName || report.projectEnvMap" style="display:inline-block">
<div>
<div style="float: left">
{{$t('commons.environment') + ':'}}
{{ $t('commons.environment') + ':' }}
</div>
<div style="float: right">
<div v-if="report.envGroupName" style="margin-left: 42px">
<ms-tag type="danger" :content="$t('commons.group')"></ms-tag>
<ms-tag type="danger" :content="$t('workspace.env_group.name')"></ms-tag>
{{ report.envGroupName }}
</div>
<div v-else-if="report.projectEnvMap" style="margin-left: 42px">