Browse Source

修改接口

tags/v20240126
fans 2 years ago
parent
commit
4f3dda3a64
4 changed files with 41 additions and 31 deletions
  1. +11
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java
  2. +2
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java
  3. +24
    -25
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
  4. +4
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java

+ 11
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java View File

@@ -51,7 +51,17 @@ public class ExperimentInsController {
return AjaxResult.success(this.experimentInsService.queryById(id));
}


/**
* 通过实验ID查询单条数据
*
* @param experimentId 主键
* @return 单条数据
*/
@GetMapping("{Experiment_id}")
@ApiOperation("通过实验id查询查询实验实例列表")
public AjaxResult queryByExperimentId(@PathVariable("Experiment_id") Integer experimentId) {
return AjaxResult.success(this.experimentInsService.getByExperimentId(experimentId));
}

/**
* 新增数据


+ 2
- 1
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java View File

@@ -72,7 +72,7 @@ public interface ExperimentInsService {
List<ExperimentIns> queryByExperimentId(Integer id);


String queryStatusFromArgo(String namespace, String name, Integer id);
ExperimentIns queryStatusFromArgo(ExperimentIns ins);

boolean terminateExperimentIns(Integer id);

@@ -83,4 +83,5 @@ public interface ExperimentInsService {
* @return 运行日志
*/
String showExperimentInsLog(Integer id);

}

+ 24
- 25
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java View File

@@ -34,12 +34,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
@Resource
private ExperimentDao experimentDao;
@Resource
private WorkflowService


workflowService;


private WorkflowService workflowService;
@Value("${argo.url}")
private String argoUrl;
@Value("${argo.convert}")
@@ -67,11 +62,10 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {

// 检查是否需要调用接口查询状态:当原本状态为null或非终止态时调用argo接口
if (StringUtils.isEmpty(currentStatus) || !isTerminatedState(currentStatus)) {
String newStatus = this.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName(), id );
experimentIns = this.queryStatusFromArgo(experimentIns);

// 如果新状态不是null,并且与旧状态不同,则更新状态
if(!StringUtils.isEmpty(newStatus) && !StringUtils.equals(newStatus, currentStatus)){
experimentIns.setStatus(newStatus);
if(!StringUtils.isEmpty(experimentIns.getStatus()) && !StringUtils.equals(experimentIns.getStatus(), currentStatus)){
this.update(experimentIns);
}

@@ -90,14 +84,17 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
@Override
public List<ExperimentIns> getByExperimentId(Integer experimentId) {
List<ExperimentIns> experimentInsList = experimentInsDao.getByExperimentId(experimentId);
for (ExperimentIns experimentIns: experimentInsList) {
//当原本状态为null或非终止态时才调用argo接口
if ( experimentIns!=null && (StringUtils.isEmpty(experimentIns.getStatus())) || !isTerminatedState(experimentIns.getStatus())) {
String newStatus = this.queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName(),experimentIns.getId());
experimentIns.setStatus(newStatus);
//只有当新状态是终止态时才更新数据库
if (isTerminatedState(newStatus)) {
this.update(experimentIns);
if (experimentInsList!=null&&experimentInsList.size()>0) {
for (ExperimentIns experimentIns : experimentInsList) {
//当原本状态为null或非终止态时才调用argo接口
if (experimentIns != null && (StringUtils.isEmpty(experimentIns.getStatus())) || !isTerminatedState(experimentIns.getStatus())) {
experimentIns = this.queryStatusFromArgo(experimentIns);
//只有当新状态是终止态时才更新数据库
if (isTerminatedState(experimentIns.getStatus())) {
//同时更新各个节点

this.update(experimentIns);
}
}
}
}
@@ -121,9 +118,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
for (ExperimentIns ins : experimentInsList) {
//如果实验实例不为空或者
if (ins != null && StringUtils.isEmpty(ins.getStatus())) {
Integer experimentInsId = ins.getId();
String status = this.queryStatusFromArgo(ins.getArgoInsNs(), ins.getArgoInsName(), experimentInsId);
ins.setStatus(status);
ins = this.queryStatusFromArgo(ins);
this.update(ins);
}
}
@@ -183,7 +178,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
}

if (StringUtils.isEmpty(experimentIns.getStatus())){
experimentIns.setStatus(queryStatusFromArgo(experimentIns.getArgoInsNs(), experimentIns.getArgoInsName(), id));
experimentIns = queryStatusFromArgo(experimentIns);
}
if (StringUtils.equals(experimentIns.getStatus(),"Running")){
return "实验实例正在运行,不可删除";
@@ -214,7 +209,11 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
}

@Override
public String queryStatusFromArgo(String namespace, String name, Integer id) {
public ExperimentIns queryStatusFromArgo(ExperimentIns ins) {

String namespace = ins.getArgoInsNs();
String name = ins.getArgoInsName();
Integer id = ins.getId();
ExperimentIns experimentIns = this.experimentInsDao.queryById(id);
// 创建请求数据map
Map<String,Object> requestData = new HashMap<>();
@@ -273,9 +272,9 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {

String nodeStatusJson = JsonUtils.mapToJson(modifiedNodes);
experimentIns.setNodesStatus(nodeStatusJson);
this.experimentInsDao.update(experimentIns);
experimentIns.setStatus((String) status.get("phase"));

return (String) status.get("phase");
return experimentIns;

} catch (Exception e) {
throw new RuntimeException("查询状态失败: " + e.getMessage(), e);
@@ -303,7 +302,7 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
String namespace = experimentIns.getArgoInsNs();
// 获取当前状态,如果为空,则从Argo查询
if (StringUtils.isEmpty(currentStatus)) {
currentStatus = queryStatusFromArgo(namespace, name, id );
currentStatus = queryStatusFromArgo(experimentIns).getStatus();
}

// 只有状态是"Running"时才能终止实例


+ 4
- 4
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java View File

@@ -91,10 +91,10 @@ public class ExperimentServiceImpl implements ExperimentService {
long total = this.experimentDao.count(experiment);
// 存储所有实验的ID列表
//对于每一个从Experiment表中查询出来的id,可能有多个实例,每个实例的实验id是不同的
for (Experiment exp: experimentList) {
List<ExperimentIns> experimentInsList = this.experimentInsService.getByExperimentId(exp.getId());
exp.setExperimentInsList(experimentInsList);
}
// for (Experiment exp: experimentList) {
// List<ExperimentIns> experimentInsList = this.experimentInsService.getByExperimentId(exp.getId());
// exp.setExperimentInsList(experimentInsList);
// }

return new PageImpl<>(experimentList,pageRequest,total);
}


Loading…
Cancel
Save