From 82044fbc3345d776d4fbf8e867527fd6c7b9bd51 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Tue, 7 Nov 2023 14:31:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8CJZH=20=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../collect/collector/LisSystemCollector.java | 111 ++++++++++++++++-- .../collect/controller/CollectController.java | 4 +- .../test/TestCollectController.java | 29 ++++- .../com/docus/server/collect/entity/Jzh.java | 21 ++++ .../collect/job/LisSystemCollectJob.java | 64 +++++++++- 5 files changed, 211 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/docus/server/collect/entity/Jzh.java diff --git a/src/main/java/com/docus/server/collect/collector/LisSystemCollector.java b/src/main/java/com/docus/server/collect/collector/LisSystemCollector.java index 156e3a0..d0ae50e 100644 --- a/src/main/java/com/docus/server/collect/collector/LisSystemCollector.java +++ b/src/main/java/com/docus/server/collect/collector/LisSystemCollector.java @@ -1,6 +1,7 @@ package com.docus.server.collect.collector; import com.docus.core.util.Func; +import com.docus.server.collect.entity.Jzh; import com.docus.server.collect.entity.TBasic; import com.docus.server.collect.enums.DownWayEnum; import com.docus.server.collect.service.FileReportService; @@ -43,14 +44,23 @@ public class LisSystemCollector { /** * 采集检验报告的参数 * - * @param basic 患者信息 - * @param beginDateTime 报告开始时间 - * @param endDateTime 报告结束时间 + * @param basic 患者信息 */ - public void collect(TBasic basic, String beginDateTime, String endDateTime) { + public void collect(TBasic basic) { + String jzh = basic.getJzh(); + String admissDate = basic.getAdmissDate(); + String disDate = basic.getDisDate(); + if (Func.isBlank(admissDate) || Func.isBlank(disDate)) { + log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", jzh); + return; + } + // 报告的开始和结束时间就是入院时间 和 出院时间+15天 + String beginDateTime = admissDate; + LocalDateTime endLocalDateTime = Func.parseDateTime(disDate).plusDays(15L); + String endDateTime = Func.formatDateTime(endLocalDateTime); // 普通的检验报告和 微生物检验报告 - String collectDataNormal = collectData(basic, beginDateTime, endDateTime, 0); - String collectDataMtf = collectData(basic, beginDateTime, endDateTime, 1); + String collectDataNormal = collectData(new Jzh(jzh), beginDateTime, endDateTime, 0); + String collectDataMtf = collectData(new Jzh(jzh), beginDateTime, endDateTime, 1); List reportFileInfoDTOList = LisSystemCollectConverter.convert(collectDataNormal); List reportFileInfoDtoList2 = LisSystemCollectConverter.convert(collectDataMtf); reportFileInfoDTOList.addAll(reportFileInfoDtoList2); @@ -65,6 +75,11 @@ public class LisSystemCollector { } } + + + + + private boolean isBelongToPatient(ReportFileInfoDTO reportFileInfoDTO, TBasic basic) { // todo 验证报告是否属于患者,暂时描述说查询条件是患者唯一,不需要实现 return true; @@ -79,7 +94,7 @@ public class LisSystemCollector { * @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通 * @return 检验报告结果 */ - public String collectData(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) { + private String collectData(TBasic basic, String beginDateTime, String endDateTime, int microbeTestFlag) { String contextWorkId = Func.randomUUID(); Object[] params = createQrParams(basic, beginDateTime, endDateTime, microbeTestFlag); log.info("[{}]:LIS检验报告采集地址:{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params)); @@ -150,7 +165,87 @@ public class LisSystemCollector { } - private static class LisSystemCollectConverter { + /** + * 查询检验报告 + * + * @param jzh 患者信息jzh + * @param beginDateTime 报告开始时间 入院时间 + * @param endDateTime 报告结束时间 出院时间 + * @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通 + * @return 检验报告结果 + */ + public String collectData(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) { + String contextWorkId = Func.randomUUID(); + Object[] params = createQrParams(jzh, beginDateTime, endDateTime, microbeTestFlag); + log.info("[{}]:LIS检验报告采集地址:{},方法:{},命名空间:{},参数:{}", contextWorkId, url, method, namespaceUri, Func.toJson(params)); + String result = JaxWsDynamicClientUtil.send(url, namespaceUri, method, params); + log.info("[{}]:LIS检验报告采集结果为:{}", contextWorkId, result); + return result; + } + + /** + * 查询检验报告的ws参数 + * + * @param jzh 患者信息jzh + * @param beginDateTime 报告开始时间 + * @param endDateTime 报告结束时间 + * @param microbeTestFlag 查细菌等微生物检验报告 1,空和0 是普通 + * @return 检验报告 + */ + private Object[] createQrParams(Jzh jzh, String beginDateTime, String endDateTime, int microbeTestFlag) { + String param1 = "" + + " " + + " 1" + + " WZHBAGL" + + " WZHBAGL_1127" + + " BS03102" + + " BS03102S51001" + + " GZ" + + " " + + " " + + " BS03102" + + " BS03102S51001" + + " S51" + + " S00" + + " " + Func.formatDateTime(LocalDateTime.now()) + "" + + " " + + " " + + " 0" + + " 500" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + jzh.getJzh() + "" + + " " + + " " + + " " + microbeTestFlag + "" + + " " + beginDateTime + "" + + " " + endDateTime + "" + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + " " + + ""; + + return new Object[]{param1}; + } + + + public static class LisSystemCollectConverter { /** * 检验系统报告采集数据转换文件上报信息 diff --git a/src/main/java/com/docus/server/collect/controller/CollectController.java b/src/main/java/com/docus/server/collect/controller/CollectController.java index 8814a34..2160613 100644 --- a/src/main/java/com/docus/server/collect/controller/CollectController.java +++ b/src/main/java/com/docus/server/collect/controller/CollectController.java @@ -43,7 +43,7 @@ public class CollectController implements GdSzyCollectServiceApi { log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", jzh); return CommonResult.failed("采集失败,患者住院或者出院时间为空!"); } - lisSystemCollector.collect(tBasic, tBasic.getAdmissDate(), tBasic.getDisDate()); + lisSystemCollector.collect(tBasic); return CommonResult.success("采集完成!"); } @@ -72,7 +72,7 @@ public class CollectController implements GdSzyCollectServiceApi { log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", basic.getJzh()); continue; } - lisSystemCollector.collect(basic, basic.getAdmissDate(), basic.getDisDate()); + lisSystemCollector.collect(basic); } } } diff --git a/src/main/java/com/docus/server/collect/controller/test/TestCollectController.java b/src/main/java/com/docus/server/collect/controller/test/TestCollectController.java index bce20cf..e58d9f0 100644 --- a/src/main/java/com/docus/server/collect/controller/test/TestCollectController.java +++ b/src/main/java/com/docus/server/collect/controller/test/TestCollectController.java @@ -1,12 +1,22 @@ package com.docus.server.collect.controller.test; +import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.collect.collector.LisSystemCollector; +import com.docus.server.collect.entity.Jzh; +import com.docus.server.collect.service.dto.ReportFileInfoDTO; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + /** * @author WYBDEV */ @@ -18,9 +28,18 @@ public class TestCollectController { @Autowired private LisSystemCollector lisSystemCollector; -// @ApiOperation("采集测试 LIS 采集接口") -// @GetMapping("/lis") -// public CommonResult lisSystemCollect() { -// return CommonResult.success(lisSystemCollector.collectData(null, null, null)); -// } + @ApiOperation("采集测试 LIS 采集接口") + @GetMapping("/lis") + public CommonResult> lisSystemCollect(@RequestParam("jzh") String jzh, @RequestParam("beginDateTime") String beginDateTime, @RequestParam("endDateTime") String endDateTime ) { + String normal = lisSystemCollector.collectData(new Jzh(jzh), beginDateTime, endDateTime, 0); + String mt = lisSystemCollector.collectData(new Jzh(jzh), beginDateTime, endDateTime, 1); + List normalParse = LisSystemCollector.LisSystemCollectConverter.convert(normal); + List mtParse = LisSystemCollector.LisSystemCollectConverter.convert(mt); + Map map = new HashMap<>(); + map.put("普通报告",normal); + map.put("细菌微生物报告",mt); + map.put("普通报告解析",normalParse); + map.put("细菌微生物报告解析",mtParse); + return CommonResult.success(map); + } } diff --git a/src/main/java/com/docus/server/collect/entity/Jzh.java b/src/main/java/com/docus/server/collect/entity/Jzh.java new file mode 100644 index 0000000..386fedc --- /dev/null +++ b/src/main/java/com/docus/server/collect/entity/Jzh.java @@ -0,0 +1,21 @@ +package com.docus.server.collect.entity; + +import java.util.Objects; + +/** + * t_basic jzh 字段 + * + * @author wyb + */ +public class Jzh { + private final String jzh; + + public Jzh(String jzh) { + Objects.requireNonNull(jzh,"记账号为空!"); + this.jzh = jzh; + } + + public String getJzh() { + return jzh; + } +} diff --git a/src/main/java/com/docus/server/collect/job/LisSystemCollectJob.java b/src/main/java/com/docus/server/collect/job/LisSystemCollectJob.java index 59b50eb..ee4cfd5 100644 --- a/src/main/java/com/docus/server/collect/job/LisSystemCollectJob.java +++ b/src/main/java/com/docus/server/collect/job/LisSystemCollectJob.java @@ -1,9 +1,21 @@ package com.docus.server.collect.job; +import cn.hutool.core.collection.CollUtil; +import com.docus.core.util.Func; +import com.docus.server.collect.collector.LisSystemCollector; +import com.docus.server.collect.dto.TBasicQrDto; +import com.docus.server.collect.entity.TBasic; +import com.docus.server.collect.infrastructure.dao.DownloadTaskDao; +import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.Arrays; +import java.util.List; + /** * 检验报告采集 * @author wyb @@ -11,10 +23,56 @@ import org.springframework.stereotype.Component; @Component @Slf4j public class LisSystemCollectJob { - @XxlJob("LisSystemCollectJob") - public void lisSystemCollectJob(){ -// lisSystemCollector.collect(null,null,null); + @Resource + private LisSystemCollector lisSystemCollector; + @Resource + private DownloadTaskDao downloadTaskDao; + + /** + * 根据出院时间进行Lis报告采集 + */ + @XxlJob("LisSystemCollectOnDisDateJob") + public void lisSystemCollectOnDisDateJob(){ + log.error(" =================================== 根据出院时间进行Lis报告采集(LisSystemCollectOnDisDateJob) START ==================================="); + String jobParam = XxlJobHelper.getJobParam(); + int[] defaultDisDays = {15}; + int[] finalDisDays; + try { + if (Func.isBlank(jobParam)) { + finalDisDays = defaultDisDays; + } else { + String[] dayStrs = jobParam.split(","); + int length = dayStrs.length; + finalDisDays = new int[length]; + for (int i = 0; i < length; i++) { + finalDisDays[i] = Integer.parseInt(dayStrs[i]); + } + } + } catch (Exception ex) { + log.error("LIS系统采集,job参数解析错误,使用默认出院" + Arrays.toString(defaultDisDays) + "天采集!", ex); + finalDisDays = defaultDisDays; + } + LocalDate nowLocalDate = LocalDate.now(); + for (int day : finalDisDays) { + LocalDate localDate = nowLocalDate.plusDays(-day); + String disDateStart=localDate+" 00:00:00"; + String disDateEnd=localDate+" 23:59:59"; + TBasicQrDto qrDto = new TBasicQrDto(); + qrDto.setDisDateStart(disDateStart); + qrDto.setDisDateEnd(disDateEnd); + // 直接查一万条 + List tBasics = downloadTaskDao.pageBasicInfo(qrDto, 0, 10000); + if(CollUtil.isNotEmpty(tBasics)){ + for (TBasic basic : tBasics) { + lisSystemCollector.collect(basic); + } + } + tBasics.clear(); + } + + log.error(" =================================== 根据出院时间进行Lis报告采集(LisSystemCollectOnDisDateJob) END ==================================="); + } }