fix(测试跟踪): 功能用例-公用用例模块展示问题优化
--bug=1013830 --user=宋昌昌 【测试跟踪】切换到公共用例模块 左侧模块列表未展开;加载响应时间需要优化 https://www.tapd.cn/55049933/s/1184061
This commit is contained in:
parent
40609eb8f9
commit
12257242bc
|
@ -26,6 +26,8 @@ public interface ExtTestCaseMapper {
|
||||||
|
|
||||||
int moduleCount(@Param("request") QueryTestCaseRequest request);
|
int moduleCount(@Param("request") QueryTestCaseRequest request);
|
||||||
|
|
||||||
|
List<String> getPublicProjectIdByWorkSpaceId(@Param("request") QueryTestCaseRequest request);
|
||||||
|
|
||||||
List<TestCaseDTO> listByMethod(@Param("request") QueryTestCaseRequest request);
|
List<TestCaseDTO> listByMethod(@Param("request") QueryTestCaseRequest request);
|
||||||
|
|
||||||
List<TestCaseDTO> listByTestCaseIds(@Param("request") TestCaseBatchRequest request);
|
List<TestCaseDTO> listByTestCaseIds(@Param("request") TestCaseBatchRequest request);
|
||||||
|
|
|
@ -261,68 +261,19 @@
|
||||||
project on test_case.project_id = project.id
|
project on test_case.project_id = project.id
|
||||||
left join project_version on project.id = project_version.project_id and project_version.id =
|
left join project_version on project.id = project_version.project_id and project_version.id =
|
||||||
test_case.version_id
|
test_case.version_id
|
||||||
<where>
|
<include refid="queryPublicCaseWhere"></include>
|
||||||
<include refid="filters"/>
|
|
||||||
<if test="request.combine != null">
|
|
||||||
<include refid="combine">
|
|
||||||
<property name="condition" value="request.combine"/>
|
|
||||||
<property name="name" value="request.name"/>
|
|
||||||
<property name="objectKey" value="request.combine.tags"/>
|
|
||||||
</include>
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="request.statusIsNot != null">
|
|
||||||
and (test_case.status is null or test_case.status != #{request.statusIsNot})
|
|
||||||
</if>
|
|
||||||
|
|
||||||
<if test="request.notEqStatus != null">
|
|
||||||
and (test_case.status is null or test_case.status != #{request.notEqStatus})
|
|
||||||
</if>
|
|
||||||
<if test="request.name != null">
|
|
||||||
and (test_case.name like CONCAT('%', #{request.name},'%')
|
|
||||||
or test_case.num like CONCAT('%', #{request.name},'%')
|
|
||||||
or test_case.tags like CONCAT('%', #{request.name},'%')
|
|
||||||
or test_case.custom_num like CONCAT('%', #{request.name},'%'))
|
|
||||||
</if>
|
|
||||||
<if test="request.ids != null">
|
|
||||||
and test_case.id in
|
|
||||||
<foreach collection="request.ids" item="id" separator="," open="(" close=")">
|
|
||||||
#{id}
|
|
||||||
</foreach>
|
|
||||||
</if>
|
|
||||||
<if test="request.relevanceCreateTime >0">
|
|
||||||
and test_case.id in (select test_case_id from test_case_test where test_case_test.create_time >=
|
|
||||||
#{request.createTime})
|
|
||||||
</if>
|
|
||||||
<if test="request.createTime >0">
|
|
||||||
and test_case.create_time >= #{request.createTime}
|
|
||||||
</if>
|
|
||||||
<if test="request.nodeIds != null and request.nodeIds.size() > 0">
|
|
||||||
and test_case.node_id in
|
|
||||||
<foreach collection="request.nodeIds" item="nodeId" separator="," open="(" close=")">
|
|
||||||
#{nodeId}
|
|
||||||
</foreach>
|
|
||||||
</if>
|
|
||||||
<if test="request.workspaceId != null">
|
|
||||||
AND test_case.project_id in (select id from project where workspace_id=#{request.workspaceId})
|
|
||||||
</if>
|
|
||||||
and test_case.case_public = TRUE
|
|
||||||
<include refid="filters"/>
|
|
||||||
<if test="request.caseCoverage == 'uncoverage' ">
|
|
||||||
and test_case.id not in (select distinct test_case_test.test_case_id from test_case_test)
|
|
||||||
</if>
|
|
||||||
<if test="request.caseCoverage == 'coverage' ">
|
|
||||||
and test_case.id in (select distinct test_case_test.test_case_id from test_case_test)
|
|
||||||
</if>
|
|
||||||
<include refid="queryVersionCondition">
|
|
||||||
<property name="versionTable" value="test_case"/>
|
|
||||||
</include>
|
|
||||||
</where>
|
|
||||||
|
|
||||||
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
|
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getPublicProjectIdByWorkSpaceId" resultType="java.lang.String">
|
||||||
|
select
|
||||||
|
distinct test_case.project_id
|
||||||
|
from test_case
|
||||||
|
<include refid="queryPublicCaseWhere"></include>
|
||||||
|
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="moduleCount" resultType="java.lang.Integer">
|
<select id="moduleCount" resultType="java.lang.Integer">
|
||||||
select count(test_case.id) from test_case
|
select count(test_case.id) from test_case
|
||||||
left join project on test_case.project_id = project.id
|
left join project on test_case.project_id = project.id
|
||||||
|
@ -487,6 +438,66 @@
|
||||||
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
|
<include refid="io.metersphere.base.mapper.ext.ExtBaseMapper.orders"/>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<sql id="queryPublicCaseWhere">
|
||||||
|
<where>
|
||||||
|
<include refid="filters"/>
|
||||||
|
<if test="request.combine != null">
|
||||||
|
<include refid="combine">
|
||||||
|
<property name="condition" value="request.combine"/>
|
||||||
|
<property name="name" value="request.name"/>
|
||||||
|
<property name="objectKey" value="request.combine.tags"/>
|
||||||
|
</include>
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.statusIsNot != null">
|
||||||
|
and (test_case.status is null or test_case.status != #{request.statusIsNot})
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="request.notEqStatus != null">
|
||||||
|
and (test_case.status is null or test_case.status != #{request.notEqStatus})
|
||||||
|
</if>
|
||||||
|
<if test="request.name != null">
|
||||||
|
and (test_case.name like CONCAT('%', #{request.name},'%')
|
||||||
|
or test_case.num like CONCAT('%', #{request.name},'%')
|
||||||
|
or test_case.tags like CONCAT('%', #{request.name},'%')
|
||||||
|
or test_case.custom_num like CONCAT('%', #{request.name},'%'))
|
||||||
|
</if>
|
||||||
|
<if test="request.ids != null">
|
||||||
|
and test_case.id in
|
||||||
|
<foreach collection="request.ids" item="id" separator="," open="(" close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="request.relevanceCreateTime >0">
|
||||||
|
and test_case.id in (select test_case_id from test_case_test where test_case_test.create_time >=
|
||||||
|
#{request.createTime})
|
||||||
|
</if>
|
||||||
|
<if test="request.createTime >0">
|
||||||
|
and test_case.create_time >= #{request.createTime}
|
||||||
|
</if>
|
||||||
|
<if test="request.nodeIds != null and request.nodeIds.size() > 0">
|
||||||
|
and test_case.node_id in
|
||||||
|
<foreach collection="request.nodeIds" item="nodeId" separator="," open="(" close=")">
|
||||||
|
#{nodeId}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="request.workspaceId != null">
|
||||||
|
AND test_case.project_id in (select id from project where workspace_id=#{request.workspaceId})
|
||||||
|
</if>
|
||||||
|
and test_case.case_public = TRUE
|
||||||
|
<include refid="filters"/>
|
||||||
|
<if test="request.caseCoverage == 'uncoverage' ">
|
||||||
|
and test_case.id not in (select distinct test_case_test.test_case_id from test_case_test)
|
||||||
|
</if>
|
||||||
|
<if test="request.caseCoverage == 'coverage' ">
|
||||||
|
and test_case.id in (select distinct test_case_test.test_case_id from test_case_test)
|
||||||
|
</if>
|
||||||
|
<include refid="queryVersionCondition">
|
||||||
|
<property name="versionTable" value="test_case"/>
|
||||||
|
</include>
|
||||||
|
</where>
|
||||||
|
</sql>
|
||||||
|
|
||||||
<sql id="filters">
|
<sql id="filters">
|
||||||
<if test="request.filters != null and request.filters.size() > 0">
|
<if test="request.filters != null and request.filters.size() > 0">
|
||||||
<foreach collection="request.filters.entrySet()" index="key" item="values">
|
<foreach collection="request.filters.entrySet()" index="key" item="values">
|
||||||
|
|
|
@ -309,23 +309,16 @@ public class TestCaseNodeService extends NodeTreeService<TestCaseNodeDTO> {
|
||||||
return getNodeTreeWithPruningTree(projectNodeMap);
|
return getNodeTreeWithPruningTree(projectNodeMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TestCaseNodeDTO> getNodeByTestCases(List<TestCaseDTO> testCaseDTOS) {
|
public List<TestCaseNodeDTO> getPublicNodeByProjectNode(List<TestCaseNodeDTO> projectNodes) {
|
||||||
Map<String, List<String>> projectNodeMap = new HashMap<>();
|
|
||||||
for (TestCase testCase : testCaseDTOS) {
|
|
||||||
List<String> nodeIds = Optional.ofNullable(projectNodeMap.get(testCase.getProjectId())).orElse(new ArrayList<>());
|
|
||||||
nodeIds.add(testCase.getNodeId());
|
|
||||||
projectNodeMap.put(testCase.getProjectId(), nodeIds);
|
|
||||||
}
|
|
||||||
List<TestCaseNodeDTO> tree = getNodeTreeWithPruningTree(projectNodeMap);
|
|
||||||
QueryTestCaseRequest request = new QueryTestCaseRequest();
|
QueryTestCaseRequest request = new QueryTestCaseRequest();
|
||||||
request.setCasePublic(true);
|
request.setCasePublic(true);
|
||||||
for (TestCaseNodeDTO dto : tree) {
|
for (TestCaseNodeDTO dto : projectNodes) {
|
||||||
List<TestCaseNodeDTO> children = this.getNodeTreeByProjectId(dto.getId(), request);
|
List<TestCaseNodeDTO> children = this.getNodeTreeByProjectId(dto.getId(), request);
|
||||||
dto.setChildren(children);
|
dto.setChildren(children);
|
||||||
int sum = children.stream().mapToInt(TestCaseNodeDTO::getCaseNum).sum();
|
int sum = children.stream().mapToInt(TestCaseNodeDTO::getCaseNum).sum();
|
||||||
dto.setCaseNum(sum);
|
dto.setCaseNum(sum);
|
||||||
}
|
}
|
||||||
return tree;
|
return projectNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TestCaseNodeDTO> getNodeByReviewId(String reviewId) {
|
public List<TestCaseNodeDTO> getNodeByReviewId(String reviewId) {
|
||||||
|
|
|
@ -2747,8 +2747,27 @@ public class TestCaseService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TestCaseNodeDTO> getPublicCaseNode(QueryTestCaseRequest request) {
|
public List<TestCaseNodeDTO> getPublicCaseNode(QueryTestCaseRequest request) {
|
||||||
List<TestCaseDTO> testCaseDTOS = publicListTestCase(request);
|
List<TestCaseNodeDTO> testCaseDTOS = publicProjectNode(request);
|
||||||
return testCaseNodeService.getNodeByTestCases(testCaseDTOS);
|
return testCaseNodeService.getPublicNodeByProjectNode(testCaseDTOS);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<TestCaseNodeDTO> publicProjectNode(QueryTestCaseRequest request) {
|
||||||
|
this.initRequest(request, true);
|
||||||
|
setDefaultOrder(request);
|
||||||
|
if (request.getFilters() != null && !request.getFilters().containsKey("status")) {
|
||||||
|
request.getFilters().put("status", new ArrayList<>(0));
|
||||||
|
}
|
||||||
|
List<TestCaseNodeDTO> testCaseNodeDTOList = new ArrayList<>();
|
||||||
|
List<String> publicProjectIds = extTestCaseMapper.getPublicProjectIdByWorkSpaceId(request);
|
||||||
|
publicProjectIds.forEach(projectId -> {
|
||||||
|
Project project = projectMapper.selectByPrimaryKey(projectId);
|
||||||
|
TestCaseNodeDTO testCaseNodeDTO = new TestCaseNodeDTO();
|
||||||
|
testCaseNodeDTO.setName(project.getName());
|
||||||
|
testCaseNodeDTO.setLabel(project.getName());
|
||||||
|
testCaseNodeDTO.setId(projectId);
|
||||||
|
testCaseNodeDTOList.add(testCaseNodeDTO);
|
||||||
|
});
|
||||||
|
return testCaseNodeDTOList;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void saveRelationshipBatch(TestCaseRelationshipEdgeRequest request) {
|
public void saveRelationshipBatch(TestCaseRelationshipEdgeRequest request) {
|
||||||
|
|
|
@ -329,6 +329,9 @@ export default {
|
||||||
this.activeName = 'public';
|
this.activeName = 'public';
|
||||||
this.result = this.$post('/test/case/public/case/node', {workspaceId: getCurrentWorkspaceId()}, res => {
|
this.result = this.$post('/test/case/public/case/node', {workspaceId: getCurrentWorkspaceId()}, res => {
|
||||||
this.publicTreeNodes = res.data;
|
this.publicTreeNodes = res.data;
|
||||||
|
this.publicTreeNodes.forEach(firstLevel => {
|
||||||
|
this.$refs.publicNodeTree.nodeExpand(firstLevel);
|
||||||
|
})
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.activeName = 'default';
|
this.activeName = 'default';
|
||||||
|
|
Loading…
Reference in New Issue