From 39b9b54b75ff284da95decef6e755d29c771628a Mon Sep 17 00:00:00 2001 From: liu2592603532 <2592603532@qq.com> Date: Tue, 30 Apr 2024 10:34:07 +0800 Subject: [PATCH 1/7] merge --- react-ui/config/defaultSettings.ts | 2 +- react-ui/config/routes.ts | 55 ++++++++++++++++++----- react-ui/src/assets/img/missing-back.png | Bin 0 -> 154263 bytes react-ui/src/pages/Experiment/index.jsx | 2 +- react-ui/src/pages/missingPage.jsx | 10 +++++ 5 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 react-ui/src/assets/img/missing-back.png create mode 100644 react-ui/src/pages/missingPage.jsx diff --git a/react-ui/config/defaultSettings.ts b/react-ui/config/defaultSettings.ts index e2ef641a..7c1cfbd5 100644 --- a/react-ui/config/defaultSettings.ts +++ b/react-ui/config/defaultSettings.ts @@ -19,7 +19,7 @@ const Settings: ProLayoutProps & { title: '智能软件开发平台', pwa: true, logo: '/assets/images/left-top-logo.png', - iconfontUrl: '//at.alicdn.com/t/c/font_4511326_2511riex401.js', + iconfontUrl: '//at.alicdn.com/t/c/font_4511326_1cmi0j3dj1x.js', token: { // 参见ts声明,demo 见文档,通过token 修改样式 //https://procomponents.ant.design/components/layout#%E9%80%9A%E8%BF%87-token-%E4%BF%AE%E6%94%B9%E6%A0%B7%E5%BC%8F diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index 5de745ab..daf4305a 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -68,32 +68,33 @@ export default [ routes: [ { name: '流水线', - path: '', + path: '/pipeline/pipelineText', component: './Pipeline/index', }, { name: '训练', - path: 'pytorchtext/:id/:name', + path: '/pipeline/pytorchtext/:id/:name', component: './Pipeline/editPipeline/index', }, - ], - }, - { - name: 'experiment', - path: '/experiment', - routes: [ { name: '实验', - path: '', + path: '/pipeline/experimentText', component: './Experiment/index', }, { name: '实验训练', - path: 'pytorchtext/:workflowId/:id', + path: '/pipeline/experimentPytorchtext/:workflowId/:id', component: './Experiment/experimentText/index', }, ], }, + { + name: 'experiment', + path: '/experiment', + routes: [ + + ], + }, { name: 'developmentEnvironment', path: '/developmentEnvironment', @@ -168,6 +169,40 @@ export default [ }, ], }, + + { + name: 'workspace', + path: '/workspace', + routes: [ + { + name: '工作空间', + path: '', + component: './missingPage.jsx', + }, + ], + }, + { + name: 'modelDseployment', + path: '/modelDseployment', + routes: [ + { + name: '模型部署', + path: '', + component: './missingPage.jsx', + }, + ], + }, + { + name: 'appsDeployment', + path: '/appsDeployment', + routes: [ + { + name: '应用开发', + path: '', + component: './missingPage.jsx', + }, + ], + }, { name: 'monitor', path: '/monitor', diff --git a/react-ui/src/assets/img/missing-back.png b/react-ui/src/assets/img/missing-back.png new file mode 100644 index 0000000000000000000000000000000000000000..850651cee6b5325a8426b5204209badf11cc5d6e GIT binary patch literal 154263 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

k)3Gg@jwlh@$ft#1u1z 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 literal 0 HcmV?d00001 diff --git a/react-ui/src/pages/Experiment/index.jsx b/react-ui/src/pages/Experiment/index.jsx index 69748b4e..611c18c6 100644 --- a/react-ui/src/pages/Experiment/index.jsx +++ b/react-ui/src/pages/Experiment/index.jsx @@ -256,7 +256,7 @@ function Experiment() { }; const routerToText = (e, item, record) => { e.stopPropagation(); - navgite({ pathname: `/experiment/pytorchtext/${record.workflow_id}/${item.id}` }); + navgite({ pathname: `/pipeline/experimentPytorchtext/${record.workflow_id}/${item.id}` }); }; const handleTensorboard = async (experimentIn) => { diff --git a/react-ui/src/pages/missingPage.jsx b/react-ui/src/pages/missingPage.jsx new file mode 100644 index 00000000..351120e8 --- /dev/null +++ b/react-ui/src/pages/missingPage.jsx @@ -0,0 +1,10 @@ +import missingPage from '@/assets/img/missing-back.png'; + +const MissingPage = () => ( +

+ + 页面开发中,敬请期待...... +
+); + +export default MissingPage; From b862c72a90117433e0302795dc5b07e680322f07 Mon Sep 17 00:00:00 2001 From: liu2592603532 <2592603532@qq.com> Date: Tue, 30 Apr 2024 10:40:59 +0800 Subject: [PATCH 2/7] merge --- react-ui/config/routes.ts | 12 ++++++++++++ react-ui/src/global.less | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/react-ui/config/routes.ts b/react-ui/config/routes.ts index daf4305a..a44c0cbb 100644 --- a/react-ui/config/routes.ts +++ b/react-ui/config/routes.ts @@ -192,6 +192,7 @@ export default [ }, ], }, + { name: 'appsDeployment', path: '/appsDeployment', @@ -203,6 +204,17 @@ export default [ }, ], }, + { + name: 'see', + path: '/see', + routes: [ + { + name: '监控运维', + path: '', + component: './missingPage.jsx', + }, + ], + }, { name: 'monitor', path: '/monitor', diff --git a/react-ui/src/global.less b/react-ui/src/global.less index 69161adc..4117cad0 100644 --- a/react-ui/src/global.less +++ b/react-ui/src/global.less @@ -59,10 +59,11 @@ body { padding-top: 40px; } .ant-table-wrapper .ant-table-container table > thead > tr:first-child > *:first-child, -.ant-table-wrapper .ant-table-container table > tbody > tr:first-child { +.ant-table-wrapper .ant-table-tbody>tr>td:first-child { padding: 0 30px; } + .ant-pro-global-header-logo-mix { width: 257px; height: 75px; From c5a9b01abbf88fa97d766325e86198e4effc6225 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 09:40:21 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=B5=81=E6=B0=B4=E7=BA=BF=EF=BC=8C?= =?UTF-8?q?=E5=AE=9E=E9=AA=8C=E5=90=8D=E5=AD=97=E6=B7=BB=E5=8A=A0=E5=88=A4?= =?UTF-8?q?=E9=87=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/domain/Experiment.java | 2 ++ .../java/com/ruoyi/platform/domain/Image.java | 2 ++ .../com/ruoyi/platform/domain/Workflow.java | 2 ++ .../ruoyi/platform/mapper/ExperimentDao.java | 6 +++- .../ExperimentInstanceStatusTask.java | 10 +++++-- .../platform/service/DatasetService.java | 2 +- .../platform/service/ExperimentService.java | 3 ++ .../platform/service/WorkflowService.java | 3 ++ .../service/impl/ExperimentServiceImpl.java | 24 +++++++++++++++ .../service/impl/WorkflowServiceImpl.java | 30 +++++++++++++++++++ .../ExperimentDaoMapper.xml | 9 ++++++ 11 files changed, 88 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java index 831302b7..01118a23 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Experiment.java @@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; import com.ruoyi.common.core.web.domain.BaseEntity; +import com.ruoyi.platform.annotations.CheckDuplicate; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -28,6 +29,7 @@ public class Experiment implements Serializable { @ApiModelProperty(value = "主键") private Integer id; @ApiModelProperty(value = "名称") + @CheckDuplicate private String name; @ApiModelProperty(value = "工作流ID") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Image.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Image.java index 981289a1..d3b97185 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Image.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Image.java @@ -2,6 +2,7 @@ package com.ruoyi.platform.domain; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.annotations.CheckDuplicate; import io.swagger.annotations.ApiModelProperty; import java.util.Date; @@ -25,6 +26,7 @@ public class Image implements Serializable { * 镜像名称 */ @ApiModelProperty(value = "名称") + @CheckDuplicate private String name; @ApiModelProperty(value = "镜像描述") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java index 487f7653..97ac1eba 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/Workflow.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonRawValue; import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.annotation.JsonNaming; +import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.handler.BaseMetaObjectHandler; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -33,6 +34,7 @@ public class Workflow extends BaseMetaObjectHandler implements Serializable { private Long id; @ApiModelProperty(value = "工作流名称") + @CheckDuplicate private String name; @ApiModelProperty(value = "流水线描述") diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentDao.java index d1db8828..6a24e02e 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentDao.java @@ -1,5 +1,6 @@ package com.ruoyi.platform.mapper; +import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Experiment; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; @@ -80,6 +81,9 @@ public interface ExperimentDao { */ int deleteById(Integer id); - List queryByExperiment(@Param("experiment")Experiment experiment); + List queryByExperiment(@Param("experiment") Experiment experiment); + + Experiment findByName(@Param("name") String name); + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index c1bfa662..b7ea8648 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -30,6 +30,7 @@ public class ExperimentInstanceStatusTask { private ExperimentInsDao experimentInsDao; private List experimentIds = new ArrayList<>(); + @Scheduled(cron = "0/30 * * * * ?") // 每30S执行一次 public void executeExperimentInsStatus() throws IOException { // 首先查到所有非终止态的实验实例 @@ -47,15 +48,16 @@ public class ExperimentInstanceStatusTask { } if (!StringUtils.equals(oldStatus,experimentIns.getStatus())){ experimentIns.setUpdateTime(new Date()); + // 线程安全的添加操作 synchronized (experimentIds) { - experimentIds.add(experimentIns.getExperimentId()); // 线程安全的添加操作 + experimentIds.add(experimentIns.getExperimentId()); } updateList.add(experimentIns); - } experimentInsDao.update(experimentIns); } + } if (updateList.size() > 0){ experimentInsDao.insertOrUpdateBatch(updateList); @@ -85,11 +87,13 @@ public class ExperimentInstanceStatusTask { updateExperiments.add(experiment); } } + if (!updateExperiments.isEmpty()) { experimentDao.insertOrUpdateBatch(updateExperiments); for (int index = 0; index < updateExperiments.size(); index++) { + // 线程安全的删除操作 synchronized (experimentIds) { - experimentIds.remove(index); // 线程安全的删除操作 + experimentIds.remove(index); } } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java index 0f8cc707..edfe8cbe 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetService.java @@ -79,7 +79,7 @@ DatasetService { List getDatasetVersions(Integer datasetId) throws Exception; String insertDatasetAndVersion(DatasetVo datasetVo) throws Exception; - public void checkDeclaredName(Dataset insert) throws Exception; + void checkDeclaredName(Dataset insert) throws Exception; ResponseEntity downloadAllDatasetFiles(Integer datasetId, String version) throws Exception; diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java index 44af21bc..67e60ac2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service; import com.ruoyi.platform.domain.Experiment; +import com.ruoyi.platform.domain.Workflow; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.http.ResponseEntity; @@ -75,4 +76,6 @@ public interface ExperimentService { ResponseEntity showExperimentConfig(Experiment experiment); List queryByWorkflowId(Long id); + + void checkDeclaredName(Experiment insert) throws Exception; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java index 41397348..772c9bd6 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service; import com.fasterxml.jackson.core.JsonProcessingException; +import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Workflow; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -64,6 +65,8 @@ public interface WorkflowService { Workflow duplicateWorkflow(Long id); + void checkDeclaredName(Workflow insert) throws Exception; + /** * 按流水线id保存 * diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 3cef14d1..3eed94e1 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.annotations.CheckDuplicate; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.domain.Workflow; @@ -25,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; +import java.lang.reflect.Field; import java.util.*; /** @@ -317,6 +319,28 @@ public class ExperimentServiceImpl implements ExperimentService { return experimentDao.queryByExperiment(experiment); } + public void checkDeclaredName(Experiment insert) throws Exception { + Experiment existingExperiment = experimentDao.findByName(insert.getName()); + + if (existingExperiment != null) { + // 检查找到的流水线是否与要插入的流水线相同 + if (insert.getId() != null && insert.getId().equals(existingExperiment.getId())) { + // 这是相同的流水线,更新操作中没有重复名称问题 + return; + } + // 现在我们知道还有另一个具有相同名称的流水线 + Field[] fields = Experiment.class.getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); // 使私有字段可访问 + if ("name".equals(field.getName()) && field.isAnnotationPresent(CheckDuplicate.class)) { + // 如果字段是“name”并且标记了CheckDuplicate注解 + CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); + throw new Exception("重复的实验名称: " + insert.getName() + ". " + annotation.message()); + } + } + } + } + diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java index 59cb170d..d09312dc 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java @@ -1,6 +1,8 @@ package com.ruoyi.platform.service.impl; import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.platform.annotations.CheckDuplicate; +import com.ruoyi.platform.domain.Dataset; import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.Workflow; import com.ruoyi.platform.mapper.WorkflowDao; @@ -18,6 +20,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.lang.reflect.Field; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -191,7 +194,34 @@ public class WorkflowServiceImpl implements WorkflowService { } return null; + + } + public void checkDeclaredName(Workflow insert) throws Exception { + List existingWorkflowList = workflowDao.queryByName(insert.getName()); + + Workflow existingWorkflow = existingWorkflowList.stream().findFirst().orElse(null); + if (existingWorkflow != null) { + // 检查找到的流水线是否与要插入的流水线相同 + if (insert.getId() != null && insert.getId().equals(existingWorkflow.getId())) { + // 这是相同的流水线,更新操作中没有重复名称问题 + return; + } + // 现在我们知道还有另一个具有相同名称的流水线 + Field[] fields = Workflow.class.getDeclaredFields(); + for (Field field : fields) { + field.setAccessible(true); // 使私有字段可访问 + if ("name".equals(field.getName()) && field.isAnnotationPresent(CheckDuplicate.class)) { + // 如果字段是“name”并且标记了CheckDuplicate注解 + CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); + throw new Exception("重复的流水线名称: " + insert.getName() + ". " + annotation.message()); + } + } + } + } + + + } diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml index c39dcd9e..80a53eb1 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentDaoMapper.xml @@ -24,6 +24,14 @@ where id = #{id} and state = 1 + + + + insert into experiment(name,workflow_id, global_param, status_list, description, create_by, create_time, update_by, update_time, state) From 9756ff0886d09d49f7371f4e6bb0042ba964f5a9 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 14:40:50 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A9=BA=E9=97=B4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../experiment/ExperimentController.java | 4 ++-- .../workflow/WorkflowController.java | 2 +- .../workspace/WorkspaceController.java | 22 +++++++++++++++++++ .../ruoyi/platform/mapper/WorkflowDao.java | 4 ++++ .../platform/service/ExperimentService.java | 4 ++-- .../platform/service/WorkflowService.java | 2 +- .../platform/service/WorkspaceService.java | 11 ++++++++++ .../service/impl/ExperimentServiceImpl.java | 7 +++--- .../service/impl/WorkflowServiceImpl.java | 7 +++--- .../service/impl/WorkspaceServiceImpl.java | 7 ++++++ .../managementPlatform/WorkflowDaoMapper.xml | 8 +++++++ 11 files changed, 65 insertions(+), 13 deletions(-) create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java create mode 100644 ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java index cc8fff85..230b77a4 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java @@ -79,7 +79,7 @@ public class ExperimentController extends BaseController { */ @PostMapping @ApiOperation("新增实验") - public GenericsAjaxResult add(@RequestBody Experiment experiment) { + public GenericsAjaxResult add(@RequestBody Experiment experiment) throws Exception { return genericsSuccess(this.experimentService.insert(experiment)); } @@ -131,7 +131,7 @@ public class ExperimentController extends BaseController { */ @PostMapping("/addAndRunExperiment") @ApiOperation("实验创建页面确定并运行") - public GenericsAjaxResult addAndRunExperiment(@RequestBody Experiment experiment) { + public GenericsAjaxResult addAndRunExperiment(@RequestBody Experiment experiment) throws Exception { return genericsSuccess(this.experimentService.addAndRunExperiment(experiment)); } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java index 359b3dfc..eec963b2 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workflow/WorkflowController.java @@ -79,7 +79,7 @@ public class WorkflowController extends BaseController { */ @PostMapping @ApiOperation("新增流水线") - public GenericsAjaxResult add(@RequestBody Workflow workflow) { + public GenericsAjaxResult add(@RequestBody Workflow workflow) throws Exception { return genericsSuccess(this.workflowService.insert(workflow)); } 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 new file mode 100644 index 00000000..b5e0a4c7 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/workspace/WorkspaceController.java @@ -0,0 +1,22 @@ +package com.ruoyi.platform.controller.workspace; + +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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; + +@RestController +@RequestMapping("workspace") +@Api("工作空间管理") +public class WorkspaceController extends BaseController { + + @GetMapping("/overview") + @ApiOperation("运行概览") + public AjaxResult queryById(@PathVariable("id") Integer id) { + return AjaxResult.success(this.datasetService.queryById(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 c870a17f..4dd7135c 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 @@ -1,5 +1,6 @@ package com.ruoyi.platform.mapper; +import com.ruoyi.platform.domain.Experiment; import com.ruoyi.platform.domain.Workflow; import org.apache.ibatis.annotations.Param; import org.springframework.data.domain.Pageable; @@ -87,5 +88,8 @@ public interface WorkflowDao { * @return 对象列表 */ List queryByName(@Param("name") String name); + + Workflow findByName(@Param("name") String name); + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java index 67e60ac2..4f79f527 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java @@ -40,7 +40,7 @@ public interface ExperimentService { * @param experiment 实例对象 * @return 实例对象 */ - Experiment insert(Experiment experiment); + Experiment insert(Experiment experiment) throws Exception; /** * 修改数据 @@ -60,7 +60,7 @@ public interface ExperimentService { String removeById(Integer id) throws Exception; Experiment runExperiment(Integer id) throws Exception; - Experiment addAndRunExperiment(Experiment experiment); + Experiment addAndRunExperiment(Experiment experiment) throws Exception; /** * 分页查询实验状态 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java index 772c9bd6..935a8918 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkflowService.java @@ -37,7 +37,7 @@ public interface WorkflowService { * @param workflow 实例对象 * @return 实例对象 */ - Workflow insert(Workflow workflow); + Workflow insert(Workflow workflow) throws Exception; /** * 修改数据 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 new file mode 100644 index 00000000..7d805951 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/WorkspaceService.java @@ -0,0 +1,11 @@ +package com.ruoyi.platform.service; + +/** + * (workspace)服务接口 + * + * @author Xidaray + * @since 2024-5-06 14:38:07 + */ +public class WorkspaceService { + +} diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index 3eed94e1..56eb44ba 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -132,8 +132,9 @@ public class ExperimentServiceImpl implements ExperimentService { * @return 实例对象 */ @Override - public Experiment insert(Experiment experiment) { + public Experiment insert(Experiment experiment) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); + checkDeclaredName(experiment); experiment.setCreateBy(loginUser.getUsername()); experiment.setUpdateBy(loginUser.getUsername()); experiment.setUpdateTime(new Date()); @@ -231,7 +232,7 @@ public class ExperimentServiceImpl implements ExperimentService { //这里全局参数是一个json数组,需要转换成一个list List> params = JacksonUtil.parseJSONStr2MapList(StringUtils.isEmpty(experiment.getGlobalParam()) ? "[]" : experiment.getGlobalParam()); runReqMap.put("params", params); - //// 实验字段的Map,不要写成一行! + //// 实验字段的Map,不要写成一行!否则会返回null Map experimentMap = new HashMap<>(); experimentMap.put("name", "experiment-"+experiment.getId()); runReqMap.put("experiment", experimentMap); @@ -281,7 +282,7 @@ public class ExperimentServiceImpl implements ExperimentService { } @Override - public Experiment addAndRunExperiment(Experiment experiment) { + public Experiment addAndRunExperiment(Experiment experiment) throws Exception { // 第一步: 调用add方法插入实验记录到数据库 Experiment newExperiment = this.insert(experiment); diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java index d09312dc..18b487f5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkflowServiceImpl.java @@ -91,8 +91,9 @@ public class WorkflowServiceImpl implements WorkflowService { * @return 实例对象 */ @Override - public Workflow insert(Workflow workflow) { + public Workflow insert(Workflow workflow) throws Exception { LoginUser loginUser = SecurityUtils.getLoginUser(); + checkDeclaredName(workflow); workflow.setCreateBy(loginUser.getUsername()); workflow.setUpdateBy(loginUser.getUsername()); workflow.setUpdateTime(new Date()); @@ -199,9 +200,7 @@ public class WorkflowServiceImpl implements WorkflowService { } public void checkDeclaredName(Workflow insert) throws Exception { - List existingWorkflowList = workflowDao.queryByName(insert.getName()); - - Workflow existingWorkflow = existingWorkflowList.stream().findFirst().orElse(null); + Workflow existingWorkflow = workflowDao.findByName(insert.getName()); if (existingWorkflow != null) { // 检查找到的流水线是否与要插入的流水线相同 if (insert.getId() != null && insert.getId().equals(existingWorkflow.getId())) { 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 new file mode 100644 index 00000000..d9362433 --- /dev/null +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/WorkspaceServiceImpl.java @@ -0,0 +1,7 @@ +package com.ruoyi.platform.service.impl; + +import com.ruoyi.platform.service.ModelsService; + +public class WorkspaceServiceImpl implements ModelsService { + +} diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml index c1c6bb9e..89572ab2 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/WorkflowDaoMapper.xml @@ -185,5 +185,13 @@ + + + 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 5/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E7=A9=BA=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) From a6e13f7895b9f83b1100b6d9193daa3a150b741c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Tue, 7 May 2024 14:38:03 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feature:=E6=96=B0=E5=A2=9E=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E7=A9=BA=E9=97=B4AI=E8=B5=84=E4=BA=A7=E8=AE=A1?= =?UTF-8?q?=E6=95=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workspace/WorkspaceController.java | 13 +++-- .../ruoyi/platform/domain/ExperimentIns.java | 9 ++++ .../platform/service/WorkspaceService.java | 1 + .../impl/ExperimentInsServiceImpl.java | 4 +- .../service/impl/WorkspaceServiceImpl.java | 47 +++++++++++++++++-- 5 files changed, 63 insertions(+), 11 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 da180dec..541ed8b5 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 @@ -7,10 +7,7 @@ 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; -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.Map; @@ -28,4 +25,12 @@ public class WorkspaceController extends BaseController { public GenericsAjaxResult> getOverview() { return genericsSuccess(this.workspaceService.getOverview()); } + + @GetMapping("/assetCount") + @ApiOperation("得到AI资产计数") + public GenericsAjaxResult> getAssetCount(@RequestParam(value = "isPublic", + defaultValue = "true") Boolean isPublic) { + return genericsSuccess(this.workspaceService.getAssetCount(isPublic)); + } + } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java index 9fce8bbe..78926ebf 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java @@ -71,6 +71,11 @@ public class ExperimentIns implements Serializable { private Integer state; + + @ApiModelProperty(value = "实验实例对应的流水线ID") + private Long workflowId; + + public ExperimentIns() { } @@ -201,5 +206,9 @@ public class ExperimentIns implements Serializable { this.state = state; } + public Long getWorkflowId() {return workflowId;} + + public void setWorkflowId(Long workflowId) {this.workflowId = workflowId;} + } 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 21c59fc2..5fdf8998 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 @@ -20,4 +20,5 @@ public interface WorkspaceService { Map getOverview(); + Map getAssetCount(Boolean isPublic); } 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 09bb0dea..940c4a02 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 @@ -543,7 +543,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Override public Map countByStatus() { - // 创建一个用于存储状态计数的映射 + // 创建一个用于存储状态计数的map Map statusCountMap = new HashMap<>(); // 遍历枚举中的所有状态 @@ -571,8 +571,6 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { //如果跟node_status里面不一样,就要去更新node_status的信息 String nodesStatus = ins.getNodesStatus(); Map nodeMap = JsonUtils.jsonToMap(nodesStatus); - - String keyStartsWithWorkflow = nodeMap.keySet().stream() .filter(key -> key.startsWith("workflow-")) .findFirst() 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 a45781a0..b5392261 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,12 +1,13 @@ package com.ruoyi.platform.service.impl; -import com.ruoyi.platform.domain.ExperimentIns; +import com.ruoyi.platform.domain.*; 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.checkerframework.checker.units.qual.C; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -58,7 +59,7 @@ public class WorkspaceServiceImpl implements WorkspaceService { // 获取运行中实验实例数量 List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); - if (experimentInsList!=null&&!experimentInsList.isEmpty()) { + if (experimentInsList!=null && !experimentInsList.isEmpty()) { Integer experimentInsCount = experimentInsList.size(); resMap.put("runningExperimentInsCount", experimentInsCount); }else{ @@ -67,12 +68,50 @@ public class WorkspaceServiceImpl implements WorkspaceService { //得到最近的三条实例记录,放进返回map List latestExperimentInsList = experimentInsDao.getLatestInsList(); if (latestExperimentInsList != null && !latestExperimentInsList.isEmpty()) { + for (ExperimentIns experimentIns : latestExperimentInsList){ + Integer experimentId = experimentIns.getExperimentId(); + Experiment experiment = this.experimentDao.queryById(experimentId); + //拿到对应的流水线id + Long correspondingWorkflowId = experiment.getWorkflowId(); + experimentIns.setWorkflowId(correspondingWorkflowId); + } resMap.put("latestExperimentInsList", latestExperimentInsList); } - Map statusMap = experimentInsService.countByStatus(); resMap.put("experimentInsStatus", statusMap); - return resMap; } + + @Override + public Map getAssetCount(Boolean isPublic) { + Map assetCountMap = new HashMap(); + int availableRange = isPublic ? 1 : 0; + //统计数据集数量 + Dataset dataset = new Dataset(); + dataset.setAvailableRange(availableRange); + Integer datasetCount = (int) this.datasetDao.count(dataset); + assetCountMap.put("dataset", datasetCount); + //统计模型数量 + Models models = new Models(); + models.setAvailableRange(availableRange); + Integer modelCount = (int) this.modelsDao.count(models); + assetCountMap.put("model", modelCount); + //统计镜像数量 + Image image = new Image(); + image.setImageType(availableRange); + Integer imageCount = (int) this.imageDao.count(image); + assetCountMap.put("image", imageCount); + //统计组件数量 + Component component = new Component(); + Integer componentCount = (int) this.componentDao.count(component); + assetCountMap.put("component", componentCount); + //统计流水线数量 + Workflow workflow = new Workflow(); + Integer workflowCount = (int) this.workflowDao.count(workflow); + assetCountMap.put("workflow", workflowCount); + + return assetCountMap; + } + + } From 07222070114fcf0217fee85a5d74f589a4aa839c Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 8 May 2024 09:26:43 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=A3=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ruoyi/platform/utils/K8sClientUtil.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java index 35ae8632..5f146711 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/K8sClientUtil.java @@ -344,6 +344,19 @@ public class K8sClientUtil { .withImage(image) .withPorts(new V1ContainerPort().containerPort(port).protocol("TCP")) .withVolumeMounts(new V1VolumeMount().name("workspace").mountPath(mountPath).subPath(subPath)) + .withNewSecurityContext().withNewPrivileged(true).endSecurityContext() + .addNewEnv() + .withName("HTTP_PROXY") + .withValue("http://172.20.32.253:3128") + .endEnv() + .addNewEnv() + .withName("HTTPS_PROXY") + .withValue("http://172.20.32.253:3128") + .endEnv() + .addNewEnv() + .withName("NO_PROXY") + .withValue("localhost,kubernetes.default.svc") + .endEnv() .endContainer() .addNewVolume() .withName("workspace").withPersistentVolumeClaim(new V1PersistentVolumeClaimVolumeSource().claimName(pvcName))