Commit 42468025 authored by pengxin's avatar pengxin

数据集继承优化。

parent 0a7329ea
......@@ -12,6 +12,11 @@ public class DatasetConstant {
*/
public static final Integer INPUT_STATUS = 1;
/**
* 判断继承
*/
public static final Integer ISINHERIT_STATUS = 1;
/**
* ".xlsx"数据格式
*/
......
......@@ -28,6 +28,13 @@ public interface DatasetDataService {
*/
List<DatasetData> list(Long versionId);
/**
* 将源集合添加到模板集合中
* @param sourceVersionId 源版本标识
* @param targetVersionId 目标版本标识
*/
void copy(Long sourceVersionId, Long targetVersionId);
/**
* 开始清洗工作
* @param datasetId 清洗数据集
......
......@@ -3,6 +3,7 @@ package com.yice.webadmin.app.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.mongodb.client.FindIterable;
import com.yice.common.core.object.MyPageParam;
import com.yice.webadmin.app.constant.DatasetConstant;
import com.yice.webadmin.app.constant.MongoConstant;
......@@ -83,6 +84,20 @@ public class DatasetDataServiceImpl implements DatasetDataService {
MongoConstant.COLLECT_NAME + versionId);
}
/**
* 将源集合添加到模板集合中
* @param sourceVersionId 源版本标识
* @param targetVersionId 目标版本标识
*/
@Override
public void copy(Long sourceVersionId, Long targetVersionId) {
String sourceCollectionName = MongoConstant.COLLECT_NAME + sourceVersionId;
String targetCollectionName = MongoConstant.COLLECT_NAME + targetVersionId;
FindIterable<Document> iterable = mongoTemplate.getCollection(sourceCollectionName).find();
List<Document> all = iterable.into(new ArrayList<>());
mongoTemplate.insert(all, targetCollectionName);
}
/**
* 查询列表集合
* @param versionId 版本标识
......
......@@ -37,10 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* 数据集详情数据操作服务类。
......@@ -384,10 +381,8 @@ public class DatasetOutputServiceImpl extends BaseService<DatasetOutput, Long> i
private String exportCsvFileType(String fileType, List<DatasetData> dataList, DatasetOutput datasetOutput) {
String fileName = null;
InputStream inputStream = null;
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()){
try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
PrintWriter pw = new PrintWriter(baos);
// 计算最大的宽度
int maxWidth = getMaxWidth(dataList);
// 构建表头数据
pw.append(DatasetConstant.INSTRUCTION).append(",").append(DatasetConstant.OUTPUT).append("\n");
......@@ -401,7 +396,7 @@ public class DatasetOutputServiceImpl extends BaseService<DatasetOutput, Long> i
instruction = instruction.replace("\n", "");
output = output.replace("\n", "");
pw.printf(maxWidth > 0 ? "%-" + maxWidth + "s,%-" + maxWidth + "s\n" : "%s,%s\n", instruction, output);
pw.println(instruction + "," + output);
}
pw.flush();
// 转换为InputStream
......@@ -410,12 +405,12 @@ public class DatasetOutputServiceImpl extends BaseService<DatasetOutput, Long> i
fileName = saveMinioInputStream(fileType, inputStream);
} catch (IOException ex) {
log.error("生成CSV文件格式错误,请重新导出或者联系管理员: ", ex);
}finally {
try{
if(null != inputStream) {
} finally {
try {
if (null != inputStream) {
inputStream.close();
}
}catch (IOException ex){
} catch (IOException ex) {
log.error("关闭CSV文件流异常,请重新操作", ex);
}
}
......
......@@ -117,7 +117,9 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
datasetVersion.setTemplate(reDatasetManage.getTemplate());
datasetVersion.setDimensionType(reDatasetManage.getDimensionType());
insertDatasetVersion(datasetVersion);
//先进行数据填充、写入数据库中
this.buildDefaultValue(datasetVersion);
datasetVersionMapper.insert(datasetVersion);
return datasetVersion;
}
......@@ -127,23 +129,28 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
* @param datasetVersion 保存对象
*/
private void insertDatasetVersion(DatasetVersion datasetVersion) {
try {
//先进行数据填充
Long versionId = idGenerator.nextLongId();
datasetVersion.setVersionId(versionId);
//想查询继承的数据集,如果有,则进行数据复制;如果没有,则不进行复制操作。
DatasetVersion filter = new DatasetVersion();
filter.setDatasetVersion(datasetVersion.getHisVersion());
filter.setDatasetId(datasetVersion.getDatasetId());
DatasetVersion hisVersion = this.getOne(filter);
//判断是否继承,如果继承,则调用数据集方法
if(null != hisVersion && datasetVersion.getIsInherit().equals(DatasetConstant.ISINHERIT_STATUS)) {
Long count = this.datasetDataService.count(hisVersion.getVersionId());
datasetVersion.setInputStatus(count > 0 ? DatasetConstant.STATUS_PUBLISHED :
DatasetConstant.STATUS_UNPUBLISHED);
this.datasetDataService.copy(hisVersion.getVersionId(),datasetVersion.getVersionId());
datasetVersion.setDataVolume(hisVersion.getDataVolume());
}
//先进行数据填充、写入数据库中
this.buildDefaultValue(datasetVersion);
//进行存储、写入以及更新配置等操作
DatasetVersion dataset = dealWithWriteAndSave(datasetVersion.getDatasetId(),
datasetVersion.getHisVersion(),datasetVersion.getVersionId(),
datasetVersion.getVersionName());
if(null != dataset) {
datasetVersion.setDataVolume(dataset.getDataVolume());
datasetVersion.setFileUrl(dataset.getFileUrl());
datasetVersion.setInputStatus(dataset.getInputStatus());
}
//写入数据库中
datasetVersionMapper.insert(datasetVersion);
} catch (IOException e) {
log.error("Failed to save new data database [" + datasetVersion.getVersionName() + " ].", e);
}
}
/**
......
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