diff --git a/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java b/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java index d50171b..60ee576 100644 --- a/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java +++ b/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java @@ -59,7 +59,7 @@ public interface ExperimentInsService { /** * 逻辑删除数据 */ - boolean removeById(Integer id); + String removeById(Integer id); /** * 通过主键删除数据 * diff --git a/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java b/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java index 91b13a0..0a2b832 100644 --- a/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java +++ b/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java @@ -63,7 +63,13 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { */ @Override public ExperimentIns queryById(Integer id) { - return this.experimentInsDao.queryById(id); + ExperimentIns experimentIns = this.experimentInsDao.queryById(id); + if (experimentIns!=null && StringUtils.isEmpty(experimentIns.getStatus())) { + String status = this.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName()); + experimentIns.setStatus(status); + this.update(experimentIns); + } + return experimentIns; } /** @@ -74,7 +80,15 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { */ @Override public List getByExperimentId(Integer experimentId) { - return experimentInsDao.getByExperimentId(experimentId); + List experimentInsList = experimentInsDao.getByExperimentId(experimentId); + for (ExperimentIns experimentIns: experimentInsList) { + if (experimentIns!=null && StringUtils.isEmpty(experimentIns.getStatus())) { + String status = this.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName()); + experimentIns.setStatus(status); + this.update(experimentIns); + } + } + return experimentInsList; } /** @@ -87,7 +101,15 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { @Override public Page queryByPage(ExperimentIns experimentIns, PageRequest pageRequest) { long total = this.experimentInsDao.count(experimentIns); - return new PageImpl<>(this.experimentInsDao.queryAllByLimit(experimentIns, pageRequest), pageRequest, total); + List experimentInsList = this.experimentInsDao.queryAllByLimit(experimentIns, pageRequest); + for (ExperimentIns ins: experimentInsList) { + if (experimentIns!=null && StringUtils.isEmpty(experimentIns.getStatus())) { + String status = this.queryStatusFromArgo(ins.getArgoInsNs(), ins.getArgoInsName()); + ins.setStatus(status); + this.update(experimentIns); + } + } + return new PageImpl<>(experimentInsList, pageRequest, total); } /** @@ -124,10 +146,19 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { } @Override - public boolean removeById(Integer id) { + public String removeById(Integer id) { ExperimentIns experimentIns = experimentInsDao.queryById(id); + if (experimentIns == null){ + return "实验实例不存在"; + } + if (StringUtils.isEmpty(experimentIns.getStatus())){ + experimentIns.setStatus(queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName())); + } + if (StringUtils.equals(experimentIns.getStatus(),"Running")){ + return "实验实例正在运行,不可删除"; + } experimentIns.setState(0); - return this.experimentInsDao.update(experimentIns)>0; + return this.experimentInsDao.update(experimentIns)>0?"删除成功":"删除失败"; } @@ -206,7 +237,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService { String name = experimentIns.getArgoInsName(); String namespace = experimentIns.getArgoInsNs(); // 获取当前状态,如果为空,则从Argo查询 - if (currentStatus == null || currentStatus.isEmpty()) { + if (StringUtils.isEmpty(currentStatus)) { currentStatus = queryStatusFromArgo(namespace, name); } diff --git a/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java b/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java index b2bc356..1b5294c 100644 --- a/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java +++ b/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java @@ -59,13 +59,6 @@ public class ExperimentServiceImpl implements ExperimentService { @Override public Experiment queryById(Integer id) { List experimentInsList = this.experimentInsService.getByExperimentId(id); - for (ExperimentIns experimentIns: experimentInsList) { - if (!(StringUtils.equals(experimentIns.getStatus(),"Succeeded") || StringUtils.equals(experimentIns.getStatus(),"Failed"))) { - String status = this.experimentInsService.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName()); - experimentIns.setStatus(status); - this.experimentInsService.update(experimentIns); - } - } Experiment experiment = this.experimentDao.queryById(id); if (experiment == null) { return null; @@ -91,14 +84,6 @@ public class ExperimentServiceImpl implements ExperimentService { //对于每一个从Experiment表中查询出来的id,可能有多个实例,每个实例的实验id是不同的 for (Experiment exp: experimentList) { List experimentInsList = this.experimentInsService.getByExperimentId(exp.getId()); - for (ExperimentIns experimentIns: experimentInsList) { - if (!(experimentIns.getStatus().equals("Succeeded") || experimentIns.getStatus().equals("Failed") || experimentIns.getStatus().equals("Terminated"))) { - String status = this.experimentInsService.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName()); - experimentIns.setStatus(status); - this.experimentInsService.update(experimentIns); - } - - } exp.setExperimentInsList(experimentInsList); } @@ -120,20 +105,9 @@ public class ExperimentServiceImpl implements ExperimentService { //对于每一个从Experiment表中查询出来的id,可能有多个实例,每个实例的实验id是不同的 for (Experiment exp: experimentList) { List experimentInsList = this.experimentInsService.getByExperimentId(exp.getId()); - for (ExperimentIns experimentIns: experimentInsList) { - if (!(StringUtils.equals(experimentIns.getStatus(),"Succeeded") || StringUtils.equals(experimentIns.getStatus(),"Failed"))) { - String status = this.experimentInsService.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName()); - experimentIns.setStatus(status); - this.experimentInsService.update(experimentIns); - } - - } exp.setExperimentInsList(experimentInsList); } - - return new PageImpl<>(experimentList); - } /** @@ -250,6 +224,8 @@ public class ExperimentServiceImpl implements ExperimentService { }catch (Exception e){ throw new RuntimeException(e); } + List experimentIns = experimentInsService.queryByExperimentId(id); + experiment.setExperimentInsList(experimentIns); return experiment; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/experiment/ExperimentInsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/experiment/ExperimentInsController.java index 3777bc2..9a686db 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/experiment/ExperimentInsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/experiment/ExperimentInsController.java @@ -87,7 +87,7 @@ public class ExperimentInsController { */ @DeleteMapping @ApiOperation("删除实验实例") - public ResponseEntity deleteById(Integer id) { + public ResponseEntity deleteById(Integer id) { return ResponseEntity.ok(this.experimentInsService.removeById(id)); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 9f92654..3bee084 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -70,7 +70,7 @@ spring: # redis 配置 redis: # 地址 - host: 172.20.32.150 + host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 @@ -135,6 +135,6 @@ argo: url: http://172.20.32.181:31000 convert: /api/v1/workflow/convert workflowRun: /api/v1/workflow/run - workflowStatus: /api/v1/workflow/status + workflowStatus: /api/v1/workflow/getWorkflow workflowTermination: /api/v1/workflow/terminate workflowLog: /api/v1/workflow/getWorkflowLog