Commit d30228f6 authored by pengxin's avatar pengxin

Revert "数据集模块改造。"

This reverts commit f486099d
parent f486099d
...@@ -3,52 +3,12 @@ package com.yice.webadmin.app.constant; ...@@ -3,52 +3,12 @@ package com.yice.webadmin.app.constant;
public class DatasetConstant { public class DatasetConstant {
/** /**
* 未发布状态 *未发布状态0
*/ */
public static final Integer STATUS_UNPUBLISHED = 0; public static final Integer STATUS_UNPUBLISHED = 0;
/** /**
* 已发布状态 *已发布状态
*/ */
public static final Integer STATUS_PUBLISHED = 1; public static final Integer STATUS_PUBLISHED = 1;
/**
* 未完成状态
*/
public static final Integer STATUS_UNFINISHED = 0;
/**
* 未标记状态
*/
public static final Integer UNMARK = 0;
/**
* 已完成状态
*/
public static final Integer STATUS_FINISHED = 1 ;
/**
* 文件上传字段
*/
public static final Integer UPLOAD = 1 ;
/**
* 文件上传字段
*/
public static final String KB = "KB" ;
/**
* 文件名称
*/
public static final String FILE_NAME = "output.";
/**
* 导出位置
*/
public static final String OUTPUT_POSTION = "导出至本地" ;
/**
* 导出内容
*/
public static final String OUTPUT_CONTENT = "全部数据" ;
} }
...@@ -25,22 +25,6 @@ public final class MongoConstant { ...@@ -25,22 +25,6 @@ public final class MongoConstant {
*/ */
public static final String CREATE_TIME = "createTime"; public static final String CREATE_TIME = "createTime";
/**
* 标记状态
*/
public static final String MARK_STATUS = "markStatus";
/**
* 标记状态
*/
public static final String OUTPUT = "output";
/**
* NULL状态
*/
public static final String EMPTY = "";
/** /**
* 主键id * 主键id
*/ */
......
...@@ -99,25 +99,6 @@ public class DatasetDataController { ...@@ -99,25 +99,6 @@ public class DatasetDataController {
return ResponseResult.success(MyPageUtil.makeResponseData(datasetDataList, count)); return ResponseResult.success(MyPageUtil.makeResponseData(datasetDataList, count));
} }
/**
* 根据版本id,查询该数据集列表
* @param datasetDataDtoFilter 数据集对象
* @param pageParam 分页参数
* @return
*/
@PostMapping("/load")
public ResponseResult<MyPageData<DatasetData>> load(
@MyRequestBody DatasetDataDto datasetDataDtoFilter,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
DatasetData datasetDataFilter = MyModelUtil.copyTo(datasetDataDtoFilter, DatasetData.class);
List<DatasetData> datasetDataList = datasetDataService.list(datasetDataFilter,pageParam);
Long count = datasetDataService.count(datasetDataFilter);
return ResponseResult.success(MyPageUtil.makeResponseData(datasetDataList, count));
}
/** /**
* 查看指定数据集版本对象详情。 * 查看指定数据集版本对象详情。
* @param id 主键标识。 * @param id 主键标识。
......
...@@ -125,29 +125,6 @@ public class DatasetManageController { ...@@ -125,29 +125,6 @@ public class DatasetManageController {
return ResponseResult.success(MyPageUtil.makeResponseData(datasetManageList, DatasetManage.INSTANCE)); return ResponseResult.success(MyPageUtil.makeResponseData(datasetManageList, DatasetManage.INSTANCE));
} }
/**
* 查询所有数据集列表最新的记录列表进行分组查询。
*
* @param datasetManageDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/findDatasets")
public ResponseResult<MyPageData<DatasetManageVo>> findDatasets(
@MyRequestBody DatasetManageDto datasetManageDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
DatasetManage datasetManageFilter = MyModelUtil.copyTo(datasetManageDtoFilter, DatasetManage.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, DatasetManage.class);
List<DatasetManage> datasetManageList =
datasetManageService.getDatasetManageGroupList(datasetManageFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(datasetManageList, DatasetManage.INSTANCE));
}
/** /**
* 列出符合过滤条件的数据集管理列表。 * 列出符合过滤条件的数据集管理列表。
* *
......
package com.yice.webadmin.app.controller;
import com.github.pagehelper.page.PageMethod;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.yice.common.core.annotation.MyRequestBody;
import com.yice.common.core.constant.ErrorCodeEnum;
import com.yice.common.core.object.*;
import com.yice.common.core.util.MyCommonUtil;
import com.yice.common.core.util.MyModelUtil;
import com.yice.common.core.util.MyPageUtil;
import com.yice.common.log.annotation.OperationLog;
import com.yice.common.log.model.constant.SysOperationLogType;
import com.yice.webadmin.app.dto.DatasetOutputDto;
import com.yice.webadmin.app.model.DatasetOutput;
import com.yice.webadmin.app.service.DatasetOutputService;
import com.yice.webadmin.app.vo.DatasetOutputVo;
import com.yice.webadmin.config.ApplicationConfig;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 数据集详情操作控制器类。
*
* @author linking
* @date 2023-04-13
*/
@Api(tags = "数据集版本导出管理接口")
@Slf4j
@RestController
@RequestMapping("/admin/app/datasetOutput")
public class DatasetOutputController {
@Autowired
private DatasetOutputService datasetOutputService;
@Autowired
private ApplicationConfig appConfig;
/**
* 新增数据集详情数据。
*
* @param datasetOutputDto 新增对象。
* @return 应答结果对象,包含新增对象主键Id。
*/
@ApiOperationSupport(ignoreParameters = {"datasetOutputDto.outputId"})
@OperationLog(type = SysOperationLogType.ADD)
@PostMapping("/add")
public ResponseResult<Long> add(@MyRequestBody DatasetOutputDto datasetOutputDto) {
String errorMessage = MyCommonUtil.getModelValidationError(datasetOutputDto, false);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
DatasetOutput datasetOutput = MyModelUtil.copyTo(datasetOutputDto, DatasetOutput.class);
datasetOutput = datasetOutputService.saveNew(datasetOutput);
return ResponseResult.success(datasetOutput.getOutputId());
}
/**
* 更新数据集详情数据。
*
* @param datasetOutputDto 更新对象。
* @return 应答结果对象。
*/
@OperationLog(type = SysOperationLogType.UPDATE)
@PostMapping("/update")
public ResponseResult<Void> update(@MyRequestBody DatasetOutputDto datasetOutputDto) {
String errorMessage = MyCommonUtil.getModelValidationError(datasetOutputDto, true);
if (errorMessage != null) {
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
DatasetOutput datasetOutput = MyModelUtil.copyTo(datasetOutputDto, DatasetOutput.class);
DatasetOutput originaldatasetOutput = datasetOutputService.getById(datasetOutput.getOutputId());
if (originaldatasetOutput == null) {
errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!datasetOutputService.update(datasetOutput, originaldatasetOutput)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/**
* 删除数据集详情数据。
*
* @param detailId 删除对象主键Id。
* @return 应答结果对象。
*/
@OperationLog(type = SysOperationLogType.DELETE)
@PostMapping("/delete")
public ResponseResult<Void> delete(@MyRequestBody Long detailId) {
if (MyCommonUtil.existBlankArgument(detailId)) {
return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST);
}
return this.doDelete(detailId);
}
/**
* 列出符合过滤条件的数据集详情列表。
*
* @param datasetOutputDtoFilter 过滤对象。
* @param orderParam 排序参数。
* @param pageParam 分页参数。
* @return 应答结果对象,包含查询结果集。
*/
@PostMapping("/list")
public ResponseResult<MyPageData<DatasetOutputVo>> list(
@MyRequestBody DatasetOutputDto datasetOutputDtoFilter,
@MyRequestBody MyOrderParam orderParam,
@MyRequestBody MyPageParam pageParam) {
if (pageParam != null) {
PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize());
}
DatasetOutput datasetOutputFilter = MyModelUtil.copyTo(datasetOutputDtoFilter, DatasetOutput.class);
String orderBy = MyOrderParam.buildOrderBy(orderParam, DatasetOutput.class);
List<DatasetOutput> datasetOutputList =
datasetOutputService.getDatasetOutputListWithRelation(datasetOutputFilter, orderBy);
return ResponseResult.success(MyPageUtil.makeResponseData(datasetOutputList, DatasetOutput.INSTANCE));
}
/**
* 查看指定数据集详情对象详情。
*
* @param detailId 指定对象主键Id。
* @return 应答结果对象,包含对象详情。
*/
@GetMapping("/view")
public ResponseResult<DatasetOutputVo> view(@RequestParam Long detailId) {
DatasetOutput datasetOutput = datasetOutputService.getByIdWithRelation(detailId, MyRelationParam.full());
if (datasetOutput == null) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
DatasetOutputVo datasetOutputVo = DatasetOutput.INSTANCE.fromModel(datasetOutput);
return ResponseResult.success(datasetOutputVo);
}
private ResponseResult<Void> doDelete(Long detailId) {
String errorMessage;
// 验证关联Id的数据合法性
DatasetOutput originaldatasetOutput = datasetOutputService.getById(detailId);
if (originaldatasetOutput == null) {
errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
if (!datasetOutputService.remove(detailId)) {
errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
return ResponseResult.success();
}
}
...@@ -18,15 +18,11 @@ import com.yice.common.core.util.MyPageUtil; ...@@ -18,15 +18,11 @@ import com.yice.common.core.util.MyPageUtil;
import com.yice.common.log.annotation.OperationLog; import com.yice.common.log.annotation.OperationLog;
import com.yice.common.log.model.constant.SysOperationLogType; import com.yice.common.log.model.constant.SysOperationLogType;
import com.yice.webadmin.app.config.PythonConfig; import com.yice.webadmin.app.config.PythonConfig;
import com.yice.webadmin.app.constant.DatasetConstant;
import com.yice.webadmin.app.data.DatasetData;
import com.yice.webadmin.app.dto.DatasetDetailDto; import com.yice.webadmin.app.dto.DatasetDetailDto;
import com.yice.webadmin.app.dto.DatasetVersionDto; import com.yice.webadmin.app.dto.DatasetVersionDto;
import com.yice.webadmin.app.model.DatasetDetail; import com.yice.webadmin.app.model.DatasetDetail;
import com.yice.webadmin.app.model.DatasetOutput;
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.DatasetOutputService;
import com.yice.webadmin.app.service.DatasetVersionService; import com.yice.webadmin.app.service.DatasetVersionService;
import com.yice.webadmin.app.vo.DatasetVersionVo; import com.yice.webadmin.app.vo.DatasetVersionVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -46,7 +42,10 @@ import java.nio.charset.StandardCharsets; ...@@ -46,7 +42,10 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.*; import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
/** /**
* 数据集版本操作控制器类。 * 数据集版本操作控制器类。
...@@ -66,8 +65,6 @@ public class DatasetVersionController { ...@@ -66,8 +65,6 @@ public class DatasetVersionController {
private PythonConfig pythonConfig; private PythonConfig pythonConfig;
@Autowired @Autowired
private DatasetDataService datasetDataService; private DatasetDataService datasetDataService;
@Autowired
private DatasetOutputService datasetOutputService;
/** /**
* 新增数据集版本数据。 * 新增数据集版本数据。
* *
...@@ -113,40 +110,6 @@ public class DatasetVersionController { ...@@ -113,40 +110,6 @@ public class DatasetVersionController {
return ResponseResult.success(); return ResponseResult.success();
} }
/**
* 更新数据集版本数据。
*
* @param versionId 更新对象。
* @return 应答结果对象。
*/
@OperationLog(type = SysOperationLogType.UPDATE)
@GetMapping("/publish")
public ResponseResult<Void> publish(@RequestParam("versionId") Long versionId) {
String errorMessage;
if (null == versionId) {
errorMessage = "数据验证失败,参数不能为空!";
return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage);
}
DatasetVersion datasetVersion = datasetVersionService.getById(versionId);
if (datasetVersion == null) {
errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
DatasetData datasetDataFilter = new DatasetData();
datasetDataFilter.setMarkStatus(DatasetConstant.UNMARK);
datasetDataFilter.setVersionId(versionId);
Long count = datasetDataService.count(datasetDataFilter);
if (count > 0) {
errorMessage = "该数据集不满足发布条件,请确保数据集已完成全部数据标注!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage);
}
datasetVersion.setReleaseStatus(DatasetConstant.STATUS_PUBLISHED);
if (!datasetVersionService.update(datasetVersion)) {
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST);
}
return ResponseResult.success();
}
/** /**
* 删除数据集版本数据。 * 删除数据集版本数据。
* *
...@@ -333,10 +296,10 @@ public class DatasetVersionController { ...@@ -333,10 +296,10 @@ public class DatasetVersionController {
if (!Files.isWritable(path)) { if (!Files.isWritable(path)) {
Files.createDirectories(Paths.get(pythonConfig.getDatasetFileBaseDir())); Files.createDirectories(Paths.get(pythonConfig.getDatasetFileBaseDir()));
} }
// 文件写入指定路径、应该是追加到文件里面 // 文件写入指定路径
Files.write(path, bytes); Files.write(path, bytes);
// 写入到mongodb中 // 写入到mongodb中
datasetVersionService.writeDatasetFile(bytes,importFile.getOriginalFilename(),versionId); datasetVersionService.writeDatasetFileForMongo(bytes,importFile.getOriginalFilename(),versionId);
} catch (IOException e) { } catch (IOException e) {
log.error("Failed to write imported file [" + importFile.getOriginalFilename() + " ].", e); log.error("Failed to write imported file [" + importFile.getOriginalFilename() + " ].", e);
throw e; throw e;
...@@ -362,30 +325,4 @@ public class DatasetVersionController { ...@@ -362,30 +325,4 @@ public class DatasetVersionController {
return ResponseEntity.notFound().build(); // 如果文件不存在,返回404 Not Found状态码 return ResponseEntity.notFound().build(); // 如果文件不存在,返回404 Not Found状态码
} }
} }
/**
* 开始导出数据集记录
* @param versionId 版本标识
* @param fileType 文件类型
* @return 返回导出文件链接
*/
@GetMapping("/startExport")
public ResponseResult<String> startExport(@RequestParam Long versionId,
@RequestParam String fileType){
DatasetVersion datasetVersion = this.datasetVersionService.getById(versionId);
datasetVersion.setFileUrl("E:\\自我认知数据集_V2.json");
if (datasetVersion == null) {
String errorMessage = "数据操作失败,查询数据不存在,请刷新后重试!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST,errorMessage);
}
DatasetOutput datasetOutput = datasetOutputService.saveNew(fileType,datasetVersion.getFileUrl(),versionId);
if (datasetOutput == null) {
String errorMessage = "导出数据操作失败,请刷新后重试或者联系管理员!";
return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST,errorMessage);
}
datasetOutput.setStatus(DatasetConstant.STATUS_FINISHED);
datasetOutput.setOutputEndTime(new Date());
datasetOutputService.updateById(datasetOutput);
return ResponseResult.success(datasetOutput.getDownloadUrl());
}
} }
...@@ -44,15 +44,4 @@ public interface DatasetManageMapper extends BaseDaoMapper<DatasetManage> { ...@@ -44,15 +44,4 @@ public interface DatasetManageMapper extends BaseDaoMapper<DatasetManage> {
@Param("datasetManageFilter") DatasetManage datasetManageFilter, @Param("datasetManageFilter") DatasetManage datasetManageFilter,
@Param("datasetVersionFilter") DatasetVersion datasetVersionFilter, @Param("datasetVersionFilter") DatasetVersion datasetVersionFilter,
@Param("orderBy") String orderBy); @Param("orderBy") String orderBy);
/**
* 查询最新的数据列表。
*
* @param datasetManageFilter 主表过滤对象。
* @param orderBy 排序字符串,order by从句的参数。
* @return 对象列表。
*/
List<DatasetManage> getDatasetManageGroupList(
@Param("datasetManageFilter") DatasetManage datasetManageFilter,
@Param("orderBy") String orderBy);
} }
package com.yice.webadmin.app.dao;
import com.yice.common.core.base.dao.BaseDaoMapper;
import com.yice.webadmin.app.model.DatasetOutput;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 数据集导出数据操作访问接口。
*
* @author linking
* @date 2023-04-13
*/
public interface DatasetOutputMapper extends BaseDaoMapper<DatasetOutput> {
/**
* 批量插入对象列表。
*
* @param datasetOutputList 新增对象列表。
*/
void insertList(List<DatasetOutput> datasetOutputList);
/**
* 获取过滤后的对象列表。
*
* @param datasetOutputFilter 主表过滤对象。
* @param orderBy 排序字符串,order by从句的参数。
* @return 对象列表。
*/
List<DatasetOutput> getDatasetOutputList(
@Param("datasetOutputFilter") DatasetOutput datasetOutputFilter, @Param("orderBy") String orderBy);
}
...@@ -11,10 +11,6 @@ ...@@ -11,10 +11,6 @@
<result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/> <result column="update_user_id" jdbcType="BIGINT" property="updateUserId"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/> <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
<result column="data_type" jdbcType="TINYINT" property="dataType"/> <result column="data_type" jdbcType="TINYINT" property="dataType"/>
<result column="data_volume" jdbcType="TINYINT" property="dataVolume"/>
<result column="release_status" jdbcType="TINYINT" property="releaseStatus"/>
<result column="input_status" jdbcType="TINYINT" property="inputStatus"/>
<result column="dataset_version" jdbcType="TINYINT" property="datasetVersion"/>
</resultMap> </resultMap>
<insert id="insertList"> <insert id="insertList">
...@@ -99,23 +95,4 @@ ...@@ -99,23 +95,4 @@
ORDER BY ${orderBy} ORDER BY ${orderBy}
</if> </if>
</select> </select>
<select id="getDatasetManageGroupList" resultMap="BaseResultMap" parameterType="com.yice.webadmin.app.model.DatasetManage">
SELECT lmp_dataset_manage.*, version.release_status, version.input_status, version.data_volume, version.dataset_version
FROM
lmp_dataset_manage lmp_dataset_manage
JOIN (
SELECT dataset_id, MAX(dataset_version) as max_dataset_version
FROM lmp_dataset_version
GROUP BY dataset_id
) v ON lmp_dataset_manage.dataset_id = v.dataset_id
JOIN lmp_dataset_version version ON lmp_dataset_manage.dataset_id = version.dataset_id
AND v.max_dataset_version = version.dataset_version
<where>
<include refid="filterRef"/>
</where>
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yice.webadmin.app.dao.DatasetOutputMapper">
<resultMap id="BaseResultMap" type="com.yice.webadmin.app.model.DatasetOutput">
<id column="output_id" jdbcType="BIGINT" property="outputId"/>
<result column="output_postion" jdbcType="VARCHAR" property="outputPostion"/>
<result column="mark_format_type" jdbcType="VARCHAR" property="markFormatType"/>
<result column="output_content" jdbcType="VARCHAR" property="outputContent"/>
<result column="file_size" jdbcType="VARCHAR" property="fileSize"/>
<result column="data_count" jdbcType="BIGINT" property="dataCount"/>
<result column="create_user_id" jdbcType="BIGINT" property="createUserId"/>
<result column="version_id" jdbcType="BIGINT" property="versionId"/>
<result column="output_start_time" jdbcType="TIMESTAMP" property="outputStartTime"/>
<result column="output_end_time" jdbcType="TIMESTAMP" property="outputEndTime"/>
<result column="status" jdbcType="TINYINT" property="status"/>
<result column="download_url" jdbcType="VARCHAR" property="downloadUrl"/>
</resultMap>
<insert id="insertList">
INSERT INTO lmp_data_output
(output_id,
output_postion,
mark_format_type,
output_content,
file_size,
data_count,
create_user_id,
output_start_time,
output_end_time,
status,
download_url,
version_id)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(#{item.outputId},
#{item.outputPostion},
#{item.markFormatType},
#{item.outputContent},
#{item.fileSize},
#{item.dataCount},
#{item.createUserId},
#{item.outputStartTime},
#{item.outputEndTime},
#{item.status},
#{item.downloadUrl},
#{item.versionId})
</foreach>
</insert>
<!-- 如果有逻辑删除字段过滤,请写到这里 -->
<sql id="filterRef">
<!-- 这里必须加上全包名,否则当filterRef被其他Mapper.xml包含引用的时候,就会调用Mapper.xml中的该SQL片段 -->
<include refid="com.yice.webadmin.app.dao.DatasetOutputMapper.inputFilterRef"/>
</sql>
<!-- 这里仅包含调用接口输入的主表过滤条件 -->
<sql id="inputFilterRef">
<if test="datasetOutputFilter != null">
<if test="datasetOutputFilter.outputId != null">
AND lmp_data_output.output_id = #{datasetOutputFilter.datasetId}
</if>
<if test="datasetOutputFilter.versionId != null">
AND lmp_data_output.version_id = #{datasetOutputFilter.versionId}
</if>
<if test="datasetOutputFilter.markFormatType != null">
AND lmp_data_output.mark_format_type = #{datasetOutputFilter.markFormatType}
</if>
</if>
</sql>
<select id="getDatasetOutputList" resultMap="BaseResultMap" parameterType="com.yice.webadmin.app.model.DatasetOutput">
SELECT * FROM lmp_data_output
<where>
<include refid="filterRef"/>
</where>
<if test="orderBy != null and orderBy != ''">
ORDER BY ${orderBy}
</if>
</select>
</mapper>
...@@ -29,8 +29,4 @@ public class DatasetData { ...@@ -29,8 +29,4 @@ public class DatasetData {
@ApiModelProperty(name = "createTime",value="创建时间") @ApiModelProperty(name = "createTime",value="创建时间")
private Date createTime; private Date createTime;
@ApiModelProperty(name = "markStatus",value="标记状态")
private Integer markStatus;
} }
...@@ -39,10 +39,4 @@ public class DatasetDataDto { ...@@ -39,10 +39,4 @@ public class DatasetDataDto {
*/ */
@ApiModelProperty(value="创建时间") @ApiModelProperty(value="创建时间")
private Date createTime; private Date createTime;
/**
* 标记状态。
*/
@ApiModelProperty(value="标记状态:0:未标记,1:已标记")
private Integer markStatus;
} }
...@@ -48,30 +48,6 @@ public class DatasetManageDto { ...@@ -48,30 +48,6 @@ public class DatasetManageDto {
@ApiModelProperty(value = "数据类型") @ApiModelProperty(value = "数据类型")
private Integer dataType; private Integer dataType;
/**
* 数据量。
*/
@ApiModelProperty(value = "数据量")
private Long dataVolume;
/**
* 发布状态。
*/
@ApiModelProperty(value = "发布状态")
private Integer releaseStatus;
/**
* 导入状态。
*/
@ApiModelProperty(value = "导入状态")
private Integer inputStatus;
/**
* 版本。
*/
@ApiModelProperty(value = "版本")
private Integer datasetVersion;
/** /**
* dataset_name LIKE搜索字符串。 * dataset_name LIKE搜索字符串。
*/ */
......
package com.yice.webadmin.app.dto;
import com.yice.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* DatasetOutputDto对象。
*
* @author linking
* @date 2023-04-13
*/
@ApiModel("DatasetOutputDto对象")
@Data
public class DatasetOutputDto {
/**
* 导出任务ID。
*/
@ApiModelProperty(value = "导出任务ID", required = true)
@NotNull(message = "数据验证失败,导出任务ID不能为空!", groups = {UpdateGroup.class})
private Long outputId;
/**
* 导出位置。
*/
@ApiModelProperty(value = "导出位置", required = true)
private String outputPostion;
/**
* 导出格式类型。
*/
@ApiModelProperty(value = "导出格式类型")
private String markFormatType;
/**
* 导出内容。
*/
@ApiModelProperty(value = "导出内容")
private String outputContent;
/**
* 文件大小。
*/
@ApiModelProperty(value = "文件大小")
private String fileSize;
/**
* 数据量。
*/
@ApiModelProperty(value = "数据量")
private Long dataCount;
/**
* 创建人。
*/
@ApiModelProperty(value = "创建人")
private Long createUserId;
/**
* 导出开始时间。
*/
@ApiModelProperty(value = "导出开始时间")
private Date outputStartTime;
/**
* 导出完成时间。
*/
@ApiModelProperty(value = "导出完成时间")
private Date outputEndTime;
/**
* 状态。
*/
@ApiModelProperty(value = "状态:0:标识未完成;1标识已完成")
private Integer status;
/**
* 下载地址。
*/
@ApiModelProperty(value = "下载地址")
private String downloadUrl;
/**
* 版本ID。
*/
@ApiModelProperty(value = "版本ID")
private Long versionId;
}
...@@ -64,7 +64,7 @@ public class DatasetVersionDto { ...@@ -64,7 +64,7 @@ public class DatasetVersionDto {
/** /**
* 发布状态。 * 发布状态。
*/ */
@ApiModelProperty(value = "发布状态:0标识未发布;1标识已发布") @ApiModelProperty(value = "发布状态")
private Integer releaseStatus; private Integer releaseStatus;
/** /**
......
...@@ -51,35 +51,12 @@ public class DatasetManage extends BaseModel { ...@@ -51,35 +51,12 @@ public class DatasetManage extends BaseModel {
*/ */
private Integer template; private Integer template;
/** /**
* 数据类型。 * 数据类型。
*/ */
private Integer dataType; private Integer dataType;
/**
* 数据量。
*/
@TableField(exist = false)
private Long dataVolume;
/**
* 发布状态。
*/
@TableField(exist = false)
private Integer releaseStatus;
/**
* 导入状态。
*/
@TableField(exist = false)
private Integer inputStatus;
/**
* 版本。
*/
@TableField(exist = false)
private Integer datasetVersion;
/** /**
* dataset_name LIKE搜索字符串。 * dataset_name LIKE搜索字符串。
*/ */
......
package com.yice.webadmin.app.model;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yice.common.core.base.mapper.BaseModelMapper;
import com.yice.common.core.base.model.BaseModel;
import com.yice.webadmin.app.vo.DatasetOutputVo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import java.util.Date;
/**
* DatasetOutput实体对象。
*
* @author linking
* @date 2023-04-13
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName(value = "lmp_data_output")
public class DatasetOutput extends BaseModel {
/**
* 导出任务ID。
*/
@TableId(value = "output_id")
private Long outputId;
/**
* 导出位置。
*/
private String outputPostion;
/**
* 导出文件格式类型。
*/
private String markFormatType;
/**
* 版本标识。
*/
private Long versionId;
/**
* 导出内容。
*/
private String outputContent;
/**
* 文件大小。
*/
private String fileSize;
/**
* 数据量。
*/
private Long dataCount;
/**
* 创建人。
*/
private Long createUserId;
/**
* 导出开始时间。
*/
private Date outputStartTime;
/**
* 导出完成时间。
*/
private Date outputEndTime;
/**
* 状态。
*/
private Integer status;
/**
* 下载地址。
*/
private String downloadUrl;
@Mapper
public interface DatasetOutputModelMapper extends BaseModelMapper<DatasetOutputVo, DatasetOutput> {
/**
* 转换Vo对象到实体对象。
*
* @param datasetOutputVo 域对象。
* @return 实体对象。
*/
@Override
DatasetOutput toModel(DatasetOutputVo datasetOutputVo);
/**
* 转换实体对象到VO对象。
*
* @param datasetOutput 实体对象。
* @return 域对象。
*/
@Override
DatasetOutputVo fromModel(DatasetOutput datasetOutput);
}
public static final DatasetOutput.DatasetOutputModelMapper INSTANCE = Mappers.getMapper(DatasetOutput.DatasetOutputModelMapper.class);
}
...@@ -45,14 +45,6 @@ public interface DatasetDataService { ...@@ -45,14 +45,6 @@ public interface DatasetDataService {
*/ */
Long count(Long versionId); Long count(Long versionId);
/**
* 查询列表集合总条数
* @param filter 过滤条件
* @return 返回总条数
*/
Long count(DatasetData filter);
/** /**
* 查询列表集合 * 查询列表集合
* @param versionId 版本标识 * @param versionId 版本标识
...@@ -61,15 +53,6 @@ public interface DatasetDataService { ...@@ -61,15 +53,6 @@ public interface DatasetDataService {
*/ */
List<DatasetData> list(Long versionId, MyPageParam pageParam); List<DatasetData> list(Long versionId, MyPageParam pageParam);
/**
* 根据条件查询数据集数据。
*
* @param filter 过滤对象。
* @param pageParam 分页对象。
* @return 查询结果集。
*/
List<DatasetData> list(DatasetData filter, MyPageParam pageParam);
/** /**
* 更新数据对象。 * 更新数据对象。
* *
......
...@@ -68,20 +68,5 @@ public interface DatasetManageService extends IBaseService<DatasetManage, Long> ...@@ -68,20 +68,5 @@ public interface DatasetManageService extends IBaseService<DatasetManage, Long>
*/ */
List<DatasetManage> getDatasetManageListWithRelation(DatasetManage filter, DatasetVersion datasetVersionFilter, String orderBy); List<DatasetManage> getDatasetManageListWithRelation(DatasetManage filter, DatasetVersion datasetVersionFilter, String orderBy);
/**
* 获取数据集管理对象
*
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List<DatasetManage> getDatasetManageGroupList(DatasetManage filter, String orderBy);
/**
* 保存和创建数据集版本管理
* @param datasetManage 数据集管理对象
* @return 数据集管理对象
*/
DatasetManage saveAndCreateVersion(DatasetManage datasetManage); DatasetManage saveAndCreateVersion(DatasetManage datasetManage);
} }
package com.yice.webadmin.app.service;
import com.yice.common.core.base.service.IBaseService;
import com.yice.webadmin.app.model.DatasetOutput;
import java.util.List;
/**
* 数据集导出数据操作服务接口。
*
* @author linking
* @date 2023-04-13
*/
public interface DatasetOutputService extends IBaseService<DatasetOutput, Long> {
/**
* 保存新增对象。
*
* @param datasetOutput 新增对象。
* @return 返回新增对象。
*/
DatasetOutput saveNew(DatasetOutput datasetOutput);
/**
* 记录地址并保存到minio中。
* @param fileType 文件类型。
* @param fileUrl 文件地址。
* @param versionId 版本标识。
* @return 返回新增对象。
*/
DatasetOutput saveNew(String fileType, String fileUrl, Long versionId);
/**
* 利用数据库的insertList语法,批量插入对象列表。
*
* @param datasetOutputList 新增对象列表。
*/
void saveNewBatch(List<DatasetOutput> datasetOutputList);
/**
* 更新数据对象。
*
* @param DatasetOutput 更新的对象。
* @param originalDatasetOutput 原有数据对象。
* @return 成功返回true,否则false。
*/
boolean update(DatasetOutput DatasetOutput, DatasetOutput originalDatasetOutput);
/**
* 删除指定数据。
*
* @param outputId 主键Id。
* @return 成功返回true,否则false。
*/
boolean remove(Long outputId);
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getDatasetOutputListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List<DatasetOutput> getDatasetOutputList(DatasetOutput filter, String orderBy);
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
* 如果仅仅需要获取主表数据,请移步(getDatasetOutputList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
List<DatasetOutput> getDatasetOutputListWithRelation(DatasetOutput filter, String orderBy);
}
...@@ -43,7 +43,7 @@ public interface DatasetVersionService extends IBaseService<DatasetVersion, Long ...@@ -43,7 +43,7 @@ public interface DatasetVersionService extends IBaseService<DatasetVersion, Long
* @param originalFilename 导入文件名称 * @param originalFilename 导入文件名称
* @param versionId 版本标识 * @param versionId 版本标识
*/ */
void writeDatasetFile(byte[] bytes, String originalFilename, Long versionId); void writeDatasetFileForMongo(byte[] bytes, String originalFilename, Long versionId);
/** /**
* 更新数据对象。 * 更新数据对象。
...@@ -54,14 +54,6 @@ public interface DatasetVersionService extends IBaseService<DatasetVersion, Long ...@@ -54,14 +54,6 @@ public interface DatasetVersionService extends IBaseService<DatasetVersion, Long
*/ */
boolean update(DatasetVersion datasetVersion, DatasetVersion originalDatasetVersion); boolean update(DatasetVersion datasetVersion, DatasetVersion originalDatasetVersion);
/**
* 更新数据对象。
*
* @param datasetVersion 更新的对象。
* @return 成功返回true,否则false。
*/
boolean update(DatasetVersion datasetVersion);
/** /**
* 删除指定数据。 * 删除指定数据。
* *
......
package com.yice.webadmin.app.service.impl; package com.yice.webadmin.app.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yice.common.core.object.MyPageParam; import com.yice.common.core.object.MyPageParam;
import com.yice.webadmin.app.constant.MongoConstant; import com.yice.webadmin.app.constant.MongoConstant;
import com.yice.webadmin.app.data.DatasetData; import com.yice.webadmin.app.data.DatasetData;
...@@ -37,20 +36,15 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -37,20 +36,15 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param datasetData 新增对象。 * @param datasetData 新增对象。
* @return 返回新增对象。 * @return 返回新增对象。
*/ */
@Override
public void save(DatasetData datasetData) { public void save(DatasetData datasetData) {
if (StringUtils.isNotBlank(datasetData.getData())) { if (StringUtils.isNotBlank(datasetData.getData())) {
List<Document> documents = new ArrayList<>(); List<Document> documents = new ArrayList<>();
JSONArray jsonArray = JSONArray.parseArray(datasetData.getData()); JSONArray jsonArray = JSONArray.parseArray(datasetData.getData());
if (null != jsonArray && jsonArray.size() > 0) { if (null != jsonArray && jsonArray.size() > 0) {
for (int i = 0; i < jsonArray.size(); i++) { for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i); Document document = new Document(MongoConstant.DATA, jsonArray.getJSONObject(i))
Integer markStatus = jsonObject.getString(MongoConstant.OUTPUT) != null
&& !jsonObject.getString(MongoConstant.OUTPUT).equals(MongoConstant.EMPTY) ? 1 : 0;
Document document = new Document(MongoConstant.DATA,jsonObject)
.append(MongoConstant.VERSION, datasetData.getVersionId()) .append(MongoConstant.VERSION, datasetData.getVersionId())
.append(MongoConstant.CREATE_TIME, datasetData.getCreateTime()) .append(MongoConstant.CREATE_TIME, datasetData.getCreateTime());
.append(MongoConstant.MARK_STATUS, markStatus);
documents.add(document); documents.add(document);
} }
} }
...@@ -65,7 +59,6 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -65,7 +59,6 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param pageParam 页码参数 * @param pageParam 页码参数
* @return 返回查看对象列表 * @return 返回查看对象列表
*/ */
@Override
public List<DatasetData> list(Long versionId, MyPageParam pageParam) { public List<DatasetData> list(Long versionId, MyPageParam pageParam) {
Query query = new Query(Criteria.where(MongoConstant.VERSION).is(versionId)) Query query = new Query(Criteria.where(MongoConstant.VERSION).is(versionId))
.skip((pageParam.getPageNum() - 1) * pageParam.getPageSize()) .skip((pageParam.getPageNum() - 1) * pageParam.getPageSize())
...@@ -75,48 +68,11 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -75,48 +68,11 @@ public class DatasetDataServiceImpl implements DatasetDataService {
MongoConstant.COLLECT_NAME + versionId); MongoConstant.COLLECT_NAME + versionId);
} }
/**
* 根据条件查询数据集数据。
*
* @param filter 过滤对象。
* @param pageParam 分页对象。
* @return 查询结果集。
*/
@Override
public List<DatasetData> list(DatasetData filter, MyPageParam pageParam) {
Query query = new Query();
query.addCriteria(Criteria.where(MongoConstant.VERSION).is(filter.getVersionId()));
if (filter.getMarkStatus() != null) {
query.addCriteria(Criteria.where(MongoConstant.MARK_STATUS).is(filter.getMarkStatus()));
}
query.skip((pageParam.getPageNum() - 1) * pageParam.getPageSize())
.limit(pageParam.getPageSize());
return mongoTemplate.find(query, DatasetData.class,
MongoConstant.COLLECT_NAME + filter.getVersionId());
}
/**
* 根据条件查询列表集合总条数
* @param filter 版本标识
* @return 返回总条数
*/
@Override
public Long count(DatasetData filter) {
Query query = new Query();
query.addCriteria(Criteria.where(MongoConstant.VERSION).is(filter.getVersionId()));
if (filter.getMarkStatus() != null) {
query.addCriteria(Criteria.where(MongoConstant.MARK_STATUS).is(filter.getMarkStatus()));
}
return mongoTemplate.count(query, DatasetData.class,
MongoConstant.COLLECT_NAME + filter.getVersionId());
}
/** /**
* 查询列表集合总条数 * 查询列表集合总条数
* @param versionId 版本标识 * @param versionId 版本标识
* @return 返回总条数 * @return 返回总条数
*/ */
@Override
public Long count(Long versionId) { public Long count(Long versionId) {
Query query = new Query(Criteria.where(MongoConstant.VERSION).is(versionId)); Query query = new Query(Criteria.where(MongoConstant.VERSION).is(versionId));
return mongoTemplate.count(query, DatasetData.class, return mongoTemplate.count(query, DatasetData.class,
...@@ -130,7 +86,6 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -130,7 +86,6 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param versionId 版本标识。 * @param versionId 版本标识。
* @return 返回查看对象。 * @return 返回查看对象。
*/ */
@Override
public DatasetData view(String id, Long versionId) { public DatasetData view(String id, Long versionId) {
return mongoTemplate.findById(id, DatasetData.class, return mongoTemplate.findById(id, DatasetData.class,
MongoConstant.COLLECT_NAME + versionId); MongoConstant.COLLECT_NAME + versionId);
...@@ -142,10 +97,9 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -142,10 +97,9 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param datasetData 更新的对象。 * @param datasetData 更新的对象。
* @return 成功返回true,否则false。 * @return 成功返回true,否则false。
*/ */
@Override
public void update(DatasetData datasetData) { public void update(DatasetData datasetData) {
mongoTemplate.save(datasetData, mongoTemplate.save(datasetData,
MongoConstant.COLLECT_NAME + datasetData.getVersionId()); MongoConstant.COLLECT_NAME + datasetData.getVersionId());
} }
/** /**
...@@ -155,7 +109,6 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -155,7 +109,6 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param versionId 版本标识。 * @param versionId 版本标识。
* @return 返回受影响的行数。 * @return 返回受影响的行数。
*/ */
@Override
public Long remove(String id, Long versionId) { public Long remove(String id, Long versionId) {
Query query = new Query(Criteria.where(MongoConstant.ID).is(id)); Query query = new Query(Criteria.where(MongoConstant.ID).is(id));
return mongoTemplate.remove(query, DatasetData.class, return mongoTemplate.remove(query, DatasetData.class,
...@@ -168,7 +121,6 @@ public class DatasetDataServiceImpl implements DatasetDataService { ...@@ -168,7 +121,6 @@ public class DatasetDataServiceImpl implements DatasetDataService {
* @param versionId 版本标识。 * @param versionId 版本标识。
* @return 返回受影响的行数。 * @return 返回受影响的行数。
*/ */
@Override
public void delete(Long versionId) { public void delete(Long versionId) {
mongoTemplate.dropCollection(MongoConstant.COLLECT_NAME + versionId); mongoTemplate.dropCollection(MongoConstant.COLLECT_NAME + versionId);
} }
......
...@@ -140,17 +140,6 @@ public class DatasetManageServiceImpl extends BaseService<DatasetManage, Long> i ...@@ -140,17 +140,6 @@ public class DatasetManageServiceImpl extends BaseService<DatasetManage, Long> i
return resultList; return resultList;
} }
/**
* 分组进行查询数据集列表
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public List<DatasetManage> getDatasetManageGroupList(DatasetManage filter, String orderBy) {
return datasetManageMapper.getDatasetManageGroupList(filter, orderBy);
}
@Transactional @Transactional
@Override @Override
public DatasetManage saveAndCreateVersion(DatasetManage datasetManage) { public DatasetManage saveAndCreateVersion(DatasetManage datasetManage) {
......
package com.yice.webadmin.app.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.object.MyRelationParam;
import com.yice.common.core.object.TokenData;
import com.yice.common.core.upload.BaseUpDownloader;
import com.yice.common.core.upload.UpDownloaderFactory;
import com.yice.common.core.upload.UploadResponseInfo;
import com.yice.common.core.upload.UploadStoreTypeEnum;
import com.yice.common.core.util.MyModelUtil;
import com.yice.common.minio.config.MinioProperties;
import com.yice.common.sequence.wrapper.IdGeneratorWrapper;
import com.yice.webadmin.app.constant.DatasetConstant;
import com.yice.webadmin.app.dao.DatasetOutputMapper;
import com.yice.webadmin.app.model.DatasetOutput;
import com.yice.webadmin.app.service.DatasetOutputService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
/**
* 数据集详情数据操作服务类。
*
* @author linking
* @date 2023-04-13
*/
@Slf4j
@Service("datasetOutputService")
public class DatasetOutputServiceImpl extends BaseService<DatasetOutput, Long> implements DatasetOutputService {
@Autowired
private DatasetOutputMapper datasetOutputMapper;
@Autowired
private IdGeneratorWrapper idGenerator;
@Autowired
private UpDownloaderFactory upDownloaderFactory;
@Autowired
private MinioProperties minioProperties;
/**
* 返回当前Service的主表Mapper对象。
*
* @return 主表Mapper对象。
*/
@Override
protected BaseDaoMapper<DatasetOutput> mapper() {
return datasetOutputMapper;
}
/**
* 保存新增对象。
*
* @param datasetOutput 新增对象。
* @return 返回新增对象。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public DatasetOutput saveNew(DatasetOutput datasetOutput) {
datasetOutputMapper.insert(this.buildDefaultValue(datasetOutput));
return datasetOutput;
}
/**
* 利用数据库的insertList语法,批量插入对象列表。
*
* @param datasetOutputList 新增对象列表。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void saveNewBatch(List<DatasetOutput> datasetOutputList) {
if (CollUtil.isNotEmpty(datasetOutputList)) {
datasetOutputList.forEach(this::buildDefaultValue);
datasetOutputMapper.insertList(datasetOutputList);
}
}
/**
* 记录地址并保存到minio中。
* @param fileType 文件类型。
* @param fileUrl 文件地址。
* @param versionId 版本标识。
* @return 返回新增对象。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public DatasetOutput saveNew(String fileType, String fileUrl, Long versionId) {
DatasetOutput datasetOutput = new DatasetOutput();
String uploadUrl = doUpload(fileUrl,fileType,datasetOutput);
if(StringUtils.isEmpty(uploadUrl)) return null;
datasetOutput.setOutputId(idGenerator.nextLongId());
datasetOutput.setCreateUserId(TokenData.takeFromRequest().getUserId());
datasetOutput.setVersionId(versionId);
datasetOutput.setOutputStartTime(new Date());
datasetOutput.setStatus(DatasetConstant.STATUS_UNFINISHED);
datasetOutput.setDownloadUrl(uploadUrl);
datasetOutput.setMarkFormatType(fileType);
datasetOutput.setOutputPostion(DatasetConstant.OUTPUT_POSTION);
datasetOutput.setOutputContent(DatasetConstant.OUTPUT_CONTENT);
datasetOutputMapper.insert(datasetOutput);
return datasetOutput;
}
/**
* 根据类型,生成对应的文件类型名称
* @param fileUrl 文件地址
* @param fileType 文件类型
*/
private String doUpload(String fileUrl, String fileType, DatasetOutput datasetOutput) {
String fileName = null;
try {
Path file = Paths.get(fileUrl);
Resource resource = new UrlResource(file.toUri());
byte[] data = IOUtils.toByteArray(resource.getInputStream());
datasetOutput.setDataCount(Long.valueOf(JSON.parseArray(new String(data, StandardCharsets.UTF_8)).size()));
double sizeInMb = (double) resource.contentLength() / 1024;
DecimalFormat df = new DecimalFormat("#.##");
datasetOutput.setFileSize(df.format(sizeInMb) + DatasetConstant.KB);
UploadStoreTypeEnum uploadStoreType = UploadStoreTypeEnum.values()[DatasetConstant.UPLOAD];
BaseUpDownloader upDownloader = upDownloaderFactory.get(uploadStoreType);
UploadResponseInfo responseInfo = upDownloader.doUpload(resource.getInputStream(),
DatasetConstant.FILE_NAME + fileType);
if (!Boolean.TRUE.equals(responseInfo.getUploadFailed())) {
fileName = buildDownloadUrl(responseInfo.getFilename());
}
}catch (IOException ex){
log.error("上传文件错误信息为:", ex);
}
return fileName;
}
/**
* 构建文件下载链接
* @param fileUrl
* @return
*/
private String buildDownloadUrl(String fileUrl) {
StringBuilder sb = new StringBuilder();
sb.append(minioProperties.getEndpoint()).
append("/").append(minioProperties.getBucketName()).
append("/").append(fileUrl);
return sb.toString();
}
/**
* 更新数据对象。
*
* @param datasetOutput 更新的对象。
* @param originalDatasetOutput 原有数据对象。
* @return 成功返回true,否则false。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean update(DatasetOutput datasetOutput, DatasetOutput originalDatasetOutput) {
MyModelUtil.fillCommonsForUpdate(datasetOutput, originalDatasetOutput);
// 这里重点提示,在执行主表数据更新之前,如果有哪些字段不支持修改操作,请用原有数据对象字段替换当前数据字段。
UpdateWrapper<DatasetOutput> uw = this.createUpdateQueryForNullValue(datasetOutput, datasetOutput.getOutputId());
return datasetOutputMapper.update(datasetOutput, uw) == 1;
}
/**
* 删除指定数据。
*
* @param outputId 主键Id。
* @return 成功返回true,否则false。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean remove(Long outputId) {
return datasetOutputMapper.deleteById(outputId) == 1;
}
/**
* 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。
* 如果需要同时获取关联数据,请移步(getDatasetOutputListWithRelation)方法。
*
* @param filter 过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public List<DatasetOutput> getDatasetOutputList(DatasetOutput filter, String orderBy) {
return datasetOutputMapper.getDatasetOutputList(filter, orderBy);
}
/**
* 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。
* 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。
* 如果仅仅需要获取主表数据,请移步(getDatasetOutputList),以便获取更好的查询性能。
*
* @param filter 主表过滤对象。
* @param orderBy 排序参数。
* @return 查询结果集。
*/
@Override
public List<DatasetOutput> getDatasetOutputListWithRelation(DatasetOutput filter, String orderBy) {
List<DatasetOutput> resultList = datasetOutputMapper.getDatasetOutputList(filter, orderBy);
// 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。
// 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。
int batchSize = resultList instanceof Page ? 0 : 1000;
this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize);
return resultList;
}
private DatasetOutput buildDefaultValue(DatasetOutput datasetOutput) {
if (datasetOutput.getOutputId() == null) {
datasetOutput.setOutputId(idGenerator.nextLongId());
}
MyModelUtil.fillCommonsForInsert(datasetOutput);
return datasetOutput;
}
}
...@@ -174,7 +174,6 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long> ...@@ -174,7 +174,6 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
* @param versionName 版本名称 * @param versionName 版本名称
* @throws IOException 异常操作 * @throws IOException 异常操作
*/ */
@Override
public void saveDatasetInfo(String versionName) throws IOException { public void saveDatasetInfo(String versionName) throws IOException {
File file = new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo()); File file = new File(pythonConfig.getDatasetFileBaseDir(), pythonConfig.getDatasetInfo());
if (!file.exists()) { if (!file.exists()) {
...@@ -199,7 +198,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long> ...@@ -199,7 +198,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
* @param fileName 文件名称 * @param fileName 文件名称
* @return 返回截取后的字符串 * @return 返回截取后的字符串
*/ */
private String extractFileName(String fileName) { private static String extractFileName(String fileName) {
int lastSlashIndex = fileName.lastIndexOf('/'); int lastSlashIndex = fileName.lastIndexOf('/');
if (lastSlashIndex != -1) { if (lastSlashIndex != -1) {
fileName = fileName.substring(0, lastSlashIndex + 1); fileName = fileName.substring(0, lastSlashIndex + 1);
...@@ -226,7 +225,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long> ...@@ -226,7 +225,7 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
// 文件写入指定路径 // 文件写入指定路径
Files.write(path, bytes); Files.write(path, bytes);
// 写入到mongodb中 // 写入到mongodb中
writeDatasetFile(bytes,fullName,versionId); writeDatasetFileForMongo(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;
...@@ -254,15 +253,14 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long> ...@@ -254,15 +253,14 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
* @param originalFilename 导入文件名称 * @param originalFilename 导入文件名称
* @param versionId 版本标识 * @param versionId 版本标识
*/ */
@Override public void writeDatasetFileForMongo(byte[] bytes, String originalFilename, Long versionId) {
public void writeDatasetFile(byte[] bytes, String originalFilename, Long versionId) {
try { try {
// 或者指定字符集进行转换,替换"UTF-8"为你想要使用的字符集 // 或者指定字符集进行转换,替换"UTF-8"为你想要使用的字符集
String result = new String(bytes, StandardCharsets.UTF_8); String result = new String(bytes, StandardCharsets.UTF_8);
//先删除数据集 //先删除数据集
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()));
}catch (Exception ex) { }catch (Exception ex) {
log.error("Failed to write mongodb database [" + originalFilename + " ].", ex); log.error("Failed to write mongodb database [" + originalFilename + " ].", ex);
} }
...@@ -298,18 +296,6 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long> ...@@ -298,18 +296,6 @@ public class DatasetVersionServiceImpl extends BaseService<DatasetVersion, Long>
return datasetVersionMapper.update(datasetVersion, uw) == 1; return datasetVersionMapper.update(datasetVersion, uw) == 1;
} }
/**
* 更新数据对象。
*
* @param datasetVersion 更新的对象。
* @return 成功返回true,否则false。
*/
@Transactional(rollbackFor = Exception.class)
@Override
public boolean update(DatasetVersion datasetVersion) {
return datasetVersionMapper.updateById(datasetVersion) > 0;
}
/** /**
* 删除指定数据。 * 删除指定数据。
* *
......
...@@ -39,10 +39,4 @@ public class DatasetDataVo { ...@@ -39,10 +39,4 @@ public class DatasetDataVo {
*/ */
@ApiModelProperty(value="创建时间") @ApiModelProperty(value="创建时间")
private Date createTime; private Date createTime;
/**
* 标记状态。
*/
@ApiModelProperty(value="标记状态:0:未标记,1:已标记")
private Integer markStatus;
} }
...@@ -44,36 +44,13 @@ public class DatasetManageVo extends BaseVo { ...@@ -44,36 +44,13 @@ public class DatasetManageVo extends BaseVo {
@ApiModelProperty(value = "模板") @ApiModelProperty(value = "模板")
private Integer template; private Integer template;
/** /**
* 数据类型。 * 数据类型。
*/ */
@ApiModelProperty(value = "数据类型") @ApiModelProperty(value = "数据类型")
private Integer dataType; private Integer dataType;
/**
* 数据量。
*/
@ApiModelProperty(value = "数据量")
private Long dataVolume;
/**
* 发布状态。
*/
@ApiModelProperty(value = "发布状态")
private Integer releaseStatus;
/**
* 导入状态。
*/
@ApiModelProperty(value = "导入状态")
private Integer inputStatus;
/**
* 版本。
*/
@ApiModelProperty(value = "版本")
private Integer datasetVersion;
/** /**
* DatasetVersion 的一对多关联表数据对象。数据对应类型为DatasetVersion。 * DatasetVersion 的一对多关联表数据对象。数据对应类型为DatasetVersion。
*/ */
......
package com.yice.webadmin.app.vo;
import com.yice.common.core.validator.UpdateGroup;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* DatasetOutputVo对象。
*
* @author linking
* @date 2023-04-13
*/
@ApiModel("DatasetOutputVo对象")
@Data
public class DatasetOutputVo {
/**
* 导出任务ID。
*/
@ApiModelProperty(value = "导出任务ID", required = true)
@NotNull(message = "数据验证失败,导出任务ID不能为空!", groups = {UpdateGroup.class})
private Long outputId;
/**
* 导出位置。
*/
@ApiModelProperty(value = "导出位置", required = true)
private String outputPostion;
/**
* 导出格式类型。
*/
@ApiModelProperty(value = "导出格式类型")
private String markFormatType;
/**
* 导出内容。
*/
@ApiModelProperty(value = "导出内容")
private String outputContent;
/**
* 文件大小。
*/
@ApiModelProperty(value = "文件大小")
private String fileSize;
/**
* 数据量。
*/
@ApiModelProperty(value = "数据量")
private Long dataCount;
/**
* 创建人。
*/
@ApiModelProperty(value = "创建人")
private Long createUserId;
/**
* 导出开始时间。
*/
@ApiModelProperty(value = "导出开始时间")
private Date outputStartTime;
/**
* 导出完成时间。
*/
@ApiModelProperty(value = "导出完成时间")
private Date outputEndTime;
/**
* 状态。
*/
@ApiModelProperty(value = "状态")
private Integer status;
/**
* 下载地址。
*/
@ApiModelProperty(value = "下载地址")
private String downloadUrl;
/**
* 版本ID。
*/
@ApiModelProperty(value = "版本ID")
private Long versionId;
}
...@@ -64,7 +64,7 @@ public class DatasetVersionVo extends BaseVo { ...@@ -64,7 +64,7 @@ public class DatasetVersionVo extends BaseVo {
/** /**
* 发布状态。 * 发布状态。
*/ */
@ApiModelProperty(value = "发布状态:0标识未发布;1标识已发布") @ApiModelProperty(value = "发布状态")
private Integer releaseStatus; private Integer releaseStatus;
/** /**
......
...@@ -177,9 +177,9 @@ redis: ...@@ -177,9 +177,9 @@ redis:
# 连接池中最小空闲数量。 # 连接池中最小空闲数量。
minIdle: 5 minIdle: 5
minio: #minio:
enabled: true # enabled: true
endpoint: http://192.168.0.145:9090 # endpoint: http://192.168.0.145:9090
accessKey: minioadmin # accessKey: minioadmin
secretKey: minioadmin # secretKey: minioadmin
bucketName: lmp # bucketName: application
...@@ -16,7 +16,6 @@ import javax.imageio.ImageIO; ...@@ -16,7 +16,6 @@ import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -139,17 +138,6 @@ public abstract class BaseUpDownloader { ...@@ -139,17 +138,6 @@ public abstract class BaseUpDownloader {
Boolean asImage, Boolean asImage,
MultipartFile uploadFile) throws IOException; MultipartFile uploadFile) throws IOException;
/**
* 方法重置写入Minio里面中,保留文件名称
* 执行文件上传操作,将文件数据存入Minio。
*
* @param inputStream 上传地址。
* @param fileName 文件名称。
* @return 上传应答信息对象。该对象始终不为null。
* @throws IOException minio抛出的异常。
*/
public abstract UploadResponseInfo doUpload(InputStream inputStream, String fileName);
/** /**
* 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。
* *
...@@ -171,7 +159,7 @@ public abstract class BaseUpDownloader { ...@@ -171,7 +159,7 @@ public abstract class BaseUpDownloader {
} }
return false; return false;
} }
protected UploadResponseInfo verifyUploadArgument( protected UploadResponseInfo verifyUploadArgument(
Boolean asImage, MultipartFile uploadFile) throws IOException { Boolean asImage, MultipartFile uploadFile) throws IOException {
UploadResponseInfo responseInfo = new UploadResponseInfo(); UploadResponseInfo responseInfo = new UploadResponseInfo();
......
...@@ -147,20 +147,6 @@ public class LocalUpDownloader extends BaseUpDownloader { ...@@ -147,20 +147,6 @@ public class LocalUpDownloader extends BaseUpDownloader {
return responseInfo; return responseInfo;
} }
/**
* 方法重置写入Minio里面中,保留文件名称
* 执行文件上传操作,将文件数据存入Minio。
*
* @param inputStream 上传地址。
* @param fileName 文件名称。
* @return 上传应答信息对象。该对象始终不为null。
* @throws IOException minio抛出的异常。
*/
@Override
public UploadResponseInfo doUpload(InputStream inputStream, String fileName){
return new UploadResponseInfo();
}
/** /**
* 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。
* *
......
...@@ -6,10 +6,8 @@ import com.yice.common.core.upload.UpDownloaderFactory; ...@@ -6,10 +6,8 @@ import com.yice.common.core.upload.UpDownloaderFactory;
import com.yice.common.core.upload.UploadResponseInfo; import com.yice.common.core.upload.UploadResponseInfo;
import com.yice.common.core.upload.BaseUpDownloader; import com.yice.common.core.upload.BaseUpDownloader;
import com.yice.common.core.upload.UploadStoreTypeEnum; import com.yice.common.core.upload.UploadStoreTypeEnum;
import com.yice.common.core.util.MyCommonUtil;
import com.yice.common.minio.wrapper.MinioTemplate; import com.yice.common.minio.wrapper.MinioTemplate;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -59,26 +57,6 @@ public class MinioUpDownloader extends BaseUpDownloader { ...@@ -59,26 +57,6 @@ public class MinioUpDownloader extends BaseUpDownloader {
return responseInfo; return responseInfo;
} }
/**
* 方法重置写入Minio里面中,保留文件名称
* 执行文件上传操作,将文件数据存入Minio。
*
* @param inputStream 上传地址。
* @param fileName 文件名称。
* @return 上传应答信息对象。该对象始终不为null。
* @throws IOException minio抛出的异常。
*/
@Override
public UploadResponseInfo doUpload(InputStream inputStream, String fileName){
UploadResponseInfo responseInfo = new UploadResponseInfo();
StringBuilder filenameBuilder = new StringBuilder(64);
filenameBuilder.append(MyCommonUtil.generateUuid())
.append(".").append(FilenameUtils.getExtension(fileName));
responseInfo.setFilename(filenameBuilder.toString());
minioTemplate.putObject(responseInfo.getFilename(), inputStream);
return responseInfo;
}
@Override @Override
public void doDownload( public void doDownload(
String rootBaseDir, String rootBaseDir,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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