Commit 42468025 authored by pengxin's avatar pengxin

数据集继承优化。

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