From dfd6aaeeee2e5e6b07fec5ebf8e4317241523a00 Mon Sep 17 00:00:00 2001 From: chenjianxing Date: Wed, 27 May 2020 10:47:30 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E6=9B=B4=E6=96=B0=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E8=AE=A1=E5=88=92=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ext/ExtTestPlanTestCaseMapper.java | 2 ++ .../mapper/ext/ExtTestPlanTestCaseMapper.xml | 5 +++++ .../track/controller/TestPlanController.java | 6 ++++++ .../track/service/TestPlanService.java | 20 ++++++++++++++++++- .../track/case/components/TestCaseEdit.vue | 2 +- .../track/plan/view/comonents/StatusEdit.vue | 4 ++++ .../view/comonents/TestPlanTestCaseEdit.vue | 4 ++++ .../view/comonents/TestPlanTestCaseList.vue | 2 +- 8 files changed, 42 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java index 604aab597..b4cb348f9 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.java @@ -21,4 +21,6 @@ public interface ExtTestPlanTestCaseMapper { List getRecentTestedTestCase(@Param("request") QueryTestPlanCaseRequest request); List getPendingTestCases(@Param("request") QueryTestPlanCaseRequest request); + + List getStatusByPlanId(String planId); } diff --git a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml index 2ee620d16..d82ed5dbb 100644 --- a/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml +++ b/backend/src/main/java/io/metersphere/base/mapper/ext/ExtTestPlanTestCaseMapper.xml @@ -93,4 +93,9 @@ order by test_plan_test_case.update_time asc + \ No newline at end of file diff --git a/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java b/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java index 2a04d0e18..e4dbba3a2 100644 --- a/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java +++ b/backend/src/main/java/io/metersphere/track/controller/TestPlanController.java @@ -70,6 +70,12 @@ public class TestPlanController { testPlanService.editTestPlan(testPlan); } + @PostMapping("/edit/status/{planId}") + @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) + public void editTestPlanStatus(@PathVariable String planId){ + testPlanService.editTestPlanStatus(planId); + } + @PostMapping("/delete/{testPlanId}") @RequiresRoles(value = {RoleConstants.TEST_USER, RoleConstants.TEST_MANAGER}, logical = Logical.OR) public int deleteTestPlan(@PathVariable String testPlanId){ diff --git a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java index c6ae03862..12c00e91f 100644 --- a/backend/src/main/java/io/metersphere/track/service/TestPlanService.java +++ b/backend/src/main/java/io/metersphere/track/service/TestPlanService.java @@ -144,7 +144,8 @@ public class TestPlanService { sqlSession.flushStatements(); TestPlan testPlan = testPlanMapper.selectByPrimaryKey(request.getPlanId()); - if (StringUtils.equals(testPlan.getStatus(), TestPlanStatus.Prepare.name())) { + if (StringUtils.equals(testPlan.getStatus(), TestPlanStatus.Prepare.name()) + || StringUtils.equals(testPlan.getStatus(), TestPlanStatus.Completed.name())) { testPlan.setStatus(TestPlanStatus.Underway.name()); testPlanMapper.updateByPrimaryKey(testPlan); } @@ -344,4 +345,21 @@ public class TestPlanService { example.createCriteria().andIdIn(planIds); return testPlanMapper.selectByExample(example); } + + public void editTestPlanStatus(String planId) { + List statusList = extTestPlanTestCaseMapper.getStatusByPlanId(planId); + TestPlan testPlan = new TestPlan(); + testPlan.setId(planId); + + for (String status: statusList){ + if (StringUtils.equals(status, TestPlanTestCaseStatus.Prepare.name()) + || StringUtils.equals(status, TestPlanTestCaseStatus.Underway.name())) { + testPlan.setStatus(TestPlanStatus.Underway.name()); + testPlanMapper.updateByPrimaryKeySelective(testPlan); + return; + } + } + testPlan.setStatus(TestPlanStatus.Completed.name()); + testPlanMapper.updateByPrimaryKeySelective(testPlan); + } } diff --git a/frontend/src/business/components/track/case/components/TestCaseEdit.vue b/frontend/src/business/components/track/case/components/TestCaseEdit.vue index a8ac4ca8e..88bbae2d3 100644 --- a/frontend/src/business/components/track/case/components/TestCaseEdit.vue +++ b/frontend/src/business/components/track/case/components/TestCaseEdit.vue @@ -43,7 +43,7 @@ diff --git a/frontend/src/business/components/track/plan/view/comonents/StatusEdit.vue b/frontend/src/business/components/track/plan/view/comonents/StatusEdit.vue index 2856a3da4..db5aefeeb 100644 --- a/frontend/src/business/components/track/plan/view/comonents/StatusEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/StatusEdit.vue @@ -34,6 +34,9 @@ props: { selectIds: { type: Set + }, + planId: { + type: String } }, methods: { @@ -51,6 +54,7 @@ this.$post('/test/plan/case/batch/edit' , param, () => { this.selectIds.clear(); this.status = ''; + this.$post('/test/plan/edit/status/' + this.planId); this.$success(this.$t('commons.save_success')); this.statusEditVisible = false; this.$emit('refresh'); diff --git a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue index cfe5cddc0..2e966cccd 100644 --- a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue +++ b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseEdit.vue @@ -239,6 +239,7 @@ param.issues = JSON.stringify(this.testCase.issues); this.$post('/test/plan/case/edit', param, () => { this.$success(this.$t('commons.save_success')); + this.setPlanStatus(this.testCase.planId); }); }, handleNext() { @@ -309,6 +310,9 @@ }, addPLabel(str) { return "

" + str + "

"; + }, + setPlanStatus(planId) { + this.$post('/test/plan/edit/status/' + planId); } } } diff --git a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseList.vue b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseList.vue index ba1b2d812..9b7703143 100644 --- a/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseList.vue +++ b/frontend/src/business/components/track/plan/view/comonents/TestPlanTestCaseList.vue @@ -20,7 +20,7 @@ - +