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 3982827..18a0f16 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 @@ -76,4 +76,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/DownloadTaskDaoImpl.java b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java index 006f784..9fb0c14 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 @@ -66,4 +66,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 cd908f0..17772fd 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 @@ -67,4 +67,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 3d0088b..a301802 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 @@ -59,7 +59,7 @@ 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); @@ -78,12 +78,29 @@ 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); } + /** + * 获取一个新的文件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 Long getDownloadTaskId(DownloadTask downloadTask) { String patientId = downloadTask.getPatientId(); diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 2804424..60371df 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -130,5 +130,12 @@ AND patient_id=#{seal.patientId} + + +