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 85c2f54f..fdd0ed95 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 @@ -10,16 +10,16 @@ import com.ruoyi.platform.mapper.ExperimentDao; import com.ruoyi.platform.mapper.ExperimentInsDao; import com.ruoyi.platform.mapper.ModelDependency1Dao; import com.ruoyi.platform.service.*; +import com.ruoyi.platform.utils.FileUtil; import com.ruoyi.platform.utils.HttpUtils; import com.ruoyi.platform.utils.JacksonUtil; import com.ruoyi.platform.utils.JsonUtils; -import com.ruoyi.platform.vo.ModelMetaVo; import com.ruoyi.platform.vo.ModelsVo; import com.ruoyi.platform.vo.NewDatasetVo; +import com.ruoyi.platform.vo.VersionVo; import com.ruoyi.system.api.model.LoginUser; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; import org.springframework.data.domain.Page; @@ -293,7 +293,7 @@ public class ExperimentServiceImpl implements ExperimentService { ExperimentIns insert = experimentInsService.insert(experimentIns); //插入到模型依赖关系表 if (dependendcy != null && trainInfo != null) { - insertModelDependencyNew(dependendcy, trainInfo, insert.getId(), experiment.getName()); + insertModelDependencyNew(dependendcy, trainInfo, output, insert.getId(), experiment.getName()); } Map datasetDependendcy = (Map) converMap2.get("dataset_dependency"); @@ -487,11 +487,13 @@ public class ExperimentServiceImpl implements ExperimentService { } - private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Integer experimentInsId, String experimentName) throws Exception { + private void insertModelDependencyNew(Map dependendcy, Map trainInfo, Map output, 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"); + Map param_output = (Map) output.get("param_output"); + while (dependendcyIterator.hasNext()) { ModelsVo modelMetaVo = new ModelsVo(); ModelDependency1 modelDependency = new ModelDependency1(); @@ -516,7 +518,7 @@ public class ExperimentServiceImpl implements ExperimentService { Map imagesMap = (Map) modelTrainMap.get("image"); modelMetaVo.setImage(imagesMap.get("name")); //处理训练参数 todo - HashMap trainParam = (HashMap) modelTrainMap.get("params"); +// HashMap trainParam = (HashMap) modelTrainMap.get("params"); //处理source数据 List> modelsList = (List>) modelTrainMap.get("models"); @@ -541,7 +543,7 @@ public class ExperimentServiceImpl implements ExperimentService { List trainDatasets = new ArrayList<>(); for (Map dataset : trainDatasetList) { NewDatasetVo newDatasetVo = new NewDatasetVo(); - newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setId(Integer.valueOf((String) dataset.get("dataset_id"))); newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); @@ -566,7 +568,7 @@ public class ExperimentServiceImpl implements ExperimentService { List testDatasets = new ArrayList<>(); for (Map dataset : testDatasetList) { NewDatasetVo newDatasetVo = new NewDatasetVo(); - newDatasetVo.setId((Integer) dataset.get("dataset_id")); + newDatasetVo.setId(Integer.valueOf((String) dataset.get("dataset_id"))); newDatasetVo.setName((String) dataset.get("dataset_name")); newDatasetVo.setVersion((String) dataset.get("dataset_version")); newDatasetVo.setIdentifier((String) dataset.get("dataset_identifier")); @@ -579,6 +581,7 @@ public class ExperimentServiceImpl implements ExperimentService { //处理target数据 LoginUser loginUser = SecurityUtils.getLoginUser(); String gitLinkUsername = loginUser.getSysUser().getGitLinkUsername(); +// String gitLinkUsername = "fanshuai"; modelMetaVo.setOwner(gitLinkUsername); if (target != null) { for (int i = 0; i < target.size(); i++) { @@ -586,16 +589,32 @@ public class ExperimentServiceImpl implements ExperimentService { String targetTaskId = (String) targetMap.get("task_id"); Map exportMap = (Map) modelExport.get(targetTaskId); List> modelTargetList = (List>) exportMap.get("models"); + List> outputList = (List>) param_output.get(targetTaskId); + for (int j = 0; j < modelTargetList.size(); j++) { Map targetModel = modelTargetList.get(i); - modelMetaVo.setId((Integer) targetModel.get("model_id")); + modelMetaVo.setId(Integer.valueOf((String) targetModel.get("model_id"))); modelMetaVo.setIdentifier((String) targetModel.get("model_identifier")); modelMetaVo.setName((String) targetModel.get("model_name")); modelMetaVo.setVersionDesc((String) targetModel.get("model_version")); modelMetaVo.setOwner(gitLinkUsername); - modelsService.newCreateVersion(modelMetaVo); + List versionVos = new ArrayList<>(); + for (Map outputFile : outputList) { + String path = (String) outputFile.get("path"); + List> files = FileUtil.getFiles(path); + for (Map fileDetail : files) { + VersionVo versionVo = new VersionVo(); + versionVo.setUrl((String) fileDetail.get("filePath")); + versionVo.setFileName((String) fileDetail.get("fileName")); + long size = (long) fileDetail.get("size"); + versionVo.setFileSize(FileUtil.formatFileSize(size)); + versionVos.add(versionVo); + } + } + modelMetaVo.setModelVersionVos(versionVos); } + modelsService.newCreateVersion(modelMetaVo); } } else { String meta = JSON.toJSONString(modelMetaVo); @@ -605,8 +624,8 @@ public class ExperimentServiceImpl implements ExperimentService { } } - } + } /** * 被废弃的旧JSON diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java index 772063d7..795a2b0a 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java @@ -574,40 +574,17 @@ public class DVCUtils { * @return 包含文件路径、名称和大小的List> */ public List> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) { - List> fileInfoList = new ArrayList<>(); - try { - //刷新 refreshRemoteBranches(localPath+"/"+repoFolder, username, password,branch); // 读取data文件夹中的文件列表 String path = localPath + "/" + repoFolder + "/" + filePath; - Path dataPath = Paths.get(path); - File[] files = dataPath.toFile().listFiles(); - - System.out.println("!!!!!!!!!!!!!!!!!dataPath: "+path); - System.out.println("!!!!!!!!!!!!!!!!!files: "+files); - if (files != null) { - for (File file : files) { - if (file.isFile()) { - long size = Files.size(file.toPath()); - String absoluteFilePath = file.getAbsolutePath(); - String fileName = file.getName(); - - Map fileDetails = new HashMap<>(); - fileDetails.put("size", size); - fileDetails.put("filePath", absoluteFilePath); - fileDetails.put("fileName", fileName); - - fileInfoList.add(fileDetails); - } - } - } + + return FileUtil.getFiles(path); } catch (Exception e) { log.error("Error occurred while getting file details after git pull", e); } - - return fileInfoList; + return null; } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java index 58e7d84b..f67cbf0d 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java @@ -1,9 +1,21 @@ package com.ruoyi.platform.utils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class FileUtil { + private static final Logger log = LoggerFactory.getLogger(DVCUtils.class); + // 格式化文件大小为可读的字符串表示 public static String formatFileSize(long sizeInBytes) { // 检查文件大小是否为负数 @@ -61,4 +73,32 @@ public class FileUtil { } return size; } + + public static List> getFiles(String path) { + List> fileInfoList = new ArrayList<>(); + + Path dataPath = Paths.get(path); + File[] files = dataPath.toFile().listFiles(); + try { + if (files != null) { + for (File file : files) { + if (file.isFile()) { + long size = Files.size(file.toPath()); + String absoluteFilePath = file.getAbsolutePath(); + String fileName = file.getName(); + + Map fileDetails = new HashMap<>(); + fileDetails.put("size", size); + fileDetails.put("filePath", absoluteFilePath); + fileDetails.put("fileName", fileName); + + fileInfoList.add(fileDetails); + } + } + } + } catch (Exception e) { + log.error("Error occurred while getting file details after git pull", e); + } + return fileInfoList; + } }