From 0b05cd12e080e20141eae71ecda0f5ec4ba06b38 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Tue, 25 Oct 2022 18:11:14 +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=E6=B5=8B=E8=AF=95=E8=AE=A1=E5=88=92=E6=8A=A5?= =?UTF-8?q?=E5=91=8A=E4=B8=AD=E5=9C=BA=E6=99=AF=E6=8A=A5=E5=91=8A=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E9=94=99=E8=AF=AF=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1018864 --user=赵勇 【测试跟踪】测试计划-报告统计中场景执行结果的跳转链接失败 https://www.tapd.cn/55049933/s/1276946 --- .../plan/TestPlanScenarioCaseController.java | 5 +++++ .../service/plan/TestPlanScenarioCaseService.java | 8 ++++++++ .../service/scenario/ApiScenarioReportService.java | 6 ------ api-test/frontend/src/api/test-plan.js | 4 ++++ .../automation/report/ApiReportViewHeader.vue | 14 +++++++++++++- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanScenarioCaseController.java b/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanScenarioCaseController.java index 28189c128e..690409942c 100644 --- a/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanScenarioCaseController.java +++ b/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanScenarioCaseController.java @@ -230,4 +230,9 @@ public class TestPlanScenarioCaseController { public Map> getPlanProjectEnvMap(@RequestBody List resourceIds) { return testPlanScenarioCaseService.getPlanProjectEnvMap(resourceIds); } + @GetMapping("/get-scenario-id/{id}") + public String getScenarioId(@PathVariable("id") String planScenarioId) { + return testPlanScenarioCaseService.getScenarioId(planScenarioId); + } + } diff --git a/api-test/backend/src/main/java/io/metersphere/service/plan/TestPlanScenarioCaseService.java b/api-test/backend/src/main/java/io/metersphere/service/plan/TestPlanScenarioCaseService.java index f2cdca276a..a1af7b1cdb 100644 --- a/api-test/backend/src/main/java/io/metersphere/service/plan/TestPlanScenarioCaseService.java +++ b/api-test/backend/src/main/java/io/metersphere/service/plan/TestPlanScenarioCaseService.java @@ -1207,4 +1207,12 @@ public class TestPlanScenarioCaseService { } return nodeTrees; } + + public String getScenarioId(String planScenarioId) { + TestPlanApiScenario planApiScenario = testPlanApiScenarioMapper.selectByPrimaryKey(planScenarioId); + if (planApiScenario != null) { + return planApiScenario.getApiScenarioId(); + } + return planScenarioId; + } } diff --git a/api-test/backend/src/main/java/io/metersphere/service/scenario/ApiScenarioReportService.java b/api-test/backend/src/main/java/io/metersphere/service/scenario/ApiScenarioReportService.java index 130f6ca8b3..a99f661973 100644 --- a/api-test/backend/src/main/java/io/metersphere/service/scenario/ApiScenarioReportService.java +++ b/api-test/backend/src/main/java/io/metersphere/service/scenario/ApiScenarioReportService.java @@ -316,7 +316,6 @@ public class ApiScenarioReportService { public ApiScenarioReport updateSchedulePlanCase(ResultDTO dto) { List testPlanReportIdList = new ArrayList<>(); - StringBuilder scenarioNames = new StringBuilder(); String status = ReportStatusUtil.getStatus(dto); ApiScenarioReportWithBLOBs report = editReport(dto.getReportType(), dto.getReportId(), status, dto.getRunMode()); @@ -326,19 +325,14 @@ public class ApiScenarioReportService { } TestPlanApiScenario testPlanApiScenario = testPlanApiScenarioMapper.selectByPrimaryKey(dto.getTestId()); if (testPlanApiScenario != null) { - report.setScenarioId(testPlanApiScenario.getApiScenarioId()); - report.setEndTime(System.currentTimeMillis()); - apiScenarioReportMapper.updateByPrimaryKeySelective(report); testPlanApiScenario.setLastResult(report.getStatus()); long successSize = dto.getRequestResults().stream().filter(requestResult -> StringUtils.equalsIgnoreCase(requestResult.getStatus(), ApiReportStatus.SUCCESS.name())).count(); String passRate = new DecimalFormat("0%").format((float) successSize / dto.getRequestResults().size()); testPlanApiScenario.setPassRate(passRate); testPlanApiScenario.setReportId(report.getId()); - report.setEndTime(System.currentTimeMillis()); testPlanApiScenario.setUpdateTime(System.currentTimeMillis()); testPlanApiScenarioMapper.updateByPrimaryKeySelective(testPlanApiScenario); - scenarioNames.append(report.getName()).append(","); // 更新场景状态 ApiScenario scenario = apiScenarioMapper.selectByPrimaryKey(testPlanApiScenario.getApiScenarioId()); diff --git a/api-test/frontend/src/api/test-plan.js b/api-test/frontend/src/api/test-plan.js index 1a2156e74d..3941a5028f 100644 --- a/api-test/frontend/src/api/test-plan.js +++ b/api-test/frontend/src/api/test-plan.js @@ -9,3 +9,7 @@ export function getPlanStageOption() { export function planPage(page, pageSize, params) { return post('/test/plan/list/all/', params); } + +export function getApiScenarioIdByPlanScenarioId(id) { + return get('/test/plan/scenario/case/get-scenario-id/' + id); +} diff --git a/api-test/frontend/src/business/automation/report/ApiReportViewHeader.vue b/api-test/frontend/src/business/automation/report/ApiReportViewHeader.vue index be447f09c6..ec7f97b842 100644 --- a/api-test/frontend/src/business/automation/report/ApiReportViewHeader.vue +++ b/api-test/frontend/src/business/automation/report/ApiReportViewHeader.vue @@ -85,6 +85,7 @@ import MsTag from "metersphere-frontend/src/components/MsTag"; import {getProjectApplicationConfig} from "../../../api/project"; import {apiTestReRun} from "../../../api/xpack"; import {getUUID} from "metersphere-frontend/src/utils"; +import {getApiScenarioIdByPlanScenarioId} from "@/api/test-plan"; export default { name: "MsApiReportViewHeader", @@ -151,6 +152,17 @@ export default { $event.target.blur(); }, redirect() { + let resourceId = this.scenarioId; + if (this.isPlan) { + getApiScenarioIdByPlanScenarioId(this.scenarioId).then((res) => { + resourceId = res.data; + this.showDetails(resourceId); + }); + } else { + this.showDetails(resourceId); + } + }, + showDetails(resourceId) { let uuid = getUUID().substring(1, 5); let projectId = getCurrentProjectID(); let workspaceId = getCurrentWorkspaceId(); @@ -159,7 +171,7 @@ export default { && this.$route.query && this.$route.query.list) { prefix = "" } - let path = `${prefix}/api/automation/?redirectID=${uuid}&dataType=scenario&projectId=${projectId}&workspaceId=${workspaceId}&resourceId=${this.scenarioId}`; + let path = `${prefix}/api/automation/?redirectID=${uuid}&dataType=scenario&projectId=${projectId}&workspaceId=${workspaceId}&resourceId=${resourceId}`; let data = this.$router.resolve({ path: path });