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