From 6d68f707c45d37b39c96595c89af288aff053966 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Mon, 28 Apr 2025 15:15:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B9=BF=E5=B7=9E=E5=B8=82=E4=B8=80?= =?UTF-8?q?=E6=A3=80=E9=AA=8C=E6=8A=A5=E5=91=8A=E5=90=8C=E6=AD=A5job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/docus/demo/facade/IWebService.java | 10 +++ .../demo/job/GzFirstHospBasicSyncJob.java | 35 ++++++---- .../demo/job/GzFirstLabReportSyncJob.java | 66 +++++++++++++++++++ .../docus/demo/mapper/mysql/BasicMapper.java | 4 ++ .../docus/demo/service/WebServiceImpl.java | 2 +- .../resources/mapper/mysql/BasicMapper.xml | 22 +++++++ 6 files changed, 125 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java diff --git a/src/main/java/com/docus/demo/facade/IWebService.java b/src/main/java/com/docus/demo/facade/IWebService.java index e7f0b1a..44df8c9 100644 --- a/src/main/java/com/docus/demo/facade/IWebService.java +++ b/src/main/java/com/docus/demo/facade/IWebService.java @@ -3,6 +3,7 @@ package com.docus.demo.facade; import com.docus.demo.dto.SyncBasicDataDto; import com.docus.demo.dto.SyncLabReportDto; import com.docus.demo.entity.CommonResult; +import com.docus.demo.entity.Tbasic; public interface IWebService { @@ -10,4 +11,13 @@ public interface IWebService { CommonResult syncInspection(SyncBasicDataDto syncBasicDataDto); void syncLabReport(SyncLabReportDto syncLabReportDto); + + /** + * 同步检验图片方法 + * + * @param tbasic 患者基础数据 + * @param startDate 报告查询时间开始时间,格式 yyyy-MM-dd HH:mm:ss + * @param endDate 报告查询时间结束时间,格式 yyyy-MM-dd HH:mm:ss + */ + void syncInspection(Tbasic tbasic, String startDate, String endDate); } diff --git a/src/main/java/com/docus/demo/job/GzFirstHospBasicSyncJob.java b/src/main/java/com/docus/demo/job/GzFirstHospBasicSyncJob.java index 382bf35..2875259 100644 --- a/src/main/java/com/docus/demo/job/GzFirstHospBasicSyncJob.java +++ b/src/main/java/com/docus/demo/job/GzFirstHospBasicSyncJob.java @@ -9,6 +9,7 @@ import org.springframework.stereotype.Component; import java.time.LocalDate; import java.time.temporal.TemporalAdjusters; +import java.util.concurrent.atomic.AtomicBoolean; /** * @author YongBin Wen @@ -20,22 +21,30 @@ public class GzFirstHospBasicSyncJob { @Autowired private ISyncBasicDataService syncBasicDataService; + private AtomicBoolean isRunning = new AtomicBoolean(false); - @Scheduled(cron = "0 0 0/12 * * ?") + @Scheduled(cron = "0 0 3/12 * * ?") public void syncOneMonthData() { - LocalDate today = LocalDate.now(); - LocalDate firstDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.firstDayOfMonth()); - SyncBasicDataDto dto = new SyncBasicDataDto(); - dto.setStartDate(firstDayOfLastMonth.toString()); - dto.setEndDate(today.toString()); - dto.setLimit(1000); - log.info("广州市第一人民医院,同步省厅基础数据,日期:{} —— {}", firstDayOfLastMonth, today); - try { - syncBasicDataService.syncBasicData(dto); - log.info("广州市第一人民医院,同步省厅基础数据,日期:" + firstDayOfLastMonth + "—— " + today + ",同步完成!"); - } catch (Exception ex) { - log.info("广州市第一人民医院,同步省厅基础数据,日期:" + firstDayOfLastMonth + "—— " + today + ",出现异常:" + ex.getMessage(), ex); + if (isRunning.compareAndSet(false, true)) { + LocalDate today = LocalDate.now(); + LocalDate firstDayOfLastMonth = today.minusMonths(1).with(TemporalAdjusters.firstDayOfMonth()); + SyncBasicDataDto dto = new SyncBasicDataDto(); + dto.setStartDate(firstDayOfLastMonth.toString()); + dto.setEndDate(today.toString()); + dto.setLimit(1000); + log.info("广州市第一人民医院,同步省厅基础数据,日期:{} —— {}", firstDayOfLastMonth, today); + try { + syncBasicDataService.syncBasicData(dto); + log.info("广州市第一人民医院,同步省厅基础数据,日期:" + firstDayOfLastMonth + "—— " + today + ",同步完成!"); + } catch (Exception ex) { + log.info("广州市第一人民医院,同步省厅基础数据,日期:" + firstDayOfLastMonth + "—— " + today + ",出现异常:" + ex.getMessage(), ex); + } finally { + isRunning.set(false); + } + } else { + log.warn("广州市第一人民医院,同步省厅基础数据正在调度!"); } + } } diff --git a/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java b/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java new file mode 100644 index 0000000..f42393e --- /dev/null +++ b/src/main/java/com/docus/demo/job/GzFirstLabReportSyncJob.java @@ -0,0 +1,66 @@ +package com.docus.demo.job; + +import cn.hutool.core.collection.CollUtil; +import com.docus.demo.entity.Tbasic; +import com.docus.demo.facade.IWebService; +import com.docus.demo.mapper.mysql.BasicMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * @author YongBin Wen + * @date 2025/4/23 0023 17:13 + */ +@Component +@Slf4j +public class GzFirstLabReportSyncJob { + + @Autowired + private IWebService iWebService; + + @Resource + private BasicMapper basicMapper; + + private AtomicBoolean isRunning = new AtomicBoolean(false); + + @Scheduled(cron = "0 0 0/8 * * ?") + public void syncOneMonthData() { + LocalDate today = LocalDate.now(); + String startDisDateTime = "2018-01-01 00:00:00"; + String startDateTime = "2018-01-01 00:00:00"; + String endDateTime = today + " 23:59:59"; + if (isRunning.compareAndSet(false, true)) { + try { + int offset = 0; + int limit = 1000; + while (true) { + log.info("广州市第一人民医院,同步已扫描患者检验报告,患者参数查询,startDisDateTime={},offset={},limit={}", startDisDateTime, offset, limit); + List tbasicList = basicMapper.getLabSyncBasicList(startDisDateTime, offset, limit); + if (CollUtil.isEmpty(tbasicList)) { + break; + } + for (Tbasic tbasic : tbasicList) { + iWebService.syncInspection(tbasic, startDateTime, endDateTime); + } + offset = offset + limit; + } + log.info("广州市第一人民医院,同步已扫描患者检验报告,同步完成!"); + } catch (Exception ex) { + log.info("广州市第一人民医院,同步已扫描患者检验报告,出现异常:" + ex.getMessage(), ex); + } finally { + isRunning.set(false); + } + } else { + log.warn("广州市第一人民医院,同步已扫描患者检验报告正在调度!"); + } + + } + +} diff --git a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java index b8aeedc..f42fac2 100644 --- a/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java +++ b/src/main/java/com/docus/demo/mapper/mysql/BasicMapper.java @@ -29,6 +29,8 @@ public interface BasicMapper { List getOldBasicListLimit(@Param("pageStart") int pageStart, @Param("pageEnd") int pageEnd,@Param("list") List fprnList, @Param("dto") SyncBasicDataDto syncBasicDataDto); + List getLabSyncBasicList(@Param("startDisDateTime") String startDisDateTime, @Param("offset") int offset, @Param("limit") int limit); + void updateScanStatus(@Param("pid")String pid); @@ -56,4 +58,6 @@ public interface BasicMapper { int fillMissingFields(@Param("basic") Tbasic yidiBasic); int updateNotArchive(@Param("patientId")String patientId); + + } diff --git a/src/main/java/com/docus/demo/service/WebServiceImpl.java b/src/main/java/com/docus/demo/service/WebServiceImpl.java index b5efa7d..490b9af 100644 --- a/src/main/java/com/docus/demo/service/WebServiceImpl.java +++ b/src/main/java/com/docus/demo/service/WebServiceImpl.java @@ -98,7 +98,7 @@ public class WebServiceImpl implements IWebService { } } - + @Override public void syncInspection(Tbasic tbasic, String startDate, String endDate) { log.info("正在同步" + tbasic.getInpatientNo() + " " + tbasic.getAdmissTimes()); List oldScanAssortList = scanAssortMapper.getListByAssortId("A5A7AA6796D1715A2F1E35699C706C84", tbasic.getPatientId()); diff --git a/src/main/resources/mapper/mysql/BasicMapper.xml b/src/main/resources/mapper/mysql/BasicMapper.xml index a5002f7..9124927 100644 --- a/src/main/resources/mapper/mysql/BasicMapper.xml +++ b/src/main/resources/mapper/mysql/BasicMapper.xml @@ -197,6 +197,27 @@ limit #{pageStart} ,#{pageEnd} + + + + \ No newline at end of file