fix(测试计划): 修复测试计划左侧树没有刷新项目的问题

--bug=1008264 --user=刘瑞斌 【测试计划】-关联其他项目的性能测试后左侧列表不显示新增其他项目列表 https://www.tapd.cn/55049933/s/1074652
This commit is contained in:
CaptainB 2021-11-24 18:49:55 +08:00 committed by 刘瑞斌
parent 13e8551257
commit 7d7f207d37
5 changed files with 64 additions and 18 deletions

View File

@ -20,6 +20,7 @@ import io.metersphere.dto.LoadTestDTO;
import io.metersphere.dto.ScheduleDao; import io.metersphere.dto.ScheduleDao;
import io.metersphere.log.annotation.MsAuditLog; import io.metersphere.log.annotation.MsAuditLog;
import io.metersphere.notice.annotation.SendNotice; import io.metersphere.notice.annotation.SendNotice;
import io.metersphere.performance.dto.LoadModuleDTO;
import io.metersphere.performance.dto.LoadTestExportJmx; import io.metersphere.performance.dto.LoadTestExportJmx;
import io.metersphere.performance.request.*; import io.metersphere.performance.request.*;
import io.metersphere.performance.service.PerformanceTestService; import io.metersphere.performance.service.PerformanceTestService;
@ -249,7 +250,12 @@ public class PerformanceTestController {
} }
@PostMapping("test/update/follows/{testId}") @PostMapping("test/update/follows/{testId}")
public void saveFollows(@PathVariable String testId,@RequestBody List<String> follows) { public void saveFollows(@PathVariable String testId, @RequestBody List<String> follows) {
performanceTestService.saveFollows(testId,follows); performanceTestService.saveFollows(testId, follows);
}
@GetMapping("module/list/plan/{planId}")
public List<LoadModuleDTO> getNodeByPlanId(@PathVariable String planId) {
return performanceTestService.getNodeByPlanId(planId);
} }
} }

View File

@ -0,0 +1,10 @@
package io.metersphere.performance.dto;
import io.metersphere.track.dto.TreeNodeDTO;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class LoadModuleDTO extends TreeNodeDTO<LoadModuleDTO> {
}

View File

@ -32,6 +32,7 @@ import io.metersphere.log.vo.DetailColumn;
import io.metersphere.log.vo.OperatingLogDetails; import io.metersphere.log.vo.OperatingLogDetails;
import io.metersphere.log.vo.performance.PerformanceReference; import io.metersphere.log.vo.performance.PerformanceReference;
import io.metersphere.performance.base.GranularityData; import io.metersphere.performance.base.GranularityData;
import io.metersphere.performance.dto.LoadModuleDTO;
import io.metersphere.performance.dto.LoadTestExportJmx; import io.metersphere.performance.dto.LoadTestExportJmx;
import io.metersphere.performance.engine.Engine; import io.metersphere.performance.engine.Engine;
import io.metersphere.performance.engine.EngineFactory; import io.metersphere.performance.engine.EngineFactory;
@ -40,8 +41,10 @@ import io.metersphere.service.ApiPerformanceService;
import io.metersphere.service.FileService; import io.metersphere.service.FileService;
import io.metersphere.service.QuotaService; import io.metersphere.service.QuotaService;
import io.metersphere.service.ScheduleService; import io.metersphere.service.ScheduleService;
import io.metersphere.track.request.testplan.LoadCaseRequest;
import io.metersphere.track.service.TestCaseService; import io.metersphere.track.service.TestCaseService;
import io.metersphere.track.service.TestPlanLoadCaseService; import io.metersphere.track.service.TestPlanLoadCaseService;
import io.metersphere.track.service.TestPlanProjectService;
import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.session.ExecutorType; import org.apache.ibatis.session.ExecutorType;
@ -112,6 +115,10 @@ public class PerformanceTestService {
private TestPlanLoadCaseService testPlanLoadCaseService; private TestPlanLoadCaseService testPlanLoadCaseService;
@Resource @Resource
private TestPlanLoadCaseMapper testPlanLoadCaseMapper; private TestPlanLoadCaseMapper testPlanLoadCaseMapper;
@Resource
private TestPlanProjectService testPlanProjectService;
@Resource
private ProjectMapper projectMapper;
public List<LoadTestDTO> list(QueryTestPlanRequest request) { public List<LoadTestDTO> list(QueryTestPlanRequest request) {
request.setOrders(ServiceUtils.getDefaultSortOrder(request.getOrders())); request.setOrders(ServiceUtils.getDefaultSortOrder(request.getOrders()));
@ -930,4 +937,26 @@ public class PerformanceTestService {
List<LoadTestFollow> follows = loadTestFollowMapper.selectByExample(example); List<LoadTestFollow> follows = loadTestFollowMapper.selectByExample(example);
return follows.stream().map(LoadTestFollow::getFollowId).distinct().collect(Collectors.toList()); return follows.stream().map(LoadTestFollow::getFollowId).distinct().collect(Collectors.toList());
} }
public List<LoadModuleDTO> getNodeByPlanId(String planId) {
List<LoadModuleDTO> list = new ArrayList<>();
List<String> projectIds = testPlanProjectService.getProjectIdsByPlanId(planId);
projectIds.forEach(id -> {
Project project = projectMapper.selectByPrimaryKey(id);
String name = project.getName();
LoadModuleDTO loadModuleDTO = new LoadModuleDTO();
loadModuleDTO.setId(id);
loadModuleDTO.setName(name);
loadModuleDTO.setLabel(name);
LoadCaseRequest request = new LoadCaseRequest();
request.setProjectId(id);
request.setTestPlanId(planId);
List<String> ids = testPlanLoadCaseService.selectTestPlanLoadCaseIds(request);
if (!CollectionUtils.isEmpty(ids)) {
list.add(loadModuleDTO);
}
});
return list;
}
} }

