From facb132f916a7ccbe40481dc2ddaf8738338d994 Mon Sep 17 00:00:00 2001 From: fit2-zhao Date: Thu, 1 Jul 2021 10:55:54 +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=B7=9F=E8=B8=AA=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=E6=89=A7=E8=A1=8C=E7=BB=93=E6=9E=9C=E6=89=BE=E4=B8=8D?= =?UTF-8?q?=E5=88=B0=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiDefinitionExecResultService.java | 70 ++++++++++--------- .../base/mapper/ext/ExtTaskMapper.xml | 11 +-- .../metersphere/task/service/TaskService.java | 8 +++ .../track/service/TestPlanApiCaseService.java | 8 +-- 4 files changed, 55 insertions(+), 42 deletions(-) diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java index cb9f1f61f9..cc39c78407 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionExecResultService.java @@ -74,17 +74,6 @@ public class ApiDefinitionExecResultService { saveResult.setName(item.getName()); saveResult.setTriggerMode(triggerMode); saveResult.setType(type); - if (!StringUtils.equals(type, ApiRunMode.API_PLAN.name())) { - ApiDefinition apiDefinition = apiDefinitionMapper.selectByPrimaryKey(item.getName()); - if (apiDefinition != null) { - saveResult.setName(apiDefinition.getName()); - } else { - ApiTestCaseWithBLOBs caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(item.getName()); - if (caseWithBLOBs != null) { - saveResult.setName(caseWithBLOBs.getName()); - } - } - } if (StringUtils.isNotEmpty(result.getUserId())) { saveResult.setUserId(result.getUserId()); } else { @@ -92,34 +81,14 @@ public class ApiDefinitionExecResultService { } saved = false; } + String status = item.isSuccess() ? "success" : "error"; + saveResult.setName(getName(type, item.getName(), status, saveResult.getCreateTime())); + saveResult.setStatus(status); saveResult.setCreateTime(item.getStartTime()); - if (item.getName().indexOf(DelimiterConstants.SEPARATOR.toString()) != -1) { - saveResult.setName(item.getName().substring(0, item.getName().indexOf(DelimiterConstants.SEPARATOR.toString()))); - } saveResult.setResourceId(item.getName()); saveResult.setContent(JSON.toJSONString(item)); saveResult.setStartTime(item.getStartTime()); - String status = item.isSuccess() ? "success" : "error"; saveResult.setEndTime(item.getResponseResult().getResponseTime()); - saveResult.setStatus(status); - if (StringUtils.equals(type, ApiRunMode.API_PLAN.name())) { - TestPlanApiCase testPlanApiCase = testPlanApiCaseService.getById(item.getName()); - String id = null; - if (testPlanApiCase != null) { - testPlanApiCaseService.setExecResult(item.getName(), status, item.getStartTime()); - id = testPlanApiCase.getApiCaseId(); - } - TestCaseReviewApiCase testCaseReviewApiCase = testCaseReviewApiCaseMapper.selectByPrimaryKey(item.getName()); - if (testCaseReviewApiCase != null) { - testCaseReviewApiCaseService.setExecResult(item.getName(), status, item.getStartTime()); - id = testCaseReviewApiCase.getApiCaseId(); - } - ApiTestCaseWithBLOBs caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(id); - if (caseWithBLOBs != null) { - saveResult.setName(caseWithBLOBs.getName()); - saveResult.setResourceId(id); - } - } // 清空上次执行结果的内容,只保留当前最新一条内容 ApiDefinitionExecResult prevResult = extApiDefinitionExecResultMapper.selectMaxResultByResourceIdAndType(item.getName(), type); @@ -145,6 +114,39 @@ public class ApiDefinitionExecResultService { } } + private String getName(String type, String id, String status, Long time) { + if (id.indexOf(DelimiterConstants.SEPARATOR.toString()) != -1) { + return id.substring(0, id.indexOf(DelimiterConstants.SEPARATOR.toString())); + } + if (StringUtils.equals(type, ApiRunMode.API_PLAN.name())) { + TestPlanApiCase testPlanApiCase = testPlanApiCaseService.getById(id); + ApiTestCaseWithBLOBs caseWithBLOBs = null; + if (testPlanApiCase != null) { + testPlanApiCaseService.setExecResult(id, status, time); + caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(testPlanApiCase.getApiCaseId()); + } + TestCaseReviewApiCase testCaseReviewApiCase = testCaseReviewApiCaseMapper.selectByPrimaryKey(id); + if (testCaseReviewApiCase != null) { + testCaseReviewApiCaseService.setExecResult(id, status, time); + caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(testCaseReviewApiCase.getApiCaseId()); + } + if (caseWithBLOBs != null) { + return caseWithBLOBs.getName(); + } + } else { + ApiDefinition apiDefinition = apiDefinitionMapper.selectByPrimaryKey(id); + if (apiDefinition != null) { + return apiDefinition.getName(); + } else { + ApiTestCaseWithBLOBs caseWithBLOBs = apiTestCaseMapper.selectByPrimaryKey(id); + if (caseWithBLOBs != null) { + return caseWithBLOBs.getName(); + } + } + } + return id; + } + /** * 定时任务触发的保存逻辑 * 定时任务时,userID要改为定时任务中的用户 diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTaskMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTaskMapper.xml index f71d943de0..4e24d35fb0 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTaskMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTaskMapper.xml @@ -16,9 +16,11 @@ ) UNION ALL (select t.id,t.name,'API' as executionModule, ifnull(t2.name,'LOCAL') as actuator, t1.`name` as executor,t.create_time as executionTime, ifnull(t.trigger_mode,'MANUAL') as triggerMode ,ifnull(t.status,'Saved') as executionStatus - from api_definition_exec_result t left join `user` t1 ON t.user_id = t1.id left join test_resource_pool t2 on t.actuator = t2.id - left join api_definition t3 on t.resource_id = t3.id left join api_test_case t4 on t4.id = t.resource_id - where to_days(FROM_UNIXTIME(t.create_time/1000))= to_days(now()) and (t3.project_id =#{request.projectId} OR t4.project_id =#{request.projectId}) + from api_definition_exec_result t left join `user` t1 ON t.user_id = t1.id left join test_resource_pool t2 on t.actuator = t2.id + left join api_definition t3 on t.resource_id = t3.id left join api_test_case t4 on t4.id = t.resource_id + left join test_plan_api_case t5 on t.resource_id = t5.id left join test_plan t6 on t5.test_plan_id = t6.id + where to_days(FROM_UNIXTIME(t.create_time/1000))= to_days(now()) and + (t3.project_id =#{request.projectId} OR t4.project_id =#{request.projectId} OR t6.project_id = #{request.projectId}) and t.trigger_mode = #{request.triggerMode} @@ -51,7 +53,8 @@ (select t.id,t.create_time as executionTime from api_definition_exec_result t left join `user` t1 ON t.user_id = t1.id left join test_resource_pool t2 on t.actuator = t2.id left join api_definition t3 on t.resource_id = t3.id left join api_test_case t4 on t4.id = t.resource_id - where to_days(FROM_UNIXTIME(t.create_time/1000))= to_days(now()) and (t3.project_id =#{request.projectId} OR t4.project_id =#{request.projectId}) and t.status not in ("saved","completed","success","error") + left join test_plan_api_case t5 on t.resource_id = t5.id left join test_plan t6 on t5.test_plan_id = t6.id + where to_days(FROM_UNIXTIME(t.create_time/1000))= to_days(now()) and (t3.project_id =#{request.projectId} OR t4.project_id =#{request.projectId} OR t6.project_id = #{request.projectId}) and t.status not in ("saved","completed","success","error") ) UNION ALL (select t.id,t.create_time as executionTime diff --git a/backend/src/main/java/io/metersphere/task/service/TaskService.java b/backend/src/main/java/io/metersphere/task/service/TaskService.java index e870c17cc1..7618f8cfb0 100644 --- a/backend/src/main/java/io/metersphere/task/service/TaskService.java +++ b/backend/src/main/java/io/metersphere/task/service/TaskService.java @@ -3,9 +3,11 @@ package io.metersphere.task.service; import io.metersphere.base.mapper.ext.ExtTaskMapper; import io.metersphere.task.dto.TaskCenterDTO; import io.metersphere.task.dto.TaskCenterRequest; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.List; @Service @@ -14,10 +16,16 @@ public class TaskService { private ExtTaskMapper extTaskMapper; public List getTasks(TaskCenterRequest request) { + if (StringUtils.isEmpty(request.getProjectId())) { + return new ArrayList<>(); + } return extTaskMapper.getTasks(request); } public List getRunningTasks(TaskCenterRequest request) { + if (StringUtils.isEmpty(request.getProjectId())) { + return new ArrayList<>(); + } return extTaskMapper.getRunningTasks(request); } diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java index 31de746f55..a8845dc7a7 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanApiCaseService.java @@ -271,7 +271,7 @@ public class TestPlanApiCaseService { if (element.getString("type").equals("HTTPSamplerProxy")) { MsHTTPSamplerProxy httpSamplerProxy = JSON.parseObject(api, MsHTTPSamplerProxy.class); httpSamplerProxy.setHashTree(list); - httpSamplerProxy.setName(caseWithBLOBs.getId()); + httpSamplerProxy.setName(planId); httpSamplerProxy.setUseEnvironment(apiCase.getEnvironmentId()); return httpSamplerProxy; } @@ -279,21 +279,21 @@ public class TestPlanApiCaseService { MsTCPSampler msTCPSampler = JSON.parseObject(api, MsTCPSampler.class); msTCPSampler.setUseEnvironment(apiCase.getEnvironmentId()); msTCPSampler.setHashTree(list); - msTCPSampler.setName(caseWithBLOBs.getId()); + msTCPSampler.setName(planId); return msTCPSampler; } if (element.getString("type").equals("DubboSampler")) { MsDubboSampler dubboSampler = JSON.parseObject(api, MsDubboSampler.class); dubboSampler.setUseEnvironment(apiCase.getEnvironmentId()); dubboSampler.setHashTree(list); - dubboSampler.setName(caseWithBLOBs.getId()); + dubboSampler.setName(planId); return dubboSampler; } if (element.getString("type").equals("JDBCSampler")) { MsJDBCSampler jDBCSampler = JSON.parseObject(api, MsJDBCSampler.class); jDBCSampler.setUseEnvironment(apiCase.getEnvironmentId()); jDBCSampler.setHashTree(list); - jDBCSampler.setName(caseWithBLOBs.getId()); + jDBCSampler.setName(planId); return jDBCSampler; } } catch (Exception e) {