From 3d063eb15d2949b48ea9ddb3b34b4ca6bcbdef17 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Wed, 16 Oct 2024 11:00:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8E=B7=E5=8F=96=E6=96=B0id,=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=98=AF=E5=90=A6=E5=AD=98=E5=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../infrastructure/dao/DownloadTaskDao.java | 6 ++++++ .../dao/impl/CollectTaskDaoImpl.java | 16 +++++++++++++- .../dao/impl/DownloadTaskDaoImpl.java | 21 +++++++++++++++++++ .../mapper/DownloadTaskMapper.java | 5 +++++ .../service/impl/FileReportServiceImpl.java | 21 +++++++++++++++++-- .../resources/mapper/DownloadTaskMapper.xml | 7 +++++++ 6 files changed, 73 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java b/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java index e8ad16c..bdac31f 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java +++ b/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java @@ -49,4 +49,10 @@ public interface DownloadTaskDao extends IBaseDao { * @return com.docus.server.collect.entity.TSeal */ TSeal findSealByCondition(TSeal seal); + + boolean existIdFromSanAssort(Long fileId); + + boolean existIdFromDownfile(Long fileId); + + boolean existIdFromDownloadTask(Long fileId); } diff --git a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/CollectTaskDaoImpl.java b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/CollectTaskDaoImpl.java index b2f3bc9..d908b7c 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/CollectTaskDaoImpl.java +++ b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/CollectTaskDaoImpl.java @@ -42,7 +42,7 @@ public class CollectTaskDaoImpl extends BaseDaoImpl queryCollectTaskWrapper = new LambdaQueryWrapper<>(); + while (true) { + queryCollectTaskWrapper.eq(CollectTask::getId, id); + CollectTask collectTask = baseMapper.selectOne(queryCollectTaskWrapper); + if (collectTask == null) { + return id; + } + queryCollectTaskWrapper.clear(); + id = id + 16; + } + } + @Override public Long saveTaskUseLock(ReportFileInfoDTO reportFileInfoDTO) throws InterruptedException { diff --git a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java index 211ca9a..6d3d471 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java +++ b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java @@ -50,4 +50,25 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.select(DownloadTask::getId); + wrapper.eq(DownloadTask::getId, fileId); + DownloadTask downloadTask = baseMapper.selectOne(wrapper); + return downloadTask != null; + } } diff --git a/src/main/java/com/docus/server/collect/infrastructure/mapper/DownloadTaskMapper.java b/src/main/java/com/docus/server/collect/infrastructure/mapper/DownloadTaskMapper.java index 47eb1ae..2e08d52 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/mapper/DownloadTaskMapper.java +++ b/src/main/java/com/docus/server/collect/infrastructure/mapper/DownloadTaskMapper.java @@ -36,4 +36,9 @@ public interface DownloadTaskMapper extends BaseMapper { * @author YongBin Wen */ TSeal findSealByCondition(@Param("seal") TSeal seal); + + + Long getFileIdFromDownfile(@Param("fileId") Long fileId); + + Long getFileIdFromSanAssort(@Param("fileId") Long fileId); } diff --git a/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java b/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java index 6f5ad56..ec86cec 100644 --- a/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java +++ b/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java @@ -65,12 +65,29 @@ public class FileReportServiceImpl implements FileReportService { // 转换下载任务对象 DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 0); // 查询旧的下载任务id,更新/保存任务信息 - Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(idService.getDateSeq()); + Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(getNewFileId()); downloadTask.setId(downloadTaskId); downloadTaskDao.saveOrUpdate(downloadTask); report(downloadTask); } + /** + * 获取一个新的文件id,从下载表,下载任务表,文件表判断,不存在三个表里的文件id + */ + private Long getNewFileId() { + Long fileId = idService.getDateSeq(); + + while (true) { + boolean existIdFromSanAssort = downloadTaskDao.existIdFromSanAssort(fileId); + boolean existIdFromDownfile = downloadTaskDao.existIdFromDownfile(fileId); + boolean existIdFromDownloadTask = downloadTaskDao.existIdFromDownloadTask(fileId); + if (!existIdFromSanAssort && !existIdFromDownfile && !existIdFromDownloadTask) { + return fileId; + } + fileId = fileId + 16; + } + } + @Override public void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO) { TSeal sealCondition = new TSeal(fileInfoDTO); @@ -84,7 +101,7 @@ public class FileReportServiceImpl implements FileReportService { // 转换下载任务对象 DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 2); // 查询旧的下载任务id,更新/保存任务信息 - Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(idService.getDateSeq()); + Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(getNewFileId()); downloadTask.setId(downloadTaskId); downloadTaskDao.saveOrUpdate(downloadTask); reportSeal(downloadTask); diff --git a/src/main/resources/mapper/DownloadTaskMapper.xml b/src/main/resources/mapper/DownloadTaskMapper.xml index f5f6f98..74fa147 100644 --- a/src/main/resources/mapper/DownloadTaskMapper.xml +++ b/src/main/resources/mapper/DownloadTaskMapper.xml @@ -39,4 +39,11 @@ + + +