1.增加文件上传时将文件重命名并存到缓存目录再移动的逻辑;2.增加相关接口中批量上传时间和保存状态字段。

This commit is contained in:
sxlong 2024-11-20 17:40:21 +08:00
parent 512f9724d8
commit 55ad1665b9
7 changed files with 88 additions and 34 deletions

View File

@ -10,6 +10,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.Date;
@RequestMapping("/data/ed/file") @RequestMapping("/data/ed/file")
@RestController @RestController
@ -49,10 +50,12 @@ public class EDDataController {
@ApiOperation(value = "上传",notes = "") @ApiOperation(value = "上传",notes = "")
@RequestMapping(value = "/upload", consumes = "multipart/form-data",method = RequestMethod.POST) @RequestMapping(value = "/upload", consumes = "multipart/form-data",method = RequestMethod.POST)
public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId, public ElectromagneticResult<?> upload(@RequestParam("parentId") String parentId,
@RequestParam("file") MultipartFile file){ @RequestParam("file") MultipartFile file,
@RequestParam("gmtBatchUpload") Long gmtBatchUpload){
EDDataRequest request = new EDDataRequest(); EDDataRequest request = new EDDataRequest();
request.setParentId(parentId); request.setParentId(parentId);
request.setFileData(file); request.setFileData(file);
request.setGmtBatchUpload(new Date(gmtBatchUpload));
return edDataFacade.upload(request); return edDataFacade.upload(request);
} }

View File

