Commit f060228d authored by linpeiqin's avatar linpeiqin

增加删除逻辑

parent c305e352
......@@ -16,6 +16,7 @@ import com.yice.webadmin.app.dto.DatasetVersionDto;
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;
import com.yice.webadmin.app.vo.DatasetManageVo;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
......@@ -38,6 +39,8 @@ public class DatasetManageController {
@Autowired
private DatasetManageService datasetManageService;
@Autowired
private DatasetVersionService datasetVersionService;
/**
* 新增数据集管理数据。
......@@ -194,6 +197,15 @@ public class DatasetManageController {
errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
DatasetVersion deletedObject = new DatasetVersion();
deletedObject.setDatasetId(datasetId);
List<DatasetVersion> datasetVersions = this.datasetVersionService.getDatasetVersionList(deletedObject, "");
for (DatasetVersion datasetVersion : datasetVersions) {
if (datasetVersion.getReleaseStatus() == 1) {
errorMessage = "存在已发布的子数据集版本,不允许删除!";
return ResponseResult.error(ErrorCodeEnum.UNHANDLED_EXCEPTION, errorMessage);
}
}
if (!datasetManageService.remove(datasetId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
......
......@@ -278,43 +278,23 @@ public class DatasetVersionController {
String errorMessage;
// 验证关联Id的数据合法性
DatasetVersion originalDatasetVersion = datasetVersionService.getById(versionId);
if (originalDatasetVersion.getReleaseStatus() == 1) {
errorMessage = "数据集已发布的状态不允许删除!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (originalDatasetVersion == null) {
// NOTE: 修改下面方括号中的话述
errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!datasetVersionService.remove(versionId)) {
if (!datasetVersionService.remove(originalDatasetVersion.getVersionId())) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
try {
this.updateJsonFile(pythonConfig.getDatasetFileBaseDir() + pythonConfig.getDatasetInfo(),originalDatasetVersion.getVersionName());
} catch (IOException e) {
throw new RuntimeException(e);
}
//删除文件路径
FileUtil.del(originalDatasetVersion.getFileUrl());
//删除数据集
datasetDataService.delete(versionId);
return ResponseResult.success();
}
private void updateJsonFile(String filePath, String keyToRemove) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
File jsonFile = new File(filePath);
// 读取JSON文件
JsonNode rootNode = objectMapper.readTree(jsonFile);
// 删除指定键的对象
if (rootNode.isObject()) {
ObjectNode objectNode = (ObjectNode) rootNode;
objectNode.remove(keyToRemove);
} else {
log.error("Root node is not an object.");
}
// 将更新后的JSON写回文件
objectMapper.writeValue(jsonFile, rootNode);
}
@PostMapping(value = "/detail")
public ResponseResult<MyPageData<String>> detail(@MyRequestBody Long versionId,
......
......@@ -99,4 +99,6 @@ public interface DatasetVersionService extends IBaseService<DatasetVersion, Long
* @return 查询结果集。
*/
List<DatasetVersion> getDatasetVersionListWithRelation(DatasetVersion filter, DatasetDetail datasetDetailFilter, String orderBy);
/* boolean remove(DatasetVersion originalDatasetVersion);*/
}
......@@ -12,8 +12,10 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.github.pagehelper.Page;
import com.yice.common.core.base.dao.BaseDaoMapper;
import com.yice.common.core.base.service.BaseService;
import com.yice.common.core.constant.ErrorCodeEnum;
import com.yice.common.core.object.CallResult;
import com.yice.common.core.object.MyRelationParam;
import com.yice.common.core.object.ResponseResult;
import com.yice.common.core.util.MyModelUtil;
import com.yice.common.sequence.wrapper.IdGeneratorWrapper;
import com.yice.webadmin.app.config.PythonConfig;
......@@ -24,7 +26,6 @@ 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.DatasetDataService;
import com.yice.webadmin.app.service.DatasetDetailService;
import com.yice.webadmin.app.service.DatasetManageService;
import com.yice.webadmin.app.service.DatasetVersionService;
import com.yice.webadmin.app.util.Sha1Util;
......@@ -58,8 +59,6 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
@Autowired
private DatasetManageService datasetManageService;
@Autowired
private DatasetDetailService datasetDetailService;
@Autowired
private IdGeneratorWrapper idGenerator;
@Autowired
private PythonConfig pythonConfig;
......@@ -112,6 +111,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 添加数据对象
*
* @param datasetVersion 保存对象
*/
private void insertDatasetVersion(DatasetVersion datasetVersion) {
......@@ -120,9 +120,9 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
this.buildDefaultValue(datasetVersion);
//进行存储、写入以及更新配置等操作
DatasetVersion dataset = dealWithWriteAndSave(datasetVersion.getDatasetId(),
datasetVersion.getHisVersion(),datasetVersion.getVersionId(),
datasetVersion.getHisVersion(), datasetVersion.getVersionId(),
datasetVersion.getVersionName());
if(null != dataset) {
if (null != dataset) {
datasetVersion.setDataVolume(dataset.getDataVolume());
datasetVersion.setFileUrl(dataset.getFileUrl());
datasetVersion.setInputStatus(dataset.getInputStatus());
......@@ -136,9 +136,10 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 进行存储、写入以及更新配置等操作
* @param datasetId 数据集标识
* @param hisVersion 历史标识
* @param versionId 版本标识
*
* @param datasetId 数据集标识
* @param hisVersion 历史标识
* @param versionId 版本标识
* @param datasetName 数据集名称
*/
private DatasetVersion dealWithWriteAndSave(Long datasetId, Integer hisVersion,
......@@ -171,6 +172,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 存储到python数据集中并进行更新操作
*
* @param versionName 版本名称
* @throws IOException 异常操作
*/
......@@ -196,6 +198,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 截取最后一个斜杠后的部分
*
* @param fileName 文件名称
* @return 返回截取后的字符串
*/
......@@ -209,14 +212,15 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 文件目录进行复制并写入到Mongodb数据库中
* @param fullName 新文件名称
* @param versionId 版本标识
*
* @param fullName 新文件名称
* @param versionId 版本标识
* @param originFileName 原始文件名
* @return 字节编码
*/
private byte[] writeAndSaveFileDetail(String fullName,String originFileName,Long versionId) throws IOException{
private byte[] writeAndSaveFileDetail(String fullName, String originFileName, Long versionId) throws IOException {
byte[] bytes = null;
try{
try {
bytes = readFileToBytes(originFileName);
Path path = Paths.get(fullName);
// 如果没有files文件夹,则创建
......@@ -226,7 +230,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
// 文件写入指定路径
Files.write(path, bytes);
// 写入到mongodb中
writeDatasetFile(bytes,fullName,versionId);
writeDatasetFile(bytes, fullName, versionId);
} catch (IOException e) {
log.error("Failed to write imported file [" + fullName + " ].", e);
throw e;
......@@ -236,6 +240,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 读取地址内容并转成bytes数据
*
* @param filePath 文件地址
* @return byte数组
* @throws IOException 异常
......@@ -250,9 +255,10 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 写入到mongodb中
* @param bytes 字节
*
* @param bytes 字节
* @param originalFilename 导入文件名称
* @param versionId 版本标识
* @param versionId 版本标识
*/
@Override
public void writeDatasetFile(byte[] bytes, String originalFilename, Long versionId) {
......@@ -263,7 +269,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
datasetDataService.delete(versionId);
//保存到mongodb中
datasetDataService.save(new DatasetData(null, versionId, result, new Date(), null));
}catch (Exception ex) {
} catch (Exception ex) {
log.error("Failed to write mongodb database [" + originalFilename + " ].", ex);
}
}
......@@ -301,7 +307,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
/**
* 更新数据对象。
*
* @param datasetVersion 更新的对象。
* @param datasetVersion 更新的对象。
* @return 成功返回true,否则false。
*/
@Transactional(rollbackFor = Exception.class)
......@@ -322,10 +328,29 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
if (datasetVersionMapper.deleteById(versionId) == 0) {
return false;
}
datasetDetailService.removeByVersionId(versionId);
//删除数据集
datasetDataService.delete(versionId);
// datasetDetailService.removeByVersionId(versionId);
return true;
}
private void updateDatasetInfoFile(String filePath, String keyToRemove) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
File jsonFile = new File(filePath);
// 读取JSON文件
JsonNode rootNode = objectMapper.readTree(jsonFile);
// 删除指定键的对象
if (rootNode.isObject()) {
ObjectNode objectNode = (ObjectNode) rootNode;
objectNode.remove(keyToRemove);
} else {
log.error("Root node is not an object.");
}
// 将更新后的JSON写回文件
objectMapper.writeValue(jsonFile, rootNode);
}
/**
* 当前服务的支持表为从表,根据主表的关联Id,删除一对多的从表数据。
*
......@@ -337,6 +362,12 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
public int removeByDatasetId(Long datasetId) {
DatasetVersion deletedObject = new DatasetVersion();
deletedObject.setDatasetId(datasetId);
List<DatasetVersion> datasetVersions = this.getDatasetVersionList(deletedObject, "");
for (DatasetVersion datasetVersion : datasetVersions) {
if (datasetVersion.getReleaseStatus() == 0) {
datasetDataService.delete(datasetVersion.getVersionId());
}
}
return datasetVersionMapper.delete(new QueryWrapper<>(deletedObject));
}
......@@ -374,6 +405,25 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
return resultList;
}
/* @Override
@Transactional(rollbackFor = Exception.class)
public boolean remove(DatasetVersion originalDatasetVersion) {
Long versionId = originalDatasetVersion.getVersionId();
try {
this.updateDatasetInfoFile(pythonConfig.getDatasetFileBaseDir() + pythonConfig.getDatasetInfo(),originalDatasetVersion.getVersionName());
} catch (IOException e) {
throw new RuntimeException(e);
}
//删除文件路径
FileUtil.del(originalDatasetVersion.getFileUrl());
//删除数据集
datasetDataService.delete(versionId);
if (datasetVersionMapper.deleteById(versionId) == 0) {
return false;
}
return true;
}*/
/**
* 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。
*
......
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