update
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package cn.datax.service.data.metadata.api.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据源信息表
|
||||
* </p>
|
||||
*
|
||||
* @author AllDataDC
|
||||
* @date 2022-11-14
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@TableName(value = "offline_data_file", autoResultMap = true)
|
||||
public class OfflineDataFileEntity {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
@TableId(value = "id", type = IdType.ASSIGN_ID)
|
||||
private String id;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(value = "create_time", fill = FieldFill.INSERT)
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(value = "create_by", fill = FieldFill.INSERT)
|
||||
private String createBy;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
@TableField(value = "switch_time")
|
||||
private LocalDateTime switchTime;
|
||||
|
||||
@TableField(value = "remark")
|
||||
private String remark;
|
||||
|
||||
@TableField(value = "offline_type")
|
||||
private String offlineType;
|
||||
|
||||
@TableField(value = "is_switch")
|
||||
private String isSwitch;
|
||||
|
||||
/**
|
||||
* 文件原始名称
|
||||
*/
|
||||
@TableField(value = "original_file_name")
|
||||
private String originalFileName;
|
||||
|
||||
/**
|
||||
* 文件名称
|
||||
*/
|
||||
@TableField(value = "file_name")
|
||||
private String fileName;
|
||||
|
||||
/**
|
||||
* 文件大小
|
||||
*/
|
||||
@TableField(value = "file_size")
|
||||
private Long fileSize;
|
||||
|
||||
/**
|
||||
* 访问路径
|
||||
*/
|
||||
@TableField(value = "file_path")
|
||||
private String filePath;
|
||||
|
||||
/**
|
||||
* 文件类型
|
||||
*/
|
||||
@TableField(value = "content_type")
|
||||
private String contentType;
|
||||
|
||||
/**
|
||||
* 文件来源
|
||||
*/
|
||||
@TableField(value = "file_type")
|
||||
private String fileType;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package cn.datax.service.data.metadata.api.query;
|
||||
|
||||
import cn.datax.common.base.BaseQueryParams;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据源信息表 查询实体
|
||||
* </p>
|
||||
*
|
||||
* @author AllDataDC
|
||||
* @date 2022-11-14
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OfflineDataFileQuery extends BaseQueryParams {
|
||||
|
||||
private static final long serialVersionUID=1L;
|
||||
|
||||
private String fileName;
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.OutputStream;
|
||||
@@ -261,4 +262,10 @@ public class MetadataSourceController extends BaseController {
|
||||
List<Map<String, Object>> list = metadataSourceService.getMetadatablood(params.get("sourceId"), params.get("tableId"));
|
||||
return R.ok().setData(list);
|
||||
}
|
||||
|
||||
@PostMapping("/upload/{type}")
|
||||
public R upload(@RequestParam("file") MultipartFile file, @PathVariable String type) {
|
||||
metadataSourceService.uploadFile(file, type);
|
||||
return R.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package cn.datax.service.data.metadata.controller;
|
||||
|
||||
import cn.datax.common.base.BaseController;
|
||||
import cn.datax.common.core.JsonPage;
|
||||
import cn.datax.common.core.R;
|
||||
import cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity;
|
||||
import cn.datax.service.data.metadata.api.query.OfflineDataFileQuery;
|
||||
import cn.datax.service.data.metadata.service.OfflineDataFileService;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/offline")
|
||||
public class OfflineDataFileController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private OfflineDataFileService offlineDataFileService;
|
||||
|
||||
/**
|
||||
* 通过ID查询信息
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
|
||||
@ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
|
||||
@GetMapping("/{id}")
|
||||
public R getOfflineDataFileById(@PathVariable String id) {
|
||||
OfflineDataFileEntity offlineDataFileEntity = offlineDataFileService.getOfflineDataFileById(id);
|
||||
return R.ok().setData(offlineDataFileEntity);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询信息
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
public R getOfflineDataFilePage(OfflineDataFileQuery offlineDataFileQuery) {
|
||||
QueryWrapper<OfflineDataFileEntity> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.like(StrUtil.isNotBlank(offlineDataFileQuery.getFileName()), "s.file_name", offlineDataFileQuery.getFileName());
|
||||
IPage<OfflineDataFileEntity> page = offlineDataFileService.pageWithAuth(new Page<>(offlineDataFileQuery.getPageNum(), offlineDataFileQuery.getPageSize()), queryWrapper);
|
||||
List<OfflineDataFileEntity> collect = page.getRecords();
|
||||
JsonPage<OfflineDataFileEntity> jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
|
||||
return R.ok().setData(jsonPage);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package cn.datax.service.data.metadata.dao;
|
||||
|
||||
import cn.datax.common.base.BaseDao;
|
||||
import cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper
|
||||
public interface OfflineDataFileDao extends BaseDao<OfflineDataFileEntity> {
|
||||
|
||||
@Override
|
||||
OfflineDataFileEntity selectById(Serializable id);
|
||||
|
||||
@Override
|
||||
List<OfflineDataFileEntity> selectList(@Param(Constants.WRAPPER) Wrapper<OfflineDataFileEntity> queryWrapper);
|
||||
|
||||
<E extends IPage<OfflineDataFileEntity>> E selectPageWithAuth(E page, @Param(Constants.WRAPPER) Wrapper<OfflineDataFileEntity> queryWrapper, @Param("roles") List<String> roles);
|
||||
}
|
||||
@@ -6,9 +6,12 @@ import cn.datax.common.database.core.DbColumn;
|
||||
import cn.datax.common.database.core.DbTable;
|
||||
import cn.datax.service.data.metadata.api.dto.MetadataSourceDto;
|
||||
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
|
||||
import cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity;
|
||||
import com.aspose.words.Document;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.apache.hc.core5.http.io.entity.FileEntity;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -54,4 +57,7 @@ public interface MetadataSourceService extends BaseService<MetadataSourceEntity>
|
||||
<E extends IPage<MetadataSourceEntity>> E pageWithAuth(E page, Wrapper<MetadataSourceEntity> queryWrapper);
|
||||
|
||||
List<Map<String, Object>> getMetadatablood(String datasourceId, String tableName);
|
||||
|
||||
OfflineDataFileEntity uploadFile(MultipartFile file, String type);
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package cn.datax.service.data.metadata.service;
|
||||
|
||||
import cn.datax.common.base.BaseService;
|
||||
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
|
||||
import cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据源信息表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author AllDataDC
|
||||
* @date 2022-11-14
|
||||
*/
|
||||
public interface OfflineDataFileService extends BaseService<OfflineDataFileEntity> {
|
||||
|
||||
OfflineDataFileEntity getOfflineDataFileById(String id);
|
||||
|
||||
<E extends IPage<OfflineDataFileEntity>> E pageWithAuth(E page, Wrapper<OfflineDataFileEntity> queryWrapper);
|
||||
|
||||
}
|
||||
@@ -12,6 +12,7 @@ import cn.datax.common.database.core.DbTable;
|
||||
import cn.datax.common.exception.DataException;
|
||||
import cn.datax.common.redis.service.RedisService;
|
||||
import cn.datax.common.utils.SecurityUtil;
|
||||
import cn.datax.common.utils.ThrowableUtil;
|
||||
import cn.datax.service.data.market.api.entity.DataApiEntity;
|
||||
import cn.datax.service.data.market.api.feign.DataApiServiceFeign;
|
||||
import cn.datax.service.data.metadata.api.dto.DbSchema;
|
||||
@@ -30,7 +31,10 @@ import cn.datax.service.data.standard.api.entity.ContrastEntity;
|
||||
import cn.datax.service.data.standard.api.feign.StandardServiceFeign;
|
||||
import cn.datax.service.data.visual.api.entity.DataSetEntity;
|
||||
import cn.datax.service.data.visual.api.feign.VisualServiceFeign;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.system.SystemUtil;
|
||||
import com.aspose.words.Document;
|
||||
import com.aspose.words.MailMerge;
|
||||
import com.aspose.words.net.System.Data.DataRelation;
|
||||
@@ -48,7 +52,10 @@ import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
@@ -115,6 +122,9 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
|
||||
@Autowired
|
||||
private MetadataTableService metadataTableService;
|
||||
|
||||
@Autowired
|
||||
private OfflineDataFileDao offlineDataFileDao;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveMetadataSource(MetadataSourceDto metadataSourceDto) {
|
||||
@@ -435,4 +445,42 @@ public class MetadataSourceServiceImpl extends BaseServiceImpl<MetadataSourceDao
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public OfflineDataFileEntity uploadFile(MultipartFile file, String type) {
|
||||
OfflineDataFileEntity fileEntity = new OfflineDataFileEntity();
|
||||
fileEntity.setContentType(file.getContentType())
|
||||
.setOriginalFileName(file.getOriginalFilename())
|
||||
.setFileSize(file.getSize());
|
||||
String fileName = file.getOriginalFilename();
|
||||
fileEntity.setFileName(fileName);
|
||||
uploadLocalFile(file, fileEntity);
|
||||
// 设置文件来源
|
||||
fileEntity.setFileType("local");
|
||||
|
||||
fileEntity.setOfflineType(type);
|
||||
fileEntity.setIsSwitch("djr");
|
||||
|
||||
// 将文件信息保存到数据库
|
||||
offlineDataFileDao.insert(fileEntity);
|
||||
return fileEntity;
|
||||
}
|
||||
|
||||
protected void uploadLocalFile(MultipartFile file, OfflineDataFileEntity fileEntity) {
|
||||
String localPath = System.getProperty(SystemUtil.USER_DIR) + File.separator + "home" + File.separator + "zoomlion" + File.separator + "uploadTemp";
|
||||
File parentFile = new File(localPath);
|
||||
if (!parentFile.exists()) {
|
||||
if (!parentFile.mkdirs()) {
|
||||
throw new RuntimeException("创建保存路径失败");
|
||||
}
|
||||
}
|
||||
fileEntity.setFilePath(localPath + File.separator + fileEntity.getOriginalFileName());
|
||||
File dest = new File(localPath + File.separator + fileEntity.getOriginalFileName());
|
||||
try {
|
||||
file.transferTo(dest);
|
||||
} catch (IOException e) {
|
||||
System.out.println("离线文件上传异常ex={}, StackTrace={}" + e.getMessage() + ThrowableUtil.getStackTrace(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package cn.datax.service.data.metadata.service.impl;
|
||||
|
||||
import cn.datax.common.base.BaseServiceImpl;
|
||||
import cn.datax.common.utils.SecurityUtil;
|
||||
import cn.datax.service.data.metadata.api.entity.MetadataSourceEntity;
|
||||
import cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity;
|
||||
import cn.datax.service.data.metadata.dao.OfflineDataFileDao;
|
||||
import cn.datax.service.data.metadata.service.OfflineDataFileService;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 数据源信息表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author AllDataDC
|
||||
* @date 2022-11-14
|
||||
*/
|
||||
@Service
|
||||
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class)
|
||||
public class OfflineDataFileServiceImpl extends BaseServiceImpl<OfflineDataFileDao, OfflineDataFileEntity> implements OfflineDataFileService {
|
||||
|
||||
@Autowired
|
||||
private OfflineDataFileDao offlineDataFileDao;
|
||||
|
||||
@Override
|
||||
public OfflineDataFileEntity getOfflineDataFileById(String id) {
|
||||
OfflineDataFileEntity offlineDataFileEntity = super.getById(id);
|
||||
return offlineDataFileEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <E extends IPage<OfflineDataFileEntity>> E pageWithAuth(E page, Wrapper<OfflineDataFileEntity> queryWrapper) {
|
||||
boolean admin = SecurityUtil.isAdmin();
|
||||
List<String> roles = new ArrayList<>();
|
||||
if (!admin) {
|
||||
roles = SecurityUtil.getUserRoleIds();
|
||||
}
|
||||
return offlineDataFileDao.selectPageWithAuth(page, queryWrapper, roles);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
<?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="cn.datax.service.data.metadata.dao.OfflineDataFileDao">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity">
|
||||
<result column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="switch_time" property="switchTime" />
|
||||
<result column="remark" property="remark" />
|
||||
<result column="offline_type" property="offlineType" />
|
||||
<result column="is_switch" property="isSwitch" />
|
||||
<result column="original_file_name" property="originalFileName" />
|
||||
<result column="file_name" property="fileName" />
|
||||
<result column="file_size" property="fileSize" />
|
||||
<result column="file_path" property="filePath" />
|
||||
<result column="content_type" property="contentType" />
|
||||
<result column="file_type" property="fileType" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="ExtendResultMap" type="cn.datax.service.data.metadata.api.entity.OfflineDataFileEntity" extends="BaseResultMap">
|
||||
<result column="db_schema" property="dbSchema" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
id,
|
||||
create_by,
|
||||
create_time,
|
||||
switch_time,
|
||||
remark,
|
||||
offline_type,
|
||||
is_switch,
|
||||
original_file_name, file_name, file_size, file_path, content_type, file_type
|
||||
</sql>
|
||||
|
||||
<sql id="Source_Column_List">
|
||||
${alias}.id,
|
||||
${alias}.create_by,
|
||||
${alias}.create_time,
|
||||
${alias}.switch_time,
|
||||
${alias}.remark,
|
||||
${alias}.offline_type,
|
||||
${alias}.is_switch,
|
||||
${alias}.original_file_name, ${alias}.file_name, ${alias}.file_size, ${alias}.file_path, ${alias}.content_type, ${alias}.file_type
|
||||
</sql>
|
||||
|
||||
<select id="selectById" resultMap="ExtendResultMap">
|
||||
SELECT
|
||||
<include refid="Source_Column_List"><property name="alias" value="s"/></include>
|
||||
FROM offline_data_file s
|
||||
WHERE 1=1 AND s.id = #{id}
|
||||
</select>
|
||||
|
||||
<select id="selectList" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Base_Column_List"></include>
|
||||
FROM offline_data_file
|
||||
${ew.customSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="selectPageWithAuth" resultMap="BaseResultMap">
|
||||
SELECT
|
||||
<include refid="Source_Column_List"><property name="alias" value="s"/></include>
|
||||
FROM offline_data_file s
|
||||
<trim prefix="WHERE" prefixOverrides="WHERE |AND |OR ">
|
||||
${ew.customSqlSegment}
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user