From b846e821dbd32388c2cef182e18f1987f6e8497b Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Thu, 26 Sep 2024 17:49:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=BF=E4=B8=9C=E7=9C=81=E4=B8=AD?= =?UTF-8?q?=E5=8C=BB=E9=A2=84=E4=BD=8F=E9=99=A2=E7=97=85=E5=8E=86=E5=90=88?= =?UTF-8?q?=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/archive/entity/BasicExtend.java | 26 ++++++++++ .../server/archive/mapper/TBasicMapper.java | 7 +++ .../gdszy/controller/GdSzyFileController.java | 35 ++++++++++++++ .../docus/server/gdszy/job/YzyMergeJob.java | 48 +++++++++++++++++++ .../gdszy/service/GdSzyFileService.java | 16 +++++++ .../service/impl/GdSzyFileServiceImpl.java | 47 ++++++++++++++++++ src/main/resources/bootstrap.yml | 2 +- src/main/resources/mapper/TBasicMapper.xml | 25 ++++++++++ 8 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/docus/server/archive/entity/BasicExtend.java create mode 100644 src/main/java/com/docus/server/gdszy/controller/GdSzyFileController.java create mode 100644 src/main/java/com/docus/server/gdszy/job/YzyMergeJob.java create mode 100644 src/main/java/com/docus/server/gdszy/service/GdSzyFileService.java create mode 100644 src/main/java/com/docus/server/gdszy/service/impl/GdSzyFileServiceImpl.java diff --git a/src/main/java/com/docus/server/archive/entity/BasicExtend.java b/src/main/java/com/docus/server/archive/entity/BasicExtend.java new file mode 100644 index 0000000..f7771c1 --- /dev/null +++ b/src/main/java/com/docus/server/archive/entity/BasicExtend.java @@ -0,0 +1,26 @@ +package com.docus.server.archive.entity; + +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 病案基本信息 + *

