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
+
+