From ea6400bb4bd36b0319f135732b688b43f5eee89b Mon Sep 17 00:00:00 2001 From: fanshuai <1141904845@qq.com> Date: Wed, 5 Jun 2024 15:07:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E6=BC=94=E5=8C=96=E6=94=B9?= =?UTF-8?q?=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ModelDependencyController.java | 1 + .../platform/domain/ModelDependency.java | 27 +- .../platform/mapper/ModelDependencyDao.java | 8 +- .../ExperimentInstanceStatusTask.java | 16 +- .../service/impl/ExperimentServiceImpl.java | 246 ++++++++++---- .../impl/ModelDependencyServiceImpl.java | 1 - .../impl/ModelsVersionServiceImpl.java | 10 + .../com/ruoyi/platform/utils/JacksonUtil.java | 16 + .../ModelDependencyDaoMapper.xml | 306 ++++++++++-------- 9 files changed, 407 insertions(+), 224 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java index a5febcd4..9afd7399 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/model/ModelDependencyController.java @@ -54,6 +54,7 @@ public class ModelDependencyController extends BaseController { @GetMapping("/queryModelDependency") @ApiOperation("根据对象查询") public GenericsAjaxResult> queryByModelDependency(@RequestBody ModelDependency modelDependency) { + modelDependency.setState(1); return genericsSuccess(this.modelDependencyService.queryByModelDependency(modelDependency)); } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java index dd2913bc..1809d7e5 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/ModelDependency.java @@ -44,6 +44,14 @@ public class ModelDependency implements Serializable { * 训练数据集 */ private String trainDataset; + /** + * 训练参数 + */ + private String trainParams; + /** + * 训练镜像 + */ + private String trainImage; /** * 测试数据集 */ @@ -80,7 +88,6 @@ public class ModelDependency implements Serializable { */ private Integer state; - public Integer getId() { return id; } @@ -137,6 +144,22 @@ public class ModelDependency implements Serializable { this.trainDataset = trainDataset; } + public String getTrainParams() { + return trainParams; + } + + public void setTrainParams(String trainParams) { + this.trainParams = trainParams; + } + + public String getTrainImage(String name) { + return trainImage; + } + + public void setTrainImage(String trainImage) { + this.trainImage = trainImage; + } + public String getTestDataset() { return testDataset; } @@ -161,7 +184,6 @@ public class ModelDependency implements Serializable { this.version = version; } - public String getCreateBy() { return createBy; } @@ -201,6 +223,5 @@ public class ModelDependency implements Serializable { public void setState(Integer state) { this.state = state; } - } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java index 35c1bfc5..3a999886 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/ModelDependencyDao.java @@ -28,7 +28,7 @@ public interface ModelDependencyDao { * @param pageable 分页对象 * @return 对象列表 */ - List queryAllByLimit(@Param("modelDependency") ModelDependency modelDependency, @Param("pageable") Pageable pageable); + List queryAllByLimit(ModelDependency modelDependency, @Param("pageable") Pageable pageable); @@ -38,7 +38,7 @@ public interface ModelDependencyDao { * @param modelDependency 查询条件 * @return 总行数 */ - long count(@Param("modelDependency") ModelDependency modelDependency); + long count(ModelDependency modelDependency); /** * 新增数据 @@ -46,7 +46,7 @@ public interface ModelDependencyDao { * @param modelDependency 实例对象 * @return 影响行数 */ - int insert(@Param("modelDependency") ModelDependency modelDependency); + int insert(ModelDependency modelDependency); /** * 批量新增数据(MyBatis原生foreach方法) @@ -71,7 +71,7 @@ public interface ModelDependencyDao { * @param modelDependency 实例对象 * @return 影响行数 */ - int update(@Param("modelDependency") ModelDependency modelDependency); + int update(ModelDependency modelDependency); /** * 通过主键删除数据 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 1764b262..91ed6847 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 @@ -78,10 +78,7 @@ public class ExperimentInstanceStatusTask { } ModelDependency modelDependency = modelDependencyListquery.get(0); //查看状态, - if (StringUtils.equals("Succeeded",experimentIns.getStatus())){ - modelDependency.setState(1); - modelDependencyList.add(modelDependency); - }else{ + if (StringUtils.equals("Failed",experimentIns.getStatus())){ //取出节点状态 String trainTask = modelDependency.getTrainTask(); Map trainMap = JacksonUtil.parseJSONStr2Map(trainTask); @@ -91,17 +88,20 @@ public class ExperimentInstanceStatusTask { } String nodesStatus = experimentIns.getNodesStatus(); Map nodeMaps = JacksonUtil.parseJSONStr2Map(nodesStatus); - Map nodeMap = JacksonUtil.parseJSONStr2Map((String) nodeMaps.get(task_id)); + Map nodeMap = JacksonUtil.parseJSONStr2Map(JacksonUtil.toJSONString(nodeMaps.get(task_id))); + if (nodeMap==null){ continue; } - if (StringUtils.equals("Succeeded",(String)nodeMap.get("phase"))){ - modelDependency.setState(1); + if (!StringUtils.equals("Succeeded",(String)nodeMap.get("phase"))){ + modelDependency.setState(0); modelDependencyList.add(modelDependency); } } } - modelDependencyDao.insertOrUpdateBatch(modelDependencyList); + if (modelDependencyList.size()>0) { + modelDependencyDao.insertOrUpdateBatch(modelDependencyList); + } } } 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 b53d488b..407ff6ae 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 @@ -226,8 +226,7 @@ public class ExperimentServiceImpl implements ExperimentService { throw new RuntimeException("转换流水线失败"); } Map converMap = JsonUtils.jsonToMap(convertRes); - //得到dependendcy - Map dependendcy = (Map)converMap.get("model_dependency"); + // 组装运行接口json Map runReqMap = new HashMap<>(); runReqMap.put("data", converMap.get("data")); @@ -269,7 +268,11 @@ public class ExperimentServiceImpl implements ExperimentService { ExperimentIns insert = experimentInsService.insert(experimentIns); //插入到模型依赖关系表 - insertModelDependency(dependendcy,insert.getId(),experiment.getName(),params); + //得到dependendcy + Map converMap2 = JsonUtils.jsonToMap(JacksonUtil.replaceInAarry(convertRes, params)); + Map dependendcy = (Map)converMap2.get("model_dependency"); + Map trainInfo = (Map)converMap2.get("component_info"); + insertModelDependency(dependendcy,trainInfo,insert.getId(),experiment.getName()); }catch (Exception e){ throw new RuntimeException(e); @@ -278,17 +281,23 @@ public class ExperimentServiceImpl implements ExperimentService { experiment.setExperimentInsList(updatedExperimentInsList); return experiment; } - - private void insertModelDependency(Map dependendcy, Integer experimentInsId, String experimentName, List> params) throws Exception { + private void insertModelDependency(Map dependendcy,Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); + Map modelTrain = (Map) trainInfo.get("model_train"); + Map modelEvaluate = (Map) trainInfo.get("model_evaluate"); + Map modelExport = (Map) trainInfo.get("model_export"); while (dependendcyIterator.hasNext()) { ModelDependency modelDependency = new ModelDependency(); - Map.Entry entry = dependendcyIterator.next(); - String key = entry.getKey(); Map modelDel = (Map) entry.getValue(); + Map source = (Map) modelDel.get("source"); + List> test = (List>) modelDel.get("test"); + List> target = (List>) modelDel.get("target"); + String sourceTaskId = (String) source.get("task_id"); + + Map modelTrainMap = (Map)modelTrain.get(sourceTaskId); //处理project数据 - Map projectMap = (Map) modelDel.get("project"); + Map projectMap = (Map) modelTrainMap.get("project"); ProjectDepency projectDepency = new ProjectDepency(); projectDepency.setBranch(projectMap.get("branch")); String projectUrl = projectMap.get("url"); @@ -296,86 +305,193 @@ public class ExperimentServiceImpl implements ExperimentService { projectDepency.setName(projectUrl.substring(projectUrl.lastIndexOf('/') + 1, projectUrl.length() - 4)); //依赖项目 modelDependency.setProjectDependency(JsonUtils.objectToJson(projectDepency)); + //处理镜像 + Map imagesMap = (Map) modelTrainMap.get("image"); + modelDependency.setTrainImage(imagesMap.get("name")); + List> trainParamList = (List>) modelTrainMap.get("params"); + modelDependency.setTrainParams(JsonUtils.objectToJson(trainParamList)); //处理source数据 - Map sourceMap = (Map) modelDel.get("source"); - List> modelsList = (List>) sourceMap.get("models"); - for(int i=0;i model = modelsList.get(i); - Models models = modelsService.queryById((Integer) model.get("model_id")); - if (models == null){ - throw new Exception("源模型不存在"); + List> modelsList = (List>) modelTrainMap.get("models"); + if (modelsList != null) { + for (int i = 0; i < modelsList.size(); i++) { + Map model = modelsList.get(i); + Models models = modelsService.queryById((Integer) model.get("model_id")); + if (models == null) { + throw new Exception("源模型不存在"); + } + model.put("model_name", models.getName()); } - model.put("model_name", models.getName()); + //父模型 + modelDependency.setParentModels(JsonUtils.objectToJson(modelsList)); } - //父模型 - modelDependency.setParentModels(JsonUtils.objectToJson(modelsList)); - - List> datasetsList = (List>) sourceMap.get("datasets"); - for(int i=0;i datasets = datasetsList.get(i); - Dataset dataset = datasetService.queryById((Integer) datasets.get("dataset_id")); - if (dataset == null){ - throw new Exception("源数据集不存在"); + List> datasetsList = (List>) modelTrainMap.get("datasets"); + if (datasetsList != null) { + for (int i = 0; i < datasetsList.size(); i++) { + Map datasets = datasetsList.get(i); + Dataset dataset = datasetService.queryById((Integer) datasets.get("dataset_id")); + if (dataset == null) { + throw new Exception("源数据集不存在"); + } + datasets.put("dataset_name", dataset.getName()); } - datasets.put("dataset_name", dataset.getName()); } //训练数据集 modelDependency.setTrainDataset(JsonUtils.objectToJson(datasetsList)); - TrainTaskDepency trainTaskDepency = new TrainTaskDepency(); - trainTaskDepency.setTaskId(key); + trainTaskDepency.setTaskId(sourceTaskId); trainTaskDepency.setInsId(experimentInsId); trainTaskDepency.setName(experimentName); //训练任务 modelDependency.setTrainTask(JsonUtils.objectToJson(trainTaskDepency)); modelDependency.setExpInsId(experimentInsId); - //处理test数据 - List> testDatasetsList = (List>) modelDel.get("test"); List> resultTestDatasets = new ArrayList>(); - for(int i=0;i datasets = testDatasetsList.get(i); - List> realDataSetList = (List>) datasets.get("datasets"); - for(int j=0;j realDataSet = realDataSetList.get(j); - Dataset dataset = datasetService.queryById((Integer) realDataSet.get("dataset_id")); - if (dataset == null){ - throw new Exception("源数据集不存在"); + //处理test数据 + if (test != null) { + for(int i=0;i testMap = test.get(i); + String testTaskId = (String) testMap.get("task_id"); + Map evaluateMap = (Map) modelEvaluate.get(testTaskId); + List> realDataSetList = (List>) evaluateMap.get("datasets"); + for(int j=0;j realDataSet = realDataSetList.get(j); + Dataset dataset = datasetService.queryById((Integer) realDataSet.get("dataset_id")); + if (dataset == null){ + throw new Exception("源数据集不存在"); + } + realDataSet.put("dataset_name", dataset.getName()); + resultTestDatasets.add(realDataSet); } - realDataSet.put("dataset_name", dataset.getName()); - resultTestDatasets.add(realDataSet); - } + } - } //测试数据集 - modelDependency.setTestDataset(JsonUtils.objectToJson(resultTestDatasets)); - - //检查是否存在target,如果存在说明在流水线用了节点导入,如果没有说明没有导入,等待手动push - List> modelTargetList = (List>) modelDel.get("target"); - if (modelTargetList==null||modelTargetList.size()==0){ - modelDependency.setState(1); - modelDependencyService.insert(modelDependency); - }else { - modelDependency.setState(2); - for(int i=0;i model = modelTargetList.get(i); - String version = null; - //可能是参数,必须从实验参数读取 - if (params != null) { - for (Map param : params) { - if (param.containsKey("param_name") && StringUtils.equals("model_version",(String) param.get("param_name"))) { - version = param.get("param_value").toString(); - } - } + modelDependency.setTestDataset(JsonUtils.objectToJson(resultTestDatasets)); + } + //处理target数据 + if (target != null) { + for (int i = 0; i < target.size(); i++) { + Map targetMap = target.get(i); + String targetaskId = (String) targetMap.get("task_id"); + Map exportMap = (Map) modelExport.get(targetaskId); + List> modelTargetList = (List>) exportMap.get("models"); + modelDependency.setState(2); + for (int j = 0; j < modelTargetList.size(); j++) { + Map model = modelTargetList.get(i); + modelDependency.setVersion((String) model.get("model_version")); + modelDependency.setCurrentModelId((Integer) model.get("model_id")); + //因为可能有多成果模型,多次插入 + modelDependencyService.insert(modelDependency); } - modelDependency.setVersion(StringUtils.isEmpty(version)?(String)model.get("model_version"):version); - modelDependency.setCurrentModelId((Integer) model.get("model_id")); - //因为可能有多成果模型,多次插入 - modelDependencyService.insert(modelDependency); } + }else { + modelDependency.setState(2); + modelDependencyService.insert(modelDependency); } + } } + /** + * 被废弃的旧JSON + * @param experiment + * @return + * @throws Exception + */ +// private void insertModelDependency(Map dependendcy,Map trainInfo, Integer experimentInsId, String experimentName, List> params) throws Exception { +// Iterator> dependendcyIterator = dependendcy.entrySet().iterator(); +// while (dependendcyIterator.hasNext()) { +// ModelDependency modelDependency = new ModelDependency(); +// Map.Entry entry = dependendcyIterator.next(); +// String key = entry.getKey(); +// Map modelDel = (Map) entry.getValue(); +// //处理project数据 +// Map projectMap = (Map) modelDel.get("project"); +// ProjectDepency projectDepency = new ProjectDepency(); +// projectDepency.setBranch(projectMap.get("branch")); +// String projectUrl = projectMap.get("url"); +// projectDepency.setUrl(projectUrl); +// projectDepency.setName(projectUrl.substring(projectUrl.lastIndexOf('/') + 1, projectUrl.length() - 4)); +// //依赖项目 +// modelDependency.setProjectDependency(JsonUtils.objectToJson(projectDepency)); +// //处理source数据 +// Map sourceMap = (Map) modelDel.get("source"); +// List> modelsList = (List>) sourceMap.get("models"); +// for(int i=0;i model = modelsList.get(i); +// Models models = modelsService.queryById((Integer) model.get("model_id")); +// if (models == null){ +// throw new Exception("源模型不存在"); +// } +// model.put("model_name", models.getName()); +// } +// //父模型 +// modelDependency.setParentModels(JsonUtils.objectToJson(modelsList)); +// +// List> datasetsList = (List>) sourceMap.get("datasets"); +// for(int i=0;i datasets = datasetsList.get(i); +// Dataset dataset = datasetService.queryById((Integer) datasets.get("dataset_id")); +// if (dataset == null){ +// throw new Exception("源数据集不存在"); +// } +// datasets.put("dataset_name", dataset.getName()); +// } +// //训练数据集 +// modelDependency.setTrainDataset(JsonUtils.objectToJson(datasetsList)); +// +// TrainTaskDepency trainTaskDepency = new TrainTaskDepency(); +// trainTaskDepency.setTaskId(key); +// trainTaskDepency.setInsId(experimentInsId); +// trainTaskDepency.setName(experimentName); +// //训练任务 +// modelDependency.setTrainTask(JsonUtils.objectToJson(trainTaskDepency)); +// modelDependency.setExpInsId(experimentInsId); +// //处理test数据 +// List> testDatasetsList = (List>) modelDel.get("test"); +// List> resultTestDatasets = new ArrayList>(); +// for(int i=0;i datasets = testDatasetsList.get(i); +// List> realDataSetList = (List>) datasets.get("datasets"); +// for(int j=0;j realDataSet = realDataSetList.get(j); +// Dataset dataset = datasetService.queryById((Integer) realDataSet.get("dataset_id")); +// if (dataset == null){ +// throw new Exception("源数据集不存在"); +// } +// realDataSet.put("dataset_name", dataset.getName()); +// resultTestDatasets.add(realDataSet); +// } +// +// } +// //测试数据集 +// modelDependency.setTestDataset(JsonUtils.objectToJson(resultTestDatasets)); +// +// //检查是否存在target,如果存在说明在流水线用了节点导入,如果没有说明没有导入,等待手动push +// List> modelTargetList = (List>) modelDel.get("target"); +// if (modelTargetList==null||modelTargetList.size()==0){ +// modelDependency.setState(1); +// modelDependencyService.insert(modelDependency); +// }else { +// modelDependency.setState(2); +// for(int i=0;i model = modelTargetList.get(i); +// String version = null; +// //可能是参数,必须从实验参数读取 +// if (params != null) { +// for (Map param : params) { +// if (param.containsKey("param_name") && StringUtils.equals("model_version",(String) param.get("param_name"))) { +// version = param.get("param_value").toString(); +// } +// } +// } +// modelDependency.setVersion(StringUtils.isEmpty(version)?(String)model.get("model_version"):version); +// modelDependency.setCurrentModelId((Integer) model.get("model_id")); +// //因为可能有多成果模型,多次插入 +// modelDependencyService.insert(modelDependency); +// } +// } +// } +// } + @Override public Experiment addAndRunExperiment(Experiment experiment) throws Exception { // 第一步: 调用add方法插入实验记录到数据库 diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java index 776247c2..93b6113b 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelDependencyServiceImpl.java @@ -217,5 +217,4 @@ public class ModelDependencyServiceImpl implements ModelDependencyService { return this.modelDependencyDao.update(modelDependency)>0?"删除成功":"删除失败"; } - } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java index cfa793c8..e0b1207f 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java @@ -206,6 +206,16 @@ public class ModelsVersionServiceImpl implements ModelsVersionService { String result = this.removeById(modelsVersion.getId()); results.put(modelsVersion.getId(), result); } + // 删除依赖关系 + ModelDependency modelDependency = new ModelDependency(); + modelDependency.setCurrentModelId(modelsId); + modelDependency.setVersion(version); + modelDependency.setState(1); + List modelDependencyList = modelDependencyService.queryByModelDependency(modelDependency); + if (modelDependencyList.size()>0){ + ModelDependency modelDependency1 = modelDependencyList.get(0); + modelDependencyService.removeById(modelDependency1.getId()); + } return results; } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/JacksonUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/JacksonUtil.java index 5de227d5..6fd59389 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/JacksonUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/JacksonUtil.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.type.CollectionType; import com.ruoyi.common.core.utils.StringUtils; +import org.apache.xmlbeans.impl.xb.xsdschema.Public; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -58,6 +59,21 @@ public class JacksonUtil { } } + + + public static String replaceInAarry(String res, List> params) { + // 解析 JSON 数组 + if (params == null) { + return res; + } + for (int i = 0; i < params.size(); i++) { + Map stringObjectMap = params.get(i); + if (res.contains("${" + stringObjectMap.get("param_name") + "}")) { + res = res.replace("${" + stringObjectMap.get("param_name") + "}", String.valueOf( stringObjectMap.get("param_value"))); + } + } + return res; + } /** * 获取ObjectMapper。其本身是线程安全的,可以作为成员变量,但传入的参数不可能每次都一样,所以不使用成员变量。 * diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml index 07e1cc7a..939df96e 100644 --- a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml +++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/ModelDependencyDaoMapper.xml @@ -10,6 +10,8 @@ + + @@ -20,18 +22,18 @@ - - select - id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state + id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,train_params,train_image,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state from model_dependency - where id = #{id} + + parent_models like concat('%', #{model_id}, '%') AND parent_models like concat('%', #{version}, '%') + - - select - id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state + id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,train_params,train_image,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state from model_dependency @@ -55,6 +57,12 @@ and train_dataset = #{modelDependency.trainDataset} + + and train_params = #{modelDependency.trainParams} + + + and train_image = #{modelDependency.trainImage} + and test_dataset = #{modelDependency.testDataset} @@ -80,69 +88,76 @@ and state = #{modelDependency.state} - limit #{pageable.offset}, #{pageable.pageSize} - select - id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state + id, current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, train_params, train_image, test_dataset, project_dependency, version, create_by, create_time, update_by, update_time, state from model_dependency - - parent_models like concat('%', #{model_id}, '%') AND parent_models like concat('%', #{version}, '%') - + where id = #{id} + - select - id,current_model_id,exp_ins_id,parent_models,ref_item,train_task,train_dataset,test_dataset,project_dependency,version,create_by,create_time,update_by,update_time,state + id, current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, train_params, train_image, + test_dataset, project_dependency, version, create_by, create_time, update_by, update_time, state from model_dependency - - and id = #{modelDependency.id} + + and id = #{id} - - and current_model_id = #{modelDependency.currentModelId} + + and current_model_id = #{currentModelId} - - and exp_ins_id = #{modelDependency.expInsId} + + and exp_ins_id = #{expInsId} - - and parent_models = #{modelDependency.parentModels} + + and parent_models = #{parentModels} - - and ref_item = #{modelDependency.refItem} + + and ref_item = #{refItem} - - and train_task = #{modelDependency.trainTask} + + and train_task = #{trainTask} - - and train_dataset = #{modelDependency.trainDataset} + + and train_dataset = #{trainDataset} - - and test_dataset = #{modelDependency.testDataset} + + and train_params = #{trainParams} - - and project_dependency = #{modelDependency.projectDependency} + + and train_image = #{trainImage} - - and version = #{modelDependency.version} + + and test_dataset = #{testDataset} - - and create_by = #{modelDependency.createBy} + + and project_dependency = #{projectDependency} - - and create_time = #{modelDependency.createTime} + + and version = #{version} - - and update_by = #{modelDependency.updateBy} + + and create_by = #{createBy} - - and update_time = #{modelDependency.updateTime} + + and create_time = #{createTime} - - and state = #{modelDependency.state} + + and update_by = #{updateBy} + + + and update_time = #{updateTime} + + + and state = #{state} + limit #{pageable.offset}, #{pageable.pageSize} @@ -150,158 +165,163 @@ select count(1) from model_dependency - - and id = #{modelDependency.id} + + and id = #{id} - - and current_model_id = #{modelDependency.currentModelId} + + and current_model_id = #{currentModelId} - - and exp_ins_id = #{modelDependency.expInsId} + + and exp_ins_id = #{expInsId} - - and parent_models = #{modelDependency.parentModels} + + and parent_models = #{parentModels} - - and ref_item = #{modelDependency.refItem} + + and ref_item = #{refItem} - - and train_task = #{modelDependency.trainTask} + + and train_task = #{trainTask} - - and train_dataset = #{modelDependency.trainDataset} + + and train_dataset = #{trainDataset} - - and test_dataset = #{modelDependency.testDataset} + + and train_params = #{trainParams} - - and project_dependency = #{modelDependency.projectDependency} + + and train_image = #{trainImage} - - and version = #{modelDependency.version} + + and test_dataset = #{testDataset} - - and create_by = #{modelDependency.createBy} + + and project_dependency = #{projectDependency} - - and create_time = #{modelDependency.createTime} + + and version = #{version} - - and update_by = #{modelDependency.updateBy} + + and create_by = #{createBy} - - and update_time = #{modelDependency.updateTime} + + and create_time = #{createTime} - - and state = #{modelDependency.state} + + and update_by = #{updateBy} + + + and update_time = #{updateTime} + + + and state = #{state} - - insert into model_dependency (current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, test_dataset, project_dependency,version, create_by, create_time, update_by, update_time, state) - values (#{modelDependency.currentModelId}, #{modelDependency.expInsId},#{modelDependency.parentModels}, #{modelDependency.refItem}, #{modelDependency.trainTask}, #{modelDependency.trainDataset}, #{modelDependency.testDataset}, #{modelDependency.projectDependency},#{modelDependency.version}, #{modelDependency.createBy}, #{modelDependency.createTime}, #{modelDependency.updateBy}, #{modelDependency.updateTime}, #{modelDependency.state}) + insert into model_dependency(current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, train_params, train_image, test_dataset, project_dependency, version, create_by, create_time, update_by, update_time, state) + values (#{currentModelId}, #{expInsId}, #{parentModels}, #{refItem}, #{trainTask}, #{trainDataset}, #{trainParams}, #{trainImage}, #{testDataset}, #{projectDependency}, #{version}, #{createBy}, #{createTime}, #{updateBy}, #{updateTime}, #{state}) - insert into model_dependency ( - current_model_id, - exp_ins_id, - parent_models, - ref_item, - train_task, - train_dataset, - test_dataset, - project_dependency, - version, - create_by, - create_time, - update_by, - update_time, - state - ) + insert into model_dependency(current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, + train_params, train_image, test_dataset, project_dependency, version, create_by, create_time, update_by, + update_time, state) values - ( - #{entity.currentModelId}, - #{entity.expInsId}, - #{entity.parentModels}, - #{entity.refItem}, - #{entity.trainTask}, - #{entity.trainDataset}, - #{entity.testDataset}, - #{entity.projectDependency}, - #{entity.version}, - #{entity.createBy}, - #{entity.createTime}, - #{entity.updateBy}, - #{entity.updateTime}, - #{entity.state} - ) + (#{entity.currentModelId}, #{entity.expInsId}, #{entity.parentModels}, #{entity.refItem}, + #{entity.trainTask}, #{entity.trainDataset}, #{entity.trainParams}, #{entity.trainImage}, + #{entity.testDataset}, #{entity.projectDependency}, #{entity.version}, #{entity.createBy}, + #{entity.createTime}, #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) - - insert into model_dependency(current_model_idparent_modelsref_itemtrain_tasktrain_datasettest_datasetcreate_bycreate_timeupdate_byupdate_timestate) + insert into model_dependency(current_model_id, exp_ins_id, parent_models, ref_item, train_task, train_dataset, + train_params, train_image, test_dataset, project_dependency, version, create_by, create_time, update_by, + update_time, state) values - (#{entity.currentModelId}#{entity.parentModels}#{entity.refItem}#{entity.trainTask}#{entity.trainDataset}#{entity.testDataset}#{entity.createBy}#{entity.createTime}#{entity.updateBy}#{entity.updateTime}#{entity.state}) + (#{entity.currentModelId}, #{entity.expInsId}, #{entity.parentModels}, #{entity.refItem}, + #{entity.trainTask}, #{entity.trainDataset}, #{entity.trainParams}, #{entity.trainImage}, + #{entity.testDataset}, #{entity.projectDependency}, #{entity.version}, #{entity.createBy}, + #{entity.createTime}, #{entity.updateBy}, #{entity.updateTime}, #{entity.state}) on duplicate key update -current_model_id = values(current_model_id)parent_models = values(parent_models)ref_item = values(ref_item)train_task = values(train_task)train_dataset = values(train_dataset)test_dataset = values(test_dataset)create_by = values(create_by)create_time = values(create_time)update_by = values(update_by)update_time = values(update_time)state = values(state) + current_model_id = values(current_model_id), + exp_ins_id = values(exp_ins_id), + parent_models = values(parent_models), + ref_item = values(ref_item), + train_task = values(train_task), + train_dataset = values(train_dataset), + train_params = values(train_params), + train_image = values(train_image), + test_dataset = values(test_dataset), + project_dependency = values(project_dependency), + version = values(version), + create_by = values(create_by), + create_time = values(create_time), + update_by = values(update_by), + update_time = values(update_time), + state = values(state) update model_dependency - - current_model_id = #{modelDependency.currentModelId}, + + current_model_id = #{currentModelId}, - - exp_ins_id = #{modelDependency.expInsId}, + + exp_ins_id = #{expInsId}, - - parent_models = #{modelDependency.parentModels}, + + parent_models = #{parentModels}, - - ref_item = #{modelDependency.refItem}, + + ref_item = #{refItem}, - - train_task = #{modelDependency.trainTask}, + + train_task = #{trainTask}, - - train_dataset = #{modelDependency.trainDataset}, + + train_dataset = #{trainDataset}, - - test_dataset = #{modelDependency.testDataset}, + + train_params = #{trainParams}, - - project_dependency = #{modelDependency.projectDependency}, + + train_image = #{trainImage}, - - version = #{modelDependency.version}, + + test_dataset = #{testDataset}, - - create_by = #{modelDependency.createBy}, + + project_dependency = #{projectDependency}, - - create_time = #{modelDependency.createTime}, + + version = #{version}, - - update_by = #{modelDependency.updateBy}, + + create_by = #{createBy}, - - update_time = #{modelDependency.updateTime}, + + create_time = #{createTime}, - - state = #{modelDependency.state}, + + update_by = #{updateBy}, + + + update_time = #{updateTime}, + + + state = #{state}, - where id = #{modelDependency.id} + where id = #{id} and state = 1