From 025700354836c7fc9ea56d6c90735886c657e543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Mon, 6 May 2024 17:32:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C=E7=A9=BA?= =?UTF-8?q?=E9=97=B4=E6=A6=82=E8=A7=88=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspace/WorkspaceController.java | 15 +++- .../platform/mapper/ExperimentInsDao.java | 12 +++ .../ruoyi/platform/mapper/WorkflowDao.java | 14 +++- .../service/ExperimentInsService.java | 2 + .../platform/service/WorkspaceService.java | 14 +++- .../impl/ExperimentInsServiceImpl.java | 30 +++++++- .../service/impl/WorkspaceServiceImpl.java | 73 ++++++++++++++++++- .../ExperimentInsDaoMapper.xml | 10 +++ .../managementPlatform/WorkflowDaoMapper.xml | 7 ++ 9 files changed, 170 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java index b5e0a4c7..da180dec 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java @@ -2,6 +2,9 @@ package com.ruoyi.platform.controller.workspace; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.domain.GenericsAjaxResult; +import com.ruoyi.platform.service.JupyterService; +import com.ruoyi.platform.service.WorkspaceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; @@ -9,14 +12,20 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import java.util.Map; + @RestController @RequestMapping("workspace") @Api("工作空间管理") public class WorkspaceController extends BaseController { + @Resource + private WorkspaceService workspaceService; + @GetMapping("/overview") - @ApiOperation("运行概览") - public AjaxResult queryById(@PathVariable("id") Integer id) { - return AjaxResult.success(this.datasetService.queryById(id)); + @ApiOperation("得到运行概览") + public GenericsAjaxResult> getOverview() { + return genericsSuccess(this.workspaceService.getOverview()); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java index c5f13883..58642324 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java @@ -39,6 +39,14 @@ public interface ExperimentInsDao { */ long count(@Param("experimentIns") ExperimentIns experimentIns); + /* + 统计实验实例总数 + + + @return 总行数 + */ +// long experimentInsCount(String status); + /** * 新增数据 * @@ -89,6 +97,10 @@ public interface ExperimentInsDao { */ List getByExperimentId(Integer experimentId); + List getLatestInsList(); + + + List queryByExperiment(@Param("experimentIns") ExperimentIns experimentIns); List queryByExperimentId(Integer id); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowDao.java index 4dd7135c..e54f6789 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/WorkflowDao.java @@ -33,13 +33,25 @@ public interface WorkflowDao { List queryAllByLimit(@Param("workflow") Workflow workflow, @Param("pageable") Pageable pageable); /** - * 统计总行数 + * 统计总行数 实体作为筛选条件 * * @param workflow 查询条件 * @return 总行数 */ long count(@Param("workflow") Workflow workflow); + + /** + * 统计流水线总数 + * + * + * @return 总行数 + */ + long workflowCount(); + + + + /** * 新增数据 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index 1940fd2d..e8020161 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -103,4 +103,6 @@ public interface ExperimentInsService { * @return */ List queryByExperimentIsNotTerminated(); + + Map countByStatus(); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java index 7d805951..21c59fc2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java @@ -1,11 +1,23 @@ package com.ruoyi.platform.service; +import java.util.Map; + /** * (workspace)服务接口 * * @author Xidaray * @since 2024-5-06 14:38:07 */ -public class WorkspaceService { +public interface WorkspaceService { + + + + /** + * 得到工作空间数据概览 + * + * @return 概览数据 + */ + Map getOverview(); + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 14c2997d..09bb0dea 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -1,7 +1,6 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; -import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; @@ -62,6 +61,15 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { this.minioUtil = minioUtil; } + public enum ExperimentInsStatus { + Running, + Succeeded, + Pending, + Failed, + Terminated + } + + /** * 通过ID查询单条数据 * @@ -533,6 +541,26 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { return experimentInsDao.queryByExperimentIsNotTerminated(); } + @Override + public Map countByStatus() { + // 创建一个用于存储状态计数的映射 + Map statusCountMap = new HashMap<>(); + + // 遍历枚举中的所有状态 + for (ExperimentInsStatus status : ExperimentInsStatus.values()) { + ExperimentIns experimentIns = new ExperimentIns(); + experimentIns.setStatus(status.toString()); // 设置实例的状态为枚举中的状态 + + // 查询具有相同状态的实例数量 + Long count = experimentInsDao.count(experimentIns); + + // 将状态及其对应的实例数量放入映射中 + statusCountMap.put(status.toString(), count); + } + + return statusCountMap; + } + private boolean isTerminatedState(ExperimentIns ins) throws IOException { // 定义终止态的列表,例如 "Succeeded", "Failed" 等 String status = ins.getStatus(); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java index d9362433..a45781a0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java @@ -1,7 +1,78 @@ package com.ruoyi.platform.service.impl; +import com.ruoyi.platform.domain.ExperimentIns; +import com.ruoyi.platform.mapper.*; +import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.ModelsService; +import com.ruoyi.platform.service.WorkflowService; +import com.ruoyi.platform.service.WorkspaceService; +import lombok.val; +import org.springframework.stereotype.Service; -public class WorkspaceServiceImpl implements ModelsService { +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +@Service("WorkspaceService") +public class WorkspaceServiceImpl implements WorkspaceService { + + + @Resource + private WorkflowService workflowService; + @Resource + private WorkflowDao workflowDao; + @Resource + private ExperimentDao experimentDao; + + @Resource + private ExperimentInsDao experimentInsDao; + + @Resource + private ExperimentInsService experimentInsService; + + @Resource + private ModelsService modelsService; + @Resource + private ModelsDao modelsDao; + + @Resource + private DatasetDao datasetDao; + + @Resource + private ImageDao imageDao; + + @Resource + private ComponentDao componentDao; + + + + + @Override + public Map getOverview() { + Map resMap = new HashMap(); + + // 获取流水线数量 + Long workflowCount = workflowDao.workflowCount(); + resMap.put("workflowCount", workflowCount); + + // 获取运行中实验实例数量 + List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); + if (experimentInsList!=null&&!experimentInsList.isEmpty()) { + Integer experimentInsCount = experimentInsList.size(); + resMap.put("runningExperimentInsCount", experimentInsCount); + }else{ + resMap.put("runningExperimentInsCount", 0); + } + //得到最近的三条实例记录,放进返回map + List latestExperimentInsList = experimentInsDao.getLatestInsList(); + if (latestExperimentInsList != null && !latestExperimentInsList.isEmpty()) { + resMap.put("latestExperimentInsList", latestExperimentInsList); + } + + Map statusMap = experimentInsService.countByStatus(); + resMap.put("experimentInsStatus", statusMap); + + return resMap; + } } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml index 6ed73cdb..71dace3e 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml @@ -45,6 +45,16 @@ limit 5 + + + + + + + insert into workflow(name, description, dag, global_param, create_by, create_time, update_by, update_time,state)