From b24065634c2a4cd5fd72278bd95b8dacd3066c2e Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Wed, 19 Apr 2023 17:34:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E8=B4=B9=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E7=9A=84job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/ApplicationBusinessConfig.java | 2 + .../report/config/SdRyReportQueryConfig.java | 5 + .../controller/ReportDownController.java | 52 +++++--- .../docus/server/report/job/ReportJob.java | 116 ++++++++++++++---- .../report/noviwtask/NoViewTaskService.java | 41 +++++++ .../noviwtask/dto/ReportDownTwoDto.java | 27 ++++ .../noviwtask/dto/ReportHospitalTwoDto.java | 25 ++++ .../noviwtask/dto/ReportPatientTwoDto.java | 18 +++ .../noviwtask/dto/ReportTaskTwoDto.java | 19 +++ src/main/resources/bootstrap.yml | 8 +- 10 files changed, 273 insertions(+), 40 deletions(-) create mode 100644 src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java create mode 100644 src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java create mode 100644 src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java create mode 100644 src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java create mode 100644 src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java diff --git a/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java b/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java index c4d05fd..a77c26d 100644 --- a/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java +++ b/src/main/java/com/docus/server/report/config/ApplicationBusinessConfig.java @@ -15,4 +15,6 @@ import org.springframework.stereotype.Component; public class ApplicationBusinessConfig { @Value("${docus.report.downurl:}") private String downUrl; + @Value("${docus.task.getTaskUrl:}") + private String getTaskUrl; } diff --git a/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java b/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java index 0820ea8..ff65da1 100644 --- a/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java +++ b/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java @@ -32,6 +32,9 @@ public class SdRyReportQueryConfig { private String reportQueryLisAccessKey; @Value("${sdry.report-query-url.lis.interval:1000}") private int reportQueryLisInterval; + @Value("${sdry.report-query-url.lis.collectorId}") + private String reportQueryLisCollectorId; + @Value("${sdry.report-query-url.inspect.url:}") private String reportQueryInspectUrl; @@ -43,4 +46,6 @@ public class SdRyReportQueryConfig { private String reportQueryInspectAccessKey; @Value("${sdry.report-query-url.inspect.interval:1000}") private int reportQueryInspectInterval; + @Value("${sdry.report-query-url.inspect.collectorId}") + private String reportQueryInspectCollectorId; } diff --git a/src/main/java/com/docus/server/report/controller/ReportDownController.java b/src/main/java/com/docus/server/report/controller/ReportDownController.java index f403ca1..99205dd 100644 --- a/src/main/java/com/docus/server/report/controller/ReportDownController.java +++ b/src/main/java/com/docus/server/report/controller/ReportDownController.java @@ -6,6 +6,7 @@ import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.collection.entity.TBasic; import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.job.ReportJob; +import com.docus.server.report.noviwtask.NoViewTaskService; import com.docus.server.report.service.ReportService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -31,21 +32,28 @@ public class ReportDownController { private TBasicMapper tBasicMapper; @Resource ReportJob reportJob; +@Resource +private NoViewTaskService noViewTaskService; - @ApiOperation(value = "report lis job 测试") - @PostMapping("/lisreportJobTest") - public CommonResult LisreportJobTest(){ - reportJob.sdRyLisReportQueryJob(); - return CommonResult.success("成功"); + @ApiOperation(value = "获取任务测试") + @PostMapping("/getTaskTest") + public CommonResult getTaskTest(@RequestParam("collectorId") String collectorId){ + return CommonResult.success(noViewTaskService.getTaskByCollectorId(collectorId)); } - @ApiOperation(value = "report inspect job 测试") - @PostMapping("/inspectReportJobTest") - public CommonResult inspectReportJobTest(){ - reportJob.sdRyInspectReportQueryJob(); + @ApiOperation(value = " lis 检验 采集 job 测试") + @GetMapping("/sdRyLisCollectJob") + public CommonResult sdRyLisCollectJob(){ + reportJob.sdRyLisCollectJob(); return CommonResult.success("成功"); } + @ApiOperation(value = " inspect 检查 采集 job 测试") + @GetMapping("/sdRyInspectCollectJob") + public CommonResult sdRyInspectCollectJob(){ + reportJob.sdRyInspectCollectJob(); + return CommonResult.success("成功"); + } @ApiOperation(value = " inspectReport 根据病案主键补偿") @PostMapping("/inspectReportMakeup") @@ -76,7 +84,7 @@ public class ReportDownController { } - @ApiOperation(value = "根据任务id补偿报告下载") + @ApiOperation(value = "根据任务id补偿报告下载(接收推送的报告)") @PostMapping("/makeupReportByTaskIds") public CommonResult makeupReportByTaskIds(@RequestBody List taskIds){ if (Func.isEmpty(taskIds)) { @@ -92,7 +100,23 @@ public class ReportDownController { } - @ApiOperation(value = "inspect检查报告测试地址") + + @ApiOperation(value = "report lis job 测试",hidden = true) + @PostMapping("/lisreportJobTest") + public CommonResult LisreportJobTest(){ + reportJob.sdRyLisReportQueryJob(); + return CommonResult.success("成功"); + } + + @ApiOperation(value = "report inspect job 测试",hidden = true) + @PostMapping("/inspectReportJobTest") + public CommonResult inspectReportJobTest(){ + reportJob.sdRyInspectReportQueryJob(); + return CommonResult.success("成功"); + } + + + @ApiOperation(value = "inspect检查报告测试地址",hidden = true) @PostMapping("/inspectTest/query") public JSONObject inspectTest(@RequestParam("uuid") String uuid, @RequestParam("action") String action, @@ -262,7 +286,7 @@ public class ReportDownController { } - @ApiOperation(value = "inspect检查报告测试地址") + @ApiOperation(value = "inspect检查报告测试地址 ",hidden = true) @PostMapping("/inspectTestNoResult/query") public JSONObject inspectTestNoResult(@RequestParam("uuid") String uuid, @RequestParam("action") String action, @@ -290,7 +314,7 @@ public class ReportDownController { - @ApiOperation(value = "lis检验报告测试地址") + @ApiOperation(value = "lis检验报告测试地址" ,hidden = true) @PostMapping("/lisTest/query") public JSONObject lisTest(@RequestParam("uuid") String uuid, @RequestParam("action") String action, @@ -420,7 +444,7 @@ public class ReportDownController { - @ApiOperation(value = "lis检验报告测试地址") + @ApiOperation(value = "lis检验报告测试地址",hidden = true) @PostMapping("/lisTestNoResult/query") public JSONObject lisTestNoResult(@RequestParam("uuid") String uuid, @RequestParam("action") String action, diff --git a/src/main/java/com/docus/server/report/job/ReportJob.java b/src/main/java/com/docus/server/report/job/ReportJob.java index 3f63a7a..681f5de 100644 --- a/src/main/java/com/docus/server/report/job/ReportJob.java +++ b/src/main/java/com/docus/server/report/job/ReportJob.java @@ -17,6 +17,8 @@ import com.docus.server.report.entity.AfJobTime; import com.docus.server.report.entity.AfReportRecord; import com.docus.server.report.mapper.AfJobTimeMapper; import com.docus.server.report.mapper.AfReportRecordMapper; +import com.docus.server.report.noviwtask.NoViewTaskService; +import com.docus.server.report.noviwtask.dto.ReportDownTwoDto; import com.docus.server.report.service.ReportService; import com.docus.server.report.util.IdUtil; import com.docus.server.report.util.XmlUtil; @@ -31,10 +33,7 @@ import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; @@ -60,11 +59,62 @@ public class ReportJob { private IdService idService; @Resource private SdRyReportQueryConfig sdRyReportQueryConfig; + @Resource + private NoViewTaskService noViewTaskService; + + @XxlJob("SdRyLisCollectJob") + public void sdRyLisCollectJob() { + String reportQueryLisCollectorId = sdRyReportQueryConfig.getReportQueryLisCollectorId(); + ReportDownTwoDto reportDownTwoDto = noViewTaskService.getTaskByCollectorId(reportQueryLisCollectorId); + if (reportDownTwoDto == null) { + return; + } + String patientId = reportDownTwoDto.getPatient().getPatientId(); + List basicList = tBasicMapper.selectBasicListByPatientIds(Collections.singletonList(patientId)); + if (basicList.isEmpty()) { + log.warn("patientId {} 未找到基础数据!", patientId); + } + List reportDtoList = collectLisReport(basicList.get(0)); + + reportDtoList.forEach(reportDto -> { + reportDto.setSysFlag(reportQueryLisCollectorId); + reportDto.setTaskId(reportDownTwoDto.getTasks().get(0).getTaskId()); + reportService.report(reportDto); + }); + + } + + /** + * 检查报告查询 + */ + @XxlJob("SdRyInspectCollectJob") + public void sdRyInspectCollectJob() { + String reportQueryInspectCollectorId = sdRyReportQueryConfig.getReportQueryInspectCollectorId(); + ReportDownTwoDto reportDownTwoDto = noViewTaskService.getTaskByCollectorId(reportQueryInspectCollectorId); + if (reportDownTwoDto == null) { + return; + } + String patientId = reportDownTwoDto.getPatient().getPatientId(); + List basicList = tBasicMapper.selectBasicListByPatientIds(Collections.singletonList(patientId)); + if (basicList.isEmpty()) { + log.warn("patientId {} 未找到基础数据!", patientId); + } + List reportDtoList = collectInspectReport(basicList.get(0)); + + reportDtoList.forEach(reportDto -> { + reportDto.setSysFlag(reportQueryInspectCollectorId); + reportDto.setTaskId(reportDownTwoDto.getTasks().get(0).getTaskId()); + reportService.report(reportDto); + }); + + } + /** - * Lis 检验报告查询,查询入院时间前 3天的检验报告 + * Lis 检验报告查询 更换了无视图消费 {@link com.docus.server.report.job.ReportJob#sdRyLisCollectJob } */ @XxlJob("SdRyLisReportQueryJob") + @Deprecated public void sdRyLisReportQueryJob() { // 顺德人医 Lis 检验报告查询 final String jobType = "SdRyLisReport"; @@ -102,24 +152,11 @@ public class ReportJob { log.info("LIS检验报告报告查询 任务结束了,本次查询出院时间段 {} - {}", "", ""); } - public void queryLisReport(List basicList) { - for (TBasic tBasic : basicList) { - List reportDtoList = getLisReportList(tBasic); - if (reportDtoList.isEmpty()) { - log.warn("病案主键 patientId {} 未查询 LIS 检验报告!", tBasic.getPatientId()); - continue; - } - reportDtoList.forEach(reportDto -> { - reportService.report(reportDto); - }); - } - } - - /** - * 检查报告查询,查询入院时间前 3天的检验报告 + * 检查报告查询,更换了无视图消费 {@link com.docus.server.report.job.ReportJob#SdRyInspectCollectJob } */ @XxlJob("SdRyInspectReportQueryJob") + @Deprecated public void sdRyInspectReportQueryJob() { // 顺德人医 检查报告查询 final String jobType = "SdRyInspectReport"; @@ -156,6 +193,37 @@ public class ReportJob { log.info("检查报告报告查询 任务结束了,本次查询出院时间段 {} - {}", "", ""); } + public List collectLisReport(TBasic tBasic) { + List reportDtoList = getLisReportList(tBasic); + if (reportDtoList.isEmpty()) { + log.warn("病案主键 patientId {} 未查询 LIS 检验报告!", tBasic.getPatientId()); + } + return reportDtoList; + } + + public List collectInspectReport(TBasic basic) { + List reportDtoList = getInspectReportList(basic); + if (reportDtoList.isEmpty()) { + log.warn("病案主键 patientId {} 未查询 检查报告!", basic.getPatientId()); + } + return reportDtoList; + } + + + + public void queryLisReport(List basicList) { + for (TBasic tBasic : basicList) { + List reportDtoList = getLisReportList(tBasic); + if (reportDtoList.isEmpty()) { + log.warn("病案主键 patientId {} 未查询 LIS 检验报告!", tBasic.getPatientId()); + continue; + } + reportDtoList.forEach(reportDto -> { + reportService.report(reportDto); + }); + } + } + public void queryInspectReport(List basicList) { for (TBasic tBasic : basicList) { List reportDtoList = getInspectReportList(tBasic); @@ -238,13 +306,13 @@ public class ReportJob { String orgCode = "4560886379"; Date admissDate = tBasic.getAdmissDate(); Date disDate = tBasic.getDisDate(); - if (admissDate == null || disDate==null) { + if (admissDate == null || disDate == null) { throw new BaseException("patientId:" + tBasic.getPatientId() + "的入院时间为空"); } ZoneId zoneId = ZoneId.systemDefault(); Instant adminssDateInstant = admissDate.toInstant(); Instant disDateInstant = disDate.toInstant(); - sdRyReportPatientId="m"+sdRyReportPatientId; + sdRyReportPatientId = "m" + sdRyReportPatientId; // 开始时间去入院前三天 LocalDate admissLocalDate = adminssDateInstant.atZone(zoneId).toLocalDate(); LocalDate startTimeLocalDate = admissLocalDate.plusDays(-3); @@ -474,13 +542,13 @@ public class ReportJob { String orgCode = "4560886379"; Date admissDate = tBasic.getAdmissDate(); Date disDate = tBasic.getDisDate(); - if (admissDate == null || disDate==null) { + if (admissDate == null || disDate == null) { throw new BaseException("patientId:" + tBasic.getPatientId() + "的入院时间为空"); } ZoneId zoneId = ZoneId.systemDefault(); Instant adminssDateInstant = admissDate.toInstant(); Instant disDateInstant = disDate.toInstant(); - sdRyReportPatientId="m"+sdRyReportPatientId; + sdRyReportPatientId = "m" + sdRyReportPatientId; // 开始时间去入院前三天 LocalDate admissLocalDate = adminssDateInstant.atZone(zoneId).toLocalDate(); LocalDate startTimeLocalDate = admissLocalDate.plusDays(-3); diff --git a/src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java b/src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java new file mode 100644 index 0000000..430e340 --- /dev/null +++ b/src/main/java/com/docus/server/report/noviwtask/NoViewTaskService.java @@ -0,0 +1,41 @@ +package com.docus.server.report.noviwtask; + +import cn.hutool.http.HttpUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.web.api.CommonResult; +import com.docus.infrastructure.web.api.ResultCode; +import com.docus.server.report.config.ApplicationBusinessConfig; +import com.docus.server.report.noviwtask.dto.ReportDownTwoDto; +import com.fasterxml.jackson.core.type.TypeReference; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * 无视图任务服务 + * @author wyb + */ +@Component +@Slf4j +public class NoViewTaskService { + @Resource + private ApplicationBusinessConfig applicationBusinessConfig; + public ReportDownTwoDto getTaskByCollectorId(String collectorId){ + String getTaskUrl = applicationBusinessConfig.getGetTaskUrl(); + if(Func.isBlank(getTaskUrl)){ + log.warn("获取任务信息地址未配置!"); + return null; + } + getTaskUrl = applicationBusinessConfig.getGetTaskUrl() + "?collectid=" + collectorId; + String result = HttpUtil.get(getTaskUrl); + CommonResult reportDownTwoDtoCommonResult = Func.readJson(result, new TypeReference>() { + }); + if(reportDownTwoDtoCommonResult==null || reportDownTwoDtoCommonResult.getCode().equals(ResultCode.FAILED.getCode()) || reportDownTwoDtoCommonResult.getData()==null){ + log.warn("未查询到任务数据!"); + return null; + } + return reportDownTwoDtoCommonResult.getData(); + } + +} diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java b/src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java new file mode 100644 index 0000000..97bf2cd --- /dev/null +++ b/src/main/java/com/docus/server/report/noviwtask/dto/ReportDownTwoDto.java @@ -0,0 +1,27 @@ +package com.docus.server.report.noviwtask.dto; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +@JsonIgnoreProperties(ignoreUnknown = true) +public class ReportDownTwoDto { + @ApiModelProperty(value = "档案编号") + private String patientId; + @ApiModelProperty(value = "记账号") + private String jzh; + @ApiModelProperty(value = "档案类型") + private String recordType; + @ApiModelProperty(value = "档案时间") + private String createTime; + @ApiModelProperty(value = "患者信息") + private ReportPatientTwoDto patient =new ReportPatientTwoDto(); + @ApiModelProperty(value = "住院信息") + private List hospitals = new ArrayList<>(); + @ApiModelProperty(value = "任务信息") + private List tasks = new ArrayList<>(); +} diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java b/src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java new file mode 100644 index 0000000..62254ae --- /dev/null +++ b/src/main/java/com/docus/server/report/noviwtask/dto/ReportHospitalTwoDto.java @@ -0,0 +1,25 @@ +package com.docus.server.report.noviwtask.dto; + + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * + */ +@Data +public class ReportHospitalTwoDto { + + @ApiModelProperty(value = "患者id") + private String patientId; + @ApiModelProperty(value = "住院次数") + private Integer admissTimes; + @ApiModelProperty(value = "住院日期") + private String admissDate; + @ApiModelProperty(value = "出院日期") + private String disDate; + @ApiModelProperty(value = "出院科室名称") + private String disDeptName; + @ApiModelProperty(value = "卡号") + private String admissId; +} diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java b/src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java new file mode 100644 index 0000000..faa5e7c --- /dev/null +++ b/src/main/java/com/docus/server/report/noviwtask/dto/ReportPatientTwoDto.java @@ -0,0 +1,18 @@ +package com.docus.server.report.noviwtask.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 上报打印 患者信息 + */ +@Data +public class ReportPatientTwoDto { + + @ApiModelProperty(value = "住院号/就诊号") + private String inpatientNo; + @ApiModelProperty(value = "患者姓名") + private String name; + @ApiModelProperty(value = "id号") + private String patientId; +} diff --git a/src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java b/src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java new file mode 100644 index 0000000..e558d55 --- /dev/null +++ b/src/main/java/com/docus/server/report/noviwtask/dto/ReportTaskTwoDto.java @@ -0,0 +1,19 @@ +package com.docus.server.report.noviwtask.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * + */ +@Data +public class ReportTaskTwoDto { + @ApiModelProperty(value = "采集器标识") + private String collectorId; + @ApiModelProperty(value = "任务id") + private Long taskId; + @ApiModelProperty(value = "患者id") + private String patientId; + +} diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 759067f..c9e32ac 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -55,15 +55,17 @@ sdry: report-query-url: # lis检验报告地址 和文件分段 lis: - url: http://127.0.0.1:9311/report/makeup/lisTest assortId: lis + collectorId: 4 + url: http://127.0.0.1:9311/report/makeup/lisTest action: lisac accessKey: lisaskey interval: 1000 # 检查报告地址 inspect: - url: http://127.0.0.1:9311/report/makeup/inspectTest assortId: inspect + collectorId: 3 + url: http://127.0.0.1:9311/report/makeup/inspectTest action: inspectac accessKey: inspectaskey interval: 1000 @@ -78,6 +80,8 @@ docus: defpwd: fd29cd53ec12616e5f36b77d4afffbff report: downurl: http://localhost:9291/api/downplatform/report + task: + getTaskUrl: http://localhost:9296/api/noviewtask/GetTask mybatis-plus: configuration: map-underscore-to-camel-case: true