View File

@ -9,20 +9,20 @@
</template> </template>
<template v-slot:main> <template v-slot:main>
<test-plan-load-case-list <test-plan-load-case-list
class="table-list" class="table-list"
@refresh="refresh" @refresh="refresh"
:plan-id="planId" :plan-id="planId"
:clickType="clickType" :clickType="clickType"
:select-project-id="selectProjectId" :select-project-id="selectProjectId"
:select-parent-nodes="selectParentNodes" :select-parent-nodes="selectParentNodes"
@relevanceCase="openTestCaseRelevanceDialog" @relevanceCase="openTestCaseRelevanceDialog"
ref="testPlanLoadCaseList"/> ref="testPlanLoadCaseList"/>
</template> </template>
<test-case-load-relevance <test-case-load-relevance
@refresh="refresh" @refresh="refresh"
:plan-id="planId" :plan-id="planId"
ref="testCaseLoadRelevance"/> ref="testCaseLoadRelevance"/>
</ms-test-plan-common-component> </ms-test-plan-common-component>
</template> </template>
@ -49,7 +49,7 @@ export default {
selectParentNodes: [], selectParentNodes: [],
selectProjectId: "", selectProjectId: "",
treeNodes: [], treeNodes: [],
} };
}, },
props: [ props: [
'planId', 'planId',
@ -85,15 +85,13 @@ export default {
}, },
getNodeTreeByPlanId() { getNodeTreeByPlanId() {
if (this.planId) { if (this.planId) {
this.result = this.$get("/case/node/list/plan/" + this.planId, response => { this.result = this.$get("/performance/module/list/plan/" + this.planId, response => {
this.treeNodes = response.data; this.treeNodes = response.data;
//
this.treeNodes.map(node => node.children = null);
}); });
} }
}, },
} }
} };
</script> </script>
<style scoped> <style scoped>

View File

@ -305,6 +305,9 @@ export default {
if (this.selectProjectId && this.selectProjectId !== 'root') { if (this.selectProjectId && this.selectProjectId !== 'root') {
this.condition.projectId = this.selectProjectId; this.condition.projectId = this.selectProjectId;
} }
if (this.selectProjectId === 'root') {
this.condition.projectId = null;
}
if (this.clickType) { if (this.clickType) {
if (this.status == 'default') { if (this.status == 'default') {
this.condition.status = this.clickType; this.condition.status = this.clickType;