diff --git a/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionMapper.xml b/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionMapper.xml index 90bdcd037d..d7c3fe32ff 100644 --- a/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionMapper.xml +++ b/api-test/backend/src/main/java/io/metersphere/base/mapper/ext/ExtApiDefinitionMapper.xml @@ -550,9 +550,6 @@ ) ) - - and api_definition.case_total is not null and api_definition.case_total > 0 - diff --git a/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanApiCaseController.java b/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanApiCaseController.java index c813e96e90..644e37b5ee 100644 --- a/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanApiCaseController.java +++ b/api-test/backend/src/main/java/io/metersphere/controller/plan/TestPlanApiCaseController.java @@ -73,7 +73,6 @@ public class TestPlanApiCaseController { return testPlanApiCaseService.selectAllTableRows(request); } - // todo request allowedRepeatCase @PostMapping("/relevance/list/{goPage}/{pageSize}") public Pager> relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiTestCaseRequest request) { return testPlanApiCaseService.relevanceList(goPage, pageSize, request); diff --git a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackApiDefinitionController.java b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackApiDefinitionController.java new file mode 100644 index 0000000000..5b4c6f995d --- /dev/null +++ b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackApiDefinitionController.java @@ -0,0 +1,21 @@ +package io.metersphere.controller.remote; + +import io.metersphere.plan.service.remote.api.PlanApiDefinitionService; +import io.metersphere.xpack.api.dto.request.ApiDefinitionRequest; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RequestMapping("/api/definition") +@RestController +public class TrackApiDefinitionController { + + @Resource + PlanApiDefinitionService planApiDefinitionService; + + + @PostMapping("/list/relevance/{goPage}/{pageSize}") + public Object listRelevance(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiDefinitionRequest request) { + return planApiDefinitionService.listRelevance(request, goPage, pageSize); + } +} diff --git a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanApiCaseController.java b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanApiCaseController.java index bb6c757172..38add1351a 100644 --- a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanApiCaseController.java +++ b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanApiCaseController.java @@ -1,13 +1,11 @@ package io.metersphere.controller.remote; import io.metersphere.plan.dto.ApiModuleDTO; +import io.metersphere.plan.request.api.ApiTestCaseRequest; import io.metersphere.plan.service.TestPlanProjectService; import io.metersphere.plan.service.remote.api.PlanTestPlanApiCaseService; import io.metersphere.service.wapper.CheckPermissionService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -29,4 +27,9 @@ public class TrackTestPlanApiCaseController { List projectIds = testPlanProjectService.getProjectIdsByPlanId(planId); return planTestPlanApiCaseService.getNodeByPlanId(projectIds, planId, protocol); } + + @PostMapping("/relevance/list/{goPage}/{pageSize}") + public Object relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiTestCaseRequest request) { + return planTestPlanApiCaseService.relevanceList(goPage, pageSize, request); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanLoadCaseController.java b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanLoadCaseController.java new file mode 100644 index 0000000000..7d298fd711 --- /dev/null +++ b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanLoadCaseController.java @@ -0,0 +1,20 @@ +package io.metersphere.controller.remote; + +import io.metersphere.plan.request.performance.LoadCaseRequest; +import io.metersphere.plan.service.remote.performance.PlanTestPlanLoadCaseService; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RequestMapping("/test/plan/load/case") +@RestController +public class TrackTestPlanLoadCaseController { + + @Resource + PlanTestPlanLoadCaseService planTestPlanLoadCaseService; + + @PostMapping("/relevance/list/{goPage}/{pageSize}") + public Object relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody LoadCaseRequest request) { + return planTestPlanLoadCaseService.relevanceList(goPage, pageSize, request); + } +} diff --git a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanScenarioCaseController.java b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanScenarioCaseController.java index 751d7e59be..9b0d3bea61 100644 --- a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanScenarioCaseController.java +++ b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanScenarioCaseController.java @@ -1,13 +1,11 @@ package io.metersphere.controller.remote; import io.metersphere.plan.dto.ApiScenarioModuleDTO; +import io.metersphere.plan.request.api.ApiScenarioRequest; import io.metersphere.plan.service.TestPlanProjectService; import io.metersphere.plan.service.remote.api.PlanTestPlanScenarioCaseService; import io.metersphere.service.wapper.CheckPermissionService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -29,4 +27,9 @@ public class TrackTestPlanScenarioCaseController { List projectIds = testPlanProjectService.getProjectIdsByPlanId(planId); return planTestPlanScenarioCaseService.getNodeByPlanId(projectIds, planId); } + + @PostMapping("/relevance/list/{goPage}/{pageSize}") + public Object relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiScenarioRequest request) { + return planTestPlanScenarioCaseService.relevanceList(request, goPage, pageSize); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanUiScenarioCaseController.java b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanUiScenarioCaseController.java index 515b234151..8f3e64a52e 100644 --- a/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanUiScenarioCaseController.java +++ b/test-track/backend/src/main/java/io/metersphere/controller/remote/TrackTestPlanUiScenarioCaseController.java @@ -1,13 +1,11 @@ package io.metersphere.controller.remote; import io.metersphere.dto.ModuleNodeDTO; +import io.metersphere.plan.request.api.ApiScenarioRequest; import io.metersphere.plan.service.TestPlanProjectService; import io.metersphere.plan.service.remote.ui.PlanTestPlanUiScenarioCaseService; import io.metersphere.service.wapper.CheckPermissionService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -29,4 +27,9 @@ public class TrackTestPlanUiScenarioCaseController { List projectIds = testPlanProjectService.getProjectIdsByPlanId(planId); return planTestPlanUiScenarioCaseService.getNodeByPlanId(projectIds, planId); } + + @PostMapping("/relevance/list/{goPage}/{pageSize}") + public Object relevanceList(@PathVariable int goPage, @PathVariable int pageSize, @RequestBody ApiScenarioRequest request) { + return planTestPlanUiScenarioCaseService.relevanceList(request, goPage, pageSize); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiScenarioRequest.java b/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiScenarioRequest.java new file mode 100644 index 0000000000..15daad139c --- /dev/null +++ b/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiScenarioRequest.java @@ -0,0 +1,39 @@ +package io.metersphere.plan.request.api; + +import io.metersphere.request.BaseQueryRequest; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ApiScenarioRequest extends BaseQueryRequest { + private String id; + private String excludeId; + private String moduleId; + private String name; + private String userId; + private String planId; + private boolean recent = false; + private boolean isSelectThisWeedData; + private long createTime = 0; + private long scheduleCreateTime = 0; + private String executeStatus; + private String selectDataType; + private boolean notInTestPlan; + private String reviewId; + private String versionId; + private String refId; + private Boolean allowedRepeatCase = false; + + //操作人 + private String operator; + //操作时间 + private Long operationTime; + /** + * 是否需要查询环境字段 + */ + private boolean selectEnvironment = false; + + //测试计划关联场景过滤掉步骤为0的场景 + private String stepTotal; +} diff --git a/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiTestCaseRequest.java b/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiTestCaseRequest.java new file mode 100644 index 0000000000..f4f8ca10cc --- /dev/null +++ b/test-track/backend/src/main/java/io/metersphere/plan/request/api/ApiTestCaseRequest.java @@ -0,0 +1,79 @@ +package io.metersphere.plan.request.api; + +import io.metersphere.request.ApiSyncCaseRequest; +import io.metersphere.request.BaseQueryRequest; +import io.metersphere.request.OrderRequest; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; +import java.util.Map; + +@Getter +@Setter +public class ApiTestCaseRequest extends BaseQueryRequest { + private String id; + private List ids; + private String planId; + private String projectId; + private String priority; + private String name; + private String environmentId; + private String workspaceId; + private String apiDefinitionId; + private String status; + private String protocol; + private String moduleId; + private List moduleIds; + private List orders; + private Map> filters; + private Map combine; + private boolean isSelectThisWeedData; + private long createTime = 0; + private long updateTime = 0; + private String reviewId; + private String deleteUserId; + private long deleteTime; + private Boolean allowedRepeatCase = false; + /** + * 检查待更新的(近三天有更新的或者状态为error的) + */ + private boolean toUpdate; + /** + * 是否进入待更新列表 + */ + private boolean toBeUpdated; + + /** + * 当前时间减去进入待更新的时间 + */ + private Long toBeUpdateTime; + + /** + * 进入待更新列表用例状态集合 + */ + private List statusList; + /** + * 不需要查用例状态 + */ + private boolean noSearchStatus; + + /** + * 是否需要查询环境字段 + */ + private boolean selectEnvironment = false; + + /** + * 查询排除一些接口 + */ + private List notInIds; + + //页面跳转时附带的过滤条件 + private String redirectFilter; + + //同步配置 + private ApiSyncCaseRequest syncConfig; + + //全选 + private boolean selectAll; +} diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanApiDefinitionService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanApiDefinitionService.java new file mode 100644 index 0000000000..d8d04cbdf8 --- /dev/null +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanApiDefinitionService.java @@ -0,0 +1,26 @@ +package io.metersphere.plan.service.remote.api; + +import io.metersphere.plan.service.TestPlanService; +import io.metersphere.xpack.api.dto.request.ApiDefinitionRequest; +import org.apache.commons.lang3.StringUtils; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class PlanApiDefinitionService extends ApiTestService { + + private static final String BASE_UEL = "/api/definition"; + + @Resource + @Lazy + TestPlanService testPlanService; + + public Object listRelevance(ApiDefinitionRequest request, int pageNum, int pageSize) { + if (StringUtils.isNotBlank(request.getPlanId()) && testPlanService.isAllowedRepeatCase(request.getPlanId())) { + request.setRepeatCase(true); + } + return microService.postForData(serviceName, BASE_UEL + String.format("/list/relevance/%s/%s", pageNum, pageSize), request); + } +} diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanApiCaseService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanApiCaseService.java index 66720342e4..7e7c5c0d08 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanApiCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanApiCaseService.java @@ -4,8 +4,11 @@ import io.metersphere.commons.exception.MSException; import io.metersphere.commons.utils.LogUtil; import io.metersphere.dto.*; import io.metersphere.plan.dto.*; +import io.metersphere.plan.request.api.ApiTestCaseRequest; +import io.metersphere.plan.service.TestPlanService; import io.metersphere.plan.utils.TestPlanStatusCalculator; import org.apache.commons.collections.CollectionUtils; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -21,6 +24,9 @@ public class PlanTestPlanApiCaseService extends ApiTestService { @Resource PlanApiDefinitionExecResultService planApiDefinitionExecResultService; + @Resource + @Lazy + TestPlanService testPlanService; /** * 计算测试计划中接口用例的相关数据 @@ -65,7 +71,7 @@ public class PlanTestPlanApiCaseService extends ApiTestService { } public List getExecResultByPlanId(String planId) { - return (List) microService.getForData(serviceName, BASE_UEL + "/plan/exec/result/" + planId); + return (List) microService.getForData(serviceName, BASE_UEL + "/plan/exec/result/" + planId); } public List listByPlanId(String planId) { @@ -85,7 +91,7 @@ public class PlanTestPlanApiCaseService extends ApiTestService { } public RunModeConfigDTO setApiCaseEnv(String planId, RunModeConfigDTO runModeConfig) { - return microService.postForData(serviceName, BASE_UEL + "/set/env/" + planId, runModeConfig, RunModeConfigDTO.class); + return microService.postForData(serviceName, BASE_UEL + "/set/env/" + planId, runModeConfig, RunModeConfigDTO.class); } @Transactional(propagation = Propagation.NOT_SUPPORTED) @@ -139,4 +145,9 @@ public class PlanTestPlanApiCaseService extends ApiTestService { public List buildResponse(List apiAllCases) { return microService.postForDataArray(serviceName, BASE_UEL + "/build/response", apiAllCases, TestPlanFailureApiDTO.class); } + + public Object relevanceList(int pageNum, int pageSize, ApiTestCaseRequest request) { + request.setAllowedRepeatCase(testPlanService.isAllowedRepeatCase(request.getPlanId())); + return microService.postForData(serviceName, BASE_UEL + String.format("/relevance/list/%s/%s", pageNum, pageSize), request); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanScenarioCaseService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanScenarioCaseService.java index a0beb0b190..200ba361c4 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanScenarioCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/api/PlanTestPlanScenarioCaseService.java @@ -7,8 +7,11 @@ import io.metersphere.dto.*; import io.metersphere.plan.constant.ApiReportStatus; import io.metersphere.plan.dto.*; import io.metersphere.plan.request.api.ApiPlanReportRequest; +import io.metersphere.plan.request.api.ApiScenarioRequest; +import io.metersphere.plan.service.TestPlanService; import io.metersphere.plan.utils.TestPlanStatusCalculator; import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -20,6 +23,10 @@ public class PlanTestPlanScenarioCaseService extends ApiTestService { private static final String BASE_UEL = "/test/plan/scenario/case"; + @Resource + @Lazy + TestPlanService testPlanService; + @Resource PlanApiScenarioReportService planApiScenarioReportService; @@ -166,4 +173,9 @@ public class PlanTestPlanScenarioCaseService extends ApiTestService { public List buildResponse(List scenarioCases) { return microService.postForDataArray(serviceName, BASE_UEL + "/build/response", scenarioCases, TestPlanFailureScenarioDTO.class); } + + public Object relevanceList(ApiScenarioRequest request, int pageNum, int pageSize) { + request.setAllowedRepeatCase(testPlanService.isAllowedRepeatCase(request.getPlanId())); + return microService.postForData(serviceName, BASE_UEL + String.format("/relevance/list/%s/%s", pageNum, pageSize), request); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/performance/PlanTestPlanLoadCaseService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/performance/PlanTestPlanLoadCaseService.java index d283fef491..41103e8902 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/performance/PlanTestPlanLoadCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/performance/PlanTestPlanLoadCaseService.java @@ -11,10 +11,10 @@ import io.metersphere.plan.dto.TestPlanSimpleReportDTO; import io.metersphere.plan.request.api.ApiPlanReportRequest; import io.metersphere.plan.request.performance.LoadCaseRequest; import io.metersphere.plan.request.performance.LoadPlanReportDTO; +import io.metersphere.plan.service.TestPlanService; import io.metersphere.plan.utils.TestPlanStatusCalculator; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Propagation; -import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; @@ -29,6 +29,9 @@ public class PlanTestPlanLoadCaseService extends LoadTestService { @Resource private PlanLoadTestReportService planLoadTestReportService; + @Resource + @Lazy + private TestPlanService testPlanService; public void calculatePlanReport(String planId, TestPlanSimpleReportDTO report) { try { @@ -117,4 +120,9 @@ public class PlanTestPlanLoadCaseService extends LoadTestService { public List buildResponse(List loadCases) { return microService.postForDataArray(serviceName, BASE_UEL + "/build/response", loadCases, TestPlanLoadCaseDTO.class); } + + public Object relevanceList(int pageNum, int pageSize, LoadCaseRequest request) { + request.setAllowedRepeatCase(testPlanService.isAllowedRepeatCase(request.getTestPlanId())); + return microService.postForData(serviceName, BASE_UEL + String.format("/relevance/list/%s/%s", pageNum, pageSize), request); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/ui/PlanTestPlanUiScenarioCaseService.java b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/ui/PlanTestPlanUiScenarioCaseService.java index d5c35a6c5c..fdd8e35383 100644 --- a/test-track/backend/src/main/java/io/metersphere/plan/service/remote/ui/PlanTestPlanUiScenarioCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/plan/service/remote/ui/PlanTestPlanUiScenarioCaseService.java @@ -10,10 +10,13 @@ import io.metersphere.plan.dto.TestPlanScenarioStepCountSimpleDTO; import io.metersphere.plan.dto.TestPlanSimpleReportDTO; import io.metersphere.plan.dto.UiPlanReportDTO; import io.metersphere.plan.request.api.ApiPlanReportRequest; +import io.metersphere.plan.request.api.ApiScenarioRequest; +import io.metersphere.plan.service.TestPlanService; import io.metersphere.plan.service.remote.api.PlanTestPlanScenarioCaseService; import io.metersphere.plan.service.remote.api.PlanUiScenarioReportService; import io.metersphere.plan.utils.TestPlanStatusCalculator; import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -29,6 +32,9 @@ public class PlanTestPlanUiScenarioCaseService extends UiTestService { @Resource private PlanUiScenarioReportService planUiScenarioReportService; + @Resource + @Lazy + TestPlanService testPlanService; public List getExecResultByPlanId(String planId) { return (List) microService.getForData(serviceName, BASE_UEL + "/plan/exec/result/" + planId); @@ -125,4 +131,9 @@ public class PlanTestPlanUiScenarioCaseService extends UiTestService { public List buildResponse(List uiCases) { return microService.postForDataArray(serviceName, BASE_UEL + "/build/response", uiCases, TestPlanUiScenarioDTO.class); } + + public Object relevanceList(ApiScenarioRequest request, int pageNum, int pageSize) { + request.setAllowedRepeatCase(testPlanService.isAllowedRepeatCase(request.getPlanId())); + return microService.postForData(serviceName, BASE_UEL + String.format("/relevance/list/%s/%s", pageNum, pageSize), request); + } } diff --git a/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java b/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java index 81375b89a8..aca2587f0d 100644 --- a/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java +++ b/test-track/backend/src/main/java/io/metersphere/service/TestCaseService.java @@ -30,6 +30,7 @@ import io.metersphere.log.utils.ReflexObjectUtil; import io.metersphere.log.vo.DetailColumn; import io.metersphere.log.vo.OperatingLogDetails; import io.metersphere.log.vo.track.TestCaseReference; +import io.metersphere.plan.service.TestPlanService; import io.metersphere.plan.service.TestPlanTestCaseService; import io.metersphere.request.OrderRequest; import io.metersphere.request.ProjectVersionRequest; @@ -155,9 +156,9 @@ public class TestCaseService { // private PerformanceTestService performanceTestService; @Resource private TestCaseFollowMapper testCaseFollowMapper; - // @Resource - // @Lazy - // private TestPlanService testPlanService; + @Resource + @Lazy + private TestPlanService testPlanService; @Resource private MinderExtraNodeService minderExtraNodeService; @Resource @@ -884,10 +885,9 @@ public class TestCaseService { request.getOrders().forEach(order -> { order.setPrefix("test_case"); }); - // todo - // if (testPlanService.isAllowedRepeatCase(request.getPlanId())) { - // request.setRepeatCase(true); - // } + if (testPlanService.isAllowedRepeatCase(request.getPlanId())) { + request.setRepeatCase(true); + } Page page = PageHelper.startPage(goPage, pageSize, true); return PageUtils.setPageInfo(page, getTestCaseByNotInPlan(request)); }