From 8efafd39e82db5e6086046175c3b2be24db2dc1c Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Tue, 21 Mar 2023 19:00:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=B5=8B=E8=AF=95=E8=B7=9F=E8=B8=AA):=20?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=9E=E6=97=B6=E6=8A=A5=E5=91=8A=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=8E=A5=E5=8F=A3=E7=94=A8=E4=BE=8B=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E6=B1=A0=E7=9A=84=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1024555 --user=宋天阳 【测试跟踪】计划中只有接口用例-执行计划选择k8s资源池-查看临时报告-资源池仍显示LOCAL https://www.tapd.cn/55049933/s/1353978 --- .../exec/scenario/ApiScenarioEnvService.java | 28 +++++++++++++++---- .../plan/service/TestPlanReportService.java | 13 ++++++++- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/api-test/backend/src/main/java/io/metersphere/api/exec/scenario/ApiScenarioEnvService.java b/api-test/backend/src/main/java/io/metersphere/api/exec/scenario/ApiScenarioEnvService.java index 599760e510..72d4b3a97f 100644 --- a/api-test/backend/src/main/java/io/metersphere/api/exec/scenario/ApiScenarioEnvService.java +++ b/api-test/backend/src/main/java/io/metersphere/api/exec/scenario/ApiScenarioEnvService.java @@ -32,13 +32,13 @@ import io.metersphere.environment.service.BaseEnvironmentService; import io.metersphere.i18n.Translator; import io.metersphere.plugin.core.MsTestElement; import io.metersphere.service.definition.ApiDefinitionService; +import jakarta.annotation.Resource; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.json.JSONObject; import org.springframework.stereotype.Service; -import jakarta.annotation.Resource; import java.util.*; import java.util.stream.Collectors; @@ -485,9 +485,18 @@ public class ApiScenarioEnvService { String projectName = this.selectNameById(projectId); List envNameList = apiTestEnvironmentService.selectNameByIds(envIdList); if (CollectionUtils.isNotEmpty(envNameList) && StringUtils.isNotEmpty(projectName)) { - returnMap.put(projectName, new ArrayList<>() {{ - this.addAll(envNameList); - }}); + //考虑到存在不同工作空间下有相同名称的项目,这里还是要检查一下项目名称是否已被记录 + if (returnMap.containsKey(projectName)) { + envNameList.forEach(envName -> { + if (!returnMap.get(projectName).contains(envName)) { + returnMap.get(projectName).add(envName); + } + }); + } else { + returnMap.put(projectName, new ArrayList<>() {{ + this.addAll(envNameList); + }}); + } } } } @@ -569,7 +578,7 @@ public class ApiScenarioEnvService { String envId = entry.getValue(); String projectName = this.selectNameById(projectId); String envName = apiTestEnvironmentService.selectNameById(envId); - if (StringUtils.isNoneEmpty(projectName, envName)) { + if (StringUtils.isNoneEmpty(projectName, envName) && this.isProjectEnvMapNotContainsEnv(returnMap, projectName, envName)) { returnMap.put(projectName, new ArrayList<>() {{ this.add(envName); }}); @@ -581,6 +590,15 @@ public class ApiScenarioEnvService { return returnMap; } + private boolean isProjectEnvMapNotContainsEnv(LinkedHashMap> returnMap, String projectName, String envName) { + if (MapUtils.isNotEmpty(returnMap)) { + if (returnMap.containsKey(projectName) && CollectionUtils.isNotEmpty(returnMap.get(projectName)) && returnMap.get(projectName).contains(envName)) { + return false; + } + } + return true; + } + public String selectNameById(String projectId) { Project project = projectMapper.selectByPrimaryKey(projectId); if (project == null) { diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java index 9360bfde08..1b32c35ff8 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/TestPlanReportService.java @@ -1218,7 +1218,18 @@ public class TestPlanReportService { String envName = apiTestEnvironmentService.selectNameById(envId); envNameList.add(envName); } - projectEnvMap.put(projectName, envNameList); + //考虑到存在不同工作空间下有相同名称的项目,这里还是要检查一下项目名称是否已被记录 + if (projectEnvMap.containsKey(projectName)) { + envNameList.forEach(envName -> { + if (!projectEnvMap.get(projectName).contains(envName)) { + projectEnvMap.get(projectName).add(envName); + } + }); + } else { + projectEnvMap.put(projectName, new ArrayList<>() {{ + this.addAll(envNameList); + }}); + } } } if (MapUtils.isNotEmpty(projectEnvMap)) {