zjh
2025-07-04 d12e3914e9e823a3038335a8f9e0b525343d965b
zjh20250704
18个文件已修改
3449 ■■■■■ 已修改文件
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java 3044 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjOrderDetail.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjPdfVO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjReservation.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderDetailMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderRemarkMapper.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderDetailService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderRemarkService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderDetailServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderRemarkServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-hosp/src/main/resources/mapper/hosp/TjReservationMapper.xml 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisApiMethod.java
@@ -3050,7 +3050,7 @@
                    List<String> jysqdh = orderService.getHuoQuBlJysqdh(order.getCardId(),bldh);
//                    }else {
//                        2.1.6.5 作废门诊检查申请
                        if (null != jcsqdh && jcsqdh.size()>0) {
                        if (null != jcsqdh && !jcsqdh.isEmpty()) {
                            for (String s : jcsqdh) {
                                AjaxResult result = controller.Outpindelexamapply(order.getCardId(), ysbm, s);
                                String result1 = getAjaxResult(result);
@@ -3065,7 +3065,7 @@
                        }
                        //2.1.6.3 作废门诊检验申请
                        if (null != jysqdh && jysqdh.size()>0) {
                        if (null != jysqdh && !jysqdh.isEmpty()) {
                            for (String s : jysqdh) {
                                ajaxResult = controller.Outpindeltestapply(order.getCardId(), ysbm, s);
                                result2 = getAjaxResult(ajaxResult);
@@ -3080,7 +3080,7 @@
                        }
                        //2.1.6.9 作废门诊治疗处置申请
                        if (null != zlsqdh && zlsqdh.size()>0) {
                        if (null != zlsqdh && !zlsqdh.isEmpty()) {
                            for (String s : zlsqdh) {
                                ajaxResult = controller.Outpintdelreatapply(order.getCardId(), ysbm, s);
                                result2 = getAjaxResult(ajaxResult);
@@ -3095,7 +3095,7 @@
                        }
                        //作废药品申请
                        if(null !=cfhs && cfhs.size()>0){
                        if(null !=cfhs && !cfhs.isEmpty()){
                            for (String cfh : cfhs) {
                                AjaxResult result = controller.Outpindelmedicapply(order.getCardId(), ysbm, cfh);
                                String result1 = getAjaxResult(result);
@@ -3204,6 +3204,111 @@
        return true;
    }
    public void ZfBlHisApiMethod(String tjh,String bldh) {
        TjOrder order = orderService.getOrderByTjNum(tjh);
        if(null !=order){
            String ysbm = configService.selectConfigByKey("request_default_ysbm");
            List<String> zlsqdh = orderService.getHuoQuBlZlsqdh(order.getCardId(),bldh);
            List<String> jcsqdh = orderService.getHuoQuBlJcsqdh(order.getCardId(),bldh);
            List<String> jysqdh = orderService.getHuoQuBlJysqdh(order.getCardId(),bldh);
            List<String> cfhs = cfService.getCfBlhs(order.getCardId(),bldh);
            AjaxResult ajaxResult = null;
            String result2 = null;
            JSONObject object1 = null;
            String code1 = null;
            log.info("查询前");
            TjCustomer customer1 = customerService.getById(order.getUserId());
            log.info("customer1 ->{}",customer1);
            List<String> bljcsqdhByPacs = orderService.getBljcsqdhByPacs(order.getCardId(), bldh);
            log.info("bljcsqdhByPacs ->{}",bljcsqdhByPacs);
            // 作废检查申请
            if (bljcsqdhByPacs != null && !bljcsqdhByPacs.isEmpty()){
                for (String sqdh : bljcsqdhByPacs) {
                    AjaxResult cancelPacsAjaxResult = pacsApiMethodService.updatePacsApply(sqdh, order.getCardId(), customer1.getCusName());
                    log.info("作废检查 pacs返回 ->{}",JSONUtil.toJsonStr(cancelPacsAjaxResult));
                    String result = cancelPacsAjaxResult.get("data").toString();
                    JSONObject object = JSONUtil.parseObj(result);
                    String code = object.getStr("ResultCode");
                    if(code.equals("1")){
                        orderService.delHuoQuBlJcsqdh(order.getCardId(),bldh);
                    }
                }
            }
            List<String> bljysqdhByLis = orderService.getBljysqdhByLis(order.getCardId(), bldh);
            log.info("bljysqdhByLis ->{}",bljysqdhByLis);
            // 作废检验申请
            if (bljysqdhByLis != null && !bljysqdhByLis.isEmpty()){
                for (String sqdh : bljysqdhByLis) {
                    AjaxResult cancelLisAjaxResult = lisApiMethod.cancel(sqdh, order.getCardId(), customer1.getCusName());
                    log.info("作废检验 lis返回 ->{}",JSONUtil.toJsonStr(cancelLisAjaxResult));
                    String result = cancelLisAjaxResult.get("data").toString();
                    JSONObject object = JSONUtil.parseObj(result);
                    String code= object.getStr("ResultCode");
                    if(code.equals("1")){
                        orderService.delHuoQuBlJysqdh(order.getCardId(),bldh);
                    }
                }
            }
            if (null != jcsqdh && !jcsqdh.isEmpty()) {
                for (String s : jcsqdh) {
                    AjaxResult result = controller.Outpindelexamapply(order.getCardId(), ysbm, s);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
                    String code = object.getStr("ResultCode");
                    if (code.equals("0")) {
                        orderService.delHuoQuBlJcsqdh(order.getCardId(),bldh);
                    }
                }
            }
            //2.1.6.3 作废门诊检验申请
            if (null != jysqdh && !jysqdh.isEmpty()) {
                for (String s : jysqdh) {
                    ajaxResult = controller.Outpindeltestapply(order.getCardId(), ysbm, s);
                    result2 = getAjaxResult(ajaxResult);
                    object1 = getJSONObject(result2);
                    code1 = object1.getStr("ResultCode");
                    if (code1.equals("0")) {
                        orderService.delHuoQuBlJysqdh(order.getCardId(),bldh);
                    }
                }
            }
            //2.1.6.9 作废门诊治疗处置申请
            if (null != zlsqdh && !zlsqdh.isEmpty()) {
                for (String s : zlsqdh) {
                    ajaxResult = controller.Outpintdelreatapply(order.getCardId(), ysbm, s);
                    result2 = getAjaxResult(ajaxResult);
                    object1 = getJSONObject(result2);
                    code1 = object1.getStr("ResultCode");
                    if (code1.equals("0")) {
                        orderService.delHuoQuZlsqdh(order.getCardId(),bldh);
                    }
                }
            }
            //作废药品申请
            if(null !=cfhs && !cfhs.isEmpty()){
                for (String cfh : cfhs) {
                    AjaxResult result = controller.Outpindelmedicapply(order.getCardId(), ysbm, cfh);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
                    String code = object.getStr("ResultCode");
                    if(null !=code && code.equals("0")){
                        cfService.delCfByCardId(cfh);
                    }
                }
            }
        }
    }
    //获取门诊结算记录
    @Transactional
    public void getHisMzJsJl(TjOrder order) {
ltkj-admin/src/main/java/com/ltkj/web/controller/his/HisPDFUtil.java
@@ -1337,9 +1337,11 @@
           makeHisJianYanTable(document, map, dictHosp, color);
           printReport = new HashMap<>();
           pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
//           pacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
           newpacsJianChaData(tjOrder.getTjNumber(), printReport, tjOrder, customer);
           try {
               notHuaYanTable(document, printReport, dictHosp, color, true);
//               notHuaYanTable(document, printReport, dictHosp, color, true);
               pacsTable(document, printReport, dictHosp, color, true);
           } catch (DocumentException e) {
               log.error("pacs项目填充表格异常");
               log.error(String.valueOf(e));
@@ -2118,6 +2120,158 @@
        }
    }
    private void pacsTable(Document document1, Map<TjOrderRemark, List<TjPdfVO>> printReport, DictHosp dictHosp, String colorStr, boolean isPacs)throws DocumentException{
        try {
            List<TjReportSpecialProject> tjReportSpecialProjects = tjReportSpecialProjectService.list();
            for (Map.Entry<TjOrderRemark, List<TjPdfVO>> entry : printReport.entrySet()) {
                if (entry.getValue() == null || entry.getValue().isEmpty()) continue;
                //判断该项目是否需要打印报告
                    TjOrderRemark orderRemark = entry.getKey();
                    List<TjPdfVO> value = entry.getValue().stream().distinct().collect(Collectors.toList());
                    if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs()) && StrUtil.isBlank(value.get(0).getSj()))) {
                        continue;
                    }
                    String titleName = null;
                        if (entry.getValue().get(0).getProName().contains(";"))
                            titleName = entry.getValue().get(0).getProName();
                        else titleName = orderRemark.getProName();
                        // 设置标题字体样式
                        Font titleFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                        Paragraph paragraph = PdfUtils.setParagraph(titleFonts, titleName);
                        if (StrUtil.isBlank(value.get(0).getProResult()) && (StrUtil.isBlank(value.get(0).getTs().replaceAll("\n",""))
                                && StrUtil.isBlank(value.get(0).getSj().replaceAll("\n","")))) {
                            continue;
                        }
                        Font titleFont = PdfUtils.setFont(DEFAULT_TITLE_FONT_SIZE);
                        titleFont.setStyle(Font.BOLD);
                        PdfPCell cellTitle = new PdfPCell(PdfUtils.setParagraph(titleFont, titleName));
                        cellTitle.setBorder(Rectangle.NO_BORDER);
                        Color color = Color.decode("#B4CDCD");
                        cellTitle.setBackgroundColor(new BaseColor(color.getRed(), color.getGreen(), color.getBlue())); // 设置背景颜色(十六进制 RGB)
                        // 创建表格并添加单元格
                        PdfPTable tableTitle = new PdfPTable(1);
                        tableTitle.setWidthPercentage(100);
                        tableTitle.addCell(cellTitle);
                        // 将表格添加到文档中
                        document1.add(tableTitle);
                        if (!value.isEmpty()) {
                            if (value.size() > 1) {
                                Long pid = Long.valueOf(value.get(0).getPid());
                                Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
                                        .filter(item -> item.getProId().equals(pid))
                                        .findFirst();
                                if (match.isPresent()) {
                                    reportSpecialProject(document1, entry, paragraph, value,match.get());
                                } else {
                                    String[] titles = {"体检项目", "体检结果", "单位"};
                                    Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value, isPacs, new float[]{240, 240, 240});
                                    document1.add(table);
                                }
                            } else {
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                if (isPacs) {
                                    Paragraph pp;
                                    Paragraph ppp;
                                    if (StrUtil.isNotBlank(value.get(0).getSj()) || StrUtil.isNotBlank(value.get(0).getProResult())) {
                                        pp = PdfUtils.setParagraph(remarkFonts, "检查所见:");
                                        document1.add(pp);
                                        ppp = new Paragraph(value.get(0).getSj() != null ? value.get(0).getSj().replaceAll("\n","") : value.get(0).getProResult().replaceAll("\n",""), remarkFonts);
                                        paragraph.setAlignment(Element.ALIGN_LEFT);
                                        paragraph.setLeading(5f);
                                        document1.add(ppp);
                                    }
                                    pp = PdfUtils.setParagraph(remarkFonts, "检查提示:");
                                    document1.add(pp);
                                    ppp = new Paragraph((value.get(0).getTs() != null ? value.get(0).getTs().replaceAll("\n","") : value.get(0).getProResult().replaceAll("\n","")), remarkFonts);
                                    paragraph.setAlignment(Element.ALIGN_LEFT);
                                    paragraph.setLeading(5f);
                                    document1.add(ppp);
                                } else {
                                    Long pid = Long.valueOf(value.get(0).getPid());
                                    Optional<TjReportSpecialProject> match = tjReportSpecialProjects.stream()
                                            .filter(item -> item.getProId().equals(pid))
                                            .findFirst();
                                    if (match.isPresent()) {
                                        reportSpecialProject(document1, entry, paragraph, value,match.get());
                                    } else {
                                        String[] titles = {"体检项目", "体检结果"};
                                        Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                        Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                        PdfPTable table = PdfUtils.setTable2(headFont, textFont, titles, value, false, new float[]{240, 300});
                                        document1.add(table);
                                    }
                                }
                            }
                        } else {
                            String[] titles = {"体检项目", "体检结果", "单位"};
                            Font headFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                            Font textFont = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                            PdfPTable table = PdfUtils.setTable(headFont, textFont, titles, value, isPacs);
                            document1.add(table);
                        }
                        //判断备注是否为空  空不能显示null
                        if (entry.getKey().getRemark() == null) {
                            entry.getKey().setRemark("");
                        }
                        //                    if (!dictHosp.getHospName().equals("澄合矿务局中心医院")){
                        if (!true) {
                            String remark = "备注:" + entry.getKey().getRemark();
                            if (entry.getKey().getRemark().length() > 50) {
                                int j = 0;
                                for (int i = 0; i < remark.length() / 50; i++) {
                                    String substring = remark.substring(j, j + 50);
                                    Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
                                    document1.add(pp);
                                    j = j + 50;
                                }
                                if (remark.length() % 50 != 0) {
                                    String substring = remark.substring((remark.length() / 50) * 50, remark.length() - 1);
                                    Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                    Paragraph pp = PdfUtils.setParagraph(remarkFonts, substring);
                                    document1.add(pp);
                                }
                            } else {
                                Font remarkFonts = PdfUtils.setFont(DEFAULT_FONT_SIZE);
                                Paragraph pp = PdfUtils.setParagraph(remarkFonts, remark);
                                document1.add(pp);
                            }
                        }
                        //判断主检医师是否为空  空不能显示null
                        zhuJianYiShi(document1, entry, orderRemark.getCreateTime(), dictHosp);
                        //                    if (!dictHosp.getHospName().equals("澄合矿务局中心医院")) {
                        if (!true) {
                            //分割线
                            LineSeparator objectName = new LineSeparator();
                            document1.add(objectName);
                        }
            }
        } catch (NumberFormatException e) {
            throw new RuntimeException(e);
        } catch (DocumentException e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 目前写死 只有碳13、14 模板都是一样的只不过参考值不同
     * 凌云:{"dy":"4.0","xy":"4.0","title":"阳性参考值:","dystr":"DOB值:         ≥      ${dy}                HP-阳性","xystr":"                <      ${xy}                  正常","en":"DOB"}
@@ -2559,6 +2713,7 @@
                            }
                            tjPdfVO.setProId(String.valueOf(tjOrderDetail.getProject().getProId()));
                            tjPdfVO.setPid(String.valueOf(tjProject.getProParentId()));
                            tjPdfVO.setXh(tjProject.getXh());
    //                        LambdaQueryWrapper<LtkjExamJcbgd> wrapper = new LambdaQueryWrapper<>();
    //                        wrapper.eq(LtkjExamJcbgd::getTjh, tjNumber);
    //                        wrapper.eq(LtkjExamJcbgd::getXmdm, String.valueOf(tjOrderDetail.getProject().getProParentId()));
@@ -2567,12 +2722,13 @@
                    }
                }
                if(!tjPdfVOS.isEmpty()){
                    tjPdfVOS=tjPdfVOS.stream().sorted(Comparator.comparing(TjPdfVO::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
                    tjPdfVOS = tjPdfVOS.stream()
                            .sorted(Comparator.comparingInt(
                                    tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
                            ))
                            .collect(Collectors.toList());
//                    tjPdfVOS=tjPdfVOS.stream().sorted(Comparator.comparing(TjPdfVO::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
//                    tjPdfVOS = tjPdfVOS.stream()
//                            .sorted(Comparator.comparingInt(
//                                    tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
//                            ))
//                            .collect(Collectors.toList());
                    tjPdfVOS=tjPdfVOS.stream().sorted(Comparator.comparing(TjPdfVO::getXh)).collect(Collectors.toList());
                }
                printReport.put(entry.getKey(), tjPdfVOS);
            }
@@ -2660,6 +2816,38 @@
        }
    }
    private void newpacsJianChaData(String tjNumber, Map<TjOrderRemark, List<TjPdfVO>> printReport, TjOrder one, TjCustomer customer) {
        try {
            List<TjOrderRemark> tjOrderRemarks = tjOrderRemarkService.newpacsJianChaData(tjNumber);
            for (TjOrderRemark tjOrderRemark : tjOrderRemarks) {
                List<TjPdfVO> tjPdfVOS = new ArrayList<>();
                TjPdfVO tjPdfVO = new TjPdfVO();
                tjPdfVO.setProResult(null);
                tjPdfVO.setExc(0L);
                tjPdfVO.setCompany("/");
                tjPdfVO.setProId(tjOrderRemark.getProsId());
                String yxbx = tjOrderRemark.getRemark();
                String bgNr = tjOrderRemark.getJgbx();
                // 正则表达式:匹配数字后跟 '.' 或 '、'
                String regex = "\\d+[\\.,、]";
                // 使用正则替换,匹配的数字后添加换行符
                if(StringUtil.isNotBlank(yxbx)) yxbx = yxbx.replaceAll(regex, "\n$0");
                if(StringUtil.isBlank(bgNr)) bgNr = "";
                if(StringUtil.isBlank(yxbx)) yxbx = "";
                tjPdfVO.setTs(yxbx);
                tjPdfVO.setSj(bgNr);
                tjPdfVO.setShys(tjOrderRemark.getDoctorName());
                tjPdfVO.setProName(tjOrderRemark.getProName());
                tjPdfVOS.add(tjPdfVO);
                printReport.put(tjOrderRemark, tjPdfVOS);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    /**
     * 设置用户信息
     *
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -773,193 +773,200 @@
//    @Async("async")
//    @Transactional
    public Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser, String jxbz) {
        Date dates = new Date();
        final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
      try {
          Date dates = new Date();
          final String date = DateUtil.format(dates, "yyyy-MM-dd HH:mm:ss");
        tjFlowingWater.setJxbz(jxbz);
        tjFlowingWaterService.updateById(tjFlowingWater);
          tjFlowingWater.setJxbz(jxbz);
          tjFlowingWaterService.updateById(tjFlowingWater);
        TjProBl proBl = new TjProBl();
        proBl.setTjh(order.getTjNumber());
        proBl.setBldh(jxbz);
        proBl.setBlsj(date);
        proBl.setBlrdm(sysUser.getUserName());
        proBl.setBlrmc(sysUser.getNickName());
        proBl.setBlje(String.valueOf(tjFlowingWater.getPaidIn()));
        blService.save(proBl);
          TjProBl proBl = new TjProBl();
          proBl.setTjh(order.getTjNumber());
          proBl.setBldh(jxbz);
          proBl.setBlsj(date);
          proBl.setBlrdm(sysUser.getUserName());
          proBl.setBlrmc(sysUser.getNickName());
          proBl.setBlje(String.valueOf(tjFlowingWater.getPaidIn()));
          blService.save(proBl);
        String[] tjProIds = tjFlowingWater.getTjProIds();
          String[] tjProIds = tjFlowingWater.getTjProIds();
        String config = configService.selectConfigByKey("sfkqdyhis");
          String config = configService.selectConfigByKey("sfkqdyhis");
        List<TjProject> projectList = new ArrayList<>();
          List<TjProject> projectList = new ArrayList<>();
//        ArrayList<TjOrderDetail> tjOrderDetails = new ArrayList<>();
        for (String tjProId : tjProIds) {
            TjProject project = projectService.getById(Long.valueOf(tjProId));
            if (null != project && project.getProParentId() == 0) {
                TjOrderRemark tjOrderRemark = new TjOrderRemark();
                tjOrderRemark.setProId(Long.valueOf(tjProId));
                tjOrderRemark.setProName(project.getProName());
                tjOrderRemark.setDeptId(project.getDeptId());
                tjOrderRemark.setTjNumber(order.getTjNumber());
                tjOrderRemark.setCreateBy(sysUser.getNickName());
                tjOrderRemark.setCreateTime(dates);
                tjOrderRemark.setUpdateBy(sysUser.getNickName());
                tjOrderRemark.setUpdateTime(dates);
                tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
                tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
                tjOrderRemark.setJxbz(jxbz);
                orderRemarkService.save(tjOrderRemark);
          for (String tjProId : tjProIds) {
              TjProject project = projectService.getById(Long.valueOf(tjProId));
              if (null != project && project.getProParentId() == 0) {
                  TjOrderRemark tjOrderRemark = new TjOrderRemark();
                  tjOrderRemark.setProId(Long.valueOf(tjProId));
                  tjOrderRemark.setProName(project.getProName());
                  tjOrderRemark.setDeptId(project.getDeptId());
                  tjOrderRemark.setTjNumber(order.getTjNumber());
                  tjOrderRemark.setCreateBy(sysUser.getNickName());
                  tjOrderRemark.setCreateTime(dates);
                  tjOrderRemark.setUpdateBy(sysUser.getNickName());
                  tjOrderRemark.setUpdateTime(dates);
                  tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
                  tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
                  tjOrderRemark.setJxbz(jxbz);
                  orderRemarkService.save(tjOrderRemark);
                List<Long> proIds = projectService.getTjProjectListBySoneId(tjProId).stream().map(TjProject::getProId).collect(Collectors.toList());
                TjOrderDetail detail = new TjOrderDetail();
                detail.setTjStatus(0L);
                detail.setOrderId(tjFlowingWater.getOrderId());
                  List<Long> proIds = projectService.getTjProjectListBySoneId(tjProId).stream().map(TjProject::getProId).collect(Collectors.toList());
                  TjOrderDetail detail = new TjOrderDetail();
                  detail.setTjStatus(0L);
                  detail.setOrderId(tjFlowingWater.getOrderId());
//                detail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                detail.setProId(Long.valueOf(tjProId));
                detail.setIsAddition("Y");
                detail.setCreateBy(sysUser.getNickName());
                detail.setCreateTime(dates);
                detail.setUpdateBy(sysUser.getNickName());
                detail.setUpdateTime(dates);
                detail.setCreateId(String.valueOf(sysUser.getUserId()));
                detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                detail.setJxbz(jxbz);
                tjOrderDetailService.save(detail);
                for (Long proId : proIds) {
                    TjOrderDetail detail1 = new TjOrderDetail();
                    detail1.setTjStatus(0L);
                    detail1.setOrderId(tjFlowingWater.getOrderId());
                  detail.setProId(Long.valueOf(tjProId));
                  detail.setIsAddition("Y");
                  detail.setCreateBy(sysUser.getNickName());
                  detail.setCreateTime(dates);
                  detail.setUpdateBy(sysUser.getNickName());
                  detail.setUpdateTime(dates);
                  detail.setCreateId(String.valueOf(sysUser.getUserId()));
                  detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                  detail.setJxbz(jxbz);
                  tjOrderDetailService.save(detail);
                  for (Long proId : proIds) {
                      TjOrderDetail detail1 = new TjOrderDetail();
                      detail1.setTjStatus(0L);
                      detail1.setOrderId(tjFlowingWater.getOrderId());
//                    detail1.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    detail1.setProId(proId);
                    detail1.setIsAddition("Y");
                    detail1.setCreateBy(sysUser.getNickName());
                    detail1.setCreateTime(dates);
                    detail1.setUpdateBy(sysUser.getNickName());
                    detail1.setUpdateTime(dates);
                    detail1.setCreateId(String.valueOf(sysUser.getUserId()));
                    detail1.setUpdateId(String.valueOf(sysUser.getUserId()));
                    detail1.setJxbz(jxbz);
                    tjOrderDetailService.save(detail1);
                }
                      detail1.setProId(proId);
                      detail1.setIsAddition("Y");
                      detail1.setCreateBy(sysUser.getNickName());
                      detail1.setCreateTime(dates);
                      detail1.setUpdateBy(sysUser.getNickName());
                      detail1.setUpdateTime(dates);
                      detail1.setCreateId(String.valueOf(sysUser.getUserId()));
                      detail1.setUpdateId(String.valueOf(sysUser.getUserId()));
                      detail1.setJxbz(jxbz);
                      tjOrderDetailService.save(detail1);
                  }
            } else {
              } else {
                //如果该项目存在 则 不保存
                  //如果该项目存在 则 不保存
                TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), tjProId);
                  TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), tjProId);
//                if(null !=orderDetail) continue;
                if (null != orderDetail) {
                    detailMapper.updateTjOrderDetailDel(orderDetail.getOrderDetailId().toString());
                }
                  if (null != orderDetail) {
                      detailMapper.updateTjOrderDetailDel(orderDetail.getOrderDetailId().toString());
                  }
                TjProject projects = projectService.selectTjProjectByProId(Long.valueOf(tjProId));
                if (null != projects) {
                    TjProject projectss = projectService.getById(projects.getProParentId());
                    if (null != projectss && projectss.getProParentId() == 0L) {
                        projectList.add(projectss);
                    }
                }
                TjOrderDetail detail = new TjOrderDetail();
                detail.setTjStatus(0L);
                detail.setOrderId(tjFlowingWater.getOrderId());
                detail.setProId(Long.valueOf(tjProId));
                detail.setIsAddition("Y");
                detail.setCreateBy(sysUser.getNickName());
                detail.setCreateTime(dates);
                detail.setUpdateBy(sysUser.getNickName());
                detail.setUpdateTime(dates);
                detail.setCreateId(String.valueOf(sysUser.getUserId()));
                detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                detail.setJxbz(jxbz);
                tjOrderDetailService.save(detail);
                  TjProject projects = projectService.selectTjProjectByProId(Long.valueOf(tjProId));
                  if (null != projects) {
                      TjProject projectss = projectService.getById(projects.getProParentId());
                      if (null != projectss && projectss.getProParentId() == 0L) {
                          projectList.add(projectss);
                      }
                  }
                  TjOrderDetail detail = new TjOrderDetail();
                  detail.setTjStatus(0L);
                  detail.setOrderId(tjFlowingWater.getOrderId());
                  detail.setProId(Long.valueOf(tjProId));
                  detail.setIsAddition("Y");
                  detail.setCreateBy(sysUser.getNickName());
                  detail.setCreateTime(dates);
                  detail.setUpdateBy(sysUser.getNickName());
                  detail.setUpdateTime(dates);
                  detail.setCreateId(String.valueOf(sysUser.getUserId()));
                  detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                  detail.setJxbz(jxbz);
                  tjOrderDetailService.save(detail);
//                tjOrderDetails.add(detail);
            }
              }
            List<TbTransition> tbTransitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(customer.getCusIdcard(), tjProId);
            if (null != tbTransitionList && !tbTransitionList.isEmpty()) {
                for (TbTransition transition : tbTransitionList) {
                    transitionService.updateTbTransitionById(transition.getId().toString(), jxbz, order.getTjNumber(), order.getCardId(),
                            transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(tjFlowingWater.getDiscount())).divide(BigDecimal.valueOf(10))));
                }
            }
              List<TbTransition> tbTransitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(customer.getCusIdcard(), tjProId);
              if (null != tbTransitionList && !tbTransitionList.isEmpty()) {
                  for (TbTransition transition : tbTransitionList) {
                      transitionService.updateTbTransitionById(transition.getId().toString(), jxbz, order.getTjNumber(), order.getCardId(),
                              transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(tjFlowingWater.getDiscount())).divide(BigDecimal.valueOf(10))));
                  }
              }
        }
        // TODO 和签到登记一样 只有配置中的以及收费类型为体检票时才增加到采样管理表
          }
          // TODO 和签到登记一样 只有配置中的以及收费类型为体检票时才增加到采样管理表
//        tjOrderDetails = new ArrayList<>();
        ArrayList<TjProject> jianChaProjects = new ArrayList<>();
          ArrayList<TjProject> jianChaProjects = new ArrayList<>();
        if (!projectList.isEmpty()) {
            List<TjProject> list = projectList.stream().distinct().collect(Collectors.toList());
            for (TjProject project : list) {
          if (!projectList.isEmpty()) {
              List<TjProject> list = projectList.stream().distinct().collect(Collectors.toList());
              for (TjProject project : list) {
                TjOrderRemark orderRemark = orderRemarkService.getTjOrderRemarkByTjNumAndProParentId(order.getTjNumber(), String.valueOf(project.getProId()));
                if (null != orderRemark) {
                    remarkMapper.updateTjOrderRemarkdel(orderRemark.getRemarkId().toString());
                }
                  TjOrderRemark orderRemark = orderRemarkService.getTjOrderRemarkByTjNumAndProParentId(order.getTjNumber(), String.valueOf(project.getProId()));
                  if (null != orderRemark) {
                      remarkMapper.updateTjOrderRemarkdel(orderRemark.getRemarkId().toString());
                  }
                TjOrderRemark tjOrderRemark = new TjOrderRemark();
                tjOrderRemark.setProId(project.getProId());
                tjOrderRemark.setProName(project.getProName());
                tjOrderRemark.setDeptId(project.getDeptId());
                tjOrderRemark.setTjNumber(order.getTjNumber());
                tjOrderRemark.setCreateBy(sysUser.getNickName());
                tjOrderRemark.setCreateTime(dates);
                tjOrderRemark.setUpdateBy(sysUser.getNickName());
                tjOrderRemark.setUpdateTime(dates);
                tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
                tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
                tjOrderRemark.setJxbz(jxbz);
                orderRemarkService.save(tjOrderRemark);
                  TjOrderRemark tjOrderRemark = new TjOrderRemark();
                  tjOrderRemark.setProId(project.getProId());
                  tjOrderRemark.setProName(project.getProName());
                  tjOrderRemark.setDeptId(project.getDeptId());
                  tjOrderRemark.setTjNumber(order.getTjNumber());
                  tjOrderRemark.setCreateBy(sysUser.getNickName());
                  tjOrderRemark.setCreateTime(dates);
                  tjOrderRemark.setUpdateBy(sysUser.getNickName());
                  tjOrderRemark.setUpdateTime(dates);
                  tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
                  tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
                  tjOrderRemark.setJxbz(jxbz);
                  orderRemarkService.save(tjOrderRemark);
                TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), project.getProId().toString());
                if (null != orderDetail) {
                    detailMapper.updateTjOrderDetailDel(orderDetail.getOrderDetailId().toString());
                }
                  TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), project.getProId().toString());
                  if (null != orderDetail) {
                      detailMapper.updateTjOrderDetailDel(orderDetail.getOrderDetailId().toString());
                  }
                TjOrderDetail detail1 = new TjOrderDetail();
                detail1.setTjStatus(0L);
                detail1.setOrderId(tjFlowingWater.getOrderId());
                detail1.setProId(project.getProId());
                detail1.setIsAddition("Y");
                detail1.setCreateBy(sysUser.getNickName());
                detail1.setCreateTime(dates);
                detail1.setUpdateBy(sysUser.getNickName());
                detail1.setUpdateTime(dates);
                detail1.setCreateId(String.valueOf(sysUser.getUserId()));
                detail1.setUpdateId(String.valueOf(sysUser.getUserId()));
                detail1.setJxbz(jxbz);
                tjOrderDetailService.save(detail1);
                  TjOrderDetail detail1 = new TjOrderDetail();
                  detail1.setTjStatus(0L);
                  detail1.setOrderId(tjFlowingWater.getOrderId());
                  detail1.setProId(project.getProId());
                  detail1.setIsAddition("Y");
                  detail1.setCreateBy(sysUser.getNickName());
                  detail1.setCreateTime(dates);
                  detail1.setUpdateBy(sysUser.getNickName());
                  detail1.setUpdateTime(dates);
                  detail1.setCreateId(String.valueOf(sysUser.getUserId()));
                  detail1.setUpdateId(String.valueOf(sysUser.getUserId()));
                  detail1.setJxbz(jxbz);
                  tjOrderDetailService.save(detail1);
//                tjOrderDetails.add(detail1);
                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
                    if (null != project.getHisXmbm()) {
                        jianChaProjects.add(project);
                    }
                }
            }
                  if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
                      if (null != project.getHisXmbm()) {
                          jianChaProjects.add(project);
                      }
                  }
              }
            // TODO 和签到登记一样 只有配置中的以及收费类型为体检票时才增加到采样管理表
            if (config.equalsIgnoreCase("Y")) {
                List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                addCaiYangDengJi(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
                String isUseMx = configService.selectConfigByKey("jcxhis_is_use_mx");
                AjaxResult result;
                if (isUseMx.equalsIgnoreCase("Y"))
                    result = tijianbulushenqing(customer, date, order.getCardId(), jxbz, jianChaProjects, (tjFlowingWater.getPayType() == 6L || tjFlowingWater.getPayStasus() == 1L));
                else
                    result = tijianbulushenqingJinchuanNew(customer, date, order.getCardId(), jxbz, jianChaProjects,(tjFlowingWater.getPayType() == 6L || tjFlowingWater.getPayStasus() == 1L));
                return result.get("code").toString().equals("200");
            } else {
                List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                addCaiYangDengJiByDiaoYongShiTu(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
            }
        }
        return true;
              // TODO 和签到登记一样 只有配置中的以及收费类型为体检票时才增加到采样管理表
              if (config.equalsIgnoreCase("Y")) {
                  List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                  addCaiYangDengJi(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
                  String isUseMx = configService.selectConfigByKey("jcxhis_is_use_mx");
                  AjaxResult result;
                  try {
                      if (isUseMx.equalsIgnoreCase("Y"))
                          result = tijianbulushenqing(customer, date, order.getCardId(), jxbz, jianChaProjects, (tjFlowingWater.getPayType() == 6L || tjFlowingWater.getPayStasus() == 1L));
                      else
                          result = tijianbulushenqingJinchuanNew(customer, date, order.getCardId(), jxbz, jianChaProjects,(tjFlowingWater.getPayType() == 6L || tjFlowingWater.getPayStasus() == 1L));
                  } catch (Exception e) {
                      throw new RuntimeException(e);
                  }
                  return result.get("code").toString().equals("200");
              } else {
                  List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                  addCaiYangDengJiByDiaoYongShiTu(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
              }
          }
          return true;
      }catch (Exception e){
          throw new RuntimeException(e);
      }
    }
    public void addCaiYangDengJiByDiaoYongShiTu(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
@@ -1046,6 +1053,7 @@
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new RuntimeException();
        }
    }
@@ -1054,691 +1062,229 @@
    private static ArrayList<String> ids = null;
    public AjaxResult tijianbulushenqingJinchuanNew(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        mapJinchuan = new ArrayList<>();
        ids = new ArrayList<>();
        tijianbulushenqingOld(customer, date, cardId, jxbz, jianChaProjects, isTuanTiPiao);
        try {
            mapJinchuan = new ArrayList<>();
            ids = new ArrayList<>();
            tijianbulushenqingOld(customer, date, cardId, jxbz, jianChaProjects, isTuanTiPiao);
        tijianbulushenqingJinchuan(customer, date, cardId, jxbz, jianChaProjects, isTuanTiPiao);
        return AjaxResult.success();
        //return AjaxResult.success();
            tijianbulushenqingJinchuan(customer, date, cardId, jxbz, jianChaProjects, isTuanTiPiao);
            return AjaxResult.success();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
    public AjaxResult tijianbulushenqingJinchuan(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        TjOrder order = orderService.getOrderByCardId(cardId);
        if (null != order) {
            String dept = configService.selectConfigByKey("request_default_dept");
            String ysbm = configService.selectConfigByKey("request_default_ysbm");
            String ysmc = configService.selectConfigByKey("request_default_ysmc");
            String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
            List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
            if (useLisAndPacsRegister && isTuanTiPiao) {
                // 检查申请
                pacsReg(order, customer, jianChaProjects);
                LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                wrapper.eq(TjSampling::getJxbz, jxbz);
                List<TjSampling> list = tjSamplingService.list(wrapper);
                log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                if (!list.isEmpty()) {
                    Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                    log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
//                    ArrayList<String> ids = new ArrayList<>();
                    for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                        log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                        // Lis标本代码
                        String specimenTypeCode = entry.getKey();
                        List<TjSampling> samplings = entry.getValue();
                        if (samplings.size() >= 2) {
                            // 进行合并
                            List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
//                            log.info("提取id ->{}",stringList);
                            for (int i = 0; i < stringList.size(); i++) {
                                String s = stringList.get(i);
                                if (tjSamplingService.isMergeItem(s) != 0) {
                                    stringList.remove(s);
                                    ids.add(s);
        try {
            TjOrder order = orderService.getOrderByCardId(cardId);
            if (null != order) {
                String dept = configService.selectConfigByKey("request_default_dept");
                String ysbm = configService.selectConfigByKey("request_default_ysbm");
                String ysmc = configService.selectConfigByKey("request_default_ysmc");
                String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
                List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
                Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
                List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
                if (useLisAndPacsRegister && isTuanTiPiao) {
                    // 检查申请
                    pacsReg(order, customer, jianChaProjects);
                    LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                    wrapper.eq(TjSampling::getJxbz, jxbz);
                    List<TjSampling> list = tjSamplingService.list(wrapper);
                    log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                    if (!list.isEmpty()) {
                        Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                        log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
    //                    ArrayList<String> ids = new ArrayList<>();
                        for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                            log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                            // Lis标本代码
                            String specimenTypeCode = entry.getKey();
                            List<TjSampling> samplings = entry.getValue();
                            if (samplings.size() >= 2) {
                                // 进行合并
                                List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
    //                            log.info("提取id ->{}",stringList);
                                for (int i = 0; i < stringList.size(); i++) {
                                    String s = stringList.get(i);
                                    if (tjSamplingService.isMergeItem(s) != 0) {
                                        stringList.remove(s);
                                        ids.add(s);
                                    }
                                }
                            }
                            if (stringList.size() > 1) {
                                String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                ids.add(id);
                                if (stringList.size() > 1) {
                                    String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                    ids.add(id);
                                } else {
                                    ids.add(stringList.get(0));
                                }
                            } else {
                                ids.add(stringList.get(0));
                                ids.add(samplings.get(0).getId());
                            }
                        } else {
                            ids.add(samplings.get(0).getId());
                        }
                    }
                    Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids.stream().distinct().collect(Collectors.toList()), "Y", "N");
                    if (!confirmed)
                        return AjaxResult.error("处理失败");
                }
            } else {
                List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                //检验申请
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
//            wq.groupBy(TjProject::getHisXmbm);
//            wq.in(TjProject::getDeptId, "241", "317");
                    wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    if (null != projects && !projects.isEmpty()) {
                        List<TjProject> notNull = projects.stream().filter(i -> i.getSpecimenType() != null).collect(Collectors.toList());
                        List<TjProject> isNull = projects.stream().filter(i -> i.getSpecimenType() == null).collect(Collectors.toList());
                        Map<String, List<TjProject>> listMap = notNull.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                        if (!isNull.isEmpty())
                            listMap.put("", isNull);
                        for (Map.Entry<String, List<TjProject>> entry : listMap.entrySet()) {
                            OutpintestapplyDto dto = new OutpintestapplyDto();
                            dto.setHisRegistrationId(cardId);
                            dto.setSfzh(customer.getCusIdcard());
                            dto.setSqysbm(ysbm);
                            dto.setMzksbm(dept);
                            dto.setSjrq(date);
                            dto.setCzybm(ysbm);
                            dto.setCzyksbm(dept);
                            dto.setSfjz("0");
                            List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                            List<TjProject> value = entry.getValue();
                            for (TjProject project : value) {
                                LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                                wrapper.eq(TjProject::getProParentId, project.getProId());
                                if (!mapJinchuan.isEmpty()) {
                                    wrapper.notIn(TjProject::getProId, mapJinchuan);
                                    wrapper.notIn(TjProject::getProParentId, mapJinchuan);
                                }
                                List<TjProject> list = projectService.list(wrapper);
                                for (TjProject tjProject : list) {
                                    if (StrUtil.isNotBlank(tjProject.getHisXmbm()) && tjProject.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(tjProject.getHisXmbm());
                                        if (tjProject.getSfzhfy().equals("Y")) {
                                            detailsDto.setSfzhfy("1");
                                        } else {
                                            detailsDto.setSfzhfy("0");
                                        }
                                        detailsDto.setSl(tjProject.getSl());
                                        detailsDto.setProjg(tjProject.getProPrice());
                                        detailsDtos.add(detailsDto);
                                    }
                                }
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
                                        detilsDto.setDj(i.getDj());
                                        detilsDto.setDcjl(i.getDcjl());
                                        detilsDto.setPj(i.getPj());
                                        detilsDto.setJj(i.getJj());
                                        detilsDto.setJldw("");
                                        detilsDto.setTjbm("");
                                        detilsDto.setPs("");
                                        detilsDto.setPsbm("");
                                        detilsDto.setYyts("");
                                        detilsDto.setXtph("");
                                        detilsDto.setScph("");
                                        detilsDto.setYpxq("");
                                        detilsDto.setCdbm("");
                                        detilsDto.setKfdw("");
                                        detilsDto.setYfdw("");
                                        detilsDto.setYysm("");
                                        detilsDto.setYpmc(i.getYpmc());
                                        detilsDto.setFzbl(i.getFzbl());
                                        detilsDto.setZh(i.getZh());
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                            }
                            if (!detailsDtos.isEmpty()) {
                                dto.setDetails(detailsDtos);
                                AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                                String result5 = getAjaxResult(ajaxResult1);
                                JSONObject object3 = getJSONObject(result5);
                                String code3 = object3.getStr("ResultCode");
                                if (code3.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details = dto.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setCardId(dto.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = object3.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("jysqdh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("检验");
                                        tree.setService("his");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }
                                    // TODO 个人以及团体 暂不向采样管理写数据
                                    // HIS发送无法合并操作 无法获取LIS的检验序号 条码无法打印
//                TjOrder tjOrder = orderService.getOrderByCardId(cardId);
//                if(null !=tjOrder){
//                    List<TjOrderDetail> dengJi = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                    tjSysAsyncService.addCaiYangDengJi(dengJi,!dengJi.isEmpty(),tjOrder, SecurityUtils.getLoginUser().getUser(), null);
//                }
                                }
                            }
                        }
                        Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids.stream().distinct().collect(Collectors.toList()), "Y", "N");
                        if (!confirmed)
                            return AjaxResult.error("处理失败");
                    }
                }
                //门诊检查申请
//        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                    if (!proIds.isEmpty()) {
                        QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                        wrapper4.select("sum(sl) as sl", "pro_id"
                                , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                , "pro_price");
                        wrapper4.in("pro_parent_id", proIds);
                        wrapper4.groupBy("his_xmbm");
                        if (!mapJinchuan.isEmpty()) {
                            wrapper4.notIn("pro_id", mapJinchuan);
                            wrapper4.notIn("pro_parent_id", mapJinchuan);
                        }
                        projects = projectService.list(wrapper4);
                } else {
                    List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                    //检验申请
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
    //            wq.groupBy(TjProject::getHisXmbm);
    //            wq.in(TjProject::getDeptId, "241", "317");
                        wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        if (null != projects && !projects.isEmpty()) {
                            List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                            for (TjProject project : projects) {
                                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
                                        detailsDto.setSfzhfy("0");
                                        detailsDto.setSl(project.getSl());
                                        detailsDto.setProjg(project.getProPrice());
                                        detailsDtoss.add(detailsDto);
                            List<TjProject> notNull = projects.stream().filter(i -> i.getSpecimenType() != null).collect(Collectors.toList());
                            List<TjProject> isNull = projects.stream().filter(i -> i.getSpecimenType() == null).collect(Collectors.toList());
                            Map<String, List<TjProject>> listMap = notNull.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                            if (!isNull.isEmpty())
                                listMap.put("", isNull);
                            for (Map.Entry<String, List<TjProject>> entry : listMap.entrySet()) {
                                OutpintestapplyDto dto = new OutpintestapplyDto();
                                dto.setHisRegistrationId(cardId);
                                dto.setSfzh(customer.getCusIdcard());
                                dto.setSqysbm(ysbm);
                                dto.setMzksbm(dept);
                                dto.setSjrq(date);
                                dto.setCzybm(ysbm);
                                dto.setCzyksbm(dept);
                                dto.setSfjz("0");
                                List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                                List<TjProject> value = entry.getValue();
                                for (TjProject project : value) {
                                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                                    wrapper.eq(TjProject::getProParentId, project.getProId());
                                    if (!mapJinchuan.isEmpty()) {
                                        wrapper.notIn(TjProject::getProId, mapJinchuan);
                                        wrapper.notIn(TjProject::getProParentId, mapJinchuan);
                                    }
                                }
                            }
                            List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                            if (!outpinmedicXms.isEmpty()) {
                                outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
                                    detilsDto.setDj(i.getDj());
                                    detilsDto.setDcjl(i.getDcjl());
                                    detilsDto.setPj(i.getPj());
                                    detilsDto.setJj(i.getJj());
                                    detilsDto.setJldw("");
                                    detilsDto.setTjbm("");
                                    detilsDto.setPs("");
                                    detilsDto.setPsbm("");
                                    detilsDto.setYyts("");
                                    detilsDto.setXtph("");
                                    detilsDto.setScph("");
                                    detilsDto.setYpxq("");
                                    detilsDto.setCdbm("");
                                    detilsDto.setKfdw("");
                                    detilsDto.setYfdw("");
                                    detilsDto.setYysm("");
                                    detilsDto.setYpmc(i.getYpmc());
                                    detilsDto.setFzbl(i.getFzbl());
                                    detilsDto.setZh(i.getZh());
                                    outpinmedicapplyDetilsDtos.add(detilsDto);
                                });
                            }
                            if (!detailsDtoss.isEmpty()) {
                                OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                                outpinexamapplyDto.setHisRegistrationId(cardId);
                                outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                                outpinexamapplyDto.setSqysbm(ysbm);
                                outpinexamapplyDto.setMzksbm(dept);
                                outpinexamapplyDto.setCzybm(ysbm);
                                outpinexamapplyDto.setCzyksbm(dept);
                                outpinexamapplyDto.setSfjz("0");
                                outpinexamapplyDto.setDetails(detailsDtoss);
                                AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                                String result6 = getAjaxResult(ajaxResult2);
                                JSONObject object5 = getJSONObject(result6);
                                String code4 = object5.getStr("ResultCode");
                                if (code4.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setJxbz(jxbz);
                                        tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = object5.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("jcsqdh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("检查");
                                        tree.setService("his");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                    List<TjProject> list = projectService.list(wrapper);
                                    for (TjProject tjProject : list) {
                                        if (StrUtil.isNotBlank(tjProject.getHisXmbm()) && tjProject.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                            detailsDto.setMxfyxmbm(tjProject.getHisXmbm());
                                            if (tjProject.getSfzhfy().equals("Y")) {
                                                detailsDto.setSfzhfy("1");
                                            } else {
                                                detailsDto.setSfzhfy("0");
                                            }
                                            detailsDto.setSl(tjProject.getSl());
                                            detailsDto.setProjg(tjProject.getProPrice());
                                            detailsDtos.add(detailsDto);
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }
                                    if (!outpinmedicXms.isEmpty()) {
                                        outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                            OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                            detilsDto.setYpbm(i.getYpbm());
                                            detilsDto.setPcbm(i.getPcbm());
                                            detilsDto.setSl(i.getSl());
                                            detilsDto.setDj(i.getDj());
                                            detilsDto.setDcjl(i.getDcjl());
                                            detilsDto.setPj(i.getPj());
                                            detilsDto.setJj(i.getJj());
                                            detilsDto.setJldw("");
                                            detilsDto.setTjbm("");
                                            detilsDto.setPs("");
                                            detilsDto.setPsbm("");
                                            detilsDto.setYyts("");
                                            detilsDto.setXtph("");
                                            detilsDto.setScph("");
                                            detilsDto.setYpxq("");
                                            detilsDto.setCdbm("");
                                            detilsDto.setKfdw("");
                                            detilsDto.setYfdw("");
                                            detilsDto.setYysm("");
                                            detilsDto.setYpmc(i.getYpmc());
                                            detilsDto.setFzbl(i.getFzbl());
                                            detilsDto.setZh(i.getZh());
                                            outpinmedicapplyDetilsDtos.add(detilsDto);
                                        });
                                    }
                                }
                            }
                        }
                    }
                }
                //门诊治疗处置申请
                OutpintreatapplyDto dao = new OutpintreatapplyDto();
                dao.setHisRegistrationId(cardId);
                dao.setSfzh(customer.getCusIdcard());
                dao.setSqysbm(ysbm);
                dao.setMzksbm(dept);
                dao.setSjrq(date);
                dao.setCzybm(ysbm);
                dao.setCzyksbm(dept);
                dao.setSfjz("0");
//        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                    if (!proIds.isEmpty()) {
                        QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                        wrapper4.select("sum(sl) as sl", "pro_id"
                                , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                , "pro_price");
                        wrapper4.in("pro_parent_id", proIds);
                        wrapper4.groupBy("his_xmbm");
                        if (!mapJinchuan.isEmpty()) {
                            wrapper4.notIn("pro_id", mapJinchuan);
                            wrapper4.notIn("pro_parent_id", mapJinchuan);
                        }
                        projects = projectService.list(wrapper4);
                        if (null != projects && !projects.isEmpty()) {
                            List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                            for (TjProject project : projects) {
                                if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                    detailsDto.setMxfyxmbm(project.getHisXmbm());
                                    detailsDto.setSfzhfy("0");
                                    detailsDto.setSl(project.getSl());
                                    detailsDto.setProjg(project.getProPrice());
                                    detailDtos.add(detailsDto);
                                }
                            }
                            List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                            if (!outpinmedicXms.isEmpty()) {
                                outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
                                    detilsDto.setDj(i.getDj());
                                    detilsDto.setDcjl(i.getDcjl());
                                    detilsDto.setPj(i.getPj());
                                    detilsDto.setJj(i.getJj());
                                    detilsDto.setJldw("");
                                    detilsDto.setTjbm("");
                                    detilsDto.setPs("");
                                    detilsDto.setPsbm("");
                                    detilsDto.setYyts("");
                                    detilsDto.setXtph("");
                                    detilsDto.setScph("");
                                    detilsDto.setYpxq("");
                                    detilsDto.setCdbm("");
                                    detilsDto.setKfdw("");
                                    detilsDto.setYfdw("");
                                    detilsDto.setYysm("");
                                    detilsDto.setYpmc(i.getYpmc());
                                    detilsDto.setFzbl(i.getFzbl());
                                    detilsDto.setZh(i.getZh());
                                    outpinmedicapplyDetilsDtos.add(detilsDto);
                                });
                            }
                            if (!detailDtos.isEmpty()) {
                                dao.setDetails(detailDtos);
                                AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                                String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                                JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                                String code5 = mzylyzsq3.getStr("ResultCode");
                                if (code5.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details1) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setJxbz(jxbz);
                                        tree.setCardId(dao.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("zlczh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("处置");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                if (!detailsDtos.isEmpty()) {
                                    dto.setDetails(detailsDtos);
                                    AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                                    String result5 = getAjaxResult(ajaxResult1);
                                    JSONObject object3 = getJSONObject(result5);
                                    String code3 = object3.getStr("ResultCode");
                                    if (code3.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details = dto.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setCardId(dto.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = object3.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("jysqdh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("检验");
                                            tree.setService("his");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }else {
                                        throw new RuntimeException();
                                    }
                                }
                            }
                        }
                    }
                }
                //药品申请
                if (!outpinmedicapplyDetilsDtos.isEmpty()) {
                    OutpinmedicapplyDto dto1 = new OutpinmedicapplyDto();
                    dto1.setHisRegistrationId(cardId);
                    dto1.setSfzh(customer.getCusIdcard());
                    dto1.setSqysbm(ysbm);
                    dto1.setMzksbm(dept);
                    dto1.setSjrq(date);
                    String yfbm = configService.selectConfigByKey("chufang_yfbm");
                    String mzzd = configService.selectConfigByKey("chufang_mzzd");
                    String czybm = configService.selectConfigByKey("chufang_czybm");
                    String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
                    String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
                    if (czybm.equalsIgnoreCase("N"))
                        dto1.setCzybm(ysbm);
                    else dto1.setCzybm(czybm);
                    if (czyksbm.equalsIgnoreCase("N"))
                        dto1.setCzyksbm(dept);
                    else dto1.setCzyksbm(dept);
                    dto1.setCflxbm(cflxbm);
                    if (yfbm.equalsIgnoreCase("N"))
                        dto1.setYfbm("1");
                    else dto1.setYfbm(yfbm);
                    dto1.setFyts("1");
                    if (mzzd.equalsIgnoreCase("N"))
                        dto1.setMzzd("");
                    else dto1.setMzzd(mzzd);
                    dto1.setDetails(outpinmedicapplyDetilsDtos);
                    AjaxResult result = controller.Outpinmedicapply(dto1);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
                    String code = object.getStr("ResultCode");
                    if (null != code && code.equals("0")) {
                        JSONObject resultData = object.getJSONObject("ResultData");
//                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
                        String cfh = resultData.getStr("cfh");
                        log.info("药品申请后的处方号是: " + cfh + "  outpinmedicapplyDetilsDtos 里面的值为: " + outpinmedicapplyDetilsDtos.toString());
                        for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                            TjCf cf = new TjCf();
                            cf.setJxbz(jxbz);
                            cf.setCardId(cardId);
                            cf.setSfzh(customer.getCusIdcard());
                            cf.setCfh(cfh);
                            cf.setSqysbm(ysbm);
                            cf.setSqysxm(ysmc);
                            cf.setMzksbn(dept);
                            cf.setSqrq(date);
                            cf.setCzybm(ysbm);
                            cf.setYpbm(detilsDto.getYpbm());
                            cf.setYpmc(detilsDto.getYpmc());
                            cf.setSl(String.valueOf(detilsDto.getSl()));
                            cf.setDj(String.valueOf(detilsDto.getDj()));
                            cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                            cf.setPj(String.valueOf(detilsDto.getPj()));
                            cf.setJj(String.valueOf(detilsDto.getJj()));
                            cf.setCreateTime(new Date());
                            cfService.save(cf);
                        }
                    }
                }
            }
        }
        return AjaxResult.success();
    }
    //    体检对his申请单调用方法
    public AjaxResult tijianbulushenqingOld(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        TjOrder order = orderService.getOrderByCardId(cardId);
        if (null != order) {
            String dept = configService.selectConfigByKey("request_default_dept");
            String ysbm = configService.selectConfigByKey("request_default_ysbm");
            String ysmc = configService.selectConfigByKey("request_default_ysmc");
            String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
            List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
            if (useLisAndPacsRegister && isTuanTiPiao) {
                // 检查申请
                pacsReg(order, customer, jianChaProjects);
                LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                wrapper.eq(TjSampling::getJxbz, jxbz);
                List<TjSampling> list = tjSamplingService.list(wrapper);
                log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                if (!list.isEmpty()) {
                    Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                    log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
                    ArrayList<String> ids = new ArrayList<>();
                    for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                        log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                        // Lis标本代码
                        String specimenTypeCode = entry.getKey();
                        List<TjSampling> samplings = entry.getValue();
                        if (samplings.size() >= 2) {
                            // 进行合并
                            List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
                            log.info("提取id ->{}", stringList);
                            for (int i = 0; i < stringList.size(); i++) {
                                String s = stringList.get(i);
                                if (tjSamplingService.isMergeItem(s) != 0) {
                                    stringList.remove(s);
                                    ids.add(s);
                                }
                    //门诊检查申请
    //        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                        if (!proIds.isEmpty()) {
                            QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                            wrapper4.select("sum(sl) as sl", "pro_id"
                                    , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                    , "pro_price");
                            wrapper4.in("pro_parent_id", proIds);
                            wrapper4.groupBy("his_xmbm");
                            if (!mapJinchuan.isEmpty()) {
                                wrapper4.notIn("pro_id", mapJinchuan);
                                wrapper4.notIn("pro_parent_id", mapJinchuan);
                            }
                            if (stringList.size() > 1) {
                                String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                ids.add(id);
                            } else {
                                ids.add(stringList.get(0));
                            }
                        } else {
                            ids.add(samplings.get(0).getId());
                        }
                    }
//                    Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids, "Y", "N");
//                    if (!confirmed)
//                        return AjaxResult.error("处理失败");
                }
            } else {
                List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                //检验申请
                OutpintestapplyDto dto = new OutpintestapplyDto();
                dto.setHisRegistrationId(cardId);
                dto.setSfzh(customer.getCusIdcard());
                dto.setSqysbm(ysbm);
                dto.setMzksbm(dept);
                dto.setSjrq(date);
                dto.setCzybm(ysbm);
                dto.setCzyksbm(dept);
                dto.setSfjz("0");
                List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
//            wq.groupBy(TjProject::getHisXmbm);
//            wq.in(TjProject::getDeptId, "241", "317");
                    wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    if (null != projects && !projects.isEmpty()) {
                        for (TjProject project : projects) {
                            if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                if (null != project.getHisXmbm()) {
                                    if (project.getSfzhfy().equals("Y")) {
                                        mapJinchuan.add(project.getProId().toString());
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
                                        if (project.getSfzhfy().equals("Y")) {
                                            detailsDto.setSfzhfy("1");
                                        } else {
                            projects = projectService.list(wrapper4);
                            if (null != projects && !projects.isEmpty()) {
                                List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                                for (TjProject project : projects) {
                                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                            detailsDto.setMxfyxmbm(project.getHisXmbm());
                                            detailsDto.setSfzhfy("0");
                                            detailsDto.setSl(project.getSl());
                                            detailsDto.setProjg(project.getProPrice());
                                            detailsDtoss.add(detailsDto);
                                        }
                                        detailsDto.setSl(project.getSl());
                                        detailsDto.setProjg(project.getProPrice());
                                        detailsDtos.add(detailsDto);
                                    }
                                }
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
                                        detilsDto.setDj(i.getDj());
                                        detilsDto.setDcjl(i.getDcjl());
                                        detilsDto.setPj(i.getPj());
                                        detilsDto.setJj(i.getJj());
                                        detilsDto.setJldw("");
                                        detilsDto.setTjbm("");
                                        detilsDto.setPs("");
                                        detilsDto.setPsbm("");
                                        detilsDto.setYyts("");
                                        detilsDto.setXtph("");
                                        detilsDto.setScph("");
                                        detilsDto.setYpxq("");
                                        detilsDto.setCdbm("");
                                        detilsDto.setKfdw("");
                                        detilsDto.setYfdw("");
                                        detilsDto.setYysm("");
                                        detilsDto.setYpmc(i.getYpmc());
                                        detilsDto.setFzbl(i.getFzbl());
                                        detilsDto.setZh(i.getZh());
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                            }
                        }
                    }
                }
                if (!detailsDtos.isEmpty()) {
                    dto.setDetails(detailsDtos);
                    AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                    String result5 = getAjaxResult(ajaxResult1);
                    JSONObject object3 = getJSONObject(result5);
                    String code3 = object3.getStr("ResultCode");
                    if (code3.equals("0")) {
                        List<OutpintestapplyDetailsDto> details = dto.getDetails();
                        for (OutpintestapplyDetailsDto detail : details) {
                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                            tree.setJxbz(jxbz);
                            tree.setCardId(dto.getHisRegistrationId());
                            tree.setPationid(customer.getPationId());
                            JSONObject resultData = object3.getJSONObject("ResultData");
                            tree.setSqdh(resultData.getStr("jysqdh"));
                            tree.setFyhj(resultData.getStr("fyhj"));
                            String mxfyxmbm = detail.getMxfyxmbm();
                            tree.setHisXmdm(mxfyxmbm);
                            tree.setType("检验");
                            tree.setService("his");
                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                            if (detail.getSfzhfy().equals("1"))
                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                            }
                            tree.setCreateTime(DateUtil.date());
                            ltkjJianchajianyanTreeService.save(tree);
                        }
                    }
                }
                //门诊检查申请
                OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                outpinexamapplyDto.setHisRegistrationId(cardId);
                outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                outpinexamapplyDto.setSqysbm(ysbm);
                outpinexamapplyDto.setMzksbm(dept);
                outpinexamapplyDto.setCzybm(ysbm);
                outpinexamapplyDto.setCzyksbm(dept);
                outpinexamapplyDto.setSfjz("0");
//        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    if (null != projects && !projects.isEmpty()) {
                        for (TjProject project : projects) {
                            if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                if (null != project.getHisXmbm()) {
                                    if (project.getSfzhfy().equals("Y")) {
                                        mapJinchuan.add(project.getProParentId().toString());
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
                                        if (project.getSfzhfy().equals("Y")) {
                                            detailsDto.setSfzhfy("1");
                                        } else {
                                            detailsDto.setSfzhfy("0");
                                        }
                                        detailsDto.setSl(project.getSl());
                                        detailsDto.setProjg(project.getProPrice());
                                        detailsDtoss.add(detailsDto);
                                    }
                                }
                                List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
@@ -1770,75 +1316,436 @@
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                                if (!detailsDtoss.isEmpty()) {
                                    OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                                    outpinexamapplyDto.setHisRegistrationId(cardId);
                                    outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                                    outpinexamapplyDto.setSqysbm(ysbm);
                                    outpinexamapplyDto.setMzksbm(dept);
                                    outpinexamapplyDto.setCzybm(ysbm);
                                    outpinexamapplyDto.setCzyksbm(dept);
                                    outpinexamapplyDto.setSfjz("0");
                                    outpinexamapplyDto.setDetails(detailsDtoss);
                                    AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                                    String result6 = getAjaxResult(ajaxResult2);
                                    JSONObject object5 = getJSONObject(result6);
                                    String code4 = object5.getStr("ResultCode");
                                    if (code4.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setJxbz(jxbz);
                                            tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = object5.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("jcsqdh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("检查");
                                            tree.setService("his");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                    }else {
                                        throw new RuntimeException();
                                    }
                                }
                            }
                        }
                    }
                }
                if (!detailsDtoss.isEmpty()) {
                    outpinexamapplyDto.setDetails(detailsDtoss);
                    AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                    String result6 = getAjaxResult(ajaxResult2);
                    JSONObject object5 = getJSONObject(result6);
                    String code4 = object5.getStr("ResultCode");
                    if (code4.equals("0")) {
                        List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                        for (OutpintestapplyDetailsDto detail : details) {
                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                            tree.setJxbz(jxbz);
                            tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                            tree.setPationid(customer.getPationId());
                            JSONObject resultData = object5.getJSONObject("ResultData");
                            tree.setSqdh(resultData.getStr("jcsqdh"));
                            tree.setFyhj(resultData.getStr("fyhj"));
                            String mxfyxmbm = detail.getMxfyxmbm();
                            tree.setHisXmdm(mxfyxmbm);
                            tree.setType("检查");
                            tree.setService("his");
                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                            if (detail.getSfzhfy().equals("1"))
                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                    //门诊治疗处置申请
                    OutpintreatapplyDto dao = new OutpintreatapplyDto();
                    dao.setHisRegistrationId(cardId);
                    dao.setSfzh(customer.getCusIdcard());
                    dao.setSqysbm(ysbm);
                    dao.setMzksbm(dept);
                    dao.setSjrq(date);
                    dao.setCzybm(ysbm);
                    dao.setCzyksbm(dept);
                    dao.setSfjz("0");
    //        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                        if (!proIds.isEmpty()) {
                            QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                            wrapper4.select("sum(sl) as sl", "pro_id"
                                    , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                    , "pro_price");
                            wrapper4.in("pro_parent_id", proIds);
                            wrapper4.groupBy("his_xmbm");
                            if (!mapJinchuan.isEmpty()) {
                                wrapper4.notIn("pro_id", mapJinchuan);
                                wrapper4.notIn("pro_parent_id", mapJinchuan);
                            }
                            tree.setCreateTime(DateUtil.date());
                            ltkjJianchajianyanTreeService.save(tree);
                            projects = projectService.list(wrapper4);
                            if (null != projects && !projects.isEmpty()) {
                                List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                                for (TjProject project : projects) {
                                    if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
                                        detailsDto.setSfzhfy("0");
                                        detailsDto.setSl(project.getSl());
                                        detailsDto.setProjg(project.getProPrice());
                                        detailDtos.add(detailsDto);
                                    }
                                }
                                List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
                                        detilsDto.setDj(i.getDj());
                                        detilsDto.setDcjl(i.getDcjl());
                                        detilsDto.setPj(i.getPj());
                                        detilsDto.setJj(i.getJj());
                                        detilsDto.setJldw("");
                                        detilsDto.setTjbm("");
                                        detilsDto.setPs("");
                                        detilsDto.setPsbm("");
                                        detilsDto.setYyts("");
                                        detilsDto.setXtph("");
                                        detilsDto.setScph("");
                                        detilsDto.setYpxq("");
                                        detilsDto.setCdbm("");
                                        detilsDto.setKfdw("");
                                        detilsDto.setYfdw("");
                                        detilsDto.setYysm("");
                                        detilsDto.setYpmc(i.getYpmc());
                                        detilsDto.setFzbl(i.getFzbl());
                                        detilsDto.setZh(i.getZh());
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                                if (!detailDtos.isEmpty()) {
                                    dao.setDetails(detailDtos);
                                    AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                                    String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                                    JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                                    String code5 = mzylyzsq3.getStr("ResultCode");
                                    if (code5.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details1) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setJxbz(jxbz);
                                            tree.setCardId(dao.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("zlczh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("处置");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                    }else {
                                        throw new RuntimeException();
                                    }
                                }
                            }
                        }
                    }
                    //药品申请
                    if (!outpinmedicapplyDetilsDtos.isEmpty()) {
                        OutpinmedicapplyDto dto1 = new OutpinmedicapplyDto();
                        dto1.setHisRegistrationId(cardId);
                        dto1.setSfzh(customer.getCusIdcard());
                        dto1.setSqysbm(ysbm);
                        dto1.setMzksbm(dept);
                        dto1.setSjrq(date);
                        String yfbm = configService.selectConfigByKey("chufang_yfbm");
                        String mzzd = configService.selectConfigByKey("chufang_mzzd");
                        String czybm = configService.selectConfigByKey("chufang_czybm");
                        String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
                        String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
                        if (czybm.equalsIgnoreCase("N"))
                            dto1.setCzybm(ysbm);
                        else dto1.setCzybm(czybm);
                        if (czyksbm.equalsIgnoreCase("N"))
                            dto1.setCzyksbm(dept);
                        else dto1.setCzyksbm(dept);
                        dto1.setCflxbm(cflxbm);
                        if (yfbm.equalsIgnoreCase("N"))
                            dto1.setYfbm("1");
                        else dto1.setYfbm(yfbm);
                        dto1.setFyts("1");
                        if (mzzd.equalsIgnoreCase("N"))
                            dto1.setMzzd("");
                        else dto1.setMzzd(mzzd);
                        dto1.setDetails(outpinmedicapplyDetilsDtos);
                        AjaxResult result = controller.Outpinmedicapply(dto1);
                        String result1 = getAjaxResult(result);
                        JSONObject object = getJSONObject(result1);
                        String code = object.getStr("ResultCode");
                        if (null != code && code.equals("0")) {
                            JSONObject resultData = object.getJSONObject("ResultData");
    //                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
                            String cfh = resultData.getStr("cfh");
                            log.info("药品申请后的处方号是: " + cfh + "  outpinmedicapplyDetilsDtos 里面的值为: " + outpinmedicapplyDetilsDtos.toString());
                            for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                                TjCf cf = new TjCf();
                                cf.setJxbz(jxbz);
                                cf.setCardId(cardId);
                                cf.setSfzh(customer.getCusIdcard());
                                cf.setCfh(cfh);
                                cf.setSqysbm(ysbm);
                                cf.setSqysxm(ysmc);
                                cf.setMzksbn(dept);
                                cf.setSqrq(date);
                                cf.setCzybm(ysbm);
                                cf.setYpbm(detilsDto.getYpbm());
                                cf.setYpmc(detilsDto.getYpmc());
                                cf.setSl(String.valueOf(detilsDto.getSl()));
                                cf.setDj(String.valueOf(detilsDto.getDj()));
                                cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                                cf.setPj(String.valueOf(detilsDto.getPj()));
                                cf.setJj(String.valueOf(detilsDto.getJj()));
                                cf.setCreateTime(new Date());
                                cfService.save(cf);
                            }
                        }else {
                            throw new RuntimeException();
                        }
                    }
                }
            }
            return AjaxResult.success();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
                //门诊治疗处置申请
                OutpintreatapplyDto dao = new OutpintreatapplyDto();
                dao.setHisRegistrationId(cardId);
                dao.setSfzh(customer.getCusIdcard());
                dao.setSqysbm(ysbm);
                dao.setMzksbm(dept);
                dao.setSjrq(date);
                dao.setCzybm(ysbm);
                dao.setCzyksbm(dept);
                dao.setSfjz("0");
//        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    if (null != projects && !projects.isEmpty()) {
                        for (TjProject project : projects) {
                            if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                if (null != project.getHisXmbm()) {
                                    {
    //    体检对his申请单调用方法
    public AjaxResult tijianbulushenqingOld(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        try {
            TjOrder order = orderService.getOrderByCardId(cardId);
            if (null != order) {
                String dept = configService.selectConfigByKey("request_default_dept");
                String ysbm = configService.selectConfigByKey("request_default_ysbm");
                String ysmc = configService.selectConfigByKey("request_default_ysmc");
                String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
                List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
                Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
                List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
                if (useLisAndPacsRegister && isTuanTiPiao) {
                    // 检查申请
                    pacsReg(order, customer, jianChaProjects);
                    LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                    wrapper.eq(TjSampling::getJxbz, jxbz);
                    List<TjSampling> list = tjSamplingService.list(wrapper);
                    log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                    if (!list.isEmpty()) {
                        Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                        log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
                        ArrayList<String> ids = new ArrayList<>();
                        for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                            log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                            // Lis标本代码
                            String specimenTypeCode = entry.getKey();
                            List<TjSampling> samplings = entry.getValue();
                            if (samplings.size() >= 2) {
                                // 进行合并
                                List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
                                log.info("提取id ->{}", stringList);
                                for (int i = 0; i < stringList.size(); i++) {
                                    String s = stringList.get(i);
                                    if (tjSamplingService.isMergeItem(s) != 0) {
                                        stringList.remove(s);
                                        ids.add(s);
                                    }
                                }
                                if (stringList.size() > 1) {
                                    String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                    ids.add(id);
                                } else {
                                    ids.add(stringList.get(0));
                                }
                            } else {
                                ids.add(samplings.get(0).getId());
                            }
                        }
    //                    Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids, "Y", "N");
    //                    if (!confirmed)
    //                        return AjaxResult.error("处理失败");
                    }
                } else {
                    List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                    //检验申请
                    OutpintestapplyDto dto = new OutpintestapplyDto();
                    dto.setHisRegistrationId(cardId);
                    dto.setSfzh(customer.getCusIdcard());
                    dto.setSqysbm(ysbm);
                    dto.setMzksbm(dept);
                    dto.setSjrq(date);
                    dto.setCzybm(ysbm);
                    dto.setCzyksbm(dept);
                    dto.setSfjz("0");
                    List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
    //            wq.groupBy(TjProject::getHisXmbm);
    //            wq.in(TjProject::getDeptId, "241", "317");
                        wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        if (null != projects && !projects.isEmpty()) {
                            for (TjProject project : projects) {
                                if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    if (null != project.getHisXmbm()) {
                                        if (project.getSfzhfy().equals("Y")) {
                                            mapJinchuan.add(project.getProId().toString());
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                            detailsDto.setMxfyxmbm(project.getHisXmbm());
                                            if (project.getSfzhfy().equals("Y")) {
                                                detailsDto.setSfzhfy("1");
                                            } else {
                                                detailsDto.setSfzhfy("0");
                                            }
                                            detailsDto.setSl(project.getSl());
                                            detailsDto.setProjg(project.getProPrice());
                                            detailsDtos.add(detailsDto);
                                        }
                                    }
                                    if (!outpinmedicXms.isEmpty()) {
                                        outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                            OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                            detilsDto.setYpbm(i.getYpbm());
                                            detilsDto.setPcbm(i.getPcbm());
                                            detilsDto.setSl(i.getSl());
                                            detilsDto.setDj(i.getDj());
                                            detilsDto.setDcjl(i.getDcjl());
                                            detilsDto.setPj(i.getPj());
                                            detilsDto.setJj(i.getJj());
                                            detilsDto.setJldw("");
                                            detilsDto.setTjbm("");
                                            detilsDto.setPs("");
                                            detilsDto.setPsbm("");
                                            detilsDto.setYyts("");
                                            detilsDto.setXtph("");
                                            detilsDto.setScph("");
                                            detilsDto.setYpxq("");
                                            detilsDto.setCdbm("");
                                            detilsDto.setKfdw("");
                                            detilsDto.setYfdw("");
                                            detilsDto.setYysm("");
                                            detilsDto.setYpmc(i.getYpmc());
                                            detilsDto.setFzbl(i.getFzbl());
                                            detilsDto.setZh(i.getZh());
                                            outpinmedicapplyDetilsDtos.add(detilsDto);
                                        });
                                    }
                                }
                            }
                        }
                    }
                    if (!detailsDtos.isEmpty()) {
                        dto.setDetails(detailsDtos);
                        AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                        String result5 = getAjaxResult(ajaxResult1);
                        JSONObject object3 = getJSONObject(result5);
                        String code3 = object3.getStr("ResultCode");
                        if (code3.equals("0")) {
                            List<OutpintestapplyDetailsDto> details = dto.getDetails();
                            for (OutpintestapplyDetailsDto detail : details) {
                                LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                tree.setJxbz(jxbz);
                                tree.setCardId(dto.getHisRegistrationId());
                                tree.setPationid(customer.getPationId());
                                JSONObject resultData = object3.getJSONObject("ResultData");
                                tree.setSqdh(resultData.getStr("jysqdh"));
                                tree.setFyhj(resultData.getStr("fyhj"));
                                String mxfyxmbm = detail.getMxfyxmbm();
                                tree.setHisXmdm(mxfyxmbm);
                                tree.setType("检验");
                                tree.setService("his");
                                tree.setTjPrice(String.valueOf(detail.getProjg()));
                                LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                if (detail.getSfzhfy().equals("1"))
                                    wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                    String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                    LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                    wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                    LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                    LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                    wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                    LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                    tree.setXmfl(ejjfxmzd.getYjkmdm());
                                }
                                tree.setCreateTime(DateUtil.date());
                                ltkjJianchajianyanTreeService.save(tree);
                            }
                        }else {
                            throw new RuntimeException();
                        }
                    }
                    //门诊检查申请
                    OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                    outpinexamapplyDto.setHisRegistrationId(cardId);
                    outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                    outpinexamapplyDto.setSqysbm(ysbm);
                    outpinexamapplyDto.setMzksbm(dept);
                    outpinexamapplyDto.setCzybm(ysbm);
                    outpinexamapplyDto.setCzyksbm(dept);
                    outpinexamapplyDto.setSfjz("0");
    //        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        if (null != projects && !projects.isEmpty()) {
                            for (TjProject project : projects) {
                                if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    if (null != project.getHisXmbm()) {
                                        if (project.getSfzhfy().equals("Y")) {
                                            mapJinchuan.add(project.getProParentId().toString());
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
@@ -1850,147 +1757,266 @@
                                            }
                                            detailsDto.setSl(project.getSl());
                                            detailsDto.setProjg(project.getProPrice());
                                            detailDtos.add(detailsDto);
                                            detailsDtoss.add(detailsDto);
                                        }
//                                        mapJinchuan.add(project.getProParentId().toString());
//                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
//                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
//                                        if (project.getSfzhfy().equals("Y")) {
//                                            detailsDto.setSfzhfy("1");
//                                        } else {
//                                            detailsDto.setSfzhfy("0");
//                                        }
//                                        detailsDto.setSl(project.getSl());
//                                        detailsDto.setProjg(project.getProPrice());
//                                        detailDtos.add(detailsDto);
                                    }
                                    List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                    if (!outpinmedicXms.isEmpty()) {
                                        outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                            OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                            detilsDto.setYpbm(i.getYpbm());
                                            detilsDto.setPcbm(i.getPcbm());
                                            detilsDto.setSl(i.getSl());
                                            detilsDto.setDj(i.getDj());
                                            detilsDto.setDcjl(i.getDcjl());
                                            detilsDto.setPj(i.getPj());
                                            detilsDto.setJj(i.getJj());
                                            detilsDto.setJldw("");
                                            detilsDto.setTjbm("");
                                            detilsDto.setPs("");
                                            detilsDto.setPsbm("");
                                            detilsDto.setYyts("");
                                            detilsDto.setXtph("");
                                            detilsDto.setScph("");
                                            detilsDto.setYpxq("");
                                            detilsDto.setCdbm("");
                                            detilsDto.setKfdw("");
                                            detilsDto.setYfdw("");
                                            detilsDto.setYysm("");
                                            detilsDto.setYpmc(i.getYpmc());
                                            detilsDto.setFzbl(i.getFzbl());
                                            detilsDto.setZh(i.getZh());
                                            outpinmedicapplyDetilsDtos.add(detilsDto);
                                        });
                                    }
                                }
                                List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
                                        detilsDto.setDj(i.getDj());
                                        detilsDto.setDcjl(i.getDcjl());
                                        detilsDto.setPj(i.getPj());
                                        detilsDto.setJj(i.getJj());
                                        detilsDto.setJldw("");
                                        detilsDto.setTjbm("");
                                        detilsDto.setPs("");
                                        detilsDto.setPsbm("");
                                        detilsDto.setYyts("");
                                        detilsDto.setXtph("");
                                        detilsDto.setScph("");
                                        detilsDto.setYpxq("");
                                        detilsDto.setCdbm("");
                                        detilsDto.setKfdw("");
                                        detilsDto.setYfdw("");
                                        detilsDto.setYysm("");
                                        detilsDto.setYpmc(i.getYpmc());
                                        detilsDto.setFzbl(i.getFzbl());
                                        detilsDto.setZh(i.getZh());
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                            }
                        }
                    }
                    if (!detailsDtoss.isEmpty()) {
                        outpinexamapplyDto.setDetails(detailsDtoss);
                        AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                        String result6 = getAjaxResult(ajaxResult2);
                        JSONObject object5 = getJSONObject(result6);
                        String code4 = object5.getStr("ResultCode");
                        if (code4.equals("0")) {
                            List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                            for (OutpintestapplyDetailsDto detail : details) {
                                LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                tree.setJxbz(jxbz);
                                tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                                tree.setPationid(customer.getPationId());
                                JSONObject resultData = object5.getJSONObject("ResultData");
                                tree.setSqdh(resultData.getStr("jcsqdh"));
                                tree.setFyhj(resultData.getStr("fyhj"));
                                String mxfyxmbm = detail.getMxfyxmbm();
                                tree.setHisXmdm(mxfyxmbm);
                                tree.setType("检查");
                                tree.setService("his");
                                tree.setTjPrice(String.valueOf(detail.getProjg()));
                                LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                if (detail.getSfzhfy().equals("1"))
                                    wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                    String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                    LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                    wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                    LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                    LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                    wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                    LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                    tree.setXmfl(ejjfxmzd.getYjkmdm());
                                }
                                tree.setCreateTime(DateUtil.date());
                                ltkjJianchajianyanTreeService.save(tree);
                            }
                        }else {
                            throw new RuntimeException();
                        }
                    }
                    //门诊治疗处置申请
                    OutpintreatapplyDto dao = new OutpintreatapplyDto();
                    dao.setHisRegistrationId(cardId);
                    dao.setSfzh(customer.getCusIdcard());
                    dao.setSqysbm(ysbm);
                    dao.setMzksbm(dept);
                    dao.setSjrq(date);
                    dao.setCzybm(ysbm);
                    dao.setCzyksbm(dept);
                    dao.setSfjz("0");
    //        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        if (null != projects && !projects.isEmpty()) {
                            for (TjProject project : projects) {
                                if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    if (null != project.getHisXmbm()) {
                                        {
                                            if (project.getSfzhfy().equals("Y")) {
                                                mapJinchuan.add(project.getProParentId().toString());
                                                OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                                detailsDto.setMxfyxmbm(project.getHisXmbm());
                                                if (project.getSfzhfy().equals("Y")) {
                                                    detailsDto.setSfzhfy("1");
                                                } else {
                                                    detailsDto.setSfzhfy("0");
                                                }
                                                detailsDto.setSl(project.getSl());
                                                detailsDto.setProjg(project.getProPrice());
                                                detailDtos.add(detailsDto);
                                            }
    //                                        mapJinchuan.add(project.getProParentId().toString());
    //                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
    //                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
    //                                        if (project.getSfzhfy().equals("Y")) {
    //                                            detailsDto.setSfzhfy("1");
    //                                        } else {
    //                                            detailsDto.setSfzhfy("0");
    //                                        }
    //                                        detailsDto.setSl(project.getSl());
    //                                        detailsDto.setProjg(project.getProPrice());
    //                                        detailDtos.add(detailsDto);
                                        }
                                    }
                                    List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                    if (!outpinmedicXms.isEmpty()) {
                                        outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                            OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                            detilsDto.setYpbm(i.getYpbm());
                                            detilsDto.setPcbm(i.getPcbm());
                                            detilsDto.setSl(i.getSl());
                                            detilsDto.setDj(i.getDj());
                                            detilsDto.setDcjl(i.getDcjl());
                                            detilsDto.setPj(i.getPj());
                                            detilsDto.setJj(i.getJj());
                                            detilsDto.setJldw("");
                                            detilsDto.setTjbm("");
                                            detilsDto.setPs("");
                                            detilsDto.setPsbm("");
                                            detilsDto.setYyts("");
                                            detilsDto.setXtph("");
                                            detilsDto.setScph("");
                                            detilsDto.setYpxq("");
                                            detilsDto.setCdbm("");
                                            detilsDto.setKfdw("");
                                            detilsDto.setYfdw("");
                                            detilsDto.setYysm("");
                                            detilsDto.setYpmc(i.getYpmc());
                                            detilsDto.setFzbl(i.getFzbl());
                                            detilsDto.setZh(i.getZh());
                                            outpinmedicapplyDetilsDtos.add(detilsDto);
                                        });
                                    }
                                }
                            }
                        }
                    }
                }
                if (!detailDtos.isEmpty()) {
                    dao.setDetails(detailDtos);
                    AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                    String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                    JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                    String code5 = mzylyzsq3.getStr("ResultCode");
                    if (code5.equals("0")) {
                        List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                        for (OutpintestapplyDetailsDto detail : details1) {
                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                            tree.setJxbz(jxbz);
                            tree.setCardId(dao.getHisRegistrationId());
                            tree.setPationid(customer.getPationId());
                            JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                            tree.setSqdh(resultData.getStr("zlczh"));
                            tree.setFyhj(resultData.getStr("fyhj"));
                            String mxfyxmbm = detail.getMxfyxmbm();
                            tree.setHisXmdm(mxfyxmbm);
                            tree.setType("处置");
                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                            if (detail.getSfzhfy().equals("1"))
                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                    if (!detailDtos.isEmpty()) {
                        dao.setDetails(detailDtos);
                        AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                        String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                        JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                        String code5 = mzylyzsq3.getStr("ResultCode");
                        if (code5.equals("0")) {
                            List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                            for (OutpintestapplyDetailsDto detail : details1) {
                                LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                tree.setJxbz(jxbz);
                                tree.setCardId(dao.getHisRegistrationId());
                                tree.setPationid(customer.getPationId());
                                JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                                tree.setSqdh(resultData.getStr("zlczh"));
                                tree.setFyhj(resultData.getStr("fyhj"));
                                String mxfyxmbm = detail.getMxfyxmbm();
                                tree.setHisXmdm(mxfyxmbm);
                                tree.setType("处置");
                                tree.setTjPrice(String.valueOf(detail.getProjg()));
                                LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                if (detail.getSfzhfy().equals("1"))
                                    wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                    String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                    LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                    wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                    LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                    LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                    wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                    LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                    tree.setXmfl(ejjfxmzd.getYjkmdm());
                                }
                                tree.setCreateTime(DateUtil.date());
                                ltkjJianchajianyanTreeService.save(tree);
                            }
                            tree.setCreateTime(DateUtil.date());
                            ltkjJianchajianyanTreeService.save(tree);
                        }else {
                            throw new RuntimeException();
                        }
                    }
                }
/*
                //药品申请
                if(!outpinmedicapplyDetilsDtos.isEmpty()){
                    OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
                    dto1.setHisRegistrationId(cardId);
                    dto1.setSfzh(customer.getCusIdcard());
                    dto1.setSqysbm(ysbm);
                    dto1.setMzksbm(dept);
                    dto1.setSjrq(date);
                    dto1.setCzybm(ysbm);
                    dto1.setCzyksbm(dept);
                    dto1.setCflxbm("A");
                    dto1.setYfbm("1");
                    dto1.setFyts("1");
                    dto1.setMzzd("");
                    dto1.setDetails(outpinmedicapplyDetilsDtos);
                    AjaxResult result = controller.Outpinmedicapply(dto1);
                    String result1 = getAjaxResult(result);
                    JSONObject object = getJSONObject(result1);
                    String code = object.getStr("ResultCode");
                    if(null !=code && code.equals("0")){
                        JSONObject resultData = object.getJSONObject("ResultData");
//                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
                        String cfh = resultData.getStr("cfh");
                        log.info("药品申请后的处方号是: "+cfh+"  outpinmedicapplyDetilsDtos 里面的值为: "+outpinmedicapplyDetilsDtos.toString());
                        for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                            TjCf cf=new TjCf();
                            cf.setJxbz(jxbz);
                            cf.setCardId(cardId);
                            cf.setSfzh(customer.getCusIdcard());
                            cf.setCfh(cfh);
                            cf.setSqysbm(ysbm);
                            cf.setSqysxm(ysmc);
                            cf.setMzksbn(dept);
                            cf.setSqrq(date);
                            cf.setCzybm(ysbm);
                            cf.setYpbm(detilsDto.getYpbm());
                            cf.setYpmc("尿素[14C]呼气试验药盒");
                            cf.setSl(String.valueOf(detilsDto.getSl()));
                            cf.setDj(String.valueOf(detilsDto.getDj()));
                            cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                            cf.setPj(String.valueOf(detilsDto.getPj()));
                            cf.setJj(String.valueOf(detilsDto.getJj()));
                            cf.setCreateTime(new Date());
                            cfService.save(cf);
    /*
                    //药品申请
                    if(!outpinmedicapplyDetilsDtos.isEmpty()){
                        OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
                        dto1.setHisRegistrationId(cardId);
                        dto1.setSfzh(customer.getCusIdcard());
                        dto1.setSqysbm(ysbm);
                        dto1.setMzksbm(dept);
                        dto1.setSjrq(date);
                        dto1.setCzybm(ysbm);
                        dto1.setCzyksbm(dept);
                        dto1.setCflxbm("A");
                        dto1.setYfbm("1");
                        dto1.setFyts("1");
                        dto1.setMzzd("");
                        dto1.setDetails(outpinmedicapplyDetilsDtos);
                        AjaxResult result = controller.Outpinmedicapply(dto1);
                        String result1 = getAjaxResult(result);
                        JSONObject object = getJSONObject(result1);
                        String code = object.getStr("ResultCode");
                        if(null !=code && code.equals("0")){
                            JSONObject resultData = object.getJSONObject("ResultData");
    //                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
                            String cfh = resultData.getStr("cfh");
                            log.info("药品申请后的处方号是: "+cfh+"  outpinmedicapplyDetilsDtos 里面的值为: "+outpinmedicapplyDetilsDtos.toString());
                            for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                                TjCf cf=new TjCf();
                                cf.setJxbz(jxbz);
                                cf.setCardId(cardId);
                                cf.setSfzh(customer.getCusIdcard());
                                cf.setCfh(cfh);
                                cf.setSqysbm(ysbm);
                                cf.setSqysxm(ysmc);
                                cf.setMzksbn(dept);
                                cf.setSqrq(date);
                                cf.setCzybm(ysbm);
                                cf.setYpbm(detilsDto.getYpbm());
                                cf.setYpmc("尿素[14C]呼气试验药盒");
                                cf.setSl(String.valueOf(detilsDto.getSl()));
                                cf.setDj(String.valueOf(detilsDto.getDj()));
                                cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                                cf.setPj(String.valueOf(detilsDto.getPj()));
                                cf.setJj(String.valueOf(detilsDto.getJj()));
                                cf.setCreateTime(new Date());
                                cfService.save(cf);
                            }
                        }
                    }
                    */
                }
                */
            }
            return AjaxResult.success();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return AjaxResult.success();
    }
    /**/
@@ -2435,143 +2461,257 @@
//    }
    public AjaxResult tijianbulushenqing(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        TjOrder order = orderService.getOrderByCardId(cardId);
        if (null != order) {
            String dept = configService.selectConfigByKey("request_default_dept");
            String ysbm = configService.selectConfigByKey("request_default_ysbm");
            String ysmc = configService.selectConfigByKey("request_default_ysmc");
            String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
            List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
//            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
            String isRequestLisAllzx = configService.selectConfigByKey("jcx_is_requestLisAllzx");
        try {
            TjOrder order = orderService.getOrderByCardId(cardId);
            if (null != order) {
                String dept = configService.selectConfigByKey("request_default_dept");
                String ysbm = configService.selectConfigByKey("request_default_ysbm");
                String ysmc = configService.selectConfigByKey("request_default_ysmc");
                String lis_tmh_prefix = configService.selectConfigByKey("make_lis_tmh_prefix");
                List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
    //            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
                List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos = new ArrayList<>();
                String isRequestLisAllzx = configService.selectConfigByKey("jcx_is_requestLisAllzx");
            if (isTuanTiPiao) {
                if (isTuanTiPiao) {
                // 检查申请
                pacsReg(order, customer, jianChaProjects);
                LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                wrapper.eq(TjSampling::getJxbz, jxbz);
                List<TjSampling> list = tjSamplingService.list(wrapper);
                log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                    // 检查申请
                    pacsReg(order, customer, jianChaProjects);
                    LambdaQueryWrapper<TjSampling> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(TjSampling::getTjNum, order.getTjNumber());
                    wrapper.eq(TjSampling::getJxbz, jxbz);
                    List<TjSampling> list = tjSamplingService.list(wrapper);
                    log.info("采样数据 ->{}", JSONUtil.toJsonStr(list));
                if (isRequestLisAllzx != null && isRequestLisAllzx.equalsIgnoreCase("Y")){
                    log.info("补录项目进入团体根据小项标本合并发送方法");
                    if (isRequestLisAllzx != null && isRequestLisAllzx.equalsIgnoreCase("Y")){
                        log.info("补录项目进入团体根据小项标本合并发送方法");
                    if(null !=list && !list.isEmpty()){
                        List<String> strings = list.stream().map(TjSampling::getProId).collect(Collectors.toList());
                        LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                        wrapper1.in(TjProject::getProParentId,strings);
                        wrapper1.eq(TjProject::getProStatus,0);
                        wrapper1.groupBy(TjProject::getProId);
                        List<TjProject> tjProjectList = projectService.list(wrapper1);
                        if(null !=  tjProjectList && !tjProjectList.isEmpty()){
                            Map<String, List<TjProject>> listMap = tjProjectList.stream()
                                    .collect(Collectors.groupingBy(p->p.getSpecimenType()+"_"+p.getYb()));
                        if(null !=list && !list.isEmpty()){
                            List<String> strings = list.stream().map(TjSampling::getProId).collect(Collectors.toList());
                            LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                            wrapper1.in(TjProject::getProParentId,strings);
                            wrapper1.eq(TjProject::getProStatus,0);
                            wrapper1.groupBy(TjProject::getProId);
                            List<TjProject> tjProjectList = projectService.list(wrapper1);
                            if(null !=  tjProjectList && !tjProjectList.isEmpty()){
                                Map<String, List<TjProject>> listMap = tjProjectList.stream()
                                        .collect(Collectors.groupingBy(p->p.getSpecimenType()+"_"+p.getYb()));
                            log.info("分组后 ->{}",JSONUtil.toJsonStr(listMap));
                            boolean save = lisApiMethod.save(listMap, order, customer);
                            if (!save) {
                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                                return AjaxResult.error("处理失败");
                            }
                            for (TjSampling tjSampling : list) {
                                tjSampling.setIsSignFor("0");
                            }
                            tjSamplingService.updateBatchById(list);
                        }
                    }
                }else {
                    if (!list.isEmpty()) {
//                    Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                        Map<String, List<TjSampling>> listMap = list.stream()
                                .collect(Collectors.groupingBy(p->p.getSpecimenTypeCode()+"_"+p.getYb()));
                        log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
                        ArrayList<String> ids = new ArrayList<>();
                        for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                            log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                            // Lis标本代码
                            String specimenTypeCode = entry.getKey();
                            List<TjSampling> samplings = entry.getValue();
                            if (samplings.size() >= 2) {
                                // 进行合并
                                List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
//                            log.info("提取id ->{}",stringList);
                                for (int i = 0; i < stringList.size(); i++) {
                                    String s = stringList.get(i);
                                    if (tjSamplingService.isMergeItem(s) != 0) {
                                        stringList.remove(s);
                                        ids.add(s);
                                    }
                                log.info("分组后 ->{}",JSONUtil.toJsonStr(listMap));
                                boolean save = lisApiMethod.save(listMap, order, customer);
                                if (!save) {
                                    throw new RuntimeException();
                                }
                                if (stringList.size() > 1) {
                                    String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                    ids.add(id);
                                } else {
                                    ids.add(stringList.get(0));
                                for (TjSampling tjSampling : list) {
                                    tjSampling.setIsSignFor("0");
                                }
                            } else {
                                ids.add(samplings.get(0).getId());
                                tjSamplingService.updateBatchById(list);
                            }
                        }
                        Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids, "Y", "N");
                        if (!confirmed)
                            return AjaxResult.error("处理失败");
                    }
                }
            } else {
                List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                //检验申请
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
//            wq.groupBy(TjProject::getHisXmbm);
//            wq.in(TjProject::getDeptId, "241", "317");
                    wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    if (null != projects && !projects.isEmpty()) {
                        List<TjProject> notNull = projects.stream().filter(i -> i.getSpecimenType() != null).collect(Collectors.toList());
                        List<TjProject> isNull = projects.stream().filter(i -> i.getSpecimenType() == null).collect(Collectors.toList());
                        Map<String, List<TjProject>> listMap = notNull.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                        if (!isNull.isEmpty())
                            listMap.put("", isNull);
                        for (Map.Entry<String, List<TjProject>> entry : listMap.entrySet()) {
                            OutpintestapplyDto dto = new OutpintestapplyDto();
                            dto.setHisRegistrationId(cardId);
                            dto.setSfzh(customer.getCusIdcard());
                            dto.setSqysbm(ysbm);
                            dto.setMzksbm(dept);
                            dto.setSjrq(date);
                            dto.setCzybm(ysbm);
                            dto.setCzyksbm(dept);
                            dto.setSfjz("0");
                            List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                            List<TjProject> value = entry.getValue();
                            for (TjProject project : value) {
                                LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                                wrapper.eq(TjProject::getProParentId, project.getProId());
                                List<TjProject> list = projectService.list(wrapper);
                                for (TjProject tjProject : list) {
                                    if (StrUtil.isNotBlank(tjProject.getHisXmbm()) && tjProject.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(tjProject.getHisXmbm());
                                        if (tjProject.getSfzhfy().equals("Y")) {
                                            detailsDto.setSfzhfy("1");
                                        } else {
                                            detailsDto.setSfzhfy("0");
                    }else {
                        if (!list.isEmpty()) {
    //                    Map<String, List<TjSampling>> listMap = list.stream().collect(Collectors.groupingBy(TjSampling::getSpecimenTypeCode));
                            Map<String, List<TjSampling>> listMap = list.stream()
                                    .collect(Collectors.groupingBy(p->p.getSpecimenTypeCode()+"_"+p.getYb()));
                            log.info("分组后 ->{}", JSONUtil.toJsonStr(listMap));
                            ArrayList<String> ids = new ArrayList<>();
                            for (Map.Entry<String, List<TjSampling>> entry : listMap.entrySet()) {
                                log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                                // Lis标本代码
                                String specimenTypeCode = entry.getKey();
                                List<TjSampling> samplings = entry.getValue();
                                if (samplings.size() >= 2) {
                                    // 进行合并
                                    List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
    //                            log.info("提取id ->{}",stringList);
                                    for (int i = 0; i < stringList.size(); i++) {
                                        String s = stringList.get(i);
                                        if (tjSamplingService.isMergeItem(s) != 0) {
                                            stringList.remove(s);
                                            ids.add(s);
                                        }
                                        detailsDto.setSl(tjProject.getSl());
                                        detailsDto.setProjg(tjProject.getProPrice());
                                        detailsDtos.add(detailsDto);
                                    }
                                    if (stringList.size() > 1) {
                                        String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                        ids.add(id);
                                    } else {
                                        ids.add(stringList.get(0));
                                    }
                                } else {
                                    ids.add(samplings.get(0).getId());
                                }
                            }
                            Boolean confirmed = samplingServiceApi.confirmSamplingApi(ids, "Y", "N");
                            if (!confirmed)
                                throw new RuntimeException();
                        }
                    }
                } else {
                    List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                    //检验申请
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
    //            wq.groupBy(TjProject::getHisXmbm);
    //            wq.in(TjProject::getDeptId, "241", "317");
                        wq.in(TjProject::getDeptId, deptService.getJyDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        if (null != projects && !projects.isEmpty()) {
                            List<TjProject> notNull = projects.stream().filter(i -> i.getSpecimenType() != null).collect(Collectors.toList());
                            List<TjProject> isNull = projects.stream().filter(i -> i.getSpecimenType() == null).collect(Collectors.toList());
                            Map<String, List<TjProject>> listMap = notNull.stream().collect(Collectors.groupingBy(TjProject::getSpecimenType));
                            if (!isNull.isEmpty())
                                listMap.put("", isNull);
                            for (Map.Entry<String, List<TjProject>> entry : listMap.entrySet()) {
                                OutpintestapplyDto dto = new OutpintestapplyDto();
                                dto.setHisRegistrationId(cardId);
                                dto.setSfzh(customer.getCusIdcard());
                                dto.setSqysbm(ysbm);
                                dto.setMzksbm(dept);
                                dto.setSjrq(date);
                                dto.setCzybm(ysbm);
                                dto.setCzyksbm(dept);
                                dto.setSfjz("0");
                                List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
                                List<TjProject> value = entry.getValue();
                                for (TjProject project : value) {
                                    LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                                    wrapper.eq(TjProject::getProParentId, project.getProId());
                                    List<TjProject> list = projectService.list(wrapper);
                                    for (TjProject tjProject : list) {
                                        if (StrUtil.isNotBlank(tjProject.getHisXmbm()) && tjProject.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                            detailsDto.setMxfyxmbm(tjProject.getHisXmbm());
                                            if (tjProject.getSfzhfy().equals("Y")) {
                                                detailsDto.setSfzhfy("1");
                                            } else {
                                                detailsDto.setSfzhfy("0");
                                            }
                                            detailsDto.setSl(tjProject.getSl());
                                            detailsDto.setProjg(tjProject.getProPrice());
                                            detailsDtos.add(detailsDto);
                                        }
                                    }
                                    if (!outpinmedicXms.isEmpty()) {
                                        outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                            OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                            detilsDto.setYpbm(i.getYpbm());
                                            detilsDto.setPcbm(i.getPcbm());
                                            detilsDto.setSl(i.getSl());
                                            detilsDto.setDj(i.getDj());
                                            detilsDto.setDcjl(i.getDcjl());
                                            detilsDto.setPj(i.getPj());
                                            detilsDto.setJj(i.getJj());
                                            detilsDto.setJldw("");
                                            detilsDto.setTjbm("");
                                            detilsDto.setPs("");
                                            detilsDto.setPsbm("");
                                            detilsDto.setYyts("");
                                            detilsDto.setXtph("");
                                            detilsDto.setScph("");
                                            detilsDto.setYpxq("");
                                            detilsDto.setCdbm("");
                                            detilsDto.setKfdw("");
                                            detilsDto.setYfdw("");
                                            detilsDto.setYysm("");
                                            detilsDto.setYpmc(i.getYpmc());
                                            detilsDto.setFzbl(i.getFzbl());
                                            detilsDto.setZh(i.getZh());
                                            detilsDto.setCflx(i.getCflx());
                                            outpinmedicapplyDetilsDtos.add(detilsDto);
                                        });
                                    }
                                }
                                if (!detailsDtos.isEmpty()) {
                                    dto.setDetails(detailsDtos);
                                    AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                                    String result5 = getAjaxResult(ajaxResult1);
                                    JSONObject object3 = getJSONObject(result5);
                                    String code3 = object3.getStr("ResultCode");
                                    if (code3.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details = dto.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setCardId(dto.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = object3.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("jysqdh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("检验");
                                            tree.setService("his");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                        // TODO 个人以及团体 暂不向采样管理写数据
                                        // HIS发送无法合并操作 无法获取LIS的检验序号 条码无法打印
    //                TjOrder tjOrder = orderService.getOrderByCardId(cardId);
    //                if(null !=tjOrder){
    //                    List<TjOrderDetail> dengJi = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
    //                    tjSysAsyncService.addCaiYangDengJi(dengJi,!dengJi.isEmpty(),tjOrder, SecurityUtils.getLoginUser().getUser(), null);
    //                }
                                    }else {
                                        throw new RuntimeException();
                                    }
                                }
                            }
                        }
                    }
                    //门诊检查申请
    //        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                        if (!proIds.isEmpty()) {
                            QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                            wrapper4.select("sum(sl) as sl", "pro_id"
                                    , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                    , "pro_price");
                            wrapper4.in("pro_parent_id", proIds);
                            wrapper4.groupBy("his_xmbm");
                            projects = projectService.list(wrapper4);
                            if (null != projects && !projects.isEmpty()) {
                                List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                                for (TjProject project : projects) {
                                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                            detailsDto.setMxfyxmbm(project.getHisXmbm());
                                            detailsDto.setSfzhfy("0");
                                            detailsDto.setSl(project.getSl());
                                            detailsDto.setProjg(project.getProPrice());
                                            detailsDtoss.add(detailsDto);
                                        }
                                    }
                                }
                                List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                    outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
@@ -2599,410 +2739,308 @@
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                            }
                            if (!detailsDtos.isEmpty()) {
                                dto.setDetails(detailsDtos);
                                AjaxResult ajaxResult1 = controller.Outpintestapply(dto);
                                String result5 = getAjaxResult(ajaxResult1);
                                JSONObject object3 = getJSONObject(result5);
                                String code3 = object3.getStr("ResultCode");
                                if (code3.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details = dto.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setCardId(dto.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = object3.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("jysqdh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("检验");
                                        tree.setService("his");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                if (!detailsDtoss.isEmpty()) {
                                    OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                                    outpinexamapplyDto.setHisRegistrationId(cardId);
                                    outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                                    outpinexamapplyDto.setSqysbm(ysbm);
                                    outpinexamapplyDto.setMzksbm(dept);
                                    outpinexamapplyDto.setCzybm(ysbm);
                                    outpinexamapplyDto.setCzyksbm(dept);
                                    outpinexamapplyDto.setSfjz("0");
                                    outpinexamapplyDto.setDetails(detailsDtoss);
                                    AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                                    String result6 = getAjaxResult(ajaxResult2);
                                    JSONObject object5 = getJSONObject(result6);
                                    String code4 = object5.getStr("ResultCode");
                                    if (code4.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setJxbz(jxbz);
                                            tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = object5.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("jcsqdh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("检查");
                                            tree.setService("his");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }else {
                                        throw new RuntimeException();
                                    }
                                    // TODO 个人以及团体 暂不向采样管理写数据
                                    // HIS发送无法合并操作 无法获取LIS的检验序号 条码无法打印
//                TjOrder tjOrder = orderService.getOrderByCardId(cardId);
//                if(null !=tjOrder){
//                    List<TjOrderDetail> dengJi = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                    tjSysAsyncService.addCaiYangDengJi(dengJi,!dengJi.isEmpty(),tjOrder, SecurityUtils.getLoginUser().getUser(), null);
//                }
                                }
                            }
                        }
                    }
                }
                //门诊检查申请
//        List<TbTransition> detailLists = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getJcDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                    if (!proIds.isEmpty()) {
                        QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                        wrapper4.select("sum(sl) as sl", "pro_id"
                                , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                , "pro_price");
                        wrapper4.in("pro_parent_id", proIds);
                        wrapper4.groupBy("his_xmbm");
                        projects = projectService.list(wrapper4);
                        if (null != projects && !projects.isEmpty()) {
                            List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
                            for (TjProject project : projects) {
                                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                    //门诊治疗处置申请
                    OutpintreatapplyDto dao = new OutpintreatapplyDto();
                    dao.setHisRegistrationId(cardId);
                    dao.setSfzh(customer.getCusIdcard());
                    dao.setSqysbm(ysbm);
                    dao.setMzksbm(dept);
                    dao.setSjrq(date);
                    dao.setCzybm(ysbm);
                    dao.setCzyksbm(dept);
                    dao.setSfjz("0");
    //        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                    if (null != detailList && !detailList.isEmpty()) {
                        LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                        wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                        wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                        List<TjProject> projects = projectService.list(wq);
                        List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                        if (!proIds.isEmpty()) {
                            QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                            wrapper4.select("sum(sl) as sl", "pro_id"
                                    , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                    , "pro_price");
                            wrapper4.in("pro_parent_id", proIds);
                            wrapper4.groupBy("his_xmbm");
                            projects = projectService.list(wrapper4);
                            if (null != projects && !projects.isEmpty()) {
                                List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                                for (TjProject project : projects) {
                                    if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                        detailsDto.setMxfyxmbm(project.getHisXmbm());
                                        detailsDto.setSfzhfy("0");
                                        detailsDto.setSl(project.getSl());
                                        detailsDto.setProjg(project.getProPrice());
                                        detailsDtoss.add(detailsDto);
                                        detailDtos.add(detailsDto);
                                    }
                                }
                            }
                            List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                            if (!outpinmedicXms.isEmpty()) {
                                outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
                                    detilsDto.setDj(i.getDj());
                                    detilsDto.setDcjl(i.getDcjl());
                                    detilsDto.setPj(i.getPj());
                                    detilsDto.setJj(i.getJj());
                                    detilsDto.setJldw("");
                                    detilsDto.setTjbm("");
                                    detilsDto.setPs("");
                                    detilsDto.setPsbm("");
                                    detilsDto.setYyts("");
                                    detilsDto.setXtph("");
                                    detilsDto.setScph("");
                                    detilsDto.setYpxq("");
                                    detilsDto.setCdbm("");
                                    detilsDto.setKfdw("");
                                    detilsDto.setYfdw("");
                                    detilsDto.setYysm("");
                                    detilsDto.setYpmc(i.getYpmc());
                                    detilsDto.setFzbl(i.getFzbl());
                                    detilsDto.setZh(i.getZh());
                                    detilsDto.setCflx(i.getCflx());
                                    outpinmedicapplyDetilsDtos.add(detilsDto);
                                });
                            }
                            if (!detailsDtoss.isEmpty()) {
                                OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
                                outpinexamapplyDto.setHisRegistrationId(cardId);
                                outpinexamapplyDto.setSfzh(customer.getCusIdcard());
                                outpinexamapplyDto.setSqysbm(ysbm);
                                outpinexamapplyDto.setMzksbm(dept);
                                outpinexamapplyDto.setCzybm(ysbm);
                                outpinexamapplyDto.setCzyksbm(dept);
                                outpinexamapplyDto.setSfjz("0");
                                outpinexamapplyDto.setDetails(detailsDtoss);
                                AjaxResult ajaxResult2 = controller.Outpinexamapply(outpinexamapplyDto);
                                String result6 = getAjaxResult(ajaxResult2);
                                JSONObject object5 = getJSONObject(result6);
                                String code4 = object5.getStr("ResultCode");
                                if (code4.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setJxbz(jxbz);
                                        tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = object5.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("jcsqdh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("检查");
                                        tree.setService("his");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
                                        detilsDto.setDj(i.getDj());
                                        detilsDto.setDcjl(i.getDcjl());
                                        detilsDto.setPj(i.getPj());
                                        detilsDto.setJj(i.getJj());
                                        detilsDto.setJldw("");
                                        detilsDto.setTjbm("");
                                        detilsDto.setPs("");
                                        detilsDto.setPsbm("");
                                        detilsDto.setYyts("");
                                        detilsDto.setXtph("");
                                        detilsDto.setScph("");
                                        detilsDto.setYpxq("");
                                        detilsDto.setCdbm("");
                                        detilsDto.setKfdw("");
                                        detilsDto.setYfdw("");
                                        detilsDto.setYysm("");
                                        detilsDto.setYpmc(i.getYpmc());
                                        detilsDto.setFzbl(i.getFzbl());
                                        detilsDto.setZh(i.getZh());
                                        detilsDto.setCflx(i.getCflx());
                                        outpinmedicapplyDetilsDtos.add(detilsDto);
                                    });
                                }
                                if (!detailDtos.isEmpty()) {
                                    dao.setDetails(detailDtos);
                                    AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                                    String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                                    JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                                    String code5 = mzylyzsq3.getStr("ResultCode");
                                    if (code5.equals("0")) {
                                        List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                                        for (OutpintestapplyDetailsDto detail : details1) {
                                            LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                            tree.setJxbz(jxbz);
                                            tree.setCardId(dao.getHisRegistrationId());
                                            tree.setPationid(customer.getPationId());
                                            JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                                            tree.setSqdh(resultData.getStr("zlczh"));
                                            tree.setFyhj(resultData.getStr("fyhj"));
                                            String mxfyxmbm = detail.getMxfyxmbm();
                                            tree.setHisXmdm(mxfyxmbm);
                                            tree.setType("处置");
                                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                                            LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                            if (detail.getSfzhfy().equals("1"))
                                                wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                            else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                            List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                            if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                                String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                                LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                                wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                                LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                                LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                                wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                                LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                                tree.setXmfl(ejjfxmzd.getYjkmdm());
                                            }
                                            tree.setCreateTime(DateUtil.date());
                                            ltkjJianchajianyanTreeService.save(tree);
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }else {
                                        throw new RuntimeException();
                                    }
                                }
                            }
                        }
                    }
                }
                //门诊治疗处置申请
                OutpintreatapplyDto dao = new OutpintreatapplyDto();
                dao.setHisRegistrationId(cardId);
                dao.setSfzh(customer.getCusIdcard());
                dao.setSqysbm(ysbm);
                dao.setMzksbm(dept);
                dao.setSjrq(date);
                dao.setCzybm(ysbm);
                dao.setCzyksbm(dept);
                dao.setSfjz("0");
//        List<TbTransition> details = tbTransitionService.getTbTransitionListByCusId(customer.getCusIdcard(),cardId);
                if (null != detailList && !detailList.isEmpty()) {
                    LambdaQueryWrapper<TjProject> wq = new LambdaQueryWrapper<>();
                    wq.in(TjProject::getProId, detailList.stream().map(TbTransition::getParentProId).collect(Collectors.toList()));
                    wq.in(TjProject::getDeptId, deptService.getCzDeptIds());
                    List<TjProject> projects = projectService.list(wq);
                    List<Long> proIds = projects.stream().map(TjProject::getProId).collect(Collectors.toList());
                    if (!proIds.isEmpty()) {
                        QueryWrapper<TjProject> wrapper4 = new QueryWrapper<>();
                        wrapper4.select("sum(sl) as sl", "pro_id"
                                , "pro_parent_id", "pro_name", "his_xmbm", "his_xmmc"
                                , "pro_price");
                        wrapper4.in("pro_parent_id", proIds);
                        wrapper4.groupBy("his_xmbm");
                        projects = projectService.list(wrapper4);
                        if (null != projects && !projects.isEmpty()) {
                            List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
                            for (TjProject project : projects) {
                                if (StrUtil.isNotBlank(project.getHisXmbm()) && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
                                    OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
                                    detailsDto.setMxfyxmbm(project.getHisXmbm());
                                    detailsDto.setSfzhfy("0");
                                    detailsDto.setSl(project.getSl());
                                    detailsDto.setProjg(project.getProPrice());
                                    detailDtos.add(detailsDto);
                    //药品申请 原版
    //                if(!outpinmedicapplyDetilsDtos.isEmpty()){
    //                    OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
    //                    dto1.setHisRegistrationId(cardId);
    //                    dto1.setSfzh(customer.getCusIdcard());
    //                    dto1.setSqysbm(ysbm);
    //                    dto1.setMzksbm(dept);
    //                    dto1.setSjrq(date);
    //                    String yfbm = configService.selectConfigByKey("chufang_yfbm");
    //                    String mzzd = configService.selectConfigByKey("chufang_mzzd");
    //                    String czybm = configService.selectConfigByKey("chufang_czybm");
    //                    String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
    //                    String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
    //                    if (czybm.equalsIgnoreCase("N"))
    //                        dto1.setCzybm(ysbm);
    //                    else dto1.setCzybm(czybm);
    //                    if (czyksbm.equalsIgnoreCase("N"))
    //                        dto1.setCzyksbm(dept);
    //                    else dto1.setCzyksbm(dept);
    //                    dto1.setCflxbm(cflxbm);
    //                    if (yfbm.equalsIgnoreCase("N"))
    //                        dto1.setYfbm("1");
    //                    else dto1.setYfbm(yfbm);
    //                    dto1.setFyts("1");
    //                    if (mzzd.equalsIgnoreCase("N"))
    //                        dto1.setMzzd("");
    //                    else dto1.setMzzd(mzzd);
    //                    dto1.setDetails(outpinmedicapplyDetilsDtos);
    //                    AjaxResult result = controller.Outpinmedicapply(dto1);
    //                    String result1 = getAjaxResult(result);
    //                    JSONObject object = getJSONObject(result1);
    //                    String code = object.getStr("ResultCode");
    //                    if(null !=code && code.equals("0")){
    //                        JSONObject resultData = object.getJSONObject("ResultData");
    ////                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
    //                        String cfh = resultData.getStr("cfh");
    //                        log.info("药品申请后的处方号是: "+cfh+"  outpinmedicapplyDetilsDtos 里面的值为: "+outpinmedicapplyDetilsDtos.toString());
    //                        for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
    //                            TjCf cf=new TjCf();
    //                            cf.setJxbz(jxbz);
    //                            cf.setCardId(cardId);
    //                            cf.setSfzh(customer.getCusIdcard());
    //                            cf.setCfh(cfh);
    //                            cf.setSqysbm(ysbm);
    //                            cf.setSqysxm(ysmc);
    //                            cf.setMzksbn(dept);
    //                            cf.setSqrq(date);
    //                            cf.setCzybm(ysbm);
    //                            cf.setYpbm(detilsDto.getYpbm());
    //                            cf.setYpmc(detilsDto.getYpmc());
    //                            cf.setSl(String.valueOf(detilsDto.getSl()));
    //                            cf.setDj(String.valueOf(detilsDto.getDj()));
    //                            cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
    //                            cf.setPj(String.valueOf(detilsDto.getPj()));
    //                            cf.setJj(String.valueOf(detilsDto.getJj()));
    //                            cf.setCreateTime(new Date());
    //                            cfService.save(cf);
    //                        }
    //                    }
    //                }
                    /**
                     * 药品申请 处方类型维护在药品表
                     */
                    if (!outpinmedicapplyDetilsDtos.isEmpty()) {
                        String yfbm = configService.selectConfigByKey("chufang_yfbm");
                        String mzzd = configService.selectConfigByKey("chufang_mzzd");
                        String czybm = configService.selectConfigByKey("chufang_czybm");
                        String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
    //            String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
                        Map<String, List<OutpinmedicapplyDetilsDto>> listMap = outpinmedicapplyDetilsDtos.stream().collect(Collectors.groupingBy(OutpinmedicapplyDetilsDto::getCflx));
                        listMap.forEach((cflx, details) -> {
                            OutpinmedicapplyDto dto1 = new OutpinmedicapplyDto();
                            dto1.setHisRegistrationId(cardId);
                            dto1.setSfzh(customer.getCusIdcard());
                            dto1.setSqysbm(ysbm);
                            dto1.setMzksbm(dept);
                            dto1.setSjrq(date);
                            if (czybm.equalsIgnoreCase("N"))
                                dto1.setCzybm(ysbm);
                            else dto1.setCzybm(czybm);
                            if (czyksbm.equalsIgnoreCase("N"))
                                dto1.setCzyksbm(dept);
                            else dto1.setCzyksbm(czyksbm);
                            dto1.setCflxbm(cflx);
                            if (yfbm.equalsIgnoreCase("N"))
                                dto1.setYfbm("1");
                            else dto1.setYfbm(yfbm);
                            dto1.setFyts("1");
                            if (mzzd.equalsIgnoreCase("N"))
                                dto1.setMzzd("");
                            else dto1.setMzzd(mzzd);
                            dto1.setDetails(details);
                            AjaxResult result = controller.Outpinmedicapply(dto1);
                            String result1 = getAjaxResult(result);
                            JSONObject object = getJSONObject(result1);
                            String code = object.getStr("ResultCode");
                            if (null != code && code.equals("0")) {
                                JSONObject resultData = object.getJSONObject("ResultData");
                                String cfh = resultData.getStr("cfh");
                                log.info("药品申请后的处方号是: " + cfh + "  outpinmedicapplyDetilsDtos 里面的值为: " + outpinmedicapplyDetilsDtos.toString());
                                for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                                    TjCf cf = new TjCf();
                                    cf.setCardId(cardId);
                                    cf.setSfzh(customer.getCusIdcard());
                                    cf.setCfh(cfh);
                                    cf.setSqysbm(ysbm);
                                    cf.setSqysxm(ysmc);
                                    cf.setMzksbn(dept);
                                    cf.setSqrq(date);
                                    cf.setCzybm(ysbm);
                                    cf.setYpbm(detilsDto.getYpbm());
                                    cf.setYpmc(detilsDto.getYpmc());
                                    cf.setSl(String.valueOf(detilsDto.getSl()));
                                    cf.setDj(String.valueOf(detilsDto.getDj()));
                                    cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                                    cf.setPj(String.valueOf(detilsDto.getPj()));
                                    cf.setJj(String.valueOf(detilsDto.getJj()));
                                    cf.setCreateTime(new Date());
                                    cfService.save(cf);
                                }
                            }else {
                                throw new RuntimeException();
                            }
                            List<Long> proParentIds = projects.stream().map(TjProject::getProParentId).distinct().collect(Collectors.toList());
                            if (!outpinmedicXms.isEmpty()) {
                                outpinmedicXms.stream().filter(i -> proParentIds.contains(i.getProId())).forEach(i -> {
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
                                    detilsDto.setDj(i.getDj());
                                    detilsDto.setDcjl(i.getDcjl());
                                    detilsDto.setPj(i.getPj());
                                    detilsDto.setJj(i.getJj());
                                    detilsDto.setJldw("");
                                    detilsDto.setTjbm("");
                                    detilsDto.setPs("");
                                    detilsDto.setPsbm("");
                                    detilsDto.setYyts("");
                                    detilsDto.setXtph("");
                                    detilsDto.setScph("");
                                    detilsDto.setYpxq("");
                                    detilsDto.setCdbm("");
                                    detilsDto.setKfdw("");
                                    detilsDto.setYfdw("");
                                    detilsDto.setYysm("");
                                    detilsDto.setYpmc(i.getYpmc());
                                    detilsDto.setFzbl(i.getFzbl());
                                    detilsDto.setZh(i.getZh());
                                    detilsDto.setCflx(i.getCflx());
                                    outpinmedicapplyDetilsDtos.add(detilsDto);
                                });
                            }
                            if (!detailDtos.isEmpty()) {
                                dao.setDetails(detailDtos);
                                AjaxResult mzylyzsq1 = controller.Outpintreatapply(dao);
                                String mzylyzsq2 = getAjaxResult(mzylyzsq1);
                                JSONObject mzylyzsq3 = getJSONObject(mzylyzsq2);
                                String code5 = mzylyzsq3.getStr("ResultCode");
                                if (code5.equals("0")) {
                                    List<OutpintestapplyDetailsDto> details1 = dao.getDetails();
                                    for (OutpintestapplyDetailsDto detail : details1) {
                                        LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
                                        tree.setJxbz(jxbz);
                                        tree.setCardId(dao.getHisRegistrationId());
                                        tree.setPationid(customer.getPationId());
                                        JSONObject resultData = mzylyzsq3.getJSONObject("ResultData");
                                        tree.setSqdh(resultData.getStr("zlczh"));
                                        tree.setFyhj(resultData.getStr("fyhj"));
                                        String mxfyxmbm = detail.getMxfyxmbm();
                                        tree.setHisXmdm(mxfyxmbm);
                                        tree.setType("处置");
                                        tree.setTjPrice(String.valueOf(detail.getProjg()));
                                        LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                                        if (detail.getSfzhfy().equals("1"))
                                            wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
                                        else wrapper1.eq(LtkjJfzhglmxjfxmzd::getXmdm, mxfyxmbm);
                                        List<LtkjJfzhglmxjfxmzd> ltkjJfzhglmxjfxmzds = ltkjJfzhglmxjfxmzdService.list(wrapper1);
                                        if (ltkjJfzhglmxjfxmzds != null && !ltkjJfzhglmxjfxmzds.isEmpty()) {
                                            String xmdm = ltkjJfzhglmxjfxmzds.get(0).getXmdm();
                                            LambdaQueryWrapper<LtkjMxjfxmzd> wrapper2 = new LambdaQueryWrapper<>();
                                            wrapper2.eq(LtkjMxjfxmzd::getXmdm, xmdm);
                                            LtkjMxjfxmzd mxjfxmzd = ltkjMxjfxmzdService.getOne(wrapper2);
                                            LambdaQueryWrapper<LtkjEjjfxmzd> wrapper3 = new LambdaQueryWrapper<>();
                                            wrapper3.eq(LtkjEjjfxmzd::getEjkmdm, mxjfxmzd.getEjkmdm());
                                            LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                            tree.setXmfl(ejjfxmzd.getYjkmdm());
                                        }
                                        tree.setCreateTime(DateUtil.date());
                                        ltkjJianchajianyanTreeService.save(tree);
                                    }
                                }
                            }
                        }
                        });
                    }
                }
                //药品申请 原版
//                if(!outpinmedicapplyDetilsDtos.isEmpty()){
//                    OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
//                    dto1.setHisRegistrationId(cardId);
//                    dto1.setSfzh(customer.getCusIdcard());
//                    dto1.setSqysbm(ysbm);
//                    dto1.setMzksbm(dept);
//                    dto1.setSjrq(date);
//                    String yfbm = configService.selectConfigByKey("chufang_yfbm");
//                    String mzzd = configService.selectConfigByKey("chufang_mzzd");
//                    String czybm = configService.selectConfigByKey("chufang_czybm");
//                    String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
//                    String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
//                    if (czybm.equalsIgnoreCase("N"))
//                        dto1.setCzybm(ysbm);
//                    else dto1.setCzybm(czybm);
//                    if (czyksbm.equalsIgnoreCase("N"))
//                        dto1.setCzyksbm(dept);
//                    else dto1.setCzyksbm(dept);
//                    dto1.setCflxbm(cflxbm);
//                    if (yfbm.equalsIgnoreCase("N"))
//                        dto1.setYfbm("1");
//                    else dto1.setYfbm(yfbm);
//                    dto1.setFyts("1");
//                    if (mzzd.equalsIgnoreCase("N"))
//                        dto1.setMzzd("");
//                    else dto1.setMzzd(mzzd);
//                    dto1.setDetails(outpinmedicapplyDetilsDtos);
//                    AjaxResult result = controller.Outpinmedicapply(dto1);
//                    String result1 = getAjaxResult(result);
//                    JSONObject object = getJSONObject(result1);
//                    String code = object.getStr("ResultCode");
//                    if(null !=code && code.equals("0")){
//                        JSONObject resultData = object.getJSONObject("ResultData");
////                Map<String, Object> resultDatasss = (Map<String, Object>) resultData.get(0);
//                        String cfh = resultData.getStr("cfh");
//                        log.info("药品申请后的处方号是: "+cfh+"  outpinmedicapplyDetilsDtos 里面的值为: "+outpinmedicapplyDetilsDtos.toString());
//                        for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
//                            TjCf cf=new TjCf();
//                            cf.setJxbz(jxbz);
//                            cf.setCardId(cardId);
//                            cf.setSfzh(customer.getCusIdcard());
//                            cf.setCfh(cfh);
//                            cf.setSqysbm(ysbm);
//                            cf.setSqysxm(ysmc);
//                            cf.setMzksbn(dept);
//                            cf.setSqrq(date);
//                            cf.setCzybm(ysbm);
//                            cf.setYpbm(detilsDto.getYpbm());
//                            cf.setYpmc(detilsDto.getYpmc());
//                            cf.setSl(String.valueOf(detilsDto.getSl()));
//                            cf.setDj(String.valueOf(detilsDto.getDj()));
//                            cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
//                            cf.setPj(String.valueOf(detilsDto.getPj()));
//                            cf.setJj(String.valueOf(detilsDto.getJj()));
//                            cf.setCreateTime(new Date());
//                            cfService.save(cf);
//                        }
//                    }
//                }
                /**
                 * 药品申请 处方类型维护在药品表
                 */
                if (!outpinmedicapplyDetilsDtos.isEmpty()) {
                    String yfbm = configService.selectConfigByKey("chufang_yfbm");
                    String mzzd = configService.selectConfigByKey("chufang_mzzd");
                    String czybm = configService.selectConfigByKey("chufang_czybm");
                    String czyksbm = configService.selectConfigByKey("chufang_czyksbm");
//            String cflxbm = configService.selectConfigByKey("chufang_cflxbm");
                    Map<String, List<OutpinmedicapplyDetilsDto>> listMap = outpinmedicapplyDetilsDtos.stream().collect(Collectors.groupingBy(OutpinmedicapplyDetilsDto::getCflx));
                    listMap.forEach((cflx, details) -> {
                        OutpinmedicapplyDto dto1 = new OutpinmedicapplyDto();
                        dto1.setHisRegistrationId(cardId);
                        dto1.setSfzh(customer.getCusIdcard());
                        dto1.setSqysbm(ysbm);
                        dto1.setMzksbm(dept);
                        dto1.setSjrq(date);
                        if (czybm.equalsIgnoreCase("N"))
                            dto1.setCzybm(ysbm);
                        else dto1.setCzybm(czybm);
                        if (czyksbm.equalsIgnoreCase("N"))
                            dto1.setCzyksbm(dept);
                        else dto1.setCzyksbm(czyksbm);
                        dto1.setCflxbm(cflx);
                        if (yfbm.equalsIgnoreCase("N"))
                            dto1.setYfbm("1");
                        else dto1.setYfbm(yfbm);
                        dto1.setFyts("1");
                        if (mzzd.equalsIgnoreCase("N"))
                            dto1.setMzzd("");
                        else dto1.setMzzd(mzzd);
                        dto1.setDetails(details);
                        AjaxResult result = controller.Outpinmedicapply(dto1);
                        String result1 = getAjaxResult(result);
                        JSONObject object = getJSONObject(result1);
                        String code = object.getStr("ResultCode");
                        if (null != code && code.equals("0")) {
                            JSONObject resultData = object.getJSONObject("ResultData");
                            String cfh = resultData.getStr("cfh");
                            log.info("药品申请后的处方号是: " + cfh + "  outpinmedicapplyDetilsDtos 里面的值为: " + outpinmedicapplyDetilsDtos.toString());
                            for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                                TjCf cf = new TjCf();
                                cf.setCardId(cardId);
                                cf.setSfzh(customer.getCusIdcard());
                                cf.setCfh(cfh);
                                cf.setSqysbm(ysbm);
                                cf.setSqysxm(ysmc);
                                cf.setMzksbn(dept);
                                cf.setSqrq(date);
                                cf.setCzybm(ysbm);
                                cf.setYpbm(detilsDto.getYpbm());
                                cf.setYpmc(detilsDto.getYpmc());
                                cf.setSl(String.valueOf(detilsDto.getSl()));
                                cf.setDj(String.valueOf(detilsDto.getDj()));
                                cf.setDcjl(String.valueOf(detilsDto.getDcjl()));
                                cf.setPj(String.valueOf(detilsDto.getPj()));
                                cf.setJj(String.valueOf(detilsDto.getJj()));
                                cf.setCreateTime(new Date());
                                cfService.save(cf);
                            }
                        }
                    });
                }
            }
            return AjaxResult.success();
        } catch (RuntimeException e) {
            throw new RuntimeException(e);
        }
        return AjaxResult.success();
    }
    public void pacsReg(TjOrder order, TjCustomer customer, ArrayList<TjProject> jianChaProjects) {
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCheckController.java
@@ -1712,12 +1712,13 @@
                    if (dels.isEmpty()) {
                        continue;
                    }
                    dels = dels.stream().sorted(Comparator.comparing(TjOrderDetail::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
                    dels = dels.stream()
                            .sorted(Comparator.comparingInt(
                                    tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
                            ))
                            .collect(Collectors.toList());
//                    dels = dels.stream().sorted(Comparator.comparing(TjOrderDetail::getProName, Collator.getInstance(Locale.CHINA))).collect(Collectors.toList());
//                    dels = dels.stream()
//                            .sorted(Comparator.comparingInt(
//                                    tjPdfVO -> tjPdfVO.getProName().length() // 根据名字的长度排序
//                            ))
//                            .collect(Collectors.toList());
                    dels = dels.stream().sorted(Comparator.comparing(TjOrderDetail::getXh)).collect(Collectors.toList());
                    parent.put("sons", dels);
                    parent.put("remark", remark.getRemark());
                    parent.put("jgbx", remark.getJgbx());
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjCustomerController.java
@@ -269,6 +269,7 @@
//                    if(null !=tjReservation.getCompanyId())tjCustomer1.setDictCompId(Long.valueOf(tjReservation.getCompanyId()));
                    if(null !=tjReservation.getCompany())tjCustomer1.setCompName(tjReservation.getCompany());
                    if(null !=tjReservation.getDepartment())tjCustomer1.setDepartment(tjReservation.getDepartment());
//                    tjCustomerService.updateById(tjCustomer1);
@@ -304,7 +305,7 @@
                    tjCustomer.setPym(PinyinUtil.getFirstLetter(tjReservation.getName(),""));
                    if(null !=tjReservation.getCompanyId())tjCustomer.setCompId(tjReservation.getCompanyId());
                    if(null !=tjReservation.getCompany())tjCustomer.setCompName(tjReservation.getCompany());
                    if(null !=tjReservation.getDepartment())tjCustomer.setDepartment(tjReservation.getDepartment());
                    if (null != key && key.equals("Y")) {
                        AjaxResult result = controller.Outpincreateapply(tjCustomer);
                        String result1 = getAjaxResult(result);
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjFlowingWaterController.java
@@ -30,6 +30,7 @@
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDeptService;
import com.ltkj.system.service.ISysUserService;
import com.ltkj.web.controller.his.HisApiMethod;
import com.ltkj.web.wxUtils.HttpClientUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -37,6 +38,7 @@
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.NoTransactionException;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
@@ -99,7 +101,8 @@
    private TjOrderController tjOrderController;
    @Autowired
    private ITbTransitionService tbTransitionService;
    @Autowired
    private HisApiMethod hisApiMethod;
    /**
     * 查询该体检号对应的订单流水列表
     */
@@ -255,9 +258,11 @@
                Date dates = new Date();
                String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss") + order.getOrderId();
                //异步单项收费明细
                Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz);
                if (!b) {
                try {
                    Boolean b = asyncService.iundividualCharges(tjFlowingWater, order, customer, sysUser, jxbz);
                } catch (NoTransactionException e) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    hisApiMethod.ZfBlHisApiMethod(order.getTjNumber(), jxbz);
                    return AjaxResult.error();
                }
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjProjectController.java
@@ -162,6 +162,7 @@
        if (checkType != null) {
            wq.eq(TjProject::getProCheckType, checkType);
        }
        wq.orderByAsc(TjProject::getXh);
        List<TjProject> tjProjects = tjProjectService.list(wq);
//        List<TjProject> tjProjects = tjProjectService.getAllChildListById(proId);
        if (tjProjects != null) {
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjCustomer.java
@@ -329,6 +329,10 @@
    @TableField(exist = false)
    private String isBlack;
    @ApiModelProperty("单位部门")
    @TableField(exist = false)
    private String department;
    private Long dictCompId;
    private String compName;
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjOrderDetail.java
@@ -241,6 +241,8 @@
    @TableField(exist = false)
    private String orgType;
    @TableField(exist = false)
    private Integer xh;
    @Override
    public String toString() {
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjPdfVO.java
@@ -48,4 +48,6 @@
     * 碳13id
     */
    private String pid;
    private Integer xh;
}
ltkj-hosp/src/main/java/com/ltkj/hosp/domain/TjReservation.java
@@ -281,6 +281,12 @@
    @TableField(exist = false)
    private String packId;
    @TableField(exist = false)
    private String dwDeptName;
    @TableField(exist = false)
    private String groupingName;
    //单项ids
    @TableField(exist = false)
    private List<Long> proIdList;
@@ -311,9 +317,6 @@
     */
    private String groupingId;
    @ApiModelProperty(value = "分组名")
    @TableField(exist = false)
    private String groupingName;
    @ApiModelProperty(value = "应收价格")
    @TableField(exist = false)
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderDetailMapper.java
@@ -303,4 +303,8 @@
            " LEFT JOIN sys_dept d ON p.dept_id = d.dept_id\n" +
            "  WHERE order_id = #{orderId} AND p.pro_parent_id <>0 AND o.is_return = #{type}")
    List<ProFcListVo> getFcList(@Param("orderId") Long orderId, @Param("type") Integer type);
    @Select("call newpacsJianChaData(#{tjnumber,mode=IN},1)")
    List<TjOrderDetail> newgetDetailByOrderIdAndParId(String tjNumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/mapper/TjOrderRemarkMapper.java
@@ -324,4 +324,7 @@
    void csymxmxzqtyybcjk(@Param("tjh")String tjNum,@Param("xmid") String proId,@Param("yy") String yy,
                          @Param("kslx") String orgType,@Param("czy") String czy,@Param("czydm") String czydm);
    @Select("call newpacsJianChaData(#{tjnumber,mode=IN},0)")
    List<TjOrderRemark> newpacsJianChaData(String tjnumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderDetailService.java
@@ -152,4 +152,6 @@
    List<ProFcListVo> getFcList(Long orderId, Integer type);
    AjaxResult updFcPro(String json);
    List<TjOrderDetail> newgetDetailByOrderIdAndParId(String tjNumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/ITjOrderRemarkService.java
@@ -106,4 +106,6 @@
    int updateTjOrderRemarkByTjzt(String tjNumber,String proId);
    void csymxmxzqtyybcjk(String tjNum, String proId, String yy, String orgType, String czy, String czydm);
    List<TjOrderRemark> newpacsJianChaData(String tjNumber);
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderDetailServiceImpl.java
@@ -303,4 +303,9 @@
        }
        return AjaxResult.success();
    }
    @Override
    public List<TjOrderDetail> newgetDetailByOrderIdAndParId(String tjNumber) {
        return tjOrderDetailMapper.newgetDetailByOrderIdAndParId(tjNumber);
    }
}
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjOrderRemarkServiceImpl.java
@@ -219,4 +219,9 @@
        mapper.csymxmxzqtyybcjk( tjNum,  proId,  yy,  orgType,  czy,  czydm);
    }
    @Override
    public List<TjOrderRemark> newpacsJianChaData(String tjNumber) {
        return mapper.newpacsJianChaData(tjNumber);
    }
}
ltkj-hosp/src/main/resources/mapper/hosp/TjReservationMapper.xml
@@ -78,18 +78,20 @@
    </sql>
    <select id="selectTjReservationList" parameterType="TjReservation" resultMap="TjReservationResult">
        <include refid="selectTjReservationVo"/>
        SELECT a.* ,b.dw_dept_name ,b.grouping_name FROM
        tj_reservation a
        LEFT JOIN tj_dw_grouping b ON b.id = a.grouping_id
        <where>
            <if test="name != null  and name != ''">and name =#{name}</if>
            <if test="idCard != null  and idCard != ''">and id_card = #{idCard}</if>
            <if test="phoe != null  and phoe != ''">and phoe = #{phoe}</if>
            <if test="company != null  and company != ''">and company like concat('%', #{company}, '%')</if>
            <if test="companyId != null  and companyId != ''">and company_id = #{companyId} </if>
            <if test="yykssj != null and yyjssj != null ">and reservation_time  BETWEEN #{yykssj} and #{yyjssj} </if>
            <if test="isExpire != null ">and is_expire = #{isExpire}</if>
            and deleted = '0'
            <if test="name != null  and name != ''">and a.name =#{name}</if>
            <if test="idCard != null  and idCard != ''">and a.id_card = #{idCard}</if>
            <if test="phoe != null  and phoe != ''">and a.phoe = #{phoe}</if>
            <if test="company != null  and company != ''">and a.company like concat('%', #{company}, '%')</if>
            <if test="companyId != null  and companyId != ''">and a.company_id = #{companyId} </if>
            <if test="yykssj != null and yyjssj != null ">and a.reservation_time  BETWEEN #{yykssj} and #{yyjssj} </if>
            <if test="isExpire != null ">and a.is_expire = #{isExpire}</if>
        </where>
        ORDER BY create_time desc
        and a.deleted = 0
        ORDER BY a.create_time desc
    </select>