zjh
2025-04-22 22efacd7994f8ea9a7ef8485575ade9729a0e5a2
ltkj-admin/src/main/java/com/ltkj/web/config/timer/DefaultScheduled.java
@@ -1,15 +1,16 @@
package com.ltkj.web.config.timer;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.TjOrder;
import com.ltkj.hosp.domain.TjJcycxm;
import com.ltkj.hosp.domain.TjXdtgmdjg;
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.hosp.sqlDomain.*;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.web.controller.system.TjXdPictureController;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Profile;
@@ -18,6 +19,8 @@
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;
@@ -35,7 +38,7 @@
 */
@Slf4j
@Component
@Profile("!dev")
@Profile("!dev & !prod & !test")
public class DefaultScheduled {
@@ -55,6 +58,14 @@
    private TestMapper testMapper;
    @Resource
    private TjAsyncService asyncService;
    @Autowired
    private TjJcycxmService jcycxmService;
    @Autowired
    private AwsService awsService;
    @Resource
    private TjXdtgmdjgService xdtgmdjgService;
    @Resource
    private TjXdPictureController pictureController;
    private final ReentrantLock reentrantLock = new ReentrantLock();
@@ -82,72 +93,154 @@
    }
    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");
        String dqyyyqbm = configService.selectConfigByKey("dqyyyqbm");
        boolean panduandangqianshijian = panduandangqianshijian(dsqkssj, dsqjssj);
        log.info("定时器自动同步检验检查结果");
        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");
        boolean lock = reentrantLock.tryLock();
        try {
            if (lock) {
                    long start = System.currentTimeMillis();
                    // 查询任务数据
                    log.info("开始执行同步 执行数量->{}", 0);
                 List<String> jy= orderService.getDingShiTongBuJianYanTjNum();
                List<String> jc = orderService.getDingShiTongBuJianChaTjNum();
                        List<String> jc = orderService.getDingShiTongBuJianChaTjNum();
                if(null !=jy && !jy.isEmpty()){
                    log.info("同步检验人员 执行数量->{}", jy.size());
                    for (String s : jy) {
//                        TjOrder order = orderService.getOrderByTjNum(s);
                        extractedjianyan(s);
                        if (null != jy && !jy.isEmpty()) {
                            log.info("同步检验人员 执行数量->{}", jy.size());
                            for (String s : jy) {
                                extractedjianyan(s,dqyyyqbm);
                            }
                        }
                        if (null != jc && !jc.isEmpty()) {
                            log.info("同步检查人员 执行数量->{}", jc.size());
                            for (String s : jc) {
                                extractedjiancha(s,dqyyyqbm);
//                                LambdaQueryWrapper<TjXdtgmdjg> wq=new LambdaQueryWrapper<>();
//                                wq.eq(TjXdtgmdjg::getTjh,s);
//                                List<TjXdtgmdjg> list = xdtgmdjgService.list(wq);
//                                if(null !=list && !list.isEmpty()){
//                                    for (TjXdtgmdjg xdtgmdjg : list) {
//                                        pictureController.saveTjXdtgmdjgByJcbgd(xdtgmdjg);
//                                    }
//                                }
                            }
                        }
                        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(StringUtil.isNotBlank(jcsqd.getJgzt())){
                                                String[] split = jcsqd.getJgzt().replaceAll("\n", "").split("。|;|;|,|,");
                                                for (String jg : split) {
                                                    if(StringUtil.isNotBlank(jg) && !jg.contains("未见异常")
                                                            && !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));
                }
                if(null !=jc && !jc.isEmpty()){
                    log.info("同步检查人员 执行数量->{}", jc.size());
                    for (String s : jc) {
//                        TjOrder order = orderService.getOrderByTjNum(s);
                        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)){
                    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);
                }
            } catch (Exception e) {
                scheduleNextTask(Long.parseLong(dsrwsjjg));
                log.error("定时器执行报错");
                log.error(String.valueOf(e));
//                e.printStackTrace();
            } finally {
                reentrantLock.unlock();
            }
        } catch (Exception e) {
            log.error("定时器执行报错");
            e.printStackTrace();
        } finally {
            scheduleNextTask(Long.parseLong(dsrwsjjg));
            reentrantLock.unlock();
        }
    }
    private void extractedjianyan(String s) {
    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,String dqyyyqbm) {
        try {
            List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s);
            if(null != hysqdList && !hysqdList.isEmpty()){
                for (LtkjHysqd hysqd : hysqdList) {
                    LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
            List<Aws> awsList = testMapper.getWsxmLtkjHysqdByLisViBySLAVEWS(s);
            if(null !=awsList && !awsList.isEmpty()){
                log.info(awsList.toString());
                testMapper.delWsxmjg(s);
                log.info("删除外送项目成功");
                awsService.saveBatch(awsList);
                log.info("保存外送项目成功");
            }
            List<LtkjHysqd> wssq = testMapper.getWsxmLtkjHysqdByLisVi(s);
            if(null !=wssq && !wssq.isEmpty()){
                for (LtkjHysqd hysqd : wssq) {
                    LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh());
                    if (null != jybgid) {
                        ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
                        ltkjHysqdService.deletedLtkjHysqdByTjhAndTmh(hysqd.getTjh(), hysqd.getTmh());
                        ltkjHybgdService.deletedLtkjHybgdByTjhAndTmh(hysqd.getTmh());
                    }
                    if (ltkjHysqdService.save(hysqd)) {
                        List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s);
                        ltkjHybgdService.saveBatch(wsbg);
                    }
                }
            }
            List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s,dqyyyqbm);
            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());
//                        List<LtkjHybgd> wsbg = testMapper.getWsxmLtkjHybgdByLisVi(s);
//                        if(null !=wsbg && !wsbg.isEmpty())hybgdList.addAll(wsbg);
                        ltkjHybgdService.saveBatch(hybgdList);
                    }
                }
@@ -155,28 +248,31 @@
            }
        } catch (Exception e) {
            log.info("同步检验数据失败");
            throw new RuntimeException(e);
//            throw new RuntimeException(e);
            log.error(String.valueOf(e));
        }
    }
    private void extractedjiancha(String s) {
    private void extractedjiancha(String s,String dqyyyqbm) {
        try {
            List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s);
            if(null !=jcsqdList && !jcsqdList.isEmpty()){
            List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(s,dqyyyqbm);
            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);
                if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList);
                DynamicDataSourceContextHolder.clearDataSourceType();
            }
        } catch (Exception e) {
            log.info("同步检查数据失败");
            throw new RuntimeException(e);
//            throw new RuntimeException(e);
            log.error(String.valueOf(e));
        }
    }
}