|
|
|
@ -4,10 +4,13 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.docus.core.util.Func;
|
|
|
|
|
import com.docus.infrastructure.redis.service.IdService;
|
|
|
|
|
import com.docus.infrastructure.web.api.CommonResult;
|
|
|
|
|
import com.docus.server.collect.converter.FileReportConverter;
|
|
|
|
|
import com.docus.server.collect.entity.DownloadTask;
|
|
|
|
|
import com.docus.server.collect.entity.TBasic;
|
|
|
|
|
import com.docus.server.collect.entity.TSeal;
|
|
|
|
|
import com.docus.server.collect.infrastructure.client.DownloadPlatformService;
|
|
|
|
|
import com.docus.server.collect.infrastructure.client.dto.ReportDownDto;
|
|
|
|
|
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
|
|
|
|
|
import com.docus.server.collect.service.FileReportService;
|
|
|
|
|
import com.docus.server.collect.service.dto.ReportFileInfoDTO;
|
|
|
|
@ -62,19 +65,39 @@ public class FileReportServiceImpl implements FileReportService {
|
|
|
|
|
report(downloadTask);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO) {
|
|
|
|
|
// TODO 封存病案
|
|
|
|
|
TSeal sealCondition = new TSeal(fileInfoDTO);
|
|
|
|
|
// 查询基础数据,更新新的病案信息
|
|
|
|
|
TSeal seal = downloadTaskDao.findSealByCondition(sealCondition);
|
|
|
|
|
// 如果找到患者基础数据,并且刚好为1条
|
|
|
|
|
fileInfoDTO.setPatientId(seal.getPatientId());
|
|
|
|
|
fileInfoDTO.setInpatientNo(seal.getInpatientNo());
|
|
|
|
|
fileInfoDTO.setAdmisstimes(seal.getAdmissTimes());
|
|
|
|
|
fileInfoDTO.setJzh(seal.getJzh());
|
|
|
|
|
// 转换下载任务对象
|
|
|
|
|
DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 2);
|
|
|
|
|
// 查询旧的下载任务id,更新/保存任务信息
|
|
|
|
|
Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(idService.getDateSeq());
|
|
|
|
|
downloadTask.setId(downloadTaskId);
|
|
|
|
|
downloadTaskDao.saveOrUpdate(downloadTask);
|
|
|
|
|
reportSeal(downloadTask);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Long getDownloadTaskId(DownloadTask downloadTask) {
|
|
|
|
|
String patientId = downloadTask.getPatientId();
|
|
|
|
|
if(StrUtil.isNotBlank(patientId)){
|
|
|
|
|
if (StrUtil.isNotBlank(patientId)) {
|
|
|
|
|
String serialNum = downloadTask.getFileSerialNum();
|
|
|
|
|
String source = downloadTask.getSource();
|
|
|
|
|
// 从文件表获取
|
|
|
|
|
Long downloadTaskId = downloadTaskDao.getDownloadTaskIdFromSanAssort(patientId,source,serialNum);
|
|
|
|
|
Long downloadTaskId = downloadTaskDao.getDownloadTaskIdFromSanAssort(patientId, source, serialNum);
|
|
|
|
|
if (Func.isNotEmpty(downloadTaskId)) {
|
|
|
|
|
return downloadTaskId;
|
|
|
|
|
}
|
|
|
|
|
// 从下载记录表获取
|
|
|
|
|
downloadTaskId = downloadTaskDao.getDownloadTaskIdFromDownFile(patientId,source,serialNum);
|
|
|
|
|
downloadTaskId = downloadTaskDao.getDownloadTaskIdFromDownFile(patientId, source, serialNum);
|
|
|
|
|
if (Func.isNotEmpty(downloadTaskId)) {
|
|
|
|
|
return downloadTaskId;
|
|
|
|
|
}
|
|
|
|
@ -91,7 +114,36 @@ public class FileReportServiceImpl implements FileReportService {
|
|
|
|
|
private void report(DownloadTask downloadTask) {
|
|
|
|
|
threadPoolExecutor.execute(() -> {
|
|
|
|
|
if (downloadTask.getBasicDataType().equals(0)) {
|
|
|
|
|
downloadPlatformService.report(fileReportConverter.convertDownloadPlatformParam(downloadTask));
|
|
|
|
|
ReportDownDto reportDownDto = fileReportConverter.convertDownloadPlatformParam(downloadTask);
|
|
|
|
|
String paramJson = Func.toJson(reportDownDto);
|
|
|
|
|
try {
|
|
|
|
|
log.info("基础病案上报文件,参数:{}", paramJson);
|
|
|
|
|
CommonResult result = downloadPlatformService.report(reportDownDto);
|
|
|
|
|
log.info("基础病案上报文件,返回结果:{}", Func.toJson(result));
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
log.error("基础病案上报文件发生未知错误,参数:" + paramJson, ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据下载任务,上报到下载平台服务
|
|
|
|
|
*
|
|
|
|
|
* @param downloadTask 下载任务
|
|
|
|
|
*/
|
|
|
|
|
private void reportSeal(DownloadTask downloadTask) {
|
|
|
|
|
threadPoolExecutor.execute(() -> {
|
|
|
|
|
if (downloadTask.getBasicDataType().equals(2)) {
|
|
|
|
|
ReportDownDto reportDownDto = fileReportConverter.convertDownloadPlatformParam(downloadTask);
|
|
|
|
|
String paramJson = Func.toJson(reportDownDto);
|
|
|
|
|
try {
|
|
|
|
|
log.info("封存病案上报文件,参数:{}", paramJson);
|
|
|
|
|
CommonResult result = downloadPlatformService.sealReport(reportDownDto);
|
|
|
|
|
log.info("封存病案上报文件,返回结果:{}", Func.toJson(result));
|
|
|
|
|
} catch (Exception ex) {
|
|
|
|
|
log.error("封存病案上报文件发生未知错误,参数:" + paramJson, ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|