| | |
| | | package com.ltkj.web.config.timer; |
| | | |
| | | import com.ltkj.framework.datasource.DynamicDataSourceContextHolder; |
| | | import com.ltkj.hosp.domain.TjOrder; |
| | | import com.ltkj.hosp.domain.TjJcycxm; |
| | | import com.ltkj.hosp.mapper.TestMapper; |
| | | import com.ltkj.hosp.mapper.TjOrderMapper; |
| | | import com.ltkj.hosp.service.*; |
| | | import com.ltkj.hosp.sqlDomain.LtkjExamJcbgd; |
| | | import com.ltkj.hosp.sqlDomain.LtkjExamJcsqd; |
| | | import com.ltkj.hosp.sqlDomain.LtkjHybgd; |
| | | import com.ltkj.hosp.sqlDomain.LtkjHysqd; |
| | | import com.ltkj.system.service.ISysConfigService; |
| | | import jodd.util.StringUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.context.annotation.Profile; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import javax.annotation.Resource; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalTime; |
| | | import java.time.ZonedDateTime; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | @Profile("!dev") |
| | | public class DefaultScheduled { |
| | | |
| | | |
| | |
| | | private LtkjHysqdService ltkjHysqdService; |
| | | @Resource |
| | | private TestMapper testMapper; |
| | | @Resource |
| | | private TjAsyncService asyncService; |
| | | @Autowired |
| | | private TjJcycxmService jcycxmService; |
| | | |
| | | |
| | | private final ReentrantLock reentrantLock = new ReentrantLock(); |
| | | |
| | |
| | | } |
| | | |
| | | private void exec() { |
| | | log.info("任务开始执行时间 -> {}", dateTimeFormat.format(new Date())); |
| | | String dsqkssj = configService.selectConfigByKey("dsqkssj"); |
| | | String dsqjssj = configService.selectConfigByKey("dsqjssj"); |
| | | String yqbm = configService.selectConfigByKey("common_api_service_hospbm"); |
| | | boolean panduandangqianshijian = panduandangqianshijian(dsqkssj, dsqjssj); |
| | | log.info("当前时间是否在 " + dsqkssj + " 点到 " + dsqjssj + " 点之间: " + panduandangqianshijian); |
| | | String dsrwsjjg = configService.selectConfigByKey("dsrwsjjg"); |
| | | boolean lock = reentrantLock.tryLock(); |
| | | try { |
| | | if (!panduandangqianshijian) { |
| | | if (lock) { |
| | | log.info("任务开始执行时间 -> {}", dateTimeFormat.format(new Date())); |
| | | long start = System.currentTimeMillis(); |
| | | // 查询任务数据 |
| | | log.info("开始执行同步 执行数量->{}", 0); |
| | | List<String> jy = orderService.getDingShiTongBuJianYanTjNum(); |
| | | |
| | | String dsrwsjjg = configService.selectConfigByKey("dsrwsjjg"); |
| | | List<String> jc = orderService.getDingShiTongBuJianChaTjNum(); |
| | | |
| | | boolean lock = reentrantLock.tryLock(); |
| | | |
| | | if (null != jy && !jy.isEmpty()) { |
| | | log.info("同步检验人员 执行数量->{}", jy.size()); |
| | | for (String s : jy) { |
| | | extractedjianyan(s); |
| | | } |
| | | } |
| | | |
| | | |
| | | if (null != jc && !jc.isEmpty()) { |
| | | log.info("同步检查人员 执行数量->{}", jc.size()); |
| | | for (String s : jc) { |
| | | extractedjiancha(s); |
| | | } |
| | | } |
| | | Map<String, Object> map = new HashMap<>(); |
| | | testMapper.tjplUpdateDetatilByVi(map); |
| | | Integer object = (Integer) map.get("total"); |
| | | log.info("执行存储过程后出参->{}", object); |
| | | if (null != object && object.equals(1)) { |
| | | if (null != jc && !jc.isEmpty()) { |
| | | for (String s : jc) { |
| | | jcycxmService.deletedByTjh(s); |
| | | List<LtkjExamJcsqd> list = jcsqdService.getLtkjJcsqdByTjh(s); |
| | | if(null !=list && !list.isEmpty()){ |
| | | for (LtkjExamJcsqd jcsqd : list) { |
| | | if(jcsqd.getJgbx().contains("。")){ |
| | | String[] split = jcsqd.getJgzt().split("。"); |
| | | for (String jg : split) { |
| | | if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常") |
| | | && !jg.contains("未见明显异常") && !jg.contains("未见占位") |
| | | && !jg.contains("未见明显")&& !jg.contains("正常")&& !jg.contains("双侧椎间孔无狭窄")){ |
| | | TjJcycxm jcycxm=new TjJcycxm(); |
| | | jcycxm.setTjh(s); |
| | | jcycxm.setYqid(yqbm); |
| | | String[] split1 = jcsqd.getJcxmid().split(";"); |
| | | jcycxm.setProId(split1[0]); |
| | | jcycxm.setProName(jcsqd.getJcxmmc()); |
| | | jcycxm.setCreateTime(new Date()); |
| | | jcycxm.setJcjg(jg); |
| | | jcycxmService.save(jcycxm); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | long end = System.currentTimeMillis(); |
| | | log.info("同步结束 耗时:{}秒", (end - start) / 1000); |
| | | // 动态获取下次任务的间隔 |
| | | int minute = Integer.parseInt(dsrwsjjg); |
| | | if (minute < 5) minute = 5; |
| | | if (minute > 59) minute = 59; |
| | | scheduleNextTask(minute); |
| | | }else { |
| | | log.info("执行存储过程出参失败"); |
| | | scheduleNextTask(Long.parseLong(dsrwsjjg)); |
| | | } |
| | | } |
| | | }else { |
| | | log.info("不在定时器执行时间范围之内!!!"); |
| | | scheduleNextTask(Long.parseLong(dsrwsjjg)); |
| | | } |
| | | } catch (Exception e) { |
| | | scheduleNextTask(Long.parseLong(dsrwsjjg)); |
| | | log.error("定时器执行报错"); |
| | | e.printStackTrace(); |
| | | } finally { |
| | | reentrantLock.unlock(); |
| | | } |
| | | |
| | | } |
| | | |
| | | private boolean panduandangqianshijian(String kssj, String jssj) { |
| | | ZonedDateTime now = ZonedDateTime.now(); |
| | | LocalTime time = now.toLocalTime(); |
| | | return time.isAfter(LocalTime.of(Integer.parseInt(kssj), 0)) && time.isBefore(LocalTime.of(Integer.parseInt(jssj), 0)); |
| | | } |
| | | |
| | | private void extractedjianyan(String s) { |
| | | try { |
| | | if (lock) { |
| | | long start = System.currentTimeMillis(); |
| | | // 查询任务数据 |
| | | log.info("开始执行同步 执行数量->{}", 0); |
| | | List<String> jy= orderService.getDingShiTongBuJianYanTjNum(); |
| | | |
| | | List<String> jc = orderService.getDingShiTongBuJianChaTjNum(); |
| | | |
| | | if(null !=jy && !jy.isEmpty()){ |
| | | for (String s : jy) { |
| | | TjOrder order = orderService.getOrderByTjNum(s); |
| | | extractedjianyan(s,order); |
| | | List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s); |
| | | if (null != hysqdList && !hysqdList.isEmpty()) { |
| | | for (LtkjHysqd hysqd : hysqdList) { |
| | | LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh()); |
| | | if (null != jybgid) { |
| | | ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh()); |
| | | ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh()); |
| | | } |
| | | if (ltkjHysqdService.save(hysqd)) { |
| | | List<LtkjHybgd> hybgdList = testMapper.getCcXZxYyLtkjHybgdByLisVi(hysqd.getTmh()); |
| | | ltkjHybgdService.saveBatch(hybgdList); |
| | | } |
| | | } |
| | | |
| | | if(null !=jc && !jc.isEmpty()){ |
| | | for (String s : jc) { |
| | | TjOrder order = orderService.getOrderByTjNum(s); |
| | | extractedjiancha(s,order); |
| | | } |
| | | } |
| | | |
| | | long end = System.currentTimeMillis(); |
| | | log.info("同步结束 耗时:{}秒", (end - start) / 1000); |
| | | // 动态获取下次任务的间隔 |
| | | int minute = Integer.parseInt(dsrwsjjg); |
| | | if (minute < 5) minute = 5; |
| | | if (minute > 59) minute = 59; |
| | | scheduleNextTask(minute); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | reentrantLock.unlock(); |
| | | log.info("同步检验数据失败"); |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | |
| | | private void extractedjianyan(String s,TjOrder order) { |
| | | List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber()); |
| | | if(null != hysqdList && !hysqdList.isEmpty()){ |
| | | for (LtkjHysqd hysqd : hysqdList) { |
| | | LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh()); |
| | | if (null != jybgid) { |
| | | ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh()); |
| | | ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh()); |
| | | } |
| | | if (ltkjHysqdService.save(hysqd)) { |
| | | List<LtkjHybgd> hybgdList = testMapper.getCcXZxYyLtkjHybgdByLisVi(hysqd.getTmh()); |
| | | ltkjHybgdService.saveBatch(hybgdList); |
| | | } |
| | | |
| | | private void extractedjiancha(String s) { |
| | | |
| | | try { |
| | | List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s); |
| | | if (null != jcsqdList && !jcsqdList.isEmpty()) { |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | jcsqdService.deletedLtkjJcsqdByTjhAndTmh(s); |
| | | jcbgdService.deletedLtkjJcbgdByTjhAndTmh(s); |
| | | jcsqdService.saveBatch(jcsqdList); |
| | | List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(s); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } catch (Exception e) { |
| | | log.info("同步检查数据失败"); |
| | | throw new RuntimeException(e); |
| | | } |
| | | // String tjNumber1 = order.getTjNumber(); |
| | | // log.info("查询出来的体检号是: " + tjNumber1); |
| | | // log.info("传过来的的体检号是: "+ s); |
| | | Map<String,Object> map=new HashMap<>(); |
| | | map.put("tjnum", s); |
| | | testMapper.tjUpdateDetatilByVi(map); |
| | | log.info("定时任务存储过程已执行!!!"); |
| | | } |
| | | |
| | | |
| | | private void extractedjiancha(String s,TjOrder order) { |
| | | |
| | | List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber()); |
| | | if(null !=jcsqdList && !jcsqdList.isEmpty()){ |
| | | jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId()); |
| | | jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId()); |
| | | jcsqdService.saveBatch(jcsqdList); |
| | | List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(order.getCardId()); |
| | | if(null != jcbgdList && !jcbgdList.isEmpty())jcbgdService.saveBatch(jcbgdList); |
| | | DynamicDataSourceContextHolder.clearDataSourceType(); |
| | | } |
| | | // String tjNumber1 = order.getTjNumber(); |
| | | // log.info("查询出来的体检号是: " + tjNumber1); |
| | | // log.info("传过来的的体检号是: "+ s); |
| | | Map<String,Object> map=new HashMap<>(); |
| | | map.put("tjnum", s); |
| | | testMapper.tjUpdateDetatilByVi(map); |
| | | log.info("定时任务存储过程已执行!!!"); |
| | | } |
| | | } |