Browse Source

新增接口,数据标注数据集获取

pull/41/head
fanshuai 1 year ago
parent
commit
9bfdfca6ce
10 changed files with 99 additions and 32 deletions
  1. +5
    -3
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java
  2. +3
    -5
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java
  3. +2
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/MinioService.java
  4. +3
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java
  5. +35
    -9
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java
  6. +5
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java
  7. +3
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsServiceImpl.java
  8. +3
    -1
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ModelsVersionServiceImpl.java
  9. +36
    -7
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java
  10. +4
    -4
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/LabelDatasetVersionVo.java

+ 5
- 3
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/dataset/DatasetVersionController.java View File

@@ -4,7 +4,7 @@ import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.GenericsAjaxResult;
import com.ruoyi.platform.domain.DatasetVersion;
import com.ruoyi.platform.service.DatasetVersionService;
import com.ruoyi.platform.vo.LabelDatasetVersion;
import com.ruoyi.platform.vo.LabelDatasetVersionVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
@@ -138,8 +138,10 @@ public class DatasetVersionController extends BaseController {

@PostMapping("/addDatasetVersionsFromLabel")
@ApiOperation("从数据标注添加数据集版本")
public GenericsAjaxResult<Boolean> addDatasetVersionsFromLabel(@RequestBody LabelDatasetVersion labelDatasetVersion) throws Exception {
return genericsSuccess(true);
public GenericsAjaxResult<?> addDatasetVersionsFromLabel(@RequestBody LabelDatasetVersionVo labelDatasetVersionVo) throws Exception {
datasetVersionService.addDatasetVersionsFromLabel(labelDatasetVersionVo);

return GenericsAjaxResult.success();
}
}


+ 3
- 5
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/DatasetVersionService.java View File

@@ -1,11 +1,8 @@
package com.ruoyi.platform.service;




import com.ruoyi.platform.domain.Dataset;
import com.ruoyi.platform.domain.DatasetVersion;
import com.ruoyi.platform.vo.LabelDatasetVersion;
import com.ruoyi.platform.vo.LabelDatasetVersionVo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;

@@ -75,5 +72,6 @@ public interface DatasetVersionService {

String addDatasetVersions(List<DatasetVersion> datasetVersions) throws Exception;

void addDatasetVersionsFromLabel(LabelDatasetVersion labelDatasetVersion) throws Exception;
void
addDatasetVersionsFromLabel(LabelDatasetVersionVo labelDatasetVersionVo) throws Exception;
}

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

@@ -4,6 +4,7 @@ import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.List;
import java.util.Map;

@@ -11,5 +12,5 @@ public interface MinioService {
ResponseEntity<InputStreamResource> downloadZipFile(String bucketName , String path);

Map<String, String> uploadFile(String bucketName, String objectName, MultipartFile file ) throws Exception;
void uploaInputStream(String bucketName, String objectName, InputStream inputStream ) throws Exception;
}

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

@@ -18,6 +18,7 @@ import com.ruoyi.platform.vo.DatasetVo;
import com.ruoyi.system.api.model.LoginUser;
import io.minio.messages.Item;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.InputStreamResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
@@ -62,7 +63,8 @@ public class DatasetServiceImpl implements DatasetService {
private MinioService minioService;

// 固定存储桶名
private final String bucketName = "platform-data";
@Value("${minio.dataReleaseBucketName}")
private String bucketName;

@Resource
private MinioUtil minioUtil;


+ 35
- 9
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetVersionServiceImpl.java View File

@@ -1,17 +1,20 @@
package com.ruoyi.platform.service.impl;

import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.platform.annotations.CheckDuplicate;
import com.ruoyi.platform.domain.Dataset;
import com.ruoyi.platform.domain.DatasetVersion;
import com.ruoyi.platform.domain.ModelsVersion;
import com.ruoyi.platform.domain.Workflow;
import com.ruoyi.platform.mapper.DatasetDao;
import com.ruoyi.platform.mapper.DatasetVersionDao;
import com.ruoyi.platform.service.DatasetVersionService;
import com.ruoyi.platform.service.MinioService;
import com.ruoyi.platform.utils.FileUtil;
import com.ruoyi.platform.utils.HttpUtils;
import com.ruoyi.platform.vo.LabelDatasetVersion;
import com.ruoyi.platform.vo.LabelDatasetVersionVo;
import com.ruoyi.system.api.model.LoginUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
@@ -35,9 +38,13 @@ import java.util.Map;
public class DatasetVersionServiceImpl implements DatasetVersionService {
@Resource
private DatasetVersionDao datasetVersionDao;
@Resource
private DatasetDao datasetDao;
// 固定存储桶名
private final String bucketName = "platform-data";

@Value("${minio.dataReleaseBucketName}")
private String bucketName;
@Resource
private MinioService minioService;
/**
* 通过ID查询单条数据
*
@@ -198,12 +205,31 @@ public class DatasetVersionServiceImpl implements DatasetVersionService {
}

@Override
public void addDatasetVersionsFromLabel(LabelDatasetVersion labelDatasetVersion) throws Exception{
public void addDatasetVersionsFromLabel(LabelDatasetVersionVo labelDatasetVersionVo) throws Exception{
Dataset dataset = datasetDao.queryById(labelDatasetVersionVo.getDataset_id());
if (dataset == null){
throw new Exception("数据集不存在");
}
// 获取label-studio数据流
InputStream inputStream = HttpUtils.getInputStream("http://127.0.0.1:8080/api/projects/"+labelDatasetVersion.getProject_id()+"/export?exportType="+labelDatasetVersion.getExportType(), labelDatasetVersion.getToken());
// 上传镜像至minio

Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization","Token "+labelDatasetVersionVo.getToken());
InputStream inputStream = HttpUtils.getIntputStream("http://127.0.0.1:8080/api/projects/"+labelDatasetVersionVo.getProject_id()+"/export?exportType="+labelDatasetVersionVo.getExportType(), headers);
// 构建objectName
String username = SecurityUtils.getLoginUser().getUsername();
String url = username + "/" + DateUtils.dateTimeNow() + "/" + dataset.getName()+"_"+labelDatasetVersionVo.getVersion()+"."+labelDatasetVersionVo.getExportType();
String objectName = "datasets/" + url;
String formattedSize = FileUtil.formatFileSize(inputStream.available());
minioService.uploaInputStream(bucketName,objectName,inputStream);
//保存DatasetVersion
DatasetVersion datasetVersion = new DatasetVersion();
datasetVersion.setVersion(labelDatasetVersionVo.getVersion());
datasetVersion.setDatasetId(labelDatasetVersionVo.getDataset_id());
datasetVersion.setFileName(dataset.getName()+"_"+labelDatasetVersionVo.getVersion()+"."+labelDatasetVersionVo.getExportType());

datasetVersion.setFileSize(formattedSize);
datasetVersion.setUrl(url);
datasetVersion.setDescription(labelDatasetVersionVo.getDesc());
this.insert(datasetVersion);
}

private void insertPrepare(DatasetVersion datasetVersion) throws Exception {


+ 5
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/MinioServiceImpl.java View File

@@ -69,4 +69,9 @@ public class MinioServiceImpl implements MinioService {
}
return result;
}

@Override
public void uploaInputStream(String bucketName, String objectName, InputStream inputStream ) throws Exception {
minioUtil.uploadObject(bucketName, objectName, inputStream);
}
}

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

@@ -17,6 +17,7 @@ import com.ruoyi.system.api.model.LoginUser;
import io.minio.messages.Item;
import io.netty.util.Version;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.InputStreamResource;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
@@ -59,7 +60,8 @@ public class ModelsServiceImpl implements ModelsService {


// 固定存储桶名
private final String bucketName = "platform-data";
@Value("${minio.dataReleaseBucketName}")
private String bucketName;
@Resource
private MinioUtil minioUtil;



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

@@ -8,6 +8,7 @@ import com.ruoyi.platform.mapper.ModelsVersionDao;
import com.ruoyi.platform.service.ModelsVersionService;
import com.ruoyi.system.api.model.LoginUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
@@ -35,7 +36,8 @@ public class ModelsVersionServiceImpl implements ModelsVersionService {
private ModelsDao modelsDao;

// 固定存储桶名
private final String bucketName = "platform-data";
@Value("${minio.dataReleaseBucketName}")
private String bucketName;

/**
* 通过ID查询单条数据


+ 36
- 7
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/HttpUtils.java View File

@@ -375,25 +375,54 @@ public class HttpUtils {
}



/**
* 发送 HTTP 请求并返回二进制数据流(InputStream)。
* 发送 HTTP 请求并返回二进制数据流(OutputStream)。
*
* @param url 请求的 URL 地址。
* @param token 要携带的 Token
* @return 服务器响应的二进制数据流(InputStream)。
* @param headers 头节点
* @return 服务器响应的二进制数据流(OutputStream)。
* @throws IOException 如果请求失败或发生其他 I/O 错误。
*/
public static InputStream getInputStream(String url, String token) throws IOException {
public static InputStream getIntputStream(String url, Map<String, String> headers) throws IOException {
URL requestUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) requestUrl.openConnection();

// Set request headers
for (Map.Entry<String, String> entry : headers.entrySet()) {
connection.setRequestProperty(entry.getKey(), entry.getValue());
}

// Set other connection properties (e.g., timeouts, request method, etc.)
connection.setRequestMethod("GET");
connection.setRequestProperty("Authorization", "Bearer " + token); // 添加 Authorization 头部,携带 Token
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);

// Connect and get the response code
connection.connect();
int responseCode = connection.getResponseCode();

if (responseCode == HttpURLConnection.HTTP_OK) {
return connection.getInputStream(); // 获取响应的输入流
// Get the response InputStream
InputStream inputStream = connection.getInputStream();

// // Create a ByteArrayOutputStream to store the response data
// ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//
// // Read data from the InputStream and write it to the ByteArrayOutputStream
// byte[] buffer = new byte[1024];
// int bytesRead;
// while ((bytesRead = inputStream.read(buffer)) != -1) {
// outputStream.write(buffer, 0, bytesRead);
// }
//
// // Close the InputStream
// inputStream.close();

// Return the ByteArrayOutputStream as an OutputStream
return inputStream;
} else {
throw new IOException("HTTP 请求失败,状态码:" + responseCode);
throw new IOException("HTTP request failed with response code: " + responseCode);
}
}



ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/LabelDatasetVersion.java → ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/LabelDatasetVersionVo.java View File

@@ -6,10 +6,10 @@ import com.fasterxml.jackson.databind.annotation.JsonNaming;
import java.io.Serializable;

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class LabelDatasetVersion implements Serializable {
public class LabelDatasetVersionVo implements Serializable {
private String token;
private String project_id;
private String dataset_id;
private Integer dataset_id;
private String version;
private String desc;
private String exportType;
@@ -29,11 +29,11 @@ public class LabelDatasetVersion implements Serializable {
this.project_id = project_id;
}

public String getDataset_id() {
public Integer getDataset_id() {
return dataset_id;
}

public void setDataset_id(String dataset_id) {
public void setDataset_id(Integer dataset_id) {
this.dataset_id = dataset_id;
}


Loading…
Cancel
Save