This is an automated email from the ASF dual-hosted git repository.
zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new c5e5ff7b19 [Improvement-15448] Remove redundant query in project list
(#16341)
c5e5ff7b19 is described below
commit c5e5ff7b1960083057cee324c2f69020d24bb703
Author: xiangzihao <[email protected]>
AuthorDate: Fri Jul 19 10:16:47 2024 +0800
[Improvement-15448] Remove redundant query in project list (#16341)
* remove redundant query
---
.../api/service/impl/ProjectServiceImpl.java | 14 ++++++++++
.../api/service/UsersServiceTest.java | 1 -
.../dolphinscheduler/dao/entity/Project.java | 5 ----
.../dao/entity/ProjectProcessDefinitionCount.java | 32 ++++++++++++++++++++++
.../dao/mapper/ProcessDefinitionMapper.java | 4 +++
.../dao/mapper/ProcessDefinitionMapper.xml | 12 ++++++++
.../dolphinscheduler/dao/mapper/ProjectMapper.xml | 18 +++---------
.../e2e/pages/resource/FileManagePage.java | 18 ++++++++++--
dolphinscheduler-ui/src/locales/en_US/project.ts | 1 -
dolphinscheduler-ui/src/locales/zh_CN/project.ts | 1 -
.../src/views/projects/list/use-table.ts | 8 ------
11 files changed, 82 insertions(+), 32 deletions(-)
diff --git
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
index b5c329c4fd..3c623b7029 100644
---
a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
+++
b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/ProjectServiceImpl.java
@@ -34,6 +34,7 @@ import
org.apache.dolphinscheduler.common.utils.CodeGenerateUtils;
import
org.apache.dolphinscheduler.common.utils.CodeGenerateUtils.CodeGenerateException;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
import org.apache.dolphinscheduler.dao.entity.Project;
+import org.apache.dolphinscheduler.dao.entity.ProjectProcessDefinitionCount;
import org.apache.dolphinscheduler.dao.entity.ProjectUser;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.ProcessDefinitionMapper;
@@ -393,6 +394,19 @@ public class ProjectServiceImpl extends BaseServiceImpl
implements ProjectServic
project.setPerm(Constants.DEFAULT_ADMIN_PERMISSION);
}
}
+ List<User> userList = userMapper.selectByIds(projectList.stream()
+
.map(Project::getUserId).distinct().collect(Collectors.toList()));
+ List<ProjectProcessDefinitionCount> projectProcessDefinitionCountList =
+
processDefinitionMapper.queryProjectProcessDefinitionCountByProjectCodes(
+
projectList.stream().map(Project::getCode).distinct().collect(Collectors.toList()));
+ for (Project project : projectList) {
+ project.setUserName(userList.stream().filter(user ->
user.getId().equals(project.getUserId()))
+ .findFirst().map(User::getUserName).orElse(null));
+ project.setDefCount(projectProcessDefinitionCountList.stream()
+ .filter(projectProcessDefinitionCount ->
projectProcessDefinitionCount.getProjectCode()
+ .equals(project.getCode()))
+
.findFirst().map(ProjectProcessDefinitionCount::getCount).orElse(0));
+ }
pageInfo.setTotal((int) projectIPage.getTotal());
pageInfo.setTotalList(projectList);
result.setData(pageInfo);
diff --git
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
index 290ffefe26..493af5fb2e 100644
---
a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
+++
b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/UsersServiceTest.java
@@ -833,7 +833,6 @@ public class UsersServiceTest {
project.setName("PJ-001");
project.setPerm(7);
project.setDefCount(0);
- project.setInstRunningCount(0);
return project;
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
index f3a626f5cd..ccce0b70e7 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/Project.java
@@ -91,9 +91,4 @@ public class Project {
@TableField(exist = false)
private int defCount;
- /**
- * process instance running count
- */
- @TableField(exist = false)
- private int instRunningCount;
}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectProcessDefinitionCount.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectProcessDefinitionCount.java
new file mode 100644
index 0000000000..7b796d23d2
--- /dev/null
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProjectProcessDefinitionCount.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ProjectProcessDefinitionCount {
+
+ private Long projectCode;
+
+ private Integer count;
+}
diff --git
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
index 689e93414b..22d354b5d2 100644
---
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
+++
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.java
@@ -19,6 +19,7 @@ package org.apache.dolphinscheduler.dao.mapper;
import org.apache.dolphinscheduler.dao.entity.DependentSimplifyDefinition;
import org.apache.dolphinscheduler.dao.entity.ProcessDefinition;
+import org.apache.dolphinscheduler.dao.entity.ProjectProcessDefinitionCount;
import org.apache.dolphinscheduler.dao.model.WorkflowDefinitionCountDto;
import org.apache.ibatis.annotations.Param;
@@ -170,5 +171,8 @@ public interface ProcessDefinitionMapper extends
BaseMapper<ProcessDefinition> {
* @return project ids list
*/
List<Integer> listProjectIds();
+
List<Long> queryDefinitionCodeListByProjectCodes(@Param("projectCodes")
List<Long> projectCodes);
+
+ List<ProjectProcessDefinitionCount>
queryProjectProcessDefinitionCountByProjectCodes(@Param("projectCodes")
List<Long> projectCodes);
}
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
index bcd21647b3..8c4f57f4db 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProcessDefinitionMapper.xml
@@ -194,4 +194,16 @@
#{i}
</foreach>
</select>
+
+ <select id="queryProjectProcessDefinitionCountByProjectCodes"
resultType="org.apache.dolphinscheduler.dao.entity.ProjectProcessDefinitionCount">
+ select
+ project_code as projectCode
+ ,count(*) as count
+ from t_ds_process_definition
+ where project_code in
+ <foreach collection="projectCodes" index="index" item="i" open="("
separator="," close=")">
+ #{i}
+ </foreach>
+ group by project_code
+ </select>
</mapper>
diff --git
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml
index 296a42a5fb..ddf4c0c490 100644
---
a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml
+++
b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/ProjectMapper.xml
@@ -82,20 +82,10 @@
</select>
<select id="queryProjectListPaging"
resultType="org.apache.dolphinscheduler.dao.entity.Project">
select
- <include refid="baseSqlV2">
- <property name="alias" value="p"/>
- </include> ,
- u.user_name as user_name,
- count(distinct def.id) AS def_count,
- count(distinct inst.id) as inst_running_count
+ <include refid="baseSqlV2">
+ <property name="alias" value="p"/>
+ </include>
from t_ds_project p
- left join t_ds_user u on u.id=p.user_id
- left join t_ds_process_definition def
- on def.project_code = p.code
- left join t_ds_process_instance inst
- on inst.process_definition_code = def.code
- and inst.process_definition_version = def.version
- and inst.state = 1
where 1=1
<if test="projectsIds != null and projectsIds.size() > 0">
and p.id in
@@ -108,7 +98,7 @@
OR p.description LIKE concat('%', #{searchName}, '%')
)
</if>
- group by p.id,u.user_name
+ group by p.id
order by p.id desc
</select>
<select id="queryAuthedProjectListByUserId"
resultType="org.apache.dolphinscheduler.dao.entity.Project">
diff --git
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
index 5f373b8190..b4f15509a5 100644
---
a/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
+++
b/dolphinscheduler-e2e/dolphinscheduler-e2e-case/src/test/java/org/apache/dolphinscheduler/e2e/pages/resource/FileManagePage.java
@@ -91,15 +91,18 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
}
public FileManagePage createDirectory(String name) {
+ waitForPageLoading();
buttonCreateDirectory().click();
createDirectoryBox().inputDirectoryName().sendKeys(name);
+ WebDriverWaitFactory.createWebDriverWait(driver)
+
.until(ExpectedConditions.elementToBeClickable(createDirectoryBox().buttonSubmit()));
createDirectoryBox().buttonSubmit().click();
-
return this;
}
public FileManagePage cancelCreateDirectory(String name) {
+ waitForPageLoading();
buttonCreateDirectory().click();
createDirectoryBox().inputDirectoryName().sendKeys(name);
@@ -109,6 +112,7 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
}
public FileManagePage rename(String currentName, String AfterName) {
+ waitForPageLoading();
fileList()
.stream()
.filter(it -> it.getText().contains(currentName))
@@ -138,12 +142,15 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
buttonCreateDirectory().click();
createDirectoryBox().inputDirectoryName().sendKeys(subDirectoryName);
+ WebDriverWaitFactory.createWebDriverWait(driver)
+
.until(ExpectedConditions.elementToBeClickable(createDirectoryBox().buttonSubmit()));
createDirectoryBox().buttonSubmit().click();
return this;
}
public FileManagePage delete(String name) {
+ waitForPageLoading();
fileList()
.stream()
.filter(it -> it.getText().contains(name))
@@ -160,7 +167,7 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
// todo: add file type
public FileManagePage createFile(String fileName, String scripts) {
-
+ waitForPageLoading();
WebDriverWaitFactory.createWebDriverWait(driver)
.until(ExpectedConditions.elementToBeClickable(buttonCreateFile()));
@@ -189,6 +196,7 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
}
public FileManagePage editFile(String fileName, String scripts) {
+ waitForPageLoading();
fileList()
.stream()
.filter(it -> it.getText().contains(fileName))
@@ -210,6 +218,7 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
}
public FileManagePage uploadFile(String filePath) {
+ waitForPageLoading();
buttonUploadFile().click();
driver.setFileDetector(new LocalFileDetector());
@@ -221,6 +230,7 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
}
public FileManagePage downloadFile(String fileName) {
+ waitForPageLoading();
fileList()
.stream()
.filter(it -> it.getText().contains(fileName))
@@ -233,6 +243,10 @@ public class FileManagePage extends NavBarPage implements
ResourcePage.Tab {
return this;
}
+ private void waitForPageLoading() {
+
WebDriverWaitFactory.createWebDriverWait(driver).until(ExpectedConditions.urlContains("/resource/file-manage"));
+ }
+
@Getter
public class CreateDirectoryBox {
diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts
b/dolphinscheduler-ui/src/locales/en_US/project.ts
index 1f366f5393..a42b652eff 100644
--- a/dolphinscheduler-ui/src/locales/en_US/project.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/project.ts
@@ -27,7 +27,6 @@ export default {
project_description: 'Project Description',
owned_users: 'Owned Users',
workflow_define_count: 'Workflow Define Count',
- process_instance_running_count: 'Process Instance Running Count',
description: 'Description',
create_time: 'Create Time',
update_time: 'Update Time',
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
index 1f3c2624e3..cb7e320118 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
@@ -27,7 +27,6 @@ export default {
project_description: '项目描述',
owned_users: '所属用户',
workflow_define_count: '工作流定义数',
- process_instance_running_count: '正在运行的流程数',
description: '描述',
create_time: '创建时间',
update_time: '更新时间',
diff --git a/dolphinscheduler-ui/src/views/projects/list/use-table.ts
b/dolphinscheduler-ui/src/views/projects/list/use-table.ts
index f3c30e96e8..68f2bc25dc 100644
--- a/dolphinscheduler-ui/src/views/projects/list/use-table.ts
+++ b/dolphinscheduler-ui/src/views/projects/list/use-table.ts
@@ -122,14 +122,6 @@ export function useTable() {
tooltip: true
}
},
- {
- title: t('project.list.process_instance_running_count'),
- key: 'instRunningCount',
- width: 120,
- ellipsis: {
- tooltip: true
- }
- },
{
title: t('project.list.description'),
key: 'description',