新增占用功能

This commit is contained in:
chenxudong 2025-10-10 18:09:58 +08:00
parent ce2fe3eb2d
commit 2cb8c77567
3 changed files with 19 additions and 1 deletions

View File

@ -72,7 +72,7 @@ public class EdFileInfo extends BaseModel {
@TableField(value = "data_type") @TableField(value = "data_type")
private Integer dataType; private Integer dataType;
/** /**
* 数据状态0-发布 1-占用 * 数据状态0-发布 1-已发布 2-占用 3-待删除
*/ */
@TableField(value = "data_status") @TableField(value = "data_status")
private Integer dataStatus; private Integer dataStatus;

View File

@ -132,6 +132,7 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.eq(ObjUtil.equals(pars.getDataStatus(), EleDataStatusEnum.NOT_PUBLISHED.code), EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code) .eq(ObjUtil.equals(pars.getDataStatus(), EleDataStatusEnum.NOT_PUBLISHED.code), EdFileInfo::getDataStatus, EleDataStatusEnum.NOT_PUBLISHED.code)
.eq(ObjUtil.equals(pars.getDataStatus(), EleDataStatusEnum.PUBLISHED.code), EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code) .eq(ObjUtil.equals(pars.getDataStatus(), EleDataStatusEnum.PUBLISHED.code), EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code)
.eq(ObjUtil.equals(pars.getDataStatus(), EleDataStatusEnum.OCCUPY.code), EdFileInfo::getDataStatus, EleDataStatusEnum.OCCUPY.code)
.eq(StrUtil.isNotEmpty(pars.getFileType()), EdFileInfo::getFileType, pars.getFileType()) .eq(StrUtil.isNotEmpty(pars.getFileType()), EdFileInfo::getFileType, pars.getFileType())
.orderByAsc(ObjUtil.equals(pars.getCreatedTime(), 0), EdFileInfo::getCreatedTime) .orderByAsc(ObjUtil.equals(pars.getCreatedTime(), 0), EdFileInfo::getCreatedTime)
@ -309,6 +310,10 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
String newFileName = Base64.encode(fileInfo.getFileName() + "." + fileInfo.getFileType()); String newFileName = Base64.encode(fileInfo.getFileName() + "." + fileInfo.getFileType());
response.setHeader("content-disposition", "attachment;filename=" + newFileName); response.setHeader("content-disposition", "attachment;filename=" + newFileName);
UserThreadLocal.setSuccessInfo(fileInfo.getParentId(), fileInfo.getFileId(), "下载文件 {} 成功,文件路径 {}", fileName, dbPath); UserThreadLocal.setSuccessInfo(fileInfo.getParentId(), fileInfo.getFileId(), "下载文件 {} 成功,文件路径 {}", fileName, dbPath);
this.baseMapper.update(Wrappers.lambdaUpdate(EdFileInfo.class)
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.OCCUPY.code)
.set(EdFileInfo::getUpdatedTime, new Date())
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id));
// 构建响应实体(可以返回<byte[]或Resource返回类型取决body入参类型) // 构建响应实体(可以返回<byte[]或Resource返回类型取决body入参类型)
return ResponseEntity return ResponseEntity
.ok() .ok()
@ -987,6 +992,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
EdFileInfo destFolderInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class) EdFileInfo destFolderInfo = this.baseMapper.selectOne(Wrappers.lambdaQuery(EdFileInfo.class)
.select(EdFileInfo.class, file -> !StrUtil.equals(file.getColumn(), "file_content")) .select(EdFileInfo.class, file -> !StrUtil.equals(file.getColumn(), "file_content"))
.eq(EdFileInfo::getId, targetFolderId)); .eq(EdFileInfo::getId, targetFolderId));
this.baseMapper.update(Wrappers.lambdaUpdate(EdFileInfo.class)
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.OCCUPY.code)
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id));
if (count == 0) { if (count == 0) {
// 没有同名文件 // 没有同名文件
// 首先将信息保存到MySQL // 首先将信息保存到MySQL
@ -1086,6 +1094,9 @@ public class EdFileInfoServiceImpl extends ServiceImpl<EdFileInfoMapper, EdFileI
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code)); .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.EFFECT.code));
EdFileInfo destFolderInfo = this.baseMapper.selectById(targetFolderId); EdFileInfo destFolderInfo = this.baseMapper.selectById(targetFolderId);
EdFileInfo destFileInfo; EdFileInfo destFileInfo;
this.baseMapper.update(Wrappers.lambdaUpdate(EdFileInfo.class)
.set(EdFileInfo::getDataStatus, EleDataStatusEnum.OCCUPY.code)
.like(EdFileInfo::getFilePath, MYSQL_FILE_PATH_SPLIT + id));
if (count == 0) { if (count == 0) {
// 没有同名文件 // 没有同名文件
// 首先将信息保存到MySQL // 首先将信息保存到MySQL

View File

@ -11,6 +11,7 @@ import cn.hutool.core.util.RuntimeUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum; import com.electromagnetic.industry.software.common.enums.EleDataTypeEnum;
import com.electromagnetic.industry.software.common.enums.FileBackupSource; import com.electromagnetic.industry.software.common.enums.FileBackupSource;
import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum; import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum;
@ -275,5 +276,11 @@ public class BackupTask {
} }
} }
// 2 分钟执行一次
@Scheduled(cron = "0 */2 * * * ?")
public void updateFileStatus() {
DateTime twoMinutesAgo = DateUtil.offsetMinute(DateUtil.date(), -2);
edFileInfoMapper.update(Wrappers.<EdFileInfo>lambdaUpdate().set(EdFileInfo::getDataStatus, EleDataStatusEnum.PUBLISHED.code).le(EdFileInfo::getUpdatedTime, twoMinutesAgo));
}
} }