+ * + * @author jersey + * @since 2023-11-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="TBasicExtend对象", description="病案额外信息") +public class BasicExtend implements Serializable { + private static final long serialVersionUID = 1L; + + private String patientId; + + private String preJzh; +} diff --git a/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java index b14e541..40e12e1 100644 --- a/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java @@ -2,6 +2,7 @@ package com.docus.server.archive.mapper; import com.docus.server.archive.entity.AfCollectTask; +import com.docus.server.archive.entity.BasicExtend; import com.docus.server.archive.entity.TBasic; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -32,4 +33,10 @@ public interface TBasicMapper { int updateTaskById(@Param("task") AfCollectTask task); List findFailedTaskPatId(@Param("collectorId") String collectorId,@Param("startDate") String startDateStr); + + List getZyPatientIdsByYzyJzh(@Param("preJzhs") List preJzhs); + + int mergeYzyFile(@Param("yzhPatientId") String yzhPatientId, @Param("zyPatientId") String zyPatientId); + + List getYzyPatientIdFromScanAssort(); } diff --git a/src/main/java/com/docus/server/gdszy/controller/GdSzyFileController.java b/src/main/java/com/docus/server/gdszy/controller/GdSzyFileController.java new file mode 100644 index 0000000..fae89e4 --- /dev/null +++ b/src/main/java/com/docus/server/gdszy/controller/GdSzyFileController.java @@ -0,0 +1,35 @@ +package com.docus.server.gdszy.controller; + +import com.docus.core.util.Func; +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.server.gdszy.service.GdSzyFileService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * @author YongBin Wen + * @date 2024/9/26 9:18 + */ +@RestController +@RequestMapping("/gdszyy") +@Api(tags = "广东省中医文件接口") +public class GdSzyFileController { + @Autowired + private GdSzyFileService gdSzyFileService; + + @PostMapping("/yzyreport/merge") + @ApiOperation("预住院报告合并,传预住院的患者主键") + public CommonResult yzyReportMerge(@RequestBody List patientIds) { + if(Func.isNotEmpty(patientIds)){ + gdSzyFileService.yzyReportMerge(patientIds); + } + return CommonResult.success("合并完成!"); + } +} diff --git a/src/main/java/com/docus/server/gdszy/job/YzyMergeJob.java b/src/main/java/com/docus/server/gdszy/job/YzyMergeJob.java new file mode 100644 index 0000000..8028d5a --- /dev/null +++ b/src/main/java/com/docus/server/gdszy/job/YzyMergeJob.java @@ -0,0 +1,48 @@ +package com.docus.server.gdszy.job; + +import com.docus.core.util.Func; +import com.docus.server.archive.mapper.TBasicMapper; +import com.docus.server.gdszy.service.GdSzyFileService; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author YongBin Wen + * @date 2024/7/12 15:22 + */ + +@Component +@Slf4j +public class YzyMergeJob { + @Autowired + private TBasicMapper tBasicMapper; + + @Autowired + private GdSzyFileService gdSzyFileService; + + /** + * 广东省中医院预住院文件合并根据文件表的更新时间 job + * + * @date 2024/9/26 9:49 + * @author YongBin Wen + */ + @XxlJob("GdSzyYzyMergeJob") + public void gdSzyYzyMergeJob() { + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>广东省中医院,预住院患者文件合并,开始任务!"); + try { + List yzyPatientIds = tBasicMapper.getYzyPatientIdFromScanAssort(); + log.info("文件表 查询到:{} 个预住院患者!", yzyPatientIds.size()); + if (Func.isNotEmpty(yzyPatientIds)) { + gdSzyFileService.yzyReportMerge(yzyPatientIds); + } + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>广东省中医院,预住院患者文件合并,结束任务!"); + } catch (Exception ex) { + log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>>广东省中医院,预住院患者文件合并,任务异常!" + ex.getMessage(), ex); + } + } + +} diff --git a/src/main/java/com/docus/server/gdszy/service/GdSzyFileService.java b/src/main/java/com/docus/server/gdszy/service/GdSzyFileService.java new file mode 100644 index 0000000..3431e9e --- /dev/null +++ b/src/main/java/com/docus/server/gdszy/service/GdSzyFileService.java @@ -0,0 +1,16 @@ +package com.docus.server.gdszy.service; + +import java.util.List; + +/** + * @author YongBin Wen + * @date 2024/9/26 9:22 + */ +public interface GdSzyFileService { + /** + * 预住院报告合并,传预住院的患者主键 + * + * @param patientIds 预住院的患者主键 + */ + void yzyReportMerge(List patientIds); +} diff --git a/src/main/java/com/docus/server/gdszy/service/impl/GdSzyFileServiceImpl.java b/src/main/java/com/docus/server/gdszy/service/impl/GdSzyFileServiceImpl.java new file mode 100644 index 0000000..c5d162a --- /dev/null +++ b/src/main/java/com/docus/server/gdszy/service/impl/GdSzyFileServiceImpl.java @@ -0,0 +1,47 @@ +package com.docus.server.gdszy.service.impl; + +import com.docus.core.util.Func; +import com.docus.server.archive.entity.BasicExtend; +import com.docus.server.archive.entity.TBasic; +import com.docus.server.archive.mapper.TBasicMapper; +import com.docus.server.gdszy.service.GdSzyFileService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author YongBin Wen + * @date 2024/9/26 9:22 + */ +@Service +@Slf4j +public class GdSzyFileServiceImpl implements GdSzyFileService { + @Autowired + private TBasicMapper tBasicMapper; + + @Override + public void yzyReportMerge(List patientIds) { + List yzyBasic = tBasicMapper.getTbasicByPatientIds(patientIds); + if (Func.isEmpty(yzyBasic)) { + return; + } + // 预住院患者信息的 jzh 关联额外表 preJzh,查出对应住院的 patientId,根据预住院和住院的patientId进行文件合并(文件表预住院的 patientId修改为住院 patientId) + List yzyJzh = yzyBasic.stream().map(TBasic::getJzh).collect(Collectors.toList()); + List zyBasicExtend = tBasicMapper.getZyPatientIdsByYzyJzh(yzyJzh); + if (Func.isEmpty(zyBasicExtend)) { + return; + } + Map yzyBasicJzhPatientIdMap = yzyBasic.stream().collect(Collectors.toMap(TBasic::getJzh, TBasic::getPatientId)); + for (BasicExtend zyExtend : zyBasicExtend) { + String preJzh = zyExtend.getPreJzh(); + String yzhPatientId = yzyBasicJzhPatientIdMap.get(preJzh); + String zyPatientId = zyExtend.getPatientId(); + int number = tBasicMapper.mergeYzyFile(yzhPatientId, zyPatientId); + log.info("预住院文件patientId:{} 合并到住院patientId: {} ,影响文件数量:{} 个", yzhPatientId, zyPatientId, number); + } + } +} diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 845c6f9..1857900 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -126,7 +126,7 @@ xxl: appname: docus-collect-file-data address: ip: - port: 19000 + port: 19010 logretentiondays: 30 logpath: D:/xxl-job/docus-collect-file-data diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 60f9af3..9b3e04d 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -24,6 +24,10 @@ update docus_archivefile.af_collect_task set end_time=#{dateTime} where patient_id=#{patientId} + + update docus_archivefile.t_scan_assort set patient_id=#{zyPatientId},assort_id = 'Wiw213woq412awqe42' where patient_id=#{yzhPatientId} + + delete from docus_archivefile.af_collect_task where patient_id=#{patientId} and sysflag=#{collectorId} @@ -72,5 +76,26 @@ and state not in('3','4') group by patient_id + +