fix(测试计划): 批量归档未添加已完成的状态校验

--bug=1040794 --user=宋昌昌 【测试计划】未开始的计划也可归档 https://www.tapd.cn/55049933/s/1517305
This commit is contained in:
song-cc-rock 2024-05-21 11:41:51 +08:00 committed by Craftsman
parent eb0bdc72c9
commit b231e27794
5 changed files with 23 additions and 16 deletions

View File

@ -94,3 +94,4 @@ test_plan_report_name.not_blank=测试计划报告名称不能为空
test_plan_not_exist=测试计划不存在 test_plan_not_exist=测试计划不存在
test_plan.report_id.not_blank=测试计划报告ID不能为空 test_plan.report_id.not_blank=测试计划报告ID不能为空
test_plan.report.share_id.not_blank=测试计划报告分享ID不能为空 test_plan.report.share_id.not_blank=测试计划报告分享ID不能为空
no_plan_to_archive=没有可归档的计划/计划组

View File

@ -106,3 +106,4 @@ run_functional_case=Run functional case
test_plan_not_exist=The test plan does not exist test_plan_not_exist=The test plan does not exist
test_plan.report_id.not_blank=The test plan report ID cannot be empty test_plan.report_id.not_blank=The test plan report ID cannot be empty
test_plan.report.share_id.not_blank=The test plan report share ID cannot be empty test_plan.report.share_id.not_blank=The test plan report share ID cannot be empty
no_plan_to_archive=No plans/plan groups to archive

View File

@ -106,3 +106,4 @@ run_functional_case=执行功能用例
test_plan_not_exist=测试计划不存在 test_plan_not_exist=测试计划不存在
test_plan.report_id.not_blank=测试计划报告ID不能为空 test_plan.report_id.not_blank=测试计划报告ID不能为空
test_plan.report.share_id.not_blank=测试计划报告分享ID不能为空 test_plan.report.share_id.not_blank=测试计划报告分享ID不能为空
no_plan_to_archive=没有可归档的计划/计划组

View File

@ -106,3 +106,4 @@ run_functional_case=執行功能用例
test_plan_not_exist=測試計劃不存在 test_plan_not_exist=測試計劃不存在
test_plan.report_id.not_blank=測試計劃報告ID不能爲空 test_plan.report_id.not_blank=測試計劃報告ID不能爲空
test_plan.report.share_id.not_blank=測試計劃報告分享ID不能爲空 test_plan.report.share_id.not_blank=測試計劃報告分享ID不能爲空
no_plan_to_archive=沒有可歸檔的計劃/計劃組

View File

@ -7,7 +7,10 @@ import io.metersphere.plan.dto.request.TestPlanBatchRequest;
import io.metersphere.plan.mapper.TestPlanMapper; import io.metersphere.plan.mapper.TestPlanMapper;
import io.metersphere.sdk.constants.TestPlanConstants; import io.metersphere.sdk.constants.TestPlanConstants;
import io.metersphere.sdk.exception.MSException; import io.metersphere.sdk.exception.MSException;
import io.metersphere.sdk.util.Translator;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -24,36 +27,36 @@ public class TestPlanBatchArchivedService extends TestPlanBaseUtilsService {
public void batchArchived(Map<String, List<TestPlan>> plans, TestPlanBatchRequest request, String userId) { public void batchArchived(Map<String, List<TestPlan>> plans, TestPlanBatchRequest request, String userId) {
int affectedGroupPlanCount = batchArchivedGroup(plans, request, userId); int affectedGroupPlanCount = batchArchivedGroup(plans, request, userId);
int affectedPlanCount = batchArchivedPlan(plans, request, userId); int affectedPlanCount = batchArchivedPlan(plans, userId);
if (affectedGroupPlanCount <= 0 && affectedPlanCount <= 0) { if (affectedGroupPlanCount <= 0 && affectedPlanCount <= 0) {
// 暂无可归档的计划 // 暂无可归档的计划
throw new MSException(""); throw new MSException(Translator.get("no_plan_to_archive"));
} }
} }
/** /**
* 批量移动 * 批量归档
* *
* @param plans * @param planGroups 计划组
*/ */
private int batchArchivedGroup(Map<String, List<TestPlan>> plans, TestPlanBatchProcessRequest request, String userId) { private int batchArchivedGroup(Map<String, List<TestPlan>> planGroups, TestPlanBatchProcessRequest request, String userId) {
//TODO 批量归档计划组 //TODO 批量归档计划组
return 0; return 0;
} }
/** /**
* 批量移动计划 * 批量归档计划
* *
* @param plans 归档测试计划集合 * @param plans 归档测试计划集合
*/ */
private int batchArchivedPlan(Map<String, List<TestPlan>> plans, TestPlanBatchRequest request, String userId) { private int batchArchivedPlan(Map<String, List<TestPlan>> plans, String userId) {
if (plans.containsKey(TestPlanConstants.TEST_PLAN_TYPE_PLAN)) { if (plans.containsKey(TestPlanConstants.TEST_PLAN_TYPE_PLAN)) {
List<TestPlan> testPlans = plans.get(TestPlanConstants.TEST_PLAN_TYPE_PLAN); List<TestPlan> testPlans = plans.get(TestPlanConstants.TEST_PLAN_TYPE_PLAN);
testPlans.forEach(testPlan -> { List<String> ids = testPlans.stream().filter(plan -> StringUtils.equals(plan.getStatus(), TestPlanConstants.TEST_PLAN_STATUS_COMPLETED))
testPlan.setModuleId(request.getModuleId()); .map(TestPlan::getId).collect(Collectors.toList());
validateTestPlan(testPlan); if (CollectionUtils.isEmpty(ids)) {
}); return 0;
List<String> ids = testPlans.stream().map(TestPlan::getId).collect(Collectors.toList()); }
TestPlan record = new TestPlan(); TestPlan record = new TestPlan();
record.setStatus(TestPlanConstants.TEST_PLAN_STATUS_ARCHIVED); record.setStatus(TestPlanConstants.TEST_PLAN_STATUS_ARCHIVED);
record.setUpdateUser(userId); record.setUpdateUser(userId);