diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionController.java index 38685d6bbde9..a6d880b39238 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionController.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionController.java @@ -479,7 +479,9 @@ public Result queryWorkflowDefinitionSimpleList(@Parameter(hidden = t @Parameter(name = "userId", description = "USER_ID", required = false, schema = @Schema(implementation = int.class, example = "100")), @Parameter(name = "pageNo", description = "PAGE_NO", required = true, schema = @Schema(implementation = int.class, example = "1")), @Parameter(name = "pageSize", description = "PAGE_SIZE", required = true, schema = @Schema(implementation = int.class, example = "10")), - @Parameter(name = "otherParamsJson", description = "OTHER_PARAMS_JSON", required = false, schema = @Schema(implementation = String.class)) + @Parameter(name = "otherParamsJson", description = "OTHER_PARAMS_JSON", required = false, schema = @Schema(implementation = String.class)), + @Parameter(name = "sortField", description = "SORT_FIELD", required = false, schema = @Schema(implementation = String.class, example = "updateTime")), + @Parameter(name = "sortOrder", description = "SORT_ORDER", required = false, schema = @Schema(implementation = String.class, example = "desc")) }) @GetMapping() @ResponseStatus(HttpStatus.OK) @@ -491,13 +493,15 @@ public Result> queryWorkflowDefinitionListPaging( @RequestParam(value = "otherParamsJson", required = false) String otherParamsJson, @RequestParam(value = "userId", required = false, defaultValue = "0") Integer userId, @RequestParam("pageNo") Integer pageNo, - @RequestParam("pageSize") Integer pageSize) { + @RequestParam("pageSize") Integer pageSize, + @RequestParam(value = "sortField", required = false) String sortField, + @RequestParam(value = "sortOrder", required = false) String sortOrder) { checkPageParams(pageNo, pageSize); searchVal = ParameterUtils.handleEscapes(searchVal); PageInfo pageInfo = workflowDefinitionService.queryWorkflowDefinitionListPaging( - loginUser, projectCode, searchVal, otherParamsJson, userId, pageNo, pageSize); + loginUser, projectCode, searchVal, otherParamsJson, userId, pageNo, pageSize, sortField, sortOrder); if (pageInfo != null && pageInfo.getTotalList() != null) { pageInfo.setTotalList(pageInfo.getTotalList().stream() .map(SensitivePropertyUtils::mask) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionService.java index b71075ec411d..c44bd69b842e 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionService.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionService.java @@ -74,7 +74,9 @@ PageInfo queryWorkflowDefinitionListPaging(User loginUser, String otherParamsJson, Integer userId, Integer pageNo, - Integer pageSize); + Integer pageSize, + String sortField, + String sortOrder); /** * query detail of workflow definition diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java index 730152ff1340..771e47ccdbb2 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/WorkflowDefinitionServiceImpl.java @@ -506,14 +506,16 @@ public PageInfo queryWorkflowDefinitionListPaging(@NonNull U String otherParamsJson, Integer userId, Integer pageNo, - Integer pageSize) { + Integer pageSize, + String sortField, + String sortOrder) { // check user access for project projectService.checkProjectAndAuthThrowException(loginUser, projectCode, WORKFLOW_DEFINITION); PageListingResult workflowDefinitionPageListingResult = workflowDefinitionDao.listingWorkflowDefinition( - pageNo, pageSize, searchVal, userId, projectCode); + pageNo, pageSize, searchVal, userId, projectCode, sortField, sortOrder); List workflowDefinitions = workflowDefinitionPageListingResult.getRecords(); List workflowDefinitionCodes = diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionControllerTest.java index 470d1cf571a4..c8db31efa1a9 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionControllerTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/WorkflowDefinitionControllerTest.java @@ -310,10 +310,11 @@ public void testQueryWorkflowDefinitionListPaging() { Mockito.when( processDefinitionService.queryWorkflowDefinitionListPaging(user, projectCode, searchVal, "", userId, - pageNo, pageSize)) + pageNo, pageSize, null, null)) .thenReturn(pageInfo); Result> response = workflowDefinitionController - .queryWorkflowDefinitionListPaging(user, projectCode, searchVal, "", userId, pageNo, pageSize); + .queryWorkflowDefinitionListPaging(user, projectCode, searchVal, "", userId, pageNo, pageSize, + null, null); Assertions.assertTrue(response != null && response.isSuccess()); assertMaskedAndOriginalUnchanged(workflowDefinition.getGlobalParams(), diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java index c5af336eff84..0dcc07f31590 100644 --- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java +++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/WorkflowDefinitionServiceTest.java @@ -336,7 +336,8 @@ public void testQueryWorkflowDefinitionListPaging() { try { doThrow(new ServiceException(Status.PROJECT_NOT_EXIST)).when(projectService) .checkProjectAndAuthThrowException(user, projectCode, WORKFLOW_DEFINITION); - workflowDefinitionService.queryWorkflowDefinitionListPaging(user, projectCode, "", "", 1, 5, 0); + workflowDefinitionService.queryWorkflowDefinitionListPaging(user, projectCode, "", "", 1, 5, 0, null, + null); } catch (ServiceException serviceException) { Assertions.assertEquals(Status.PROJECT_NOT_EXIST.getCode(), serviceException.getCode()); } @@ -363,7 +364,9 @@ public void testQueryWorkflowDefinitionListPaging() { eq(10), eq(""), eq(1), - eq(projectCode))).thenReturn(pageListingResult); + eq(projectCode), + any(), + any())).thenReturn(pageListingResult); String user1 = "user1"; String user2 = "user2"; when(userDao.queryUserWithWorkflowDefinitionCode(processDefinitionCodes)) @@ -391,7 +394,9 @@ public void testQueryWorkflowDefinitionListPaging() { "", 1, 0, - 10); + 10, + null, + null); Assertions.assertNotNull(pageInfo); WorkflowDefinition pd1 = pageInfo.getTotalList().stream() .filter(pd -> pd.getCode() == processDefinitionCode1).findFirst().orElse(null); diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.java index 6fa7e6e50fb5..0eda15ff18d0 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.java @@ -101,7 +101,9 @@ WorkflowDefinition queryByDefineName(@Param("projectCode") long projectCode, IPage queryDefineListPaging(IPage page, @Param("searchVal") String searchVal, @Param("userId") int userId, - @Param("projectCode") long projectCode); + @Param("projectCode") long projectCode, + @Param("sortField") String sortField, + @Param("sortOrder") String sortOrder); /** * Filter workflow definitions diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/WorkflowDefinitionDao.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/WorkflowDefinitionDao.java index d202471a24da..eacac975ac3b 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/WorkflowDefinitionDao.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/WorkflowDefinitionDao.java @@ -42,7 +42,9 @@ PageListingResult listingWorkflowDefinition( int pageSize, @Nullable String searchVal, int userId, - long projectCode); + long projectCode, + @Nullable String sortField, + @Nullable String sortOrder); Optional queryByCode(long code); diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/WorkflowDefinitionDaoImpl.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/WorkflowDefinitionDaoImpl.java index b21a49ed59e2..558351da3a12 100644 --- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/WorkflowDefinitionDaoImpl.java +++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/repository/impl/WorkflowDefinitionDaoImpl.java @@ -52,10 +52,11 @@ public WorkflowDefinitionDaoImpl(@NonNull WorkflowDefinitionMapper workflowDefin @Override public PageListingResult listingWorkflowDefinition(int pageNumber, int pageSize, String searchVal, - int userId, long projectCode) { + int userId, long projectCode, + String sortField, String sortOrder) { Page page = new Page<>(pageNumber, pageSize); IPage processDefinitions = - mybatisMapper.queryDefineListPaging(page, searchVal, userId, projectCode); + mybatisMapper.queryDefineListPaging(page, searchVal, userId, projectCode, sortField, sortOrder); return PageListingResult.builder() .totalCount(processDefinitions.getTotal()) diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.xml index ceec6371e68d..0be72e960174 100644 --- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.xml +++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/WorkflowDefinitionMapper.xml @@ -79,7 +79,29 @@ name like concat('%', #{searchVal}, '%') OR description like concat('%', #{searchVal}, '%') ) - order by update_time desc, id asc + order by + + + + name asc + name desc + + + + + create_time asc + create_time desc + + + + + update_time asc + update_time desc + + + update_time desc + + , id asc