@ -64,7 +64,11 @@ public class EDDataInfo {
/** /**
* 批量上传时间 * 批量上传时间
*/ */
private String gmtBatchUpload; private Date gmtBatchUpload;
/**
* 保存状态
*/
private String saveStatus;
/** /**
* 创建人 * 创建人
*/ */

View File

@ -4,6 +4,7 @@ import lombok.Data;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@Data @Data
public class EDDataParams implements Serializable { public class EDDataParams implements Serializable {
@ -51,7 +52,11 @@ public class EDDataParams implements Serializable {
/** /**
* 批量上传时间 * 批量上传时间
*/ */
private String gmtBatchUpload; private Date gmtBatchUpload;
/**
* 保存状态
*/
private String saveStatus;
/** /**
* 文件数据编码数组 * 文件数据编码数组
*/ */

View File

@ -4,6 +4,8 @@ import org.springframework.web.multipart.MultipartFile;
import electromagnetic.data.framework.share.model.BaseRequest; import electromagnetic.data.framework.share.model.BaseRequest;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class EDDataRequest extends BaseRequest { public class EDDataRequest extends BaseRequest {
@ -47,6 +49,14 @@ public class EDDataRequest extends BaseRequest {
* 关键词 * 关键词
*/ */
private String keyWord; private String keyWord;
/**
* 批量上传时间
*/
private Date gmtBatchUpload;
/**
* 保存状态
*/
private String saveStatus;
/** /**
* 文件数据编码数组 * 文件数据编码数组
*/ */

View File

@ -32,19 +32,4 @@ public interface EDDataMapper {
*/ */
Boolean updateFileInfo(EDDataParams parames); Boolean updateFileInfo(EDDataParams parames);
/**
* 获取子文件数量
* @param parames
* @return
*/
Integer getChildFileCount(EDDataParams parames);
/**
* 获取目录路径
* @param categoryId
* @return
*/
String getDirectoryPath(String categoryId);
} }

View File

@ -17,6 +17,7 @@
<result column="note" jdbcType="VARCHAR" property="note" /> <result column="note" jdbcType="VARCHAR" property="note" />
<result column="editor" jdbcType="VARCHAR" property="editor" /> <result column="editor" jdbcType="VARCHAR" property="editor" />
<result column="gmt_batch_upload" jdbcType="TIMESTAMP" property="gmtBatchUpload" /> <result column="gmt_batch_upload" jdbcType="TIMESTAMP" property="gmtBatchUpload" />
<result column="save_status" jdbcType="VARCHAR" property="saveStatus" />
<result column="creator" jdbcType="VARCHAR" property="creator" /> <result column="creator" jdbcType="VARCHAR" property="creator" />
<result column="creator_name" jdbcType="VARCHAR" property="creatorName" /> <result column="creator_name" jdbcType="VARCHAR" property="creatorName" />
<result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate" /> <result column="gmt_create" jdbcType="TIMESTAMP" property="gmtCreate" />
@ -27,7 +28,7 @@
</resultMap> </resultMap>
<sql id="Base_Column_list"> <sql id="Base_Column_list">
id,category_id,data_id,data_no,data_name,data_type,file_type,version,content, id,category_id,data_id,data_no,data_name,data_type,file_type,version,content,
implant_json,data_status,note,creator,creator_name,gmt_create,modifier,modifier_name, implant_json,data_status,note,editor,gmt_batch_upload,save_status,creator,creator_name,gmt_create,modifier,modifier_name,
gmt_modified,effect_flag gmt_modified,effect_flag
</sql> </sql>
@ -40,7 +41,7 @@
data_id, data_no, data_name, data_id, data_no, data_name,
data_type, file_type, version, data_type, file_type, version,
content, implant_json, data_status, content, implant_json, data_status,
note, editor, gmt_batch_upload, note, editor, gmt_batch_upload, save_status,
creator, creator_name, gmt_create, creator, creator_name, gmt_create,
modifier, modifier_name, gmt_modified, modifier, modifier_name, gmt_modified,
effect_flag effect_flag
@ -49,7 +50,7 @@
#{dataId,jdbcType=VARCHAR}, #{dataNo,jdbcType=VARCHAR}, #{dataName,jdbcType=VARCHAR}, #{dataId,jdbcType=VARCHAR}, #{dataNo,jdbcType=VARCHAR}, #{dataName,jdbcType=VARCHAR},
#{dataType,jdbcType=VARCHAR}, #{fileType,jdbcType=VARCHAR},#{version,jdbcType=VARCHAR}, #{dataType,jdbcType=VARCHAR}, #{fileType,jdbcType=VARCHAR},#{version,jdbcType=VARCHAR},
#{content,jdbcType=VARCHAR}, #{implantJson,jdbcType=VARCHAR}, #{dataStatus,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{implantJson,jdbcType=VARCHAR}, #{dataStatus,jdbcType=VARCHAR},
#{note,jdbcType=VARCHAR}, #{editor,jdbcType=VARCHAR}, #{gmtBatchUpload,jdbcType=TIMESTAMP}, #{note,jdbcType=VARCHAR}, #{editor,jdbcType=VARCHAR}, #{gmtBatchUpload,jdbcType=TIMESTAMP}, #{saveStatus,jdbcType=VARCHAR},
#{creator,jdbcType=VARCHAR}, #{creatorName,jdbcType=VARCHAR}, now(), #{modifier,jdbcType=VARCHAR}, #{creator,jdbcType=VARCHAR}, #{creatorName,jdbcType=VARCHAR}, now(), #{modifier,jdbcType=VARCHAR},
#{modifierName,jdbcType=VARCHAR},now(),1 #{modifierName,jdbcType=VARCHAR},now(),1
) )
@ -72,6 +73,9 @@
<if test="keyWord!=null and keyWord!=''"> <if test="keyWord!=null and keyWord!=''">
and data_name LIKE '%${keyWord}%' and data_name LIKE '%${keyWord}%'
</if> </if>
<if test="saveStatus!=null and saveStatus!=''">
and save_status='${saveStatus}'
</if>
GROUP BY id GROUP BY id
<if test="gmtCreate == 'asc' or gmtCreate =='desc'"> <if test="gmtCreate == 'asc' or gmtCreate =='desc'">
order by gmt_create ${gmtCreate} order by gmt_create ${gmtCreate}
@ -90,6 +94,9 @@
<if test="note != null and note!=''"> <if test="note != null and note!=''">
note = #{note,jdbcType=VARCHAR}, note = #{note,jdbcType=VARCHAR},
</if> </if>
<if test="saveStatus != null and note!=''">
save_status = #{saveStatus,jdbcType=VARCHAR},
</if>
<if test="effectFlag != null and effectFlag!=''"> <if test="effectFlag != null and effectFlag!=''">
effect_flag = #{effectFlag,jdbcType=VARCHAR}, effect_flag = #{effectFlag,jdbcType=VARCHAR},
</if> </if>

View File

@ -19,7 +19,9 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File; import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*; import java.util.*;
@Service @Service
@ -120,6 +122,7 @@ public class EDDataFacadeImpl implements EDDataFacade {
*/ */
public ElectromagneticResult<EDDataPageResponse> getDataInfoList(EDDataRequest request) public ElectromagneticResult<EDDataPageResponse> getDataInfoList(EDDataRequest request)
{ {
EDDataParams parames= EDDataMappers.INSTANCE.getEDDataParames(request); EDDataParams parames= EDDataMappers.INSTANCE.getEDDataParames(request);
//获取中支指标配置列表 //获取中支指标配置列表
EDDataPage edDataPage = edDataService.getDataInfoList(parames); EDDataPage edDataPage = edDataService.getDataInfoList(parames);
@ -174,15 +177,15 @@ public class EDDataFacadeImpl implements EDDataFacade {
String categoryId = request.getParentId(); String categoryId = request.getParentId();
// 获取要上传的文件 // 获取要上传的文件
MultipartFile file = request.getFileData(); MultipartFile fileInput = request.getFileData();
// 检查文件是否为空 // 检查文件是否为空
if (file == null || file.isEmpty()) { if (fileInput == null || fileInput.isEmpty()) {
return ElectromagneticResultUtil.fail(HttpStatus.BAD_REQUEST.toString(),"上传的文件为空"); return ElectromagneticResultUtil.fail(HttpStatus.BAD_REQUEST.toString(),"上传的文件为空");
} }
// 获取文件名 // 获取文件名
String fileFullName = file.getOriginalFilename(); String fileFullName = fileInput.getOriginalFilename();
// 获取文件类型 // 获取文件类型
String fileType = ""; String fileType = "";
// 获取文件名称 // 获取文件名称
@ -198,8 +201,9 @@ public class EDDataFacadeImpl implements EDDataFacade {
edDataService.createMultiLevelDirectory(storageDirectory); edDataService.createMultiLevelDirectory(storageDirectory);
} }
String parentFolderPath = ""; String parentFolderPath = ""; //上级文件夹路径
String parentFolderIdPath = ""; String parentFolderIdPath = ""; //上级文件夹ID路径
String parentFolderName = ""; //上级文件夹名称
// 获取上级文件夹路径 // 获取上级文件夹路径
{ {
@ -218,16 +222,13 @@ public class EDDataFacadeImpl implements EDDataFacade {
parentFolderIdPath += "/" ; parentFolderIdPath += "/" ;
parentFolderPath += edDataInfoParent.getDataName(); parentFolderPath += edDataInfoParent.getDataName();
parentFolderIdPath += edDataInfoParent.getDataId(); parentFolderIdPath += edDataInfoParent.getDataId();
parentFolderName = edDataInfoParent.getDataName();
} }
// 文件保存目录路径 // 文件保存目录路径
String fileSavePath = storageDirectory + "/" + parentFolderPath + "/" + fileFullName; String fileSavePath = storageDirectory + "/" + parentFolderPath;
String treeName = "目录树名称";
// 这里可以添加将文件保存到本地磁盘或其他存储介质的逻辑 String newFileName = treeName + "," + parentFolderName + "," + fileFullName;
File saveFile = new File(fileSavePath);
// 将文件保存到硬盘
file.transferTo(saveFile);
// 文件数据信息写到数据库 // 文件数据信息写到数据库
{ {
@ -246,14 +247,17 @@ public class EDDataFacadeImpl implements EDDataFacade {
edDataInfo.setModifier(request.getUserId()); edDataInfo.setModifier(request.getUserId());
edDataInfo.setModifierName(request.getUserName()); edDataInfo.setModifierName(request.getUserName());
edDataInfo.setCategoryId(request.getParentId()); edDataInfo.setCategoryId(request.getParentId());
edDataInfo.setDataName(fileFullName); edDataInfo.setDataName(newFileName);
edDataInfo.setNote(request.getNote()); edDataInfo.setNote(request.getNote());
edDataInfo.setFileType(fileType);
edDataInfo.setGmtBatchUpload(request.getGmtBatchUpload());
edDataInfo.setDataId(IdWorker.getSnowFlakeIdString()); edDataInfo.setDataId(IdWorker.getSnowFlakeIdString());
edDataInfo.setDataNo(IdWorker.getSnowFlakeIdString()); edDataInfo.setDataNo(IdWorker.getSnowFlakeIdString());
edDataInfo.setDataType("file"); edDataInfo.setDataType("file");
edDataInfo.setVersion("1.0.0"); edDataInfo.setVersion("1.0.0");
edDataInfo.setDataStatus("publish"); edDataInfo.setDataStatus("publish");
edDataInfo.setSaveStatus("saving");
JSONObject newImplantJsonObject = new JSONObject(); JSONObject newImplantJsonObject = new JSONObject();
newImplantJsonObject.put("folderPath", parentFolderPath); newImplantJsonObject.put("folderPath", parentFolderPath);
@ -262,6 +266,42 @@ public class EDDataFacadeImpl implements EDDataFacade {
boolean isSuccess = edDataService.createDataInfo(edDataInfo); boolean isSuccess = edDataService.createDataInfo(edDataInfo);
String userHome = System.getProperty("user.home");
File cacheDirectory = new File(userHome + "\\AppData\\Local\\Temp\\EDData");
if (!cacheDirectory.exists()) {
cacheDirectory.mkdirs();
}
String cacheFolder = cacheDirectory.getAbsolutePath();
String cachePath = cacheFolder + "/" + newFileName;
System.out.println("文件缓存路径为: " + cacheDirectory.getAbsolutePath());
fileSavePath += "/" + newFileName;
// 这里可以添加将文件保存到本地磁盘或其他存储介质的逻辑
File saveFile = new File(cachePath);//fileSavePath
// 将文件保存到硬盘
fileInput.transferTo(saveFile);
EDDataParams fileParames = new EDDataParams();
fileParames.setDataId(edDataInfo.getDataId());
if(fileInput.getSize() == saveFile.length())
{
Path source = Paths.get(cachePath);
Path target = Paths.get(fileSavePath);
Files.move(source, target);
fileParames.setSaveStatus("success");
}
else
{
saveFile.delete();
fileParames.setSaveStatus("failure");
}
isSuccess = edDataService.updateFileInfo(fileParames);
} }
// 如果文件上传成功返回成功消息 // 如果文件上传成功返回成功消息