| | |
| | | |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.ltkj.common.enums.DataSourceType; |
| | | import com.ltkj.db.DataSourceConfig; |
| | | import com.ltkj.db.DataSourceContextHolder; |
| | |
| | | public void init() { |
| | | DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); |
| | | // 获取所有需要同步日志的用户列表 |
| | | List<DictHosp> hospList = dictHospService.list(); |
| | | LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(DictHosp::getIsAutoAsyncJg,1); |
| | | List<DictHosp> hospList = dictHospService.list(wrapper); |
| | | hospList.forEach(this::createTask); // 为每个用户创建任务 |
| | | // 定时检查是否有新的用户需要添加任务 |
| | | schedulePeriodicTaskCheck(); |
| | |
| | | // 将该用户ID添加到已调度任务集合中 |
| | | scheduledTasks.add(dictHosp.getCode()); |
| | | // 创建定时任务,任务将在15分钟后执行 |
| | | taskScheduler.schedule(() -> { |
| | | /* taskScheduler.schedule(() -> { |
| | | try { |
| | | // 执行任务的超时控制 |
| | | taskScheduler.schedule(() -> { |
| | | executeTask(dictHosp); |
| | | }, Instant.now()); |
| | | |
| | | } catch (Exception e) { |
| | | log.error("创建任务时发生异常:{}", e.getMessage()); |
| | | } |
| | | }, Instant.now().plus(15, ChronoUnit.MINUTES));*/ |
| | | log.info("任务创建成功 ->{}",dictHosp.getCode()); |
| | | // 执行任务的超时控制 |
| | | taskScheduler.schedule(() -> { |
| | | executeTask(dictHosp); |
| | | }, Instant.now().plus(15, ChronoUnit.MINUTES)); |
| | | } |
| | | |
| | |
| | | if(null !=list && !list.isEmpty()){ |
| | | for (LtkjExamJcsqd jcsqd : list) { |
| | | if(StringUtil.isNotBlank(jcsqd.getJgzt())){ |
| | | String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("。|;|;"); |
| | | String regex = configService.selectConfigByKey("jcycxmzz"); |
| | | if(StringUtil.isBlank(regex)) regex= "。|;|;|,|,"; |
| | | String[] split = jcsqd.getJgzt().replaceAll("\n", "").split(regex); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") && !jg.contains("未见") |
| | |
| | | |
| | | // 检查并添加新的用户任务 |
| | | public void checkAndAddNewTasks() { |
| | | DataSourceContextHolder.setDataSourceKey(DataSourceType.MASTER.name()); |
| | | // 获取所有需要同步日志的用户列表 |
| | | List<DictHosp> hospList = dictHospService.list(); |
| | | LambdaQueryWrapper<DictHosp> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(DictHosp::getIsAutoAsyncJg,1); |
| | | List<DictHosp> hospList = dictHospService.list(wrapper); |
| | | log.info("检查并添加需要同步的医院列表:{}", JSONUtil.toJsonStr(hospList)); |
| | | hospList.forEach(this::createTask); |
| | | taskScheduler.schedule(this::checkAndAddNewTasks, Instant.now().plus(2, ChronoUnit.MINUTES)); |
| | | } |
| | |
| | | |
| | | try { |
| | | List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s,hospId); |
| | | log.info("自动同步检查申请单数据:"+jcsqdList); |
| | | if (null != jcsqdList && !jcsqdList.isEmpty()) { |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | jcsqdService.deletedLtkjJcsqdByTjhAndTmh(s); |
| | | jcbgdService.deletedLtkjJcbgdByTjhAndTmh(s); |
| | | jcsqdService.saveBatch(jcsqdList); |
| | | List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(s,hospId); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | // DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | log.info("自动同步检查报告单数据:"+jcbgdList); |
| | | if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |