Commit 6363ed58 authored by linpeiqin's avatar linpeiqin

优化数据集文件导入功能

parent a90bbae9
package com.yice.webadmin.app.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.pagehelper.page.PageMethod;
......@@ -19,7 +21,6 @@ import com.yice.webadmin.app.config.PythonConfig;
import com.yice.webadmin.app.dto.DatasetDetailDto;
import com.yice.webadmin.app.dto.DatasetVersionDto;
import com.yice.webadmin.app.model.DatasetDetail;
import com.yice.webadmin.app.model.DatasetManage;
import com.yice.webadmin.app.model.DatasetVersion;
import com.yice.webadmin.app.service.DatasetManageService;
import com.yice.webadmin.app.service.DatasetVersionService;
......@@ -236,7 +237,6 @@ public class DatasetVersionController {
@OperationLog(type = SysOperationLogType.IMPORT)
@PostMapping("/import")
public ResponseResult<Void> importFile(
@RequestParam Long datasetId,
@RequestParam Long versionId,
@RequestParam("importFile") MultipartFile importFile) throws IOException {
String errorMessage;
......@@ -245,7 +245,11 @@ public class DatasetVersionController {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST, errorMessage);
}
DatasetVersion datasetVersion = this.datasetVersionService.getById(versionId);
String fullName = this.saveDatasetFile(importFile, datasetVersion.getVersionName());
String versionName = datasetVersion.getVersionName();
//先存储文件
String fullName = this.saveDatasetFile(importFile, versionName);
//再存储数据集配置文件
this.saveDatasetInfo(versionName);
datasetVersion.setFileUrl(fullName);
datasetVersion.setInputStatus(1);
datasetVersion.setDataVolume(Long.valueOf(JSON.parseArray(new String(importFile.getBytes(), StandardCharsets.UTF_8)).size()));
......@@ -253,6 +257,25 @@ public class DatasetVersionController {
return ResponseResult.success();
}
private void saveDatasetInfo(String versionName) throws IOException {
File file = new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo());
if (!file.exists()) {
file.createNewFile();
}
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
JsonNode rootNode = objectMapper.readTree(file);
if (rootNode == null || rootNode.isNull() || rootNode.size() < 1) {
rootNode = objectMapper.createObjectNode();
}
//此处应该要做键值映射关系,目前没做,后面需要修改
JSONObject jsonObject = new JSONObject();
jsonObject.put("file_name", versionName + ".json");
jsonObject.put("file_sha1", Sha1Util.getSha1(versionName));
((ObjectNode) rootNode).set(versionName, objectMapper.readTree(jsonObject.toJSONString()));
objectMapper.writeValue(new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo()), rootNode);
}
/**
* 保存导入文件。
*
......@@ -274,19 +297,6 @@ public class DatasetVersionController {
log.error("Failed to write imported file [" + importFile.getOriginalFilename() + " ].", e);
throw e;
}
File file = new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo());
if (!file.exists()){
file.createNewFile();
}
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(file);
if (rootNode == null || rootNode.isNull() || rootNode.size() < 1) {
rootNode = objectMapper.createObjectNode();
}
//此处应该要做键值映射关系,目前没做,后面需要修改
String fieldValue = "{\"file_name\":\"" + versionName + ".json\",\"file_sha1\":\"" + Sha1Util.getSha1(versionName) + "\"}";
((ObjectNode) rootNode).put(versionName, objectMapper.readTree(fieldValue));
objectMapper.writeValue(new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo()), rootNode);
return fullName;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment