fix: 获取新id,判断是否存在

collector-patient-scan
wyb 9 months ago
parent ca37cdad70
commit 3d063eb15d

@ -49,4 +49,10 @@ public interface DownloadTaskDao extends IBaseDao<DownloadTask> {
* @return com.docus.server.collect.entity.TSeal
*/
TSeal findSealByCondition(TSeal seal);
boolean existIdFromSanAssort(Long fileId);
boolean existIdFromDownfile(Long fileId);
boolean existIdFromDownloadTask(Long fileId);
}

@ -42,7 +42,7 @@ public class CollectTaskDaoImpl extends BaseDaoImpl<CollectTaskMapper, CollectTa
baseMapper.updateById(collectTask);
} else {
collectTask = new CollectTask();
collectTask.setId(idService.getDateSeq());
collectTask.setId(getNewTaskId());
collectTask.setPatientId(reportFileInfoDTO.getPatientId());
collectTask.setSysflag(reportFileInfoDTO.getSysFlag());
collectTask.setState("0");
@ -56,6 +56,20 @@ public class CollectTaskDaoImpl extends BaseDaoImpl<CollectTaskMapper, CollectTa
}
private Long getNewTaskId() {
long id = idService.getDateSeq();
LambdaQueryWrapper<CollectTask> 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 {

@ -50,4 +50,25 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl<DownloadTaskMapper, Downloa
public TSeal findSealByCondition(TSeal seal) {
return baseMapper.findSealByCondition(seal);
}
@Override
public boolean existIdFromSanAssort(Long fileId) {
Long id = baseMapper.getFileIdFromSanAssort(fileId);
return id != null;
}
@Override
public boolean existIdFromDownfile(Long fileId) {
Long id = baseMapper.getFileIdFromDownfile(fileId);
return id != null;
}
@Override
public boolean existIdFromDownloadTask(Long fileId) {
LambdaQueryWrapper<DownloadTask> wrapper = new LambdaQueryWrapper<>();
wrapper.select(DownloadTask::getId);
wrapper.eq(DownloadTask::getId, fileId);
DownloadTask downloadTask = baseMapper.selectOne(wrapper);
return downloadTask != null;
}
}

@ -36,4 +36,9 @@ public interface DownloadTaskMapper extends BaseMapper<DownloadTask> {
* @author YongBin Wen
*/
TSeal findSealByCondition(@Param("seal") TSeal seal);
Long getFileIdFromDownfile(@Param("fileId") Long fileId);
Long getFileIdFromSanAssort(@Param("fileId") Long fileId);
}

@ -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);
}
/**
* idid
*/
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);

@ -39,4 +39,11 @@
</if>
</select>
<select id="getFileIdFromDownfile" resultType="java.lang.Long">
select `t_scan_assort_id` from `docus_archivefile`.`af_downfile` where `t_scan_assort_id`=#{fileId} LIMIT 1
</select>
<select id="getFileIdFromSanAssort" resultType="java.lang.Long">
select id from `docus_archivefile`.`t_scan_assort` where id=#{fileId}
</select>
</mapper>

Loading…
Cancel
Save