zjh
2025-03-25 f5e009d6c7cdb7ec64ab68feed4456fec49187b8
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -37,6 +37,7 @@
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 lombok.var;
import org.aspectj.weaver.AjAttribute;
@@ -48,6 +49,7 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.text.Collator;
import java.util.*;
@@ -398,8 +400,8 @@
    @ApiOperation (value = "同步sql server数据到本地数据库数据接口")
    @RepeatSubmit
//    @Transactional
    public AjaxResult dataSynchronization(@RequestParam String tjNumber) {
    public AjaxResult dataSynchronization(@RequestParam String tjNumber, HttpServletRequest request) {
        String hospId = request.getHeader("hospId");
        RLock lock = redissonClient.getLock("lock:check:dataSynchronization:" + tjNumber);
        try {
            boolean tryLock = lock.tryLock(3L, TimeUnit.SECONDS);
@@ -656,7 +658,7 @@
                        return AjaxResult.success("同步成功");
                    }
                    else if(null !=sfkqdshitulianjie && sfkqdshitulianjie.equalsIgnoreCase("Y")){
                        List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber());
                        List<LtkjHysqd> hysqdList = testMapper.getCcXZxYyLtkjHysqdByLisVi(order.getTjNumber(),hospId);
                        if(null != hysqdList && !hysqdList.isEmpty()){
                            for (LtkjHysqd hysqd : hysqdList) {
                                LtkjHysqd jybgid = ltkjHysqdService.getLtkjHysqdByTjhAndTmh(hysqd.getTjh(),hysqd.getTmh());
@@ -671,12 +673,12 @@
                            }
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
                        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber());
                        List<LtkjExamJcsqd> jcsqdList = testMapper.getCcXZxYyPacsLtkjExamJcsqd(order.getTjNumber(),hospId);
                        if(null !=jcsqdList && !jcsqdList.isEmpty()){
                            jcsqdService.deletedLtkjJcsqdByTjhAndTmh(order.getCardId());
                            jcbgdService.deletedLtkjJcbgdByTjhAndTmh(order.getCardId());
                            jcsqdService.saveBatch(jcsqdList);
                            List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(order.getCardId());
                            List<LtkjExamJcbgd> jcbgdList = testMapper.getCcXZxYyPacsLtkjExamJcbgd(order.getCardId(),hospId);
                            if(null != jcbgdList && !jcbgdList.isEmpty())jcbgdService.saveBatch(jcbgdList);
                            DynamicDataSourceContextHolder.clearDataSourceType();
                        }
@@ -742,6 +744,7 @@
                        List<String> baoGaoDans = ltkjHybgdService.getJianYanBaoGaoDan(order.getCardId());
                        List<String> jianChaBaoGaoDan = ltkjHybgdService.getJianChaBaoGaoDan(order.getCardId());
                        //同步检验
                        String resultMsg = "";
                        if (null != baoGaoDans && !baoGaoDans.isEmpty()) {
                            Date dates = new Date();
                            Map<String, Object> map = new HashMap<>();
@@ -756,38 +759,42 @@
                            String result1 = getAjaxResult(result);
                            JSONObject object = getJSONObject(result1);
                            String code = object.getStr("ResultCode");
                            if (null == code || !code.equals("0")) {
                                return AjaxResult.error("化验项目暂时未出结果,请稍后同步!!!");
                            }
                            JSONArray data = object.getJSONArray("ResultData");
                            for (Object datum : data) {
                                JSONObject jsonObject = (JSONObject) datum;
                                boolean isInsertHysqd = false;
                                LtkjHysqd hysqd = new LtkjHysqd();
                                hysqd.setTjh(order.getCardId());
                                hysqd.setTmh(jsonObject.getStr("JYBGID"));
                                hysqd.setBbbh(jsonObject.getStr("BBDM"));
                                hysqd.setBbmc(jsonObject.getStr("BBMC"));
                                hysqd.setXmid(jsonObject.getStr("JYXMDM"));
                                hysqd.setXmmc(jsonObject.getStr("JYXMMC"));
                                hysqd.setSqsj(jsonObject.getStr("SQRQ"));
                                hysqd.setSqys(jsonObject.getStr("SQRBH"));
                                hysqd.setJgsj(jsonObject.getStr("JYBGRQ"));
                                hysqd.setSqrxm(jsonObject.getStr("SQRXM"));
                                hysqd.setSqdh(jsonObject.getStr("SQDBH"));
                                hysqd.setShrdm(jsonObject.getStr("JYYSBH"));
                                hysqd.setShrxm(jsonObject.getStr("JYYSQM"));
                                hysqd.setJybgjg(jsonObject.getStr("JYBGJG"));
                                hysqd.setCreateTime(new Date());
                                QueryWrapper<LtkjHysqd> queryWrapper = new QueryWrapper<>(hysqd);
                                List<LtkjHysqd> list = ltkjHysqdService.list(queryWrapper);
                                if (list.isEmpty())
                                    isInsertHysqd = true;
                                if (isInsertHysqd){
                                    saveHysqd(hysqd);
                                }else {
                                    saveHybgd(hysqd);
//                            if (null == code || !code.equals("0")) {
//                                return AjaxResult.error("化验项目暂时未出结果,请稍后同步!!!");
//                            }
                            if (null != code && code.equals("0")) {
                                JSONArray data = object.getJSONArray("ResultData");
                                for (Object datum : data) {
                                    JSONObject jsonObject = (JSONObject) datum;
                                    boolean isInsertHysqd = false;
                                    LtkjHysqd hysqd = new LtkjHysqd();
                                    hysqd.setTjh(order.getCardId());
                                    hysqd.setTmh(jsonObject.getStr("JYBGID"));
                                    hysqd.setBbbh(jsonObject.getStr("BBDM"));
                                    hysqd.setBbmc(jsonObject.getStr("BBMC"));
                                    hysqd.setXmid(jsonObject.getStr("JYXMDM"));
                                    hysqd.setXmmc(jsonObject.getStr("JYXMMC"));
                                    hysqd.setSqsj(jsonObject.getStr("SQRQ"));
                                    hysqd.setSqys(jsonObject.getStr("SQRBH"));
                                    hysqd.setJgsj(jsonObject.getStr("JYBGRQ"));
                                    hysqd.setSqrxm(jsonObject.getStr("SQRXM"));
                                    hysqd.setSqdh(jsonObject.getStr("SQDBH"));
                                    hysqd.setShrdm(jsonObject.getStr("JYYSBH"));
                                    hysqd.setShrxm(jsonObject.getStr("JYYSQM"));
                                    hysqd.setJybgjg(jsonObject.getStr("JYBGJG"));
                                    hysqd.setCreateTime(new Date());
                                    QueryWrapper<LtkjHysqd> queryWrapper = new QueryWrapper<>(hysqd);
                                    List<LtkjHysqd> list = ltkjHysqdService.list(queryWrapper);
                                    if (list.isEmpty())
                                        isInsertHysqd = true;
                                    if (isInsertHysqd) {
                                        saveHysqd(hysqd);
                                    } else {
                                        saveHybgd(hysqd);
                                    }
                                }
                            }else {
                                resultMsg = "化验项目暂时未出结果,请稍后同步!!!";
                            }
                            //同步化验项目
//                            testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
@@ -851,11 +858,14 @@
                                    jcsqdService.saveLtkjExamJcsqd(order.getCardId());
//                                    testMapper.updateDetailByTjJcCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
                                }else {
                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                                    resultMsg = "检查项目暂时未出结果,请稍后同步!!!";
//                                    return AjaxResult.error("检查项目暂时未出结果,请稍后同步!!!");
                                }
                            }
                        }
                        return AjaxResult.success("同步成功");
                        if (StrUtil.isBlank(resultMsg))
                            return AjaxResult.success("同步成功");
                        else return AjaxResult.error(resultMsg);
                    }
                    //化验
//                    testMapper.updateDetailByCall(order.getCardId(), String.valueOf(order.getOrderId()), order.getTjNumber(), doctorId);
@@ -1667,6 +1677,7 @@
                List<TjOrderDetail> dels = new ArrayList<>();
                for (TjOrderYcxm ycxm : entry.getValue()) {
                    TjOrderDetail detail=new TjOrderDetail();
                    detail.setOrderDetailId(Long.valueOf(ycxm.getId()));
                    detail.setProName(ycxm.getJcxm());
                    detail.setProResult(ycxm.getJcjg());
                    detail.setStanId(ycxm.getCkfw());
@@ -1699,6 +1710,9 @@
                    .filter(b -> maps.stream()
                            .noneMatch(a -> a.get("proName").equals(b.get("proName"))))  // 过滤掉在 maps 中存在的相同元素
                    .collect(Collectors.toList());
            if(!collect.isEmpty()){
                maps.addAll(collect);
            }
@@ -1711,9 +1725,9 @@
           return AjaxResult.success(maps);
        }else {
            List<Map<String, Object>> mapList = zongjianyishengchakanyichangxiangmu(tjNum);
            if(mapList.isEmpty()){
                return AjaxResult.error("暂无数据");
            }
//            if(mapList.isEmpty()){
//                return AjaxResult.success("暂无数据");
//            }
            return AjaxResult.success(mapList);
        }
@@ -1722,59 +1736,88 @@
        return AjaxResult.error();
    }
    @GetMapping ("/delzongjianyishengchakanyichangxiangmu")
    @ApiOperation (value = "总检删除异常项目接口")
    public AjaxResult delzongjianyishengchakanyichangxiangmu(@RequestParam String id) {
        ycxmService.removeById(id);
        return AjaxResult.success();
    }
    private List<Map<String, Object>> zongjianyishengchakanyichangxiangmu(String tjNumber) {
//        asyncService.updateCheckType(tjNumber);
        List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
        List<Map<String, Object>> list = new ArrayList<>();
        if (null != remarkList && !remarkList.isEmpty()) {
            for (TjOrderRemark remark : remarkList) {
                Map<String, Object> parent = new HashMap<>();
                if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                    List<TjOrderDetail> dels = new ArrayList<>();
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                            if(null !=tjOrderDetail.getProId()&& null !=tjOrderDetail.getYcbz()){
                                if(!tjOrderDetail.getDeptId().equals("2")){
                                    List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                            ,"",tjOrderDetail.getYcbz().replaceAll(" ", ""),tjNumber
                                            ,tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]","")
                                            ,tjOrderDetail.getProResult());
                                    if(null !=maps && !maps.isEmpty()){
                                        tjOrderDetail.setAdvices(maps);
                                    }
                                }else {
                                    String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                    List<Map<String,Object>> mapList=new ArrayList<>();
                                    for (String s : split) {
                                                s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                        Map<String,Object> maps= tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(),s,"0");
        TjOrder order = orderService.getOrderByTjNum(tjNumber);
        if(null !=order){
            List<TjOrderRemark> remarkList = orderRemarkService.getzongjianyishengchakanyichangxiangmu(tjNumber);
            List<TjOrderDetail> tjOrderDetails = detailService.getzongjianyishengchakanyichangxiangmu(tjNumber);
            LambdaQueryWrapper<TjOrderYcxm> wq=new LambdaQueryWrapper<>();
            wq.eq(TjOrderYcxm::getTjh,tjNumber);
            List<TjOrderYcxm> ycxmList = ycxmService.list(wq);
            if (null != remarkList && !remarkList.isEmpty()) {
                for (TjOrderRemark remark : remarkList) {
                    Map<String, Object> parent = new HashMap<>();
                    if (null != tjOrderDetails && !tjOrderDetails.isEmpty()) {
                        List<TjOrderDetail> dels = new ArrayList<>();
                        for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                            if (remark.getProsId().equals(tjOrderDetail.getProsId())) {
                                if(null !=tjOrderDetail.getProId()&& null !=tjOrderDetail.getYcbz()){
                                    if(!tjOrderDetail.getDeptId().equals("2")){
                                        List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(tjOrderDetail.getProId().toString()
                                                ,tjOrderDetail.getProName().replaceAll("[((][^))]*[))]", "")
                                                        .replaceAll("[ 测定检测]","").replaceAll("\\[.*?\\]", ""),tjOrderDetail.getYcbz().replaceAll(" ", ""),tjNumber
                                                ,tjOrderDetail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                        .replaceAll("[ 测定检测]","").replaceAll("\\[.*?\\]", "")
                                                ,tjOrderDetail.getProResult());
                                        if(null !=maps && !maps.isEmpty()){
                                            Object bt = maps.get("bt");
                                            Object nr = maps.get("nr");
                                            if(null !=bt || null !=nr) mapList.add(maps);
                                            tjOrderDetail.setAdvices(maps);
                                        }
                                    }else {
                                        String[] split = tjOrderDetail.getProResult().split("。|,|,");
                                        List<Map<String,Object>> mapList=new ArrayList<>();
                                        for (String s : split) {
                                            s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                            Map<String,Object> maps= tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(remark.getKs(),s,"0");
                                            if(null !=maps && !maps.isEmpty()){
                                                Object bt = maps.get("bt");
                                                Object nr = maps.get("nr");
                                                if(null !=bt || null !=nr) mapList.add(maps);
                                            }
                                        }
                                        tjOrderDetail.setAdvices(mapList);
                                    }
                                    tjOrderDetail.setAdvices(mapList);
                                }
                                if(null==ycxmList || ycxmList.isEmpty()){
                                    TjOrderYcxm ycxm=new TjOrderYcxm();
                                    ycxm.setTjh(tjNumber);
                                    ycxm.setParentName(remark.getProName());
                                    ycxm.setJcxm(tjOrderDetail.getProName());
                                    ycxm.setJcjg(tjOrderDetail.getProResult());
                                    ycxm.setCkfw(tjOrderDetail.getStanId());
                                    ycxm.setDw(tjOrderDetail.getProAdvice());
                                    ycxm.setJynr(JSONUtil.toJsonStr(tjOrderDetail.getAdvices()));
                                    ycxmService.save(ycxm);
                                }
                                dels.add(tjOrderDetail);
                            }
                            dels.add(tjOrderDetail);
                        }
                        if(!dels.isEmpty()){
                            parent.put("proName",remark.getProName());
                            parent.put("jyjc",remark.getJyjc());
                            parent.put("sone",dels);
                            list.add(parent);
                        }
                    }
                    if(!dels.isEmpty()){
                        parent.put("proName",remark.getProName());
                        parent.put("jyjc",remark.getJyjc());
                        parent.put("sone",dels);
                        list.add(parent);
                    }
                }
            }
            }
        }
        return list;
    }
@@ -1801,16 +1844,32 @@
            String tjh = ycxms.get(0).getTjh();
            if(StringUtils.isNotBlank(tjh)){
                ycxmService.delOrderYcXmJyByTjh(tjh);
//                String szyssy="";
//                StringBuilder builders = new StringBuilder();
//                List<TjOrderYcxm> ycxmList=new ArrayList<>();
                for (TjOrderYcxm ycxm : ycxms) {
                    ycxm.setJynr(JSONUtil.toJsonStr(ycxm.getMap()));
//                     if(ycxm.getJcxm().contains("舒张压")||ycxm.getJcxm().contains("收缩压")){
//                        builders.append(ycxm.getJcxm()).append(ycxm.getJcjg()).append(" ");
//                        szyssy+=builders.toString();
//                    }
                }
//                List<TjOrderYcxm> collect = ycxms.stream().distinct().collect(Collectors.toList());
                ycxmService.saveBatch(ycxms);
                return AjaxResult.success();
            }
        }
        return AjaxResult.error();
        return AjaxResult.success();
    }
    @PostMapping ("/newaddOrderYcXmJyByTjh")
    @ApiOperation (value = "总检医生页面新增异常项目建议(单个)")
    public AjaxResult newaddOrderYcXmJyByTjh(@RequestBody TjOrderYcxm ycxm) {
                ycxm.setJynr(JSONUtil.toJsonStr(ycxm.getMap()));
                ycxmService.save(ycxm);
                return AjaxResult.success();
    }