zjh
2025-04-14 ff8914dab90da51dc8d46010f4f658780d5dba0e
ltkj-admin/src/main/java/com/ltkj/web/controller/system/SysConfigController.java
@@ -1,23 +1,28 @@
package com.ltkj.web.controller.system;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.extra.pinyin.PinyinUtil;
import com.ltkj.common.core.domain.entity.SysMenu;
import cn.hutool.json.JSONUtil;
import com.ltkj.hosp.idutil.IdUtils;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.hosp.domain.DictHosp;
import com.ltkj.hosp.domain.TjProject;
import com.ltkj.hosp.service.IDictHospService;
import com.ltkj.hosp.service.ITjProjectService;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.*;
import com.ltkj.system.service.ISysMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -41,6 +46,7 @@
@RestController
@RequestMapping("/system/config")
@Api(tags = "A---PC端参数配置接口集")
@Slf4j
public class SysConfigController extends BaseController {
    @Autowired
    private ISysConfigService configService;
@@ -52,6 +58,24 @@
    private String secret;
    @Autowired
    private ITjProjectService projectService;
    @Resource
    private ITjOrderService orderService;
    @Autowired
    private TjJcycxmService jcycxmService;
    @Resource
    private LtkjExamJcsqdService jcsqdService;
    @Resource
    private LtkjExamJcbgdService jcbgdService;
    @Resource
    private LtkjHybgdService ltkjHybgdService;
    @Resource
    private LtkjHysqdService ltkjHysqdService;
    @Resource
    private TestMapper testMapper;
    @Autowired
    private AwsService awsService;
    @Autowired
    private IdUtils idUtils;
    /**
     * 获取参数配置列表
@@ -164,6 +188,135 @@
    }
    @GetMapping ("/shoudongtbjyjcwsxmjg")
    @ApiOperation(value = "手动同步检验检查外送项目结果接口")
    public AjaxResult shoudongtbjyjcwsxmjg(@RequestParam @ApiParam(value = "jy检验 jc检查 jyjc检验和检查") String tblx,
                                           @ApiParam(value = "体检号")@RequestParam String tjh) {
        String dqyyyqbm = configService.selectConfigByKey("dqyyyqbm");
        log.info("手动同步检验或检查结果开始->{}",DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
        try {
            switch (tblx){
                case "jy":
                    tbjianyan(tjh,dqyyyqbm);
                    log.info("当前同步的是->{} 结果","检验");
                    break;
                case "jc":
                    tbjiancha(tjh,dqyyyqbm);
                    log.info("当前同步的是->{} 结果","检查");
                    break;
                case "jyjc":
                    tbjianyan(tjh,dqyyyqbm);
                    tbjiancha(tjh,dqyyyqbm);
                    log.info("当前同步的是->{} 结果","检验检查");
                    break;
                default:
                    log.info("没有找到所匹配的同步类型");
                    return AjaxResult.error("没有找到所匹配的同步类型!");
            }
            Map<String, Object> map = new HashMap<>();
            testMapper.tjplUpdateDetatilByVi(map);
            Integer object = (Integer) map.get("total");
            log.info("执行存储过程后出参->{}", object);
            log.info("手动同步检验或检查结果结束->{}",DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));
            return AjaxResult.success("同步成功");
        } catch (Exception e) {
            log.error(String.valueOf(e));
        }
        return AjaxResult.success();
    }
    private void tbjianyan(String s,String dqyyyqbm) {
        try {
            List<Aws> awsList = testMapper.getWsxmLtkjHysqdByLisViBySLAVEWS(s);
            if(null !=awsList && !awsList.isEmpty()){
                log.info("外送项目个数->{} 结果",awsList.size());
                log.info(awsList.toString());
                testMapper.delWsxmjg(s);
                log.info("删除外送项目成功");
                awsService.saveBatch(awsList);
                log.info("保存外送项目成功");
            }
            List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(s,dqyyyqbm);
            log.info("原hysqdList->{} 结果", JSONUtil.parseObj(hysqdList));
            List<LtkjHysqd> wssq = testMapper.getWsxmLtkjHysqdByLisVi(s);
            if(null !=wssq && !wssq.isEmpty()){
                log.info("外送项个->{} 结果",wssq.toString());
                hysqdList.addAll(wssq);
            }
            if (null != hysqdList && !hysqdList.isEmpty()) {
                log.info("现hysqdList->{} 结果", JSONUtil.parseObj(hysqdList));
                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);
                    }
                }
                DynamicDataSourceContextHolder.clearDataSourceType();
            }
        } catch (Exception e) {
            log.info("同步检验数据失败");
//            throw new RuntimeException(e);
            log.error(String.valueOf(e));
        }
    }
    private void tbjiancha(String s,String dqyyyqbm) {
        try {
            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);
                if(null !=jcsqdList && !jcsqdList.isEmpty()){
                    for (LtkjExamJcsqd jcsqd : jcsqdList) {
                        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(dqyyyqbm);
                                    String[] split1 = jcsqd.getJcxmid().split(";");
                                    jcycxm.setProId(split1[0]);
                                    jcycxm.setProName(jcsqd.getJcxmmc());
                                    jcycxm.setCreateTime(new Date());
                                    jcycxm.setJcjg(jg);
                                    jcycxmService.save(jcycxm);
                                }
                            }
                        }
                    }
                }
                DynamicDataSourceContextHolder.clearDataSourceType();
                if (null != jcbgdList && !jcbgdList.isEmpty()) jcbgdService.saveBatch(jcbgdList);
                DynamicDataSourceContextHolder.clearDataSourceType();
            }
        } catch (Exception e) {
            log.info("同步检查数据失败");
//            throw new RuntimeException(e);
            log.error(String.valueOf(e));
        }
    }
    @GetMapping ("/zxsq")//执行
    @ApiOperation(value = "zxsq")
    public AjaxResult zx(@RequestParam int day) {
@@ -210,4 +363,79 @@
        return AjaxResult.success();
    }
    @GetMapping ("/tjjcycxm")//同步his项目单价信息
//    @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')")
    @ApiOperation (value = "tjjcycxm")
    public AjaxResult tjjcycxm(@RequestParam(required = false)@ApiParam(value = "体检号") String tjh) {
        String yqbm = configService.selectConfigByKey("common_api_service_hospbm");
        if(StringUtil.isNotBlank(tjh)){
            zongjianshengchengyichangxiangmu(tjh, yqbm);
            return AjaxResult.success();
        }
        List<String> jc = orderService.getJianChaTjNum();
        if (null != jc && !jc.isEmpty()) {
            for (String s : jc) {
                zongjianshengchengyichangxiangmu(s, yqbm);
            }
        }
        return AjaxResult.success();
    }
    public void zongjianshengchengyichangxiangmu(String s, String yqbm) {
        TjOrder order = orderService.getOrderByTjNum(s);
        jcycxmService.deletedByTjh(order.getCardId());
        List<LtkjExamJcsqd> list = jcsqdService.getLtkjJcsqdByTjh(order.getCardId());
        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);
                        }
                    }
                }
            }
        }
    }
    @GetMapping ("/ceshitijianhao")//同步his项目单价信息
//    @PreAuthorize("@ss.hasPermi('system:config:tbhisproprice')")
    @ApiOperation (value = "测试体检号")
    public AjaxResult ceshitijianhao() {
        //创建线程池
        ExecutorService threadPool = Executors.newFixedThreadPool(2000);
        List<String> numbers = new ArrayList<>();
        for (int i = 0; i < 2000; i++) {
            //获取线程
            threadPool.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        String number = idUtils.getNewTjNumberRedisLock(); // 调用获取编号的方法
                        numbers.add(number); // 添加到 Set
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
        threadPool.shutdown();
        return AjaxResult.success(numbers);
    }
}