Browse Source

修改模型导出依赖

dev-DXTZYK
chenzhihang 1 year ago
parent
commit
994696da9a
3 changed files with 72 additions and 36 deletions
  1. +29
    -10
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ExperimentServiceImpl.java
  2. +3
    -26
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java
  3. +40
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java

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

@@ -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<String, Object> datasetDependendcy = (Map<String, Object>) converMap2.get("dataset_dependency");
@@ -487,11 +487,13 @@ public class ExperimentServiceImpl implements ExperimentService {

}

private void insertModelDependencyNew(Map<String, Object> dependendcy, Map<String, Object> trainInfo, Integer experimentInsId, String experimentName) throws Exception {
private void insertModelDependencyNew(Map<String, Object> dependendcy, Map<String, Object> trainInfo, Map<String, Object> output, Integer experimentInsId, String experimentName) throws Exception {
Iterator<Map.Entry<String, Object>> dependendcyIterator = dependendcy.entrySet().iterator();
Map<String, Object> modelTrain = (Map<String, Object>) trainInfo.get("model_train");
Map<String, Object> modelEvaluate = (Map<String, Object>) trainInfo.get("model_evaluate");
Map<String, Object> modelExport = (Map<String, Object>) trainInfo.get("model_export");
Map<String, Object> param_output = (Map<String, Object>) 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<String, String> imagesMap = (Map<String, String>) modelTrainMap.get("image");
modelMetaVo.setImage(imagesMap.get("name"));
//处理训练参数 todo
HashMap<String, Object> trainParam = (HashMap<String, Object>) modelTrainMap.get("params");
// HashMap<String, Object> trainParam = (HashMap<String, Object>) modelTrainMap.get("params");

//处理source数据
List<Map<String, Object>> modelsList = (List<Map<String, Object>>) modelTrainMap.get("models");
@@ -541,7 +543,7 @@ public class ExperimentServiceImpl implements ExperimentService {
List<NewDatasetVo> trainDatasets = new ArrayList<>();
for (Map<String, Object> 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<NewDatasetVo> testDatasets = new ArrayList<>();
for (Map<String, Object> 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<String, Object> exportMap = (Map<String, Object>) modelExport.get(targetTaskId);
List<Map<String, Object>> modelTargetList = (List<Map<String, Object>>) exportMap.get("models");
List<Map<String, Object>> outputList = (List<Map<String, Object>>) param_output.get(targetTaskId);

for (int j = 0; j < modelTargetList.size(); j++) {
Map<String, Object> 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<VersionVo> versionVos = new ArrayList<>();
for (Map<String, Object> outputFile : outputList) {
String path = (String) outputFile.get("path");
List<Map<String, Object>> files = FileUtil.getFiles(path);
for (Map<String, Object> 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


+ 3
- 26
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DVCUtils.java View File

@@ -574,40 +574,17 @@ public class DVCUtils {
* @return 包含文件路径、名称和大小的List<Map<String, Object>>
*/
public List<Map<String, Object>> getFileDetailsAfterGitPull(String localPath, String repoFolder, String branch, String filePath , String username, String password) {
List<Map<String, Object>> 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<String, Object> 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;
}
}

+ 40
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/FileUtil.java View File

@@ -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<Map<String, Object>> getFiles(String path) {
List<Map<String, Object>> 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<String, Object> 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;
}
}

Loading…
Cancel
Save