diff --git a/src/main/java/com/docus/server/collect/entity/TSeal.java b/src/main/java/com/docus/server/collect/entity/TSeal.java
new file mode 100644
index 0000000..9a9b50b
--- /dev/null
+++ b/src/main/java/com/docus/server/collect/entity/TSeal.java
@@ -0,0 +1,66 @@
+package com.docus.server.collect.entity;
+
+import com.docus.server.collect.service.dto.ReportFileInfoDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ *
+ * 在院封存
+ *
+ *
+ * @author jiashi
+ * @since 2023-05-16
+ */
+@Data
+@ApiModel(value="TSeal对象", description="在院封存")
+public class TSeal implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "在院封存病案主键")
+ private String patientId;
+
+ @ApiModelProperty(value = "封存id")
+ private String sealId;
+
+ @ApiModelProperty(value = "住院号")
+ private String inpatientNo;
+
+ @ApiModelProperty(value = "住院就诊号")
+ private String jzh;
+
+ @ApiModelProperty(value = "患者姓名")
+ private String name;
+
+ @ApiModelProperty(value = "住院时间")
+ private Date admissDate;
+
+ @ApiModelProperty(value = "封存时间")
+ private Date sealDate;
+
+ @ApiModelProperty(value = "文件来源")
+ private Integer fileSource;
+
+ @ApiModelProperty(value = "就诊次数")
+ private Integer admissTimes;
+
+ @ApiModelProperty(value = "纸质是否签名 0:否 1:是")
+ private Integer signinfo;
+
+ @ApiModelProperty(value = "备注")
+ private String remark;
+
+ public TSeal() {
+ }
+ public TSeal(ReportFileInfoDTO dto) {
+ this.patientId=dto.getPatientId();
+ this.jzh = dto.getJzh();
+ this.inpatientNo = dto.getInpatientNo();
+ this.admissTimes = dto.getAdmisstimes();
+ }
+}
diff --git a/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java b/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java
index a42fc4c..f2309c1 100644
--- a/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java
+++ b/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java
@@ -18,4 +18,8 @@ public interface DownloadPlatformService {
@ApiOperation("病案上报文件(通用)")
@RequestMapping(value = "/api/downplatform/report",method = RequestMethod.POST)
public CommonResult report(@RequestBody ReportDownDto resources);
+
+ @ApiOperation("封存病历上报文件(省中医使用)")
+ @RequestMapping(value = "/api/downplatform/sealReport",method = RequestMethod.POST)
+ public CommonResult sealReport(@RequestBody ReportDownDto resources);
}
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 9322c2d..e8ad16c 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
@@ -2,6 +2,7 @@ package com.docus.server.collect.infrastructure.dao;
import com.docus.infrastructure.core.db.dao.IBaseDao;
import com.docus.server.collect.entity.DownloadTask;
+import com.docus.server.collect.entity.TSeal;
/**
* 下载任务表-数据访问接口
@@ -39,4 +40,13 @@ public interface DownloadTaskDao extends IBaseDao {
* @return 下载任务id(也是文件id)
*/
Long getDownloadTaskIdFromDownFile(String patientId, String source, String serialNum);
+
+ /**
+ * 根据封存条件查询封存信息
+ * @date 2024/1/10 16:52
+ * @author YongBin Wen
+ * @param seal 封存条件
+ * @return com.docus.server.collect.entity.TSeal
+ */
+ TSeal findSealByCondition(TSeal seal);
}
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 af042e7..211ca9a 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
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.docus.core.util.Func;
import com.docus.infrastructure.core.db.dao.impl.BaseDaoImpl;
import com.docus.server.collect.entity.DownloadTask;
+import com.docus.server.collect.entity.TSeal;
import com.docus.server.collect.infrastructure.dao.DownloadTaskDao;
import com.docus.server.collect.infrastructure.mapper.DownloadTaskMapper;
import org.springframework.stereotype.Repository;
@@ -44,4 +45,9 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl {
* @return 下载任务id(也是文件id)
*/
Long getDownloadTaskIdFromDownFile(@Param("patientId") String patientId, @Param("source") String source, @Param("serialNum") String serialNum);
+
+ /**
+ * 根据封存条件查询封存信息
+ *
+ * @param seal 封存条件
+ * @return com.docus.server.collect.entity.TSeal
+ * @date 2024/1/10 16:52
+ * @author YongBin Wen
+ */
+ TSeal findSealByCondition(@Param("seal") TSeal seal);
}
diff --git a/src/main/java/com/docus/server/collect/service/FileReportService.java b/src/main/java/com/docus/server/collect/service/FileReportService.java
index 698e4c4..d971052 100644
--- a/src/main/java/com/docus/server/collect/service/FileReportService.java
+++ b/src/main/java/com/docus/server/collect/service/FileReportService.java
@@ -15,6 +15,14 @@ public interface FileReportService {
*/
void saveDownloadTaskAndReport(ReportFileInfoDTO fileInfoDTO);
+ /**
+ *
+ * 上报封存病案文件信息,生成|更新下载任务,并下发下载平台,此方法用于封存病案 t_seal
+ * @param fileInfoDTO 上报文件信息
+ */
+ void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO);
+
+
/**
* 根据下载文件任务信息,查询下载任务id(用作文件id)
* 查询有三个地方,文件表(需要有patientId),文件下载记录表(需要有patientId),文件下载任务表
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 b7d9a7b..54735d0 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
@@ -10,6 +10,7 @@ import com.docus.server.collect.converter.FileReportConverter;
import com.docus.server.collect.dto.TBasicQrDto;
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;
@@ -70,6 +71,27 @@ 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);
+ }
+
+
private TBasicQrDto convertTbasicQrDto(ReportFileInfoDTO fileInfoDTO) {
String patientId = fileInfoDTO.getPatientId();
String jzh = fileInfoDTO.getJzh();
@@ -128,4 +150,26 @@ public class FileReportServiceImpl implements FileReportService {
}
});
}
+
+
+ /**
+ * 根据下载任务,上报到下载平台服务
+ *
+ * @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);
+ }
+ }
+ });
+ }
}
diff --git a/src/main/resources/mapper/DownloadTaskMapper.xml b/src/main/resources/mapper/DownloadTaskMapper.xml
index f99f79d..f5f6f98 100644
--- a/src/main/resources/mapper/DownloadTaskMapper.xml
+++ b/src/main/resources/mapper/DownloadTaskMapper.xml
@@ -25,5 +25,18 @@
order by `create_time` desc limit 1
+