Commit f060228d authored by linpeiqin's avatar linpeiqin

增加删除逻辑

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