diff --git a/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java new file mode 100644 index 0000000000..1a0817ce65 --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/domain/ReportResultAdvancedChartComponent.java @@ -0,0 +1,60 @@ +package io.metersphere.track.domain; + +import io.metersphere.commons.constants.TestPlanTestCaseStatus; +import io.metersphere.track.dto.TestCaseReportMetricDTO; +import io.metersphere.track.dto.TestCaseReportStatusResultDTO; +import io.metersphere.track.dto.TestPlanCaseDTO; +import io.metersphere.track.dto.TestPlanDTO; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ReportResultChartComponent extends ReportComponent { + Map reportStatusResultMap = new HashMap<>(); + + public ReportResultChartComponent(TestPlanDTO testPlan) { + super(testPlan); + componentId = "3"; + } + + + @Override + public void readRecord(TestPlanCaseDTO testCase) { + getStatusResultMap(reportStatusResultMap, testCase); + } + + @Override + public void afterBuild(TestCaseReportMetricDTO testCaseReportMetric) { + testCaseReportMetric.setExecuteResult(getReportStatusResult()); + } + + private List getReportStatusResult() { + List reportStatusResult = new ArrayList<>(); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Pass.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Failure.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Blocking.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Skip.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Underway.name()); + addToReportStatusResultList(reportStatusResult, TestPlanTestCaseStatus.Prepare.name()); + return reportStatusResult; + } + + private void addToReportStatusResultList(List reportStatusResultList, String status) { + if (reportStatusResultMap.get(status) != null) { + reportStatusResultList.add(reportStatusResultMap.get(status)); + } + } + + private void getStatusResultMap(Map reportStatusResultMap, TestPlanCaseDTO testCase) { + TestCaseReportStatusResultDTO statusResult = reportStatusResultMap.get(testCase.getStatus()); + if (statusResult == null) { + statusResult = new TestCaseReportStatusResultDTO(); + statusResult.setStatus(testCase.getStatus()); + statusResult.setCount(0); + } + statusResult.setCount(statusResult.getCount() + 1); + reportStatusResultMap.put(testCase.getStatus(), statusResult); + } +} diff --git a/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java new file mode 100644 index 0000000000..ea29555e7c --- /dev/null +++ b/backend/src/main/java/io/metersphere/track/dto/TestCaseReportAdvanceStatusResultDTO.java @@ -0,0 +1,12 @@ +package io.metersphere.track.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class TestCaseReportStatusResultDTO { + private String status; + private Integer count; +} + diff --git a/frontend/src/business/components/track/plan/view/TestPlanView.vue b/frontend/src/business/components/track/plan/view/TestPlanView.vue index 88124974bb..70b0a19033 100644 --- a/frontend/src/business/components/track/plan/view/TestPlanView.vue +++ b/frontend/src/business/components/track/plan/view/TestPlanView.vue @@ -14,11 +14,13 @@ class="el-menu-demo header-menu" mode="horizontal" @select="handleSelect"> 功能测试用例 接口测试用例 + 报告统计 + @@ -35,10 +37,12 @@ import MsTestPlanHeaderBar from "./comonents/head/TestPlanHeaderBar"; import TestPlanFunctional from "./comonents/functional/TestPlanFunctional"; import TestPlanApi from "./comonents/api/TestPlanApi"; + import TestCaseStatisticsReportView from "./comonents/report/statistics/TestCaseStatisticsReportView"; export default { name: "TestPlanView", components: { + TestCaseStatisticsReportView, TestPlanApi, TestPlanFunctional, MsTestPlanHeaderBar, diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue index a43d582dae..114fc20ca9 100644 --- a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TemplateComponent.vue @@ -5,7 +5,8 @@
- + + @@ -15,7 +16,8 @@
- + + @@ -32,10 +34,12 @@ import FailureResultComponent from "./FailureResultComponent"; import DefectListComponent from "./DefectListComponent"; import html2canvas from 'html2canvas'; + import TestResultAdvanceChartComponent from "./TestResultAdvanceChartComponent"; export default { name: "TemplateComponent", components: { + TestResultAdvanceChartComponent, FailureResultComponent,DefectListComponent, RichTextComponent, TestResultChartComponent, TestResultComponent, BaseInfoComponent}, props: { diff --git a/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue new file mode 100644 index 0000000000..a913852b38 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/TemplateComponent/TestResultAdvanceChartComponent.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue new file mode 100644 index 0000000000..27bdee8af1 --- /dev/null +++ b/frontend/src/business/components/track/plan/view/comonents/report/statistics/TestCaseStatisticsReportView.vue @@ -0,0 +1,252 @@ + + +cd + + diff --git a/frontend/src/business/components/xpack b/frontend/src/business/components/xpack index a22a3005d9..010ad7a5f0 160000 --- a/frontend/src/business/components/xpack +++ b/frontend/src/business/components/xpack @@ -1 +1 @@ -Subproject commit a22a3005d9bd254793fcf634d72539cbdf31be3a +Subproject commit 010ad7a5f072a5e9d368c756a2473bbd20781433