From 35462667e3ebc1b025b51a1309e9950d81513038 Mon Sep 17 00:00:00 2001 From: "song.tianyang" Date: Thu, 24 Dec 2020 13:20:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A6=96=E9=A1=B5-=E8=BF=87=E5=8E=BB?= =?UTF-8?q?=E4=B8=83=E5=A4=A9=E5=A4=B1=E8=B4=A5=E7=94=A8=E4=BE=8B=E6=95=B0?= =?UTF-8?q?=E9=87=8F=E6=9F=A5=E8=AF=A2=E9=80=9F=E5=BA=A6=E8=BF=87=E6=85=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复首页-过去七天失败用例数量查询速度过慢的问题 --- .../datacount/response/ApiDataCountDTO.java | 6 ++--- .../api/jmeter/APIBackendListenerClient.java | 25 +++++++++++-------- .../ext/ExtApiDefinitionExecResultMapper.xml | 2 +- .../mapper/ext/ExtApiScenarioReportMapper.xml | 8 +++--- .../base/mapper/ext/ExtScheduleMapper.xml | 12 ++++----- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/dto/datacount/response/ApiDataCountDTO.java b/backend/src/main/java/io/metersphere/api/dto/datacount/response/ApiDataCountDTO.java index 4f9d9e16d6..1ed49369c7 100644 --- a/backend/src/main/java/io/metersphere/api/dto/datacount/response/ApiDataCountDTO.java +++ b/backend/src/main/java/io/metersphere/api/dto/datacount/response/ApiDataCountDTO.java @@ -188,11 +188,11 @@ public class ApiDataCountDTO { for (ApiDataCountResult countResult : allExecuteResult) { if("Success".equals(countResult.getGroupField())){ this.successCount+= countResult.getCountNumber(); - }else if("Error".equals(countResult.getGroupField())){ + this.executedCount+= countResult.getCountNumber(); + }else if("Error".equals(countResult.getGroupField())||"Fail".equals(countResult.getGroupField())){ this.failedCount+= countResult.getCountNumber(); + this.executedCount+= countResult.getCountNumber(); } - - this.executedCount+= countResult.getCountNumber(); } } } diff --git a/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java b/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java index 237de40e9f..1d5cb3e351 100644 --- a/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java +++ b/backend/src/main/java/io/metersphere/api/jmeter/APIBackendListenerClient.java @@ -179,28 +179,31 @@ public class APIBackendListenerClient extends AbstractBackendListenerClient impl testResult.setTestId(testId); ApiScenarioReport scenarioReport = apiScenarioReportService.complete(testResult, this.runMode); - report = new ApiTestReport(); report.setStatus(scenarioReport.getStatus()); report.setId(scenarioReport.getId()); report.setTriggerMode(scenarioReport.getTriggerMode()); report.setName(scenarioReport.getName()); - SystemParameterService systemParameterService = CommonBeanFactory.getBean(SystemParameterService.class); assert systemParameterService != null; BaseSystemConfigDTO baseSystemConfigDTO = systemParameterService.getBaseInfo(); reportUrl = baseSystemConfigDTO.getUrl() + "/#/api/automation/report"; - - String scenaName = scenarioReport.getName(); - if(scenaName==null){ + String scenaName = scenarioReport.getName(); + if (scenaName == null) { scenaName = ""; - }else { - scenaName = scenaName.split("-")[0]; + } else { + String[] sceneNameArr = scenaName.split("-"); + if (sceneNameArr.length >= 4) { + String endStr = "-" + sceneNameArr[sceneNameArr.length - 3] + "-" + sceneNameArr[sceneNameArr.length - 2] + "-" + sceneNameArr[sceneNameArr.length - 1]; + scenaName = scenaName.split(endStr)[0]; + } else { + scenaName = scenaName.split("-")[0]; + } } - String scenarioID = apiScenarioReportService.getApiScenarioId(scenaName,scenarioReport.getProjectId()); + String scenarioID = apiScenarioReportService.getApiScenarioId(scenaName, scenarioReport.getProjectId()); testResult.setTestId(scenarioID); } else { apiTestService.changeStatus(testId, APITestStatus.Completed); @@ -224,14 +227,14 @@ public class APIBackendListenerClient extends AbstractBackendListenerClient impl } } try { - sendTask(report,reportUrl, testResult); + sendTask(report, reportUrl, testResult); } catch (Exception e) { LogUtil.error(e.getMessage(), e); } } - private static void sendTask(ApiTestReport report,String reportUrl, TestResult testResult) { + private static void sendTask(ApiTestReport report, String reportUrl, TestResult testResult) { SystemParameterService systemParameterService = CommonBeanFactory.getBean(SystemParameterService.class); NoticeSendService noticeSendService = CommonBeanFactory.getBean(NoticeSendService.class); assert systemParameterService != null; @@ -239,7 +242,7 @@ public class APIBackendListenerClient extends AbstractBackendListenerClient impl BaseSystemConfigDTO baseSystemConfigDTO = systemParameterService.getBaseInfo(); String url = reportUrl; - if(StringUtils.isEmpty(url)){ + if (StringUtils.isEmpty(url)) { url = baseSystemConfigDTO.getUrl() + "/#/api/report/view/" + report.getId(); } String successContext = ""; diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionExecResultMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionExecResultMapper.xml index 6d66b45840..a9a3e67c11 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionExecResultMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionExecResultMapper.xml @@ -53,7 +53,7 @@ SELECT scene.`name` AS caseName,apiScene.testPlanName AS testPlan,count(report.id) AS failureTimes,'scenario' AS caseType FROM api_scenario_report report INNER JOIN api_scenario_report_detail reportDetail ON report.id = reportDetail.report_id - INNER JOIN api_scenario scene ON reportDetail.content like concat('%"', scene.`name`,'"%') + INNER JOIN api_scenario scene ON report.scenario_id = scene.id LEFT JOIN ( SELECT diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioReportMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioReportMapper.xml index 7eeac83c3e..5ad0ad5a92 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioReportMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiScenarioReportMapper.xml @@ -179,8 +179,8 @@ SELECT count(acr.report_id) AS countNumber FROM api_scenario_report_detail acr INNER JOIN api_scenario_report ar ON ar.id = acr.report_id INNER JOIN ( - SELECT acitem.`name` FROM api_scenario acitem INNER JOIN `schedule` sc ON acitem.id = sc.resource_id - ) ac on acr.content like CONCAT('%"', ac.`name`,'"%') + SELECT acitem.`name`,acitem.id FROM api_scenario acitem INNER JOIN `schedule` sc ON acitem.id = sc.resource_id + ) ac on ar.scenario_id = ac.id WHERE acr.project_id = #{projectId} AND ar.create_time BETWEEN #{firstDayTimestamp} AND #{lastDayTimestamp} @@ -189,8 +189,8 @@ FROM api_scenario_report_detail acr INNER JOIN api_scenario_report ar ON ar.id = acr.report_id INNER JOIN ( - SELECT acitem.`name` FROM api_scenario acitem INNER JOIN `schedule` sc ON acitem.id = sc.resource_id - ) ac on acr.content like CONCAT('%"', ac.`name`,'"%') + SELECT acitem.`name`,acitem.id FROM api_scenario acitem INNER JOIN `schedule` sc ON acitem.id = sc.resource_id + ) ac on ar.scenario_id = ac.id WHERE acr.project_id = #{projectId} \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtScheduleMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtScheduleMapper.xml index 77d343086c..9134566d53 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtScheduleMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtScheduleMapper.xml @@ -38,17 +38,17 @@ @@ -61,8 +61,8 @@ UNION SELECT apiScene.`name` AS scenario,sch.id AS taskID,sch.`value` AS rule,sch.`enable` AS `taskStatus`,u.`name` AS creator,sch.update_time AS updateTime FROM api_scenario apiScene - INNER JOIN `schedule` sch ON apiScene.id = sch.resource_id - INNER JOIN `user` u ON u.id = sch.user_id + INNER JOIN `schedule` sch ON apiScene.id = sch.resource_id + INNER JOIN `user` u ON u.id = sch.user_id WHERE sch.`enable` = true AND apiScene.project_id = #{0,jdbcType=VARCHAR} \ No newline at end of file