Browse Source

实验实例增加开始、结束时间字段

tags/v20240126
西大锐 2 years ago
parent
commit
6ccdb11fbe
10 changed files with 64 additions and 15 deletions
  1. +3
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java
  2. +1
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentInsController.java
  3. +27
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java
  4. +4
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java
  5. +2
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java
  6. +1
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentInsService.java
  7. +1
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ExperimentService.java
  8. +1
    -2
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentInsServiceImpl.java
  9. +22
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
  10. +2
    -4
      ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml

+ 3
- 2
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/experiment/ExperimentController.java View File

@@ -44,7 +44,8 @@ public class ExperimentController {


@GetMapping(("/status")) @GetMapping(("/status"))
@ApiOperation("查询实验状态") @ApiOperation("查询实验状态")
public Page<Experiment> selectStatus(@RequestBody Experiment experiment, PageRequest pageRequest){
public Page<Experiment> selectStatus(Experiment experiment, int page,int size){
PageRequest pageRequest = PageRequest.of(page,size);
return this.experimentService.selectStatus(experiment, pageRequest); return this.experimentService.selectStatus(experiment, pageRequest);
} }


@@ -115,7 +116,7 @@ public class ExperimentController {
*/ */
@PutMapping("/experiments/{id}") @PutMapping("/experiments/{id}")
@ApiOperation("运行实验") @ApiOperation("运行实验")
public ResponseEntity<Experiment> runExperiment(@PathVariable("id") Integer id) {
public ResponseEntity<Experiment> runExperiment(@PathVariable("id") Integer id) throws Exception {
return ResponseEntity.ok(this.experimentService.runExperiment(id)); return ResponseEntity.ok(this.experimentService.runExperiment(id));
} }




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

@@ -100,6 +100,7 @@ public class ExperimentInsController {
@ApiOperation("终止实验实例") @ApiOperation("终止实验实例")
public boolean terminateExperimentIns(@PathVariable("id") Integer id) { public boolean terminateExperimentIns(@PathVariable("id") Integer id) {
return this.experimentInsService.terminateExperimentIns(id); return this.experimentInsService.terminateExperimentIns(id);

} }


/** /**


+ 27
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ExperimentIns.java View File

@@ -41,6 +41,20 @@ public class ExperimentIns implements Serializable {
private String nodesStatus; private String nodesStatus;
@ApiModelProperty(name = "nodes_logs") @ApiModelProperty(name = "nodes_logs")
private String nodesLogs; private String nodesLogs;

/**
* 开始时间
*/
@ApiModelProperty(name = "start_time")
private Date startTime;

/**
* 结束时间
*/
@ApiModelProperty(name = "finish_time")
private Date finishTime;


/** /**
* 创建者 * 创建者
*/ */
@@ -127,6 +141,19 @@ public class ExperimentIns implements Serializable {
this.nodesLogs = nodesLogs; this.nodesLogs = nodesLogs;
} }


public void setStartTime(Date startTime) {
this.startTime = startTime;
}

public Date getStartTime() {return startTime;}

public void setFinishTime(Date finishTime) {
this.finishTime = finishTime;
}

public Date getFinishTime() {return finishTime;}


public String getCreateBy() { public String getCreateBy() {
return createBy; return createBy;
} }


+ 4
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/DatasetVersionDao.java View File

@@ -55,6 +55,8 @@ public interface DatasetVersionDao {
*/ */
int insertBatch(@Param("entities") List<DatasetVersion> entities); int insertBatch(@Param("entities") List<DatasetVersion> entities);




/** /**
* 批量新增或按主键更新数据(MyBatis原生foreach方法) * 批量新增或按主键更新数据(MyBatis原生foreach方法)
* *
@@ -83,5 +85,7 @@ public interface DatasetVersionDao {
List<DatasetVersion> queryByDatasetId(Integer datasetId); List<DatasetVersion> queryByDatasetId(Integer datasetId);


DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion); DatasetVersion queryByDatasetVersion(DatasetVersion datasetVersion);


} }



+ 2
- 2
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ExperimentInsDao.java View File

@@ -37,7 +37,7 @@ public interface ExperimentInsDao {
* @param experimentIns 查询条件 * @param experimentIns 查询条件
* @return 总行数 * @return 总行数
*/ */
long count(@Param("experimentIns")ExperimentIns experimentIns);
long count(@Param("experimentIns") ExperimentIns experimentIns);


/** /**
* 新增数据 * 新增数据
@@ -45,7 +45,7 @@ public interface ExperimentInsDao {
* @param experimentIns 实例对象 * @param experimentIns 实例对象
* @return 影响行数 * @return 影响行数
*/ */
int insert(ExperimentIns experimentIns);
int insert(@Param("experimentIns") ExperimentIns experimentIns);


/** /**
* 批量新增数据(MyBatis原生foreach方法) * 批量新增数据(MyBatis原生foreach方法)


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

@@ -68,6 +68,7 @@ public interface ExperimentInsService {
*/ */
boolean deleteById(Integer id); boolean deleteById(Integer id);



List<ExperimentIns> queryByExperimentId(Integer id); List<ExperimentIns> queryByExperimentId(Integer id);






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

@@ -56,7 +56,7 @@ public interface ExperimentService {
*/ */
boolean deleteById(Integer id); boolean deleteById(Integer id);
String removeById(Integer id); String removeById(Integer id);
Experiment runExperiment(Integer id);
Experiment runExperiment(Integer id) throws Exception;


Experiment addAndRunExperiment(Experiment experiment); Experiment addAndRunExperiment(Experiment experiment);




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

@@ -301,9 +301,8 @@ public class ExperimentInsServiceImpl implements ExperimentInsService {
// 检查响应是否为空或无内容 // 检查响应是否为空或无内容
if (StringUtils.isEmpty(req)) { if (StringUtils.isEmpty(req)) {
throw new RuntimeException("终止响应内容为空。"); throw new RuntimeException("终止响应内容为空。");
}



}
// 将响应的JSON字符串转换为Map对象 // 将响应的JSON字符串转换为Map对象
Map<String, Object> runResMap = JsonUtils.jsonToMap(req); Map<String, Object> runResMap = JsonUtils.jsonToMap(req);
// 从响应Map中直接获取"errCode"的值 // 从响应Map中直接获取"errCode"的值


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

@@ -5,6 +5,7 @@ import com.ruoyi.platform.domain.Experiment;
import com.ruoyi.platform.domain.ExperimentIns; import com.ruoyi.platform.domain.ExperimentIns;
import com.ruoyi.platform.domain.Workflow; import com.ruoyi.platform.domain.Workflow;
import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentDao;
import com.ruoyi.platform.mapper.ExperimentInsDao;
import com.ruoyi.platform.service.ExperimentInsService; import com.ruoyi.platform.service.ExperimentInsService;
import com.ruoyi.platform.service.ExperimentService; import com.ruoyi.platform.service.ExperimentService;
import com.ruoyi.platform.service.WorkflowService; import com.ruoyi.platform.service.WorkflowService;
@@ -35,6 +36,11 @@ public class ExperimentServiceImpl implements ExperimentService {
@Resource @Resource
private ExperimentDao experimentDao; private ExperimentDao experimentDao;


@Resource
private ExperimentInsDao experimentInsDao;



@Resource @Resource
@Lazy @Lazy
private WorkflowService workflowService; private WorkflowService workflowService;
@@ -192,7 +198,7 @@ public class ExperimentServiceImpl implements ExperimentService {
* @return 是否成功 * @return 是否成功
*/ */
@Override @Override
public Experiment runExperiment(Integer id) {
public Experiment runExperiment(Integer id) throws Exception {
//先查出实验记录 //先查出实验记录
Experiment experiment = this.queryById(id); Experiment experiment = this.queryById(id);


@@ -200,13 +206,18 @@ public class ExperimentServiceImpl implements ExperimentService {
System.out.println("No experiment"); System.out.println("No experiment");
} }



Workflow workflow = workflowService.queryById(experiment.getWorkflowId()); Workflow workflow = workflowService.queryById(experiment.getWorkflowId());
if(workflow == null) {
throw new RuntimeException("流水线不存在,请先创建流水线");
}

String dag = workflow.getDag(); String dag = workflow.getDag();
// 调argo转换接口 // 调argo转换接口
try { try {
String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag); String convertRes = HttpUtils.sendPost(argoUrl + argoConvert, dag);
if (convertRes == null || StringUtils.isEmpty(convertRes)) { if (convertRes == null || StringUtils.isEmpty(convertRes)) {
throw new RuntimeException("Failed to convert workflow.");
throw new RuntimeException("转换流水线失败");
} }
Map<String, Object> converMap = JsonUtils.jsonToMap(convertRes); Map<String, Object> converMap = JsonUtils.jsonToMap(convertRes);
// 组装运行接口json // 组装运行接口json
@@ -234,13 +245,16 @@ public class ExperimentServiceImpl implements ExperimentService {
experimentIns.setArgoInsNs((String) metadata.get("namespace")); experimentIns.setArgoInsNs((String) metadata.get("namespace"));
experimentIns.setArgoInsName((String) metadata.get("name")); experimentIns.setArgoInsName((String) metadata.get("name"));
//插入ExperimentIns表中 //插入ExperimentIns表中
experimentInsService.insert(experimentIns);
experimentInsDao.insert(experimentIns);


}catch (Exception e){ }catch (Exception e){
throw new RuntimeException(e); throw new RuntimeException(e);
} }
List<ExperimentIns> experimentIns = experimentInsService.queryByExperimentId(id); List<ExperimentIns> experimentIns = experimentInsService.queryByExperimentId(id);


experiment.setExperimentInsList(experimentIns); experiment.setExperimentInsList(experimentIns);

return experiment; return experiment;
} }


@@ -253,7 +267,11 @@ public class ExperimentServiceImpl implements ExperimentService {
throw new RuntimeException("Failed to add experiment."); throw new RuntimeException("Failed to add experiment.");
} }
// 调用runExperiment方法运行实验 // 调用runExperiment方法运行实验
newExperiment = this.runExperiment(newExperiment.getId());
try {
newExperiment = this.runExperiment(newExperiment.getId());
} catch (Exception e) {
throw new RuntimeException(e);
}


return newExperiment; return newExperiment;
} }


+ 2
- 4
ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ExperimentInsDaoMapper.xml View File

@@ -19,8 +19,6 @@








<!--查询单个--> <!--查询单个-->
<select id="queryById" resultMap="ExperimentInsMap"> <select id="queryById" resultMap="ExperimentInsMap">
select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_logs, create_by, create_time, update_by, update_time, state select id, experiment_id, argo_ins_name, argo_ins_ns, status, nodes_status, nodes_logs, create_by, create_time, update_by, update_time, state
@@ -175,7 +173,7 @@
experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_logs,create_by,create_time,update_by,update_time,state) experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,nodes_logs,create_by,create_time,update_by,update_time,state)
values values
<foreach collection="entities" item="entity" separator=","> <foreach collection="entities" item="entity" separator=",">
(#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesStatus},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})
(#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesLogs},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})
</foreach> </foreach>
</insert> </insert>


@@ -184,7 +182,7 @@
experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,create_by,create_time,update_by,update_time,state) experiment_ins(experiment_id,argo_ins_name,argo_ins_ns,status,nodes_status,create_by,create_time,update_by,update_time,state)
values values
<foreach collection="entities" item="entity" separator=","> <foreach collection="entities" item="entity" separator=",">
(#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})
(#{entity.experimentId},#{entity.argoInsName},#{entity.argoInsNs},#{entity.status},#{entity.nodesStatus},#{entity.nodesLogs},#{entity.createBy},#{entity.createTime},#{entity.updateBy},#{entity.updateTime},#{entity.state})
</foreach> </foreach>
on duplicate key update on duplicate key update
experiment_id = values(experiment_id)argo_ins_name = values(argo_ins_name)argo_ins_ns = experiment_id = values(experiment_id)argo_ins_name = values(argo_ins_name)argo_ins_ns =


Loading…
Cancel
Save