refactor(测试跟踪): 用例评审优化
This commit is contained in:
parent
0e88589142
commit
de31246d53
|
@ -19,6 +19,8 @@ public class TestCaseReview implements Serializable {
|
|||
|
||||
private Long endTime;
|
||||
|
||||
private String projectId;
|
||||
|
||||
private String description;
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -563,6 +563,76 @@ public class TestCaseReviewExample {
|
|||
addCriterion("end_time not between", value1, value2, "endTime");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdIsNull() {
|
||||
addCriterion("project_id is null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdIsNotNull() {
|
||||
addCriterion("project_id is not null");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdEqualTo(String value) {
|
||||
addCriterion("project_id =", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdNotEqualTo(String value) {
|
||||
addCriterion("project_id <>", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdGreaterThan(String value) {
|
||||
addCriterion("project_id >", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdGreaterThanOrEqualTo(String value) {
|
||||
addCriterion("project_id >=", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdLessThan(String value) {
|
||||
addCriterion("project_id <", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdLessThanOrEqualTo(String value) {
|
||||
addCriterion("project_id <=", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdLike(String value) {
|
||||
addCriterion("project_id like", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdNotLike(String value) {
|
||||
addCriterion("project_id not like", value, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdIn(List<String> values) {
|
||||
addCriterion("project_id in", values, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdNotIn(List<String> values) {
|
||||
addCriterion("project_id not in", values, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdBetween(String value1, String value2) {
|
||||
addCriterion("project_id between", value1, value2, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
|
||||
public Criteria andProjectIdNotBetween(String value1, String value2) {
|
||||
addCriterion("project_id not between", value1, value2, "projectId");
|
||||
return (Criteria) this;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Criteria extends GeneratedCriteria {
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<result column="create_time" jdbcType="BIGINT" property="createTime" />
|
||||
<result column="update_time" jdbcType="BIGINT" property="updateTime" />
|
||||
<result column="end_time" jdbcType="BIGINT" property="endTime" />
|
||||
<result column="project_id" jdbcType="VARCHAR" property="projectId" />
|
||||
</resultMap>
|
||||
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="io.metersphere.base.domain.TestCaseReview">
|
||||
<result column="description" jdbcType="LONGVARCHAR" property="description" />
|
||||
|
@ -72,7 +73,7 @@
|
|||
</where>
|
||||
</sql>
|
||||
<sql id="Base_Column_List">
|
||||
id, `name`, creator, `status`, create_time, update_time, end_time
|
||||
id, `name`, creator, `status`, create_time, update_time, end_time, project_id
|
||||
</sql>
|
||||
<sql id="Blob_Column_List">
|
||||
description
|
||||
|
@ -128,10 +129,12 @@
|
|||
<insert id="insert" parameterType="io.metersphere.base.domain.TestCaseReview">
|
||||
insert into test_case_review (id, `name`, creator,
|
||||
`status`, create_time, update_time,
|
||||
end_time, description)
|
||||
end_time, project_id, description
|
||||
)
|
||||
values (#{id,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{creator,jdbcType=VARCHAR},
|
||||
#{status,jdbcType=VARCHAR}, #{createTime,jdbcType=BIGINT}, #{updateTime,jdbcType=BIGINT},
|
||||
#{endTime,jdbcType=BIGINT}, #{description,jdbcType=LONGVARCHAR})
|
||||
#{endTime,jdbcType=BIGINT}, #{projectId,jdbcType=VARCHAR}, #{description,jdbcType=LONGVARCHAR}
|
||||
)
|
||||
</insert>
|
||||
<insert id="insertSelective" parameterType="io.metersphere.base.domain.TestCaseReview">
|
||||
insert into test_case_review
|
||||
|
@ -157,6 +160,9 @@
|
|||
<if test="endTime != null">
|
||||
end_time,
|
||||
</if>
|
||||
<if test="projectId != null">
|
||||
project_id,
|
||||
</if>
|
||||
<if test="description != null">
|
||||
description,
|
||||
</if>
|
||||
|
@ -183,6 +189,9 @@
|
|||
<if test="endTime != null">
|
||||
#{endTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="projectId != null">
|
||||
#{projectId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="description != null">
|
||||
#{description,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
|
@ -218,6 +227,9 @@
|
|||
<if test="record.endTime != null">
|
||||
end_time = #{record.endTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="record.projectId != null">
|
||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="record.description != null">
|
||||
description = #{record.description,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
|
@ -235,6 +247,7 @@
|
|||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
end_time = #{record.endTime,jdbcType=BIGINT},
|
||||
project_id = #{record.projectId,jdbcType=VARCHAR},
|
||||
description = #{record.description,jdbcType=LONGVARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
|
@ -248,7 +261,8 @@
|
|||
`status` = #{record.status,jdbcType=VARCHAR},
|
||||
create_time = #{record.createTime,jdbcType=BIGINT},
|
||||
update_time = #{record.updateTime,jdbcType=BIGINT},
|
||||
end_time = #{record.endTime,jdbcType=BIGINT}
|
||||
end_time = #{record.endTime,jdbcType=BIGINT},
|
||||
project_id = #{record.projectId,jdbcType=VARCHAR}
|
||||
<if test="_parameter != null">
|
||||
<include refid="Update_By_Example_Where_Clause" />
|
||||
</if>
|
||||
|
@ -274,6 +288,9 @@
|
|||
<if test="endTime != null">
|
||||
end_time = #{endTime,jdbcType=BIGINT},
|
||||
</if>
|
||||
<if test="projectId != null">
|
||||
project_id = #{projectId,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="description != null">
|
||||
description = #{description,jdbcType=LONGVARCHAR},
|
||||
</if>
|
||||
|
@ -288,6 +305,7 @@
|
|||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
end_time = #{endTime,jdbcType=BIGINT},
|
||||
project_id = #{projectId,jdbcType=VARCHAR},
|
||||
description = #{description,jdbcType=LONGVARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
|
@ -298,7 +316,8 @@
|
|||
`status` = #{status,jdbcType=VARCHAR},
|
||||
create_time = #{createTime,jdbcType=BIGINT},
|
||||
update_time = #{updateTime,jdbcType=BIGINT},
|
||||
end_time = #{endTime,jdbcType=BIGINT}
|
||||
end_time = #{endTime,jdbcType=BIGINT},
|
||||
project_id = #{projectId,jdbcType=VARCHAR}
|
||||
where id = #{id,jdbcType=VARCHAR}
|
||||
</update>
|
||||
</mapper>
|
|
@ -6,17 +6,16 @@
|
|||
parameterType="io.metersphere.track.request.testreview.QueryCaseReviewRequest">
|
||||
select distinct test_case_review.id, test_case_review.name, test_case_review.creator, test_case_review.status,
|
||||
test_case_review.create_time, test_case_review.update_time, test_case_review.end_time,
|
||||
test_case_review.description, user.name as creatorName
|
||||
from test_case_review join test_case_review_project on test_case_review.id = test_case_review_project.review_id
|
||||
join project on test_case_review_project.project_id = project.id
|
||||
left join user on test_case_review.creator = user.id
|
||||
test_case_review.description, user.name as creatorName, project.name as projectName, test_case_review.project_id
|
||||
from test_case_review
|
||||
join project on project.id = test_case_review.project_id
|
||||
left join user on test_case_review.creator = user.id
|
||||
<where>
|
||||
<if test="request.name != null">
|
||||
and test_case_review.name like CONCAT('%', #{request.name},'%')
|
||||
</if>
|
||||
and project.workspace_id = #{request.workspaceId}
|
||||
<if test="request.projectId != null">
|
||||
and test_case_review_project.project_id = #{request.projectId}
|
||||
and test_case_review.project_id = #{request.projectId}
|
||||
</if>
|
||||
</where>
|
||||
<if test="request.orders != null and request.orders.size() > 0">
|
||||
|
@ -30,13 +29,10 @@
|
|||
<select id="listByWorkspaceId" resultType="io.metersphere.track.dto.TestCaseReviewDTO"
|
||||
parameterType="io.metersphere.track.request.testreview.QueryCaseReviewRequest">
|
||||
select distinct test_case_review.*
|
||||
from test_case_review, project, test_case_review_project, test_case_review_users
|
||||
from test_case_review, test_case_review_users
|
||||
<where>
|
||||
test_case_review.id = test_case_review_project.review_id
|
||||
and test_case_review_project.project_id = project.id
|
||||
and project.workspace_id = #{workspaceId}
|
||||
<if test="projectId != null">
|
||||
and test_case_review_project.project_id = #{projectId}
|
||||
and test_case_review.project_id = #{projectId}
|
||||
</if>
|
||||
and (
|
||||
(test_case_review_users.review_id = test_case_review.id
|
||||
|
@ -48,9 +44,8 @@
|
|||
</select>
|
||||
|
||||
<select id="listRelate" resultType="io.metersphere.track.dto.TestReviewDTOWithMetric">
|
||||
select distinct test_case_review.* from test_case_review
|
||||
inner join test_case_review_project on test_case_review.id = test_case_review_project.review_id
|
||||
inner join project on project.id = test_case_review_project.project_id
|
||||
select distinct test_case_review.*, project.name as projectName from test_case_review
|
||||
inner join project on project.id = test_case_review.project_id
|
||||
inner join test_case_review_users on test_case_review_users.review_id = test_case_review.id
|
||||
<where>
|
||||
project.workspace_id = #{request.workspaceId}
|
||||
|
@ -58,7 +53,7 @@
|
|||
and test_case_review_users.user_id = #{request.reviewerId}
|
||||
</if>
|
||||
<if test="request.projectId != null">
|
||||
and test_case_review_project.project_id = #{request.projectId}
|
||||
and test_case_review.project_id = #{request.projectId}
|
||||
</if>
|
||||
<if test="request.creator != null">
|
||||
and (test_case_review.creator = #{request.creator}
|
||||
|
@ -75,15 +70,24 @@
|
|||
order by test_case_review.update_time desc
|
||||
</select>
|
||||
<select id="checkIsHave" resultType="int">
|
||||
SELECT COUNT(1)
|
||||
select sum(c) from (
|
||||
SELECT COUNT(1) as c
|
||||
FROM project, test_case_review_project
|
||||
WHERE project.id = test_case_review_project.project_id
|
||||
WHERE project.id = test_case_review_project.project_id AND test_case_review_project.review_id = #{reviewId}
|
||||
<if test="workspaceIds != null and workspaceIds.size() > 0">
|
||||
AND project.workspace_id IN
|
||||
<foreach collection="workspaceIds" item="id" separator="," open="(" close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>
|
||||
AND test_case_review_project.review_id = #{reviewId}
|
||||
union
|
||||
select count(1) as c from test_case_review, project
|
||||
WHERE project_id = project.id AND test_case_review.id = #{reviewId}
|
||||
<if test="workspaceIds != null and workspaceIds.size() > 0">
|
||||
AND project.workspace_id IN
|
||||
<foreach collection="workspaceIds" item="id" separator="," open="(" close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</if>) as temp
|
||||
</select>
|
||||
</mapper>
|
|
@ -202,11 +202,10 @@
|
|||
<select id="findRelateTestReviewId" resultType="java.lang.String">
|
||||
select distinct test_case_review_test_case.review_id from test_case_review_test_case
|
||||
inner join test_case_review on test_case_review_test_case.review_id = test_case_review.id
|
||||
inner join test_case_review_project on test_case_review_project.review_id = test_case_review.id
|
||||
inner join project on project.id = test_case_review_project.project_id
|
||||
inner join project on project.id = test_case_review.project_id
|
||||
where test_case_review_test_case.review_id = #{userId}
|
||||
and project.workspace_id = #{workspaceId}
|
||||
and test_case_review_project.project_id = #{projectId}
|
||||
and test_case_review.project_id = #{projectId}
|
||||
</select>
|
||||
<select id="listTestCaseByProjectIds" resultType="io.metersphere.track.dto.TestReviewCaseDTO">
|
||||
select distinct * from test_case_review_test_case, test_case
|
||||
|
|
|
@ -91,14 +91,14 @@ public class TestCaseReviewController {
|
|||
|
||||
@PostMapping("/projects")
|
||||
public List<Project> getProjectByReviewId(@RequestBody TestReviewRelevanceRequest request) {
|
||||
List<String> projectIds = testReviewProjectService.getProjectIdsByPlanId(request.getReviewId());
|
||||
List<String> projectIds = testReviewProjectService.getProjectIdsByReviewId(request.getReviewId());
|
||||
request.setProjectIds(projectIds);
|
||||
return testReviewProjectService.getProject(request);
|
||||
}
|
||||
|
||||
@PostMapping("/project/{goPage}/{pageSize}")
|
||||
public Pager<List<Project>> getProjectByReviewId(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody TestReviewRelevanceRequest request) {
|
||||
List<String> projectIds = testReviewProjectService.getProjectIdsByPlanId(request.getReviewId());
|
||||
List<String> projectIds = testReviewProjectService.getProjectIdsByReviewId(request.getReviewId());
|
||||
request.setProjectIds(projectIds);
|
||||
Page<Object> page = PageHelper.startPage(goPage, pageSize, true);
|
||||
return PageUtils.setPageInfo(page, testReviewProjectService.getProject(request));
|
||||
|
|
|
@ -37,4 +37,6 @@ public class QueryCaseReviewRequest extends TestCaseReviewTestCase {
|
|||
private Map<String, Object> combine;
|
||||
|
||||
private String projectId;
|
||||
|
||||
private String projectName;
|
||||
}
|
||||
|
|
|
@ -83,12 +83,17 @@ public class TestCaseReviewService {
|
|||
String reviewId = UUID.randomUUID().toString();
|
||||
List<String> projectIds = reviewRequest.getProjectIds();
|
||||
List<String> userIds = reviewRequest.getUserIds();//执行人
|
||||
projectIds.forEach(projectId -> {
|
||||
TestCaseReviewProject testCaseReviewProject = new TestCaseReviewProject();
|
||||
testCaseReviewProject.setProjectId(projectId);
|
||||
testCaseReviewProject.setReviewId(reviewId);
|
||||
testCaseReviewProjectMapper.insertSelective(testCaseReviewProject);
|
||||
});
|
||||
if (!CollectionUtils.isEmpty(projectIds)) {
|
||||
List<String> ids = projectIds.stream().distinct().collect(Collectors.toList());
|
||||
// 如果关联项目id中包含当前项目id进行移除
|
||||
ids.remove(SessionUtils.getCurrentProjectId());
|
||||
ids.forEach(projectId -> {
|
||||
TestCaseReviewProject testCaseReviewProject = new TestCaseReviewProject();
|
||||
testCaseReviewProject.setProjectId(projectId);
|
||||
testCaseReviewProject.setReviewId(reviewId);
|
||||
testCaseReviewProjectMapper.insertSelective(testCaseReviewProject);
|
||||
});
|
||||
}
|
||||
|
||||
userIds.forEach(userId -> {
|
||||
TestCaseReviewUsers testCaseReviewUsers = new TestCaseReviewUsers();
|
||||
|
@ -102,6 +107,7 @@ public class TestCaseReviewService {
|
|||
reviewRequest.setUpdateTime(System.currentTimeMillis());
|
||||
reviewRequest.setCreator(SessionUtils.getUser().getId());//创建人
|
||||
reviewRequest.setStatus(TestCaseReviewStatus.Prepare.name());
|
||||
reviewRequest.setProjectId(SessionUtils.getCurrentProjectId());
|
||||
testCaseReviewMapper.insert(reviewRequest);
|
||||
// 发送通知
|
||||
String context = getReviewContext(reviewRequest, NoticeConstants.Event.CREATE);
|
||||
|
@ -156,7 +162,10 @@ public class TestCaseReviewService {
|
|||
|
||||
public List<TestCaseReviewDTO> listCaseReview(QueryCaseReviewRequest request) {
|
||||
request.setOrders(ServiceUtils.getDefaultOrder(request.getOrders()));
|
||||
request.setProjectId(SessionUtils.getCurrentProjectId());
|
||||
String projectId = request.getProjectId();
|
||||
if (StringUtils.isBlank(projectId)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return extTestCaseReviewMapper.list(request);
|
||||
}
|
||||
|
||||
|
@ -172,6 +181,9 @@ public class TestCaseReviewService {
|
|||
.map(TestCaseReviewProject::getProjectId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
TestCaseReview testCaseReview = testCaseReviewMapper.selectByPrimaryKey(reviewId);
|
||||
String projectId = testCaseReview.getProjectId();
|
||||
projectIds.add(projectId);
|
||||
ProjectExample projectExample = new ProjectExample();
|
||||
projectExample.createCriteria().andIdIn(projectIds);
|
||||
return projectMapper.selectByExample(projectExample);
|
||||
|
@ -249,8 +261,11 @@ public class TestCaseReviewService {
|
|||
|
||||
private void editCaseReviewProject(SaveTestCaseReviewRequest testCaseReview) {
|
||||
List<String> projectIds = testCaseReview.getProjectIds();
|
||||
String id = testCaseReview.getId();
|
||||
if (!CollectionUtils.isEmpty(projectIds)) {
|
||||
projectIds.remove(testCaseReview.getProjectId());
|
||||
}
|
||||
String id = testCaseReview.getId();
|
||||
if (StringUtils.isNotBlank(testCaseReview.getProjectId())) {
|
||||
TestCaseReviewProjectExample testCaseReviewProjectExample = new TestCaseReviewProjectExample();
|
||||
testCaseReviewProjectExample.createCriteria().andReviewIdEqualTo(id);
|
||||
List<TestCaseReviewProject> testCaseReviewProjects = testCaseReviewProjectMapper.selectByExample(testCaseReviewProjectExample);
|
||||
|
@ -265,15 +280,24 @@ public class TestCaseReviewService {
|
|||
});
|
||||
|
||||
TestCaseReviewProjectExample example = new TestCaseReviewProjectExample();
|
||||
example.createCriteria().andReviewIdEqualTo(id).andProjectIdNotIn(projectIds);
|
||||
TestCaseReviewProjectExample.Criteria criteria1 = example.createCriteria().andReviewIdEqualTo(id);
|
||||
if (!CollectionUtils.isEmpty(projectIds)) {
|
||||
criteria1.andProjectIdNotIn(projectIds);
|
||||
}
|
||||
testCaseReviewProjectMapper.deleteByExample(example);
|
||||
|
||||
|
||||
// 关联的项目下的用例idList
|
||||
TestCaseExample testCaseExample = new TestCaseExample();
|
||||
testCaseExample.createCriteria().andProjectIdIn(projectIds);
|
||||
List<TestCase> caseList = testCaseMapper.selectByExample(testCaseExample);
|
||||
List<String> caseIds = caseList.stream().map(TestCase::getId).collect(Collectors.toList());
|
||||
List<String> caseIds = null;
|
||||
// 测试计划所属项目下的用例不解除关联
|
||||
projectIds.add(testCaseReview.getProjectId());
|
||||
// 关联的项目下的用例idList
|
||||
if (!CollectionUtils.isEmpty(projectIds)) {
|
||||
TestCaseExample testCaseExample = new TestCaseExample();
|
||||
testCaseExample.createCriteria().andProjectIdIn(projectIds);
|
||||
List<TestCase> caseList = testCaseMapper.selectByExample(testCaseExample);
|
||||
caseIds = caseList.stream().map(TestCase::getId).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
TestCaseReviewTestCaseExample testCaseReviewTestCaseExample = new TestCaseReviewTestCaseExample();
|
||||
TestCaseReviewTestCaseExample.Criteria criteria = testCaseReviewTestCaseExample.createCriteria().andReviewIdEqualTo(id);
|
||||
|
@ -282,6 +306,7 @@ public class TestCaseReviewService {
|
|||
}
|
||||
testCaseReviewTestCaseMapper.deleteByExample(testCaseReviewTestCaseExample);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void checkCaseReviewExist(TestCaseReview testCaseReview) {
|
||||
|
@ -348,19 +373,11 @@ public class TestCaseReviewService {
|
|||
}
|
||||
|
||||
public List<TestCaseReview> listCaseReviewAll() {
|
||||
TestCaseReviewProjectExample reviewProjectExample = new TestCaseReviewProjectExample();
|
||||
TestCaseReviewProjectExample.Criteria criteria = reviewProjectExample.createCriteria();
|
||||
if (StringUtils.isNotBlank(SessionUtils.getCurrentProjectId())) {
|
||||
criteria.andProjectIdEqualTo(SessionUtils.getCurrentProjectId());
|
||||
List<TestCaseReviewProject> testCaseReviewProjects = testCaseReviewProjectMapper.selectByExample(reviewProjectExample);
|
||||
if (!CollectionUtils.isEmpty(testCaseReviewProjects)) {
|
||||
List<String> caseReviewIds = testCaseReviewProjects.stream().map(TestCaseReviewProject::getReviewId).collect(Collectors.toList());
|
||||
TestCaseReviewExample testCaseReviewExample = new TestCaseReviewExample();
|
||||
testCaseReviewExample.createCriteria().andIdIn(caseReviewIds);
|
||||
return testCaseReviewMapper.selectByExample(testCaseReviewExample);
|
||||
}
|
||||
TestCaseReviewExample testCaseReviewExample = new TestCaseReviewExample();
|
||||
testCaseReviewExample.createCriteria().andProjectIdEqualTo(SessionUtils.getCurrentProjectId());
|
||||
return testCaseReviewMapper.selectByExample(testCaseReviewExample);
|
||||
}
|
||||
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package io.metersphere.track.service;
|
|||
|
||||
import io.metersphere.base.domain.*;
|
||||
import io.metersphere.base.mapper.ProjectMapper;
|
||||
import io.metersphere.base.mapper.TestCaseReviewMapper;
|
||||
import io.metersphere.base.mapper.TestCaseReviewProjectMapper;
|
||||
import io.metersphere.track.request.testreview.TestReviewRelevanceRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -17,18 +18,25 @@ import java.util.stream.Collectors;
|
|||
public class TestReviewProjectService {
|
||||
|
||||
@Resource
|
||||
ProjectMapper projectMapper;
|
||||
private ProjectMapper projectMapper;
|
||||
@Resource
|
||||
TestCaseReviewProjectMapper testCaseReviewProjectMapper;
|
||||
private TestCaseReviewProjectMapper testCaseReviewProjectMapper;
|
||||
@Resource
|
||||
private TestCaseReviewMapper testCaseReviewMapper;
|
||||
|
||||
public List<String> getProjectIdsByPlanId(String reviewId) {
|
||||
public List<String> getProjectIdsByReviewId(String reviewId) {
|
||||
TestCaseReviewProjectExample example = new TestCaseReviewProjectExample();
|
||||
example.createCriteria().andReviewIdEqualTo(reviewId);
|
||||
List<String> projectIds = testCaseReviewProjectMapper.selectByExample(example)
|
||||
.stream()
|
||||
.map(TestCaseReviewProject::getProjectId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
TestCaseReview caseReview = testCaseReviewMapper.selectByPrimaryKey(reviewId);
|
||||
if (caseReview != null && StringUtils.isNotBlank(caseReview.getProjectId())) {
|
||||
if (!projectIds.contains(caseReview.getProjectId())) {
|
||||
projectIds.add(caseReview.getProjectId());
|
||||
}
|
||||
}
|
||||
if (projectIds.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
alter table test_case_review add project_id varchar(50) null comment '用例评审所属项目';
|
||||
|
||||
DROP PROCEDURE IF EXISTS test_cursor;
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE test_cursor()
|
||||
BEGIN
|
||||
DECLARE reviewId VARCHAR(64);
|
||||
DECLARE done INT DEFAULT 0;
|
||||
DECLARE cursor1 CURSOR FOR (SELECT id
|
||||
FROM test_case_review
|
||||
WHERE project_id IS NULL);
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
|
||||
OPEN cursor1;
|
||||
outer_loop:
|
||||
LOOP
|
||||
FETCH cursor1 INTO reviewId;
|
||||
IF done
|
||||
THEN
|
||||
LEAVE outer_loop;
|
||||
END IF;
|
||||
select count(1) as s, project_id
|
||||
into @num, @projectId
|
||||
from test_case_review_test_case
|
||||
join test_case on case_id = test_case.id
|
||||
where review_id = reviewId
|
||||
group by project_id
|
||||
order by s desc
|
||||
limit 1;
|
||||
|
||||
IF @projectId = ''
|
||||
THEN
|
||||
select test_case_review_project.project_id
|
||||
into @projectId
|
||||
from test_case_review
|
||||
join test_case_review_project on test_case_review.id = test_case_review_project.review_id
|
||||
where test_case_review.id = reviewId
|
||||
limit 1;
|
||||
END IF;
|
||||
|
||||
UPDATE test_case_review SET test_case_review.project_id = @projectId WHERE test_case_review.id = reviewId;
|
||||
DELETE FROM test_case_review_project
|
||||
WHERE test_case_review_project.project_id = @projectId
|
||||
AND test_case_review_project.review_id = reviewId;
|
||||
|
||||
SET @projectId = '';
|
||||
SET done = 0;
|
||||
|
||||
END LOOP;
|
||||
CLOSE cursor1;
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
CALL test_cursor();
|
||||
DROP PROCEDURE IF EXISTS test_cursor;
|
|
@ -52,11 +52,11 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="projectName"
|
||||
:label="$t('test_track.plan.plan_project')"
|
||||
show-overflow-tooltip>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column-->
|
||||
<!-- prop="projectName"-->
|
||||
<!-- :label="$t('test_track.plan.plan_project')"-->
|
||||
<!-- show-overflow-tooltip>-->
|
||||
<!-- </el-table-column>-->
|
||||
|
||||
</el-table>
|
||||
|
||||
|
@ -99,14 +99,6 @@ export default {
|
|||
}
|
||||
this.result = this.$get('/test/case/review/list/all/relate/' + type, response => {
|
||||
this.tableData = response.data;
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
let path = "/test/case/review/project";
|
||||
this.$post(path, {id: this.tableData[i].id}, res => {
|
||||
let arr = res.data;
|
||||
let projectName = arr.map(data => data.name).join("、");
|
||||
this.$set(this.tableData[i], "projectName", projectName);
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
intoPlan(row) {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
</el-col>
|
||||
|
||||
<el-col :span="11" :offset="2">
|
||||
<el-form-item :label="$t('test_track.review.review_project')" :label-width="formLabelWidth" prop="projectIds">
|
||||
<el-form-item label="关联项目" :label-width="formLabelWidth" prop="projectIds">
|
||||
<el-select
|
||||
v-model="form.projectIds"
|
||||
:placeholder="$t('test_track.review.input_review_project')"
|
||||
|
@ -111,7 +111,7 @@
|
|||
|
||||
import TestPlanStatusButton from "../../plan/common/TestPlanStatusButton";
|
||||
import {WORKSPACE_ID} from "@/common/js/constants";
|
||||
import {listenGoBack, removeGoBackListener} from "@/common/js/utils";
|
||||
import {getCurrentProjectID, listenGoBack, removeGoBackListener} from "@/common/js/utils";
|
||||
|
||||
export default {
|
||||
name: "TestCaseReviewEdit",
|
||||
|
@ -134,7 +134,7 @@ export default {
|
|||
{required: true, message: this.$t('test_track.plan.input_plan_name'), trigger: 'blur'},
|
||||
{max: 30, message: this.$t('test_track.length_less_than') + '30', trigger: 'blur'}
|
||||
],
|
||||
projectIds: [{required: true, message: this.$t('test_track.plan.input_plan_project'), trigger: 'change'}],
|
||||
// projectIds: [{required: true, message: this.$t('test_track.plan.input_plan_project'), trigger: 'change'}],
|
||||
userIds: [{required: true, message: this.$t('test_track.plan.input_plan_principal'), trigger: 'change'}],
|
||||
stage: [{required: true, message: this.$t('test_track.plan.input_plan_stage'), trigger: 'change'}],
|
||||
description: [{max: 200, message: this.$t('test_track.length_less_than') + '200', trigger: 'blur'}],
|
||||
|
@ -218,7 +218,7 @@ export default {
|
|||
getProjects() {
|
||||
this.result = this.$get("/project/listAll", (response) => {
|
||||
if (response.success) {
|
||||
this.projects = response.data;
|
||||
this.projects = response.data.filter(da => da.id !== getCurrentProjectID());
|
||||
} else {
|
||||
this.$warning()(response.message);
|
||||
}
|
||||
|
|
|
@ -142,6 +142,7 @@ export default {
|
|||
if (!getCurrentProjectID()) {
|
||||
return;
|
||||
}
|
||||
this.condition.projectId = getCurrentProjectID();
|
||||
this.result = this.$post("/test/case/review/list/" + this.currentPage + "/" + this.pageSize, this.condition, response => {
|
||||
let data = response.data;
|
||||
this.total = data.itemCount;
|
||||
|
@ -150,9 +151,7 @@ export default {
|
|||
let path = "/test/case/review/project";
|
||||
this.$post(path, {id: this.tableData[i].id}, res => {
|
||||
let arr = res.data;
|
||||
let projectName = arr.map(data => data.name).join("、");
|
||||
let projectIds = arr.map(data => data.id);
|
||||
this.$set(this.tableData[i], "projectName", projectName);
|
||||
let projectIds = arr.filter(d => d.id !== this.tableData[i].projectId).map(data => data.id);
|
||||
this.$set(this.tableData[i], "projectIds", projectIds);
|
||||
});
|
||||
this.$post('/test/case/review/reviewer', {id: this.tableData[i].id}, res => {
|
||||
|
|
Loading…
Reference in New Issue