From 5f1d1c462bbf49bc6a22b9e17b49733bcc1e0bc6 Mon Sep 17 00:00:00 2001
From: zjh <1084500556@qq.com>
Date: 星期五, 20 六月 2025 19:01:13 +0800
Subject: [PATCH] zjh20250620

---
 ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java | 2911 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 2,348 insertions(+), 563 deletions(-)

diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
index 039a8b7..66d92b1 100644
--- a/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
+++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -1,20 +1,26 @@
 package com.ltkj.web.controller.service;
 
-import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ltkj.common.core.domain.AjaxResult;
+import com.ltkj.common.core.domain.entity.SysDept;
 import com.ltkj.common.core.domain.entity.SysUser;
 import com.ltkj.common.core.redis.RedisCache;
-import com.ltkj.common.utils.SecurityUtils;
+import com.ltkj.hosp.idutil.IdUtils;
 import com.ltkj.common.utils.StringUtils;
 import com.ltkj.framework.config.MatchUtils;
 import com.ltkj.hosp.domain.*;
 import com.ltkj.hosp.hisDto.*;
+import com.ltkj.hosp.mapper.TjOrderDetailMapper;
+import com.ltkj.hosp.mapper.TjOrderRemarkMapper;
+import com.ltkj.hosp.mapper.TjSamplingMapper;
 import com.ltkj.hosp.pacsDto.SavePacsApply;
 import com.ltkj.hosp.service.*;
 import com.ltkj.hosp.vodomain.AddNewReservationConfirm;
@@ -24,17 +30,19 @@
 import com.ltkj.mall.mallOrderUtils.TjConstants;
 import com.ltkj.system.service.ISysConfigService;
 import com.ltkj.system.service.ISysDeptService;
+import com.ltkj.system.service.ISysDictDataService;
 import com.ltkj.system.service.ISysUserService;
 import com.ltkj.web.controller.his.HisApiGetMethodService;
 import com.ltkj.web.controller.his.HisApiMethodService;
 import com.ltkj.web.controller.lis.LisApiMethod;
 import com.ltkj.web.controller.pacs.PacsApiMethodService;
-import com.ltkj.web.controller.system.TjOrderController;
+import com.ltkj.web.controller.system.SamplingServiceApi;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -141,6 +149,37 @@
     private PacsApiMethodService pacsApiMethodService;
     @Autowired
     private LisApiMethod lisApiMethod;
+    @Autowired
+    private IdUtils idUtils;
+    @Autowired
+    private LtkjJybbzdService jybbzdService;
+    @Autowired
+    private LisJyflhbService lisJyflhbService;
+    @Autowired
+    private SamplingServiceApi samplingServiceApi;
+    @Autowired
+    private ISysDictDataService sysDictDataService;
+    @Autowired
+    private TjSamplingMapper tjSamplingMapper;
+    @Autowired
+    private ISysConfigService sysConfigService;
+    @Resource
+    private ITjXdPictureService xdPictureService;
+    @Autowired
+    private TjOutpinmedicXmService tjOutpinmedicXmService;
+    @Autowired
+    private TjOrderYcxmService ycxmService;
+    @Autowired
+    private ITjRulesService rulesService;
+    @Autowired
+    private ITjProAdvicerulesService tjProAdvicerulesService;
+
+    @Autowired
+    private TjOrderDetailMapper detailMapper;
+
+    @Autowired
+    private TjOrderRemarkMapper remarkMapper;
+
 
     @Override
     public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
@@ -168,7 +207,7 @@
             redisCache.deleteObject(tjCustomer.getCusIdcard() + "cusId");
         if (null != tbTransitionList && tbTransitionList.size() > 0) {
 
-            tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()),tjOrder.getCardId());
+            tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
 
             //淇敼姣忛」鐨勫師浠风幇浠�
             for (TbTransition transition : tbTransitionList) {
@@ -221,10 +260,10 @@
 
         tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
         boolean b = tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(),
-                String.valueOf(sysUser.getUserId()),tjOrder.getCardId());
+                String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
         if (!b) {
             List<TjGroupingPro> proList = groupingProService.list(new LambdaQueryWrapper<TjGroupingPro>().eq(TjGroupingPro::getGroupingId, tjOrder.getGroupId()));
-            if (null != proList && proList.size() > 0) {
+            if (null != proList && !proList.isEmpty()) {
                 for (TjGroupingPro groupingPro : proList) {
                     TjOrderDetail detail = new TjOrderDetail();
 //                if (null != transition.getPacId()) {
@@ -277,11 +316,13 @@
             if (null != tjReservation && tjReservation.getPayType() == 1) {
                 tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                         sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+                orderRemarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
             }
         }
         if (tjFlowingWater.getPayStasus() == 1) {
             tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                     sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
+            orderRemarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
         }
         if (tjFlowingWater.getDiscount() == null) {
             transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), new BigDecimal(10), tjOrder.getTjNumber());
@@ -289,7 +330,7 @@
             transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), BigDecimal.valueOf(Long.parseLong(tjFlowingWater.getDiscount())), tjOrder.getTjNumber());
         }
 
-        tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()),tjOrder.getCardId());
+        tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
 //        List<TjOrderDetail> list = tjOrderDetailService.getTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()));
 //        if (list != null) {
 //            for (TjOrderDetail tjOrderDetail : list) {
@@ -328,8 +369,8 @@
     @Override
     @Async("async")
     public void collectFees(TjOrder order, List<TjConsumables> list2, List<TbTransition> tbTransitionList, SysUser sysUser, String discount) {
-        orderRemarkService.deletedOrderRemarkByTjNum(order.getTjNumber());
-        redisCache.deleteObject("getOrderDetailByProParentId" + order.getTjNumber());
+//        orderRemarkService.deletedOrderRemarkByTjNum(order.getTjNumber());
+//        redisCache.deleteObject("getOrderDetailByProParentId" + order.getTjNumber());
         for (TbTransition transition : tbTransitionList) {
 //            transition.setNowPrice(transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(discount)).divide(BigDecimal.valueOf(10))));
 //            transitionService.updateById(transition);
@@ -354,33 +395,33 @@
         //鐖堕」
         ArrayList<TbTransition> collect1 = tbTransitionList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TbTransition::getParentProId))), ArrayList::new));
         List<Long> parentProIds = collect1.stream().map(TbTransition::getParentProId).collect(Collectors.toList());
-        if (parentProIds.size() > 0) {
+        if (!parentProIds.isEmpty()) {
             for (Long parentProId : parentProIds) {
                 TjProject parentProject = projectService.selectTjProjectByProId(parentProId);
                 if (null != parentProject) {
                     LambdaQueryWrapper<TjProConsumables> wqqq = new LambdaQueryWrapper<>();
                     wqqq.eq(TjProConsumables::getProId, parentProject.getProId());
                     List<TjProConsumables> proConsumables = proConsumablesService.list(wqqq);
-                    if (null != proConsumables && proConsumables.size() > 0) {
+                    if (null != proConsumables && !proConsumables.isEmpty()) {
                         for (TjProConsumables tjProConsumables : proConsumables) {
                             TjConsumables tjConsumables = consumablesService.selectTjConsumablesById(tjProConsumables.getConsumablesId());
                             list2.add(tjConsumables);
                         }
                     }
-                    TjOrderRemark tjOrderRemark = new TjOrderRemark();
-                    tjOrderRemark.setProId(parentProId);
-                    tjOrderRemark.setProName(parentProject.getProName());
-                    tjOrderRemark.setDeptId(parentProject.getDeptId());
-                    tjOrderRemark.setTjNumber(order.getTjNumber());
-                    tjOrderRemark.setCreateBy(sysUser.getNickName());
-                    tjOrderRemark.setCreateTime(new Date());
-                    tjOrderRemark.setUpdateBy(sysUser.getNickName());
-                    tjOrderRemark.setUpdateTime(new Date());
-                    tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
-                    tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
-                    orderRemarkService.save(tjOrderRemark);
-                    Map<String, Object> map = getOrderDetailByProParentId(String.valueOf(parentProId), order.getTjNumber());
-                    redisCache.setCacheMapValue("getOrderDetailByProParentId" + order.getTjNumber(), String.valueOf(parentProId), map);
+//                    TjOrderRemark tjOrderRemark = new TjOrderRemark();
+//                    tjOrderRemark.setProId(parentProId);
+//                    tjOrderRemark.setProName(parentProject.getProName());
+//                    tjOrderRemark.setDeptId(parentProject.getDeptId());
+//                    tjOrderRemark.setTjNumber(order.getTjNumber());
+//                    tjOrderRemark.setCreateBy(sysUser.getNickName());
+//                    tjOrderRemark.setCreateTime(new Date());
+//                    tjOrderRemark.setUpdateBy(sysUser.getNickName());
+//                    tjOrderRemark.setUpdateTime(new Date());
+//                    tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
+//                    tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
+//                    orderRemarkService.save(tjOrderRemark);
+//                    Map<String, Object> map = getOrderDetailByProParentId(String.valueOf(parentProId), order.getTjNumber());
+//                    redisCache.setCacheMapValue("getOrderDetailByProParentId" + order.getTjNumber(), String.valueOf(parentProId), map);
                 }
             }
         }
@@ -403,44 +444,116 @@
             chargingStandardService.save(tjChargingStandard);
         }
 
-        LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
-        wq.eq(TjOrderDetail::getOrderId, order.getOrderId());
-        wq.isNotNull(TjOrderDetail::getFlowingWaterId);
-        wq.eq(TjOrderDetail::getIsSampling, 0);
-        List<TjOrderDetail> detailList = tjOrderDetailService.list(wq);
-        addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser);
+        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
+        addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser, null);
+        List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(order.getTjNumber());
+        xdPictureService.saveBatch(xdPictureList);
     }
 
-    public void addCaiYangDengJi(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser) {
-        if (null != detailList && detailList1) {
-            String format = DateUtil.format(new Date(), "yyMMddHHmmssSSS");
-            for (TjOrderDetail detail : detailList) {
-                TjSampling sampling = new TjSampling();
-                if (null == projectService.getById(detail.getProId())) continue;
-                Long proParentId = projectService.getById(detail.getProId()).getProParentId();
-                if (null != proParentId && proParentId == 0) {
-                    sampling.setSpecimenType(projectService.getById(detail.getProId()).getSpecimenType());
-                } else {
-                    sampling.setSpecimenType(projectService.getById(projectService.getById(detail.getProId()).getProParentId()).getSpecimenType());
+    public void addCaiYangDengJi(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
+        try {
+            String lis_tmh_prefix = sysConfigService.selectConfigByKey("make_lis_tmh_prefix");
+            String config = configService.selectConfigByKey("sfkqdyhis");
+            Boolean lisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
+            if (null != detailList && detailList1) {
+                String format = DateUtil.format(new Date(), "yyMMddHHmmssSSS");
+                for (TjOrderDetail detail : detailList) {
+                    int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId()));
+                    if (i > 0) continue;
+                    TjSampling sampling = new TjSampling();
+                    if (null == projectService.getById(detail.getProId())) continue;
+                    TjProject project = projectService.getById(detail.getProId());
+                    Long proParentId = project.getProParentId();
+                    String dictLabel = sysDictDataService.selectDictLabel("sys_dict_specimen", project.getSpecimenType());
+                    if (null != proParentId && proParentId == 0) {
+                        sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
+                        //                    LtkjJyxmzd jyxmzd = lisApiMethod.getJyxmzd(project);
+                        //                    if (jyxmzd != null) {
+                        if (config.equals("Y") && lisAndPacsRegister)
+                            sampling.setJyxmdm(project.getLisXmbm());
+                        else sampling.setJyxmdm(String.valueOf(project.getProId()));
+                        sampling.setSpecimenTypeCode(project.getSpecimenType());
+                        sampling.setSpecimenType(dictLabel);
+                        sampling.setYb(project.getYb());
+                        //                        LambdaQueryWrapper<LtkjJybbzd> wrapper = new LambdaQueryWrapper<>();
+                        //                        wrapper.eq(LtkjJybbzd::getJybbdm,jyxmzd.getJybbdm());
+                        //                        LtkjJybbzd jybbzd = jybbzdService.getOne(wrapper);
+                        //                        sampling.setSpecimenType(jybbzd.getJybbmc());
+                        //                        sampling.setJyxmdm(jyxmzd.getJyxmdm());
+                        //                    }
+                    } else {
+                        TjProject project1 = projectService.getById(proParentId);
+                        sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
+                        sampling.setSpecimenTypeCode(project1.getSpecimenType());
+                        sampling.setSpecimenType(dictLabel);
+                        sampling.setYb(project.getYb());
+                        if (config.equals("Y") && lisAndPacsRegister)
+                            sampling.setJyxmdm(project1.getLisXmbm());
+                        else sampling.setJyxmdm(String.valueOf(project1.getProId()));
+                        //                    LtkjJyxmzd jyxmzd = lisApiMethod.getJyxmzd(project1);
+                        //                    if (jyxmzd != null) {
+                        //                        sampling.setSpecimenTypeCode(jyxmzd.getJybbdm());
+                        //                        LambdaQueryWrapper<LtkjJybbzd> wrapper = new LambdaQueryWrapper<>();
+                        //                        wrapper.eq(LtkjJybbzd::getJybbdm,jyxmzd.getJybbdm());
+                        //                        LtkjJybbzd jybbzd = jybbzdService.getOne(wrapper);
+                        //                        sampling.setSpecimenType(jybbzd.getJybbmc());
+                        //                        sampling.setJyxmdm(jyxmzd.getJyxmdm());
+                        //                    }
+                    }
+                    sampling.setSamplingNumber(format);
+                    sampling.setTjNum(order.getTjNumber());
+                    sampling.setCusId(String.valueOf(order.getUserId()));
+                    if (tjCustomerService.getById(String.valueOf(order.getUserId())) != null) {
+                        sampling.setCusName(tjCustomerService.getById(String.valueOf(order.getUserId())).getCusName());
+                    }
+                    sampling.setApplicationTime(new Date());
+                    sampling.setTjTime(order.getCreateTime());
+                    sampling.setProId(String.valueOf(detail.getProId()));
+                    sampling.setProName(projectService.getById(detail.getProId()).getProName());
+                    sampling.setCreateBy(sysUser.getNickName());
+                    sampling.setCreateTime(new Date());
+                    sampling.setUpdateBy(sysUser.getNickName());
+                    sampling.setUpdateTime(new Date());
+                    sampling.setCreateId(String.valueOf(sysUser.getUserId()));
+                    sampling.setUpdateId(String.valueOf(sysUser.getUserId()));
+                    sampling.setJxbz(jxbz);
+                    samplingService.save(sampling);
                 }
-                sampling.setSamplingNumber(format);
-                sampling.setTjNum(order.getTjNumber());
-                sampling.setCusId(String.valueOf(order.getUserId()));
-                if (tjCustomerService.getById(String.valueOf(order.getUserId())) != null) {
-                    sampling.setCusName(tjCustomerService.getById(String.valueOf(order.getUserId())).getCusName());
-                }
-                sampling.setApplicationTime(new Date());
-                sampling.setTjTime(order.getCreateTime());
-                sampling.setProId(String.valueOf(detail.getProId()));
-                sampling.setProName(projectService.getById(detail.getProId()).getProName());
-                sampling.setCreateBy(sysUser.getNickName());
-                sampling.setCreateTime(new Date());
-                sampling.setUpdateBy(sysUser.getNickName());
-                sampling.setUpdateTime(new Date());
-                sampling.setCreateId(String.valueOf(sysUser.getUserId()));
-                sampling.setUpdateId(String.valueOf(sysUser.getUserId()));
-                samplingService.save(sampling);
             }
+            if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) {
+                AjaxResult ajaxResult = lisApiMethod.getJyFlHb();
+                if (ajaxResult.get("code").toString().equals("200")) {
+                    String str = ajaxResult.get("data").toString();
+                    str = str.replace("=", ":");
+                    JSONArray array = JSONUtil.parseArray(str);
+                    for (Object o : array) {
+                        JSONObject object = (JSONObject) o;
+                        LisJyflhb lisJyflhb = new LisJyflhb();
+                        lisJyflhb.setHbhxm(object.getStr("hbhxm"));
+                        lisJyflhb.setFlmc(object.getStr("flmc"));
+                        lisJyflhb.setMc(object.getStr("mc"));
+                        lisJyflhb.setFlbm(object.getStr("flbm"));
+                        LambdaQueryWrapper<LisJyflhb> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm());
+                        LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper);
+                        if (jyflhb == null) {
+                            lisJyflhb.setId(IdUtil.getSnowflake().nextId());
+                            lisJyflhbService.save(lisJyflhb);
+                        } else {
+                            lisJyflhb.setId(jyflhb.getId());
+                            lisJyflhbService.updateById(lisJyflhb);
+                        }
+                    }
+                }
+
+            }
+            if (StrUtil.isNotBlank(jxbz)) {
+                tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), jxbz);
+            } else {
+                tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
         }
     }
 
@@ -486,18 +599,159 @@
     }
 
     @Override
-    @Async("async")
-    public void updateOrdeltile(List<TjOrderDetail> tjOrderDetailList, SysUser sysUser, TjOrder order) {
-        for (TjOrderDetail detail : tjOrderDetailList) {
-            detail.setTjStatus(1L);
-            LambdaQueryWrapper<TjStandard> wq0 = new LambdaQueryWrapper<>();
-            wq0.eq(TjStandard::getProId, detail.getProId());
-            detail.setUpdateBy(sysUser.getNickName());
-            detail.setUpdateTime(new Date());
-            detail.setCreateId(String.valueOf(sysUser.getUserId()));
-            detail.setUpdateId(String.valueOf(sysUser.getUserId()));
-            tjOrderDetailService.updateById(detail);
+    //@Async("async")
+    public void updateOrdeltile(List<TjOrderDetail> tjOrderDetailList, SysUser sysUser, TjOrder order, TjOrderRemark orderRemark) {
+
+        try {
+            String deptname = "";
+            TjProject tjProject = projectService.getById(orderRemark.getProId());
+            if (null != tjProject) {
+                SysDept dept = deptService.getById(tjProject.getDeptId());
+                if (dept.getParentId() != 100L) {
+                    deptname = deptService.getprentks(dept.getParentId().toString());
+                } else {
+                    deptname = dept.getDeptName();
+                }
+                String xb = tjCustomerService.getSexByTjh(order.getTjNumber());
+
+                StringBuilder ssyszys = new StringBuilder();
+                StringBuilder ssyszyjgs = new StringBuilder();
+                List<Map<String, Object>> jianyilis = new ArrayList<>();
+                for (TjOrderDetail detail : tjOrderDetailList) {
+                    detail.setTjStatus(1L);
+                    LambdaQueryWrapper<TjStandard> wq0 = new LambdaQueryWrapper<>();
+                    wq0.eq(TjStandard::getProId, detail.getProId());
+                    detail.setUpdateBy(sysUser.getNickName());
+                    detail.setUpdateTime(new Date());
+                    detail.setCreateId(String.valueOf(sysUser.getUserId()));
+                    detail.setUpdateId(String.valueOf(sysUser.getUserId()));
+                    tjOrderDetailService.updateById(detail);
+
+                    LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                    wq.eq(TjOrderYcxm::getJcxm, detail.getProName());
+                    ycxmService.remove(wq);
+                    if (detail.getExceptionDesc() == 1) {
+                        if (tjProject.getSfcyyc() == 0) {
+                            String replacedAll = detail.getProName().replaceAll("[锛�(][^锛�)]*[\u4e00-\u9fa5]+[^锛�)]*[锛�)]", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "")
+                                    .replaceAll("[ 娴嬪畾妫�娴媇", "").replaceAll("\\[.*?\\]", "").replaceAll("鈼�", "");
+
+                            if (!detail.getProName().contains("鑸掑紶鍘�") && !detail.getProName().contains("鏀剁缉鍘�")) {
+
+                                List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString(), replacedAll, "", order.getTjNumber()
+                                        , replacedAll, detail.getProResult());
+
+
+                                String[] split = detail.getProResult().split("[銆�,锛�:锛�.\\s]+");
+                                List<Map<String, Object>> mapList = new ArrayList<>();
+                                for (String s : split) {
+                                    s = s.replaceAll("\n", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "").replaceAll(" ", "")
+                                            .replaceAll("鐥�", "").replaceAll("[0-9]", "");
+                                    Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0", xb);
+                                    if (null != mapss && !mapss.isEmpty()) {
+                                        Object bt = mapss.get("bt");
+                                        Object nr = mapss.get("nr");
+                                        if (null != bt || null != nr) {
+
+                                        }
+                                        mapList.add(mapss);
+                                    }
+                                }
+                                TjOrderYcxm ycxm = ycxmService.getOne(wq);
+                                if (null != ycxm) {
+                                    ycxm.setJcjg(detail.getProResult());
+                                    if (null != maps && !maps.isEmpty()) {
+                                        ycxm.setJynr(JSONUtil.toJsonStr(maps));
+                                    }
+                                    if (!mapList.isEmpty()) {
+                                        ycxm.setJynr(JSONUtil.toJsonStr(mapList));
+                                    }
+                                    ycxmService.updateById(ycxm);
+                                } else {
+                                    TjOrderYcxm orderYcxm = new TjOrderYcxm();
+                                    orderYcxm.setTjh(order.getTjNumber());
+                                    orderYcxm.setParentName(tjProject.getProName());
+                                    orderYcxm.setJcxm(detail.getProName());
+                                    orderYcxm.setJcjg(detail.getProResult());
+                                    if (null != maps && !maps.isEmpty()) {
+                                        orderYcxm.setJynr(JSONUtil.toJsonStr(maps));
+                                    }
+                                    if (!mapList.isEmpty()) {
+                                        orderYcxm.setJynr(JSONUtil.toJsonStr(mapList));
+                                    }
+                                    orderYcxm.setJyjc("0");
+                                    ycxmService.save(orderYcxm);
+                                }
+                            } else {
+
+                                List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
+                                        , replacedAll, "", order.getTjNumber(), replacedAll, detail.getProResult());
+
+
+                                String[] split = detail.getProResult().split("[銆�,锛�:锛�.\\s]+");
+                                List<Map<String, Object>> mapList = new ArrayList<>();
+                                for (String s : split) {
+                                    s = s.replaceAll("\n", "").replaceAll("[锛�(][^锛�)]*[锛�)]", "").replaceAll(" ", "")
+                                            .replaceAll("鐥�", "").replaceAll("[0-9]", "");
+                                    Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0", xb);
+                                    if (null != mapss && !mapss.isEmpty()) {
+                                        Object bt = mapss.get("bt");
+                                        Object nr = mapss.get("nr");
+                                        if (null != bt || null != nr) {
+
+                                        }
+                                        mapList.add(mapss);
+                                    }
+                                }
+
+                                if (null != maps && !maps.isEmpty()) {
+                                    jianyilis.addAll(maps);
+                                }
+                                if (!mapList.isEmpty()) {
+                                    jianyilis.addAll(mapList);
+                                }
+                                ssyszys.append(detail.getProName()).append("/");
+                                ssyszyjgs.append(detail.getProResult()).append("/");
+                            }
+                        }
+                    } else {
+                        if (detail.getProName().contains("鑸掑紶鍘�") || detail.getProName().contains("鏀剁缉鍘�")) {
+                            ssyszys.append(detail.getProName()).append("/");
+                            ssyszyjgs.append(detail.getProResult()).append("/");
+
+                        }
+
+                    }
+                }
+
+                // 浣跨敤 stream 杩囨护鍑� proName 涓� "鑸掑紶鍘�" 鎴� "鏀剁缉鍘�" 鐨勫厓绱�
+                List<TjOrderDetail> filteredList = tjOrderDetailList.stream()
+                        .filter(a -> ("鑸掑紶鍘�".equals(a.getProName()) || "鏀剁缉鍘�".equals(a.getProName())) && a.getExceptionDesc() == 1)
+                        .collect(Collectors.toList());
+                if (StrUtil.isNotBlank(ssyszys.toString())) {
+
+                    LambdaQueryWrapper<TjOrderYcxm> wq = new LambdaQueryWrapper<>();
+                    wq.eq(TjOrderYcxm::getTjh, order.getTjNumber());
+                    wq.like(TjOrderYcxm::getJcxm, "鑸掑紶鍘�");
+                    ycxmService.remove(wq);
+
+                    if (!filteredList.isEmpty()) {
+                        TjOrderYcxm orderYcxm = new TjOrderYcxm();
+                        orderYcxm.setTjh(order.getTjNumber());
+                        orderYcxm.setParentName(tjProject.getProName());
+                        orderYcxm.setJcxm(ssyszys.toString().replaceFirst("/$", ""));
+                        orderYcxm.setJcjg(ssyszyjgs.toString().replaceFirst("/$", ""));
+                        orderYcxm.setJynr(JSONUtil.toJsonStr(jianyilis));
+                        orderYcxm.setJyjc("0");
+                        ycxmService.save(orderYcxm);
+                    }
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(String.valueOf(e));
         }
+
     }
 
     @Override
@@ -516,18 +770,16 @@
     }
 
     @Override
-    @Async("async")
+//    @Async("async")
 //    @Transactional
-    public void iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser) {
+    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");
-
-        String jxbz = DateUtil.format(dates, "yyyyMMddHHmmss")+order.getOrderId();
 
         tjFlowingWater.setJxbz(jxbz);
         tjFlowingWaterService.updateById(tjFlowingWater);
 
-        TjProBl proBl=new TjProBl();
+        TjProBl proBl = new TjProBl();
         proBl.setTjh(order.getTjNumber());
         proBl.setBldh(jxbz);
         proBl.setBlsj(date);
@@ -540,24 +792,10 @@
 
         String config = configService.selectConfigByKey("sfkqdyhis");
 
-        //妫�楠�
-        List<OutpintestapplyDetailsDto> detailsDtos = new ArrayList<>();
+        List<TjProject> projectList = new ArrayList<>();
 
-        //妫�鏌�
-        List<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
-
-
-        //澶勭疆
-        List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
-
-        List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos =new ArrayList<>();
-
-        List<TjProject>  projectList=new ArrayList<>();
-
+//        ArrayList<TjOrderDetail> tjOrderDetails = new ArrayList<>();
         for (String tjProId : tjProIds) {
-//            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
-//            wqq.eq(TbTransition::getCusId, customer.getCusIdcard());
-//            wqq.isNull(TbTransition::getTjNum);
             TjProject project = projectService.getById(Long.valueOf(tjProId));
             if (null != project && project.getProParentId() == 0) {
                 TjOrderRemark tjOrderRemark = new TjOrderRemark();
@@ -605,149 +843,21 @@
                     detail1.setJxbz(jxbz);
                     tjOrderDetailService.save(detail1);
                 }
-//                wqq.in(TbTransition::getProId, proIds);
-
-                if(null !=config && config.equals("Y")){
-                //妫�楠�
-//                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && (project.getDeptId() == 241L || project.getDeptId() == 317L)) {
-                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJyDeptIds().contains(project.getDeptId().toString())) {
-                    if (null != project.getHisXmbm()) {
-                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
-                        detailsDto.setMxfyxmbm(project.getHisXmbm());
-                        if (project.getSfzhfy().equals("Y")) {
-                            detailsDto.setSfzhfy("1");
-                        } else {
-                            detailsDto.setSfzhfy("0");
-                        }
-                        detailsDto.setSl(project.getSl());
-                        detailsDtos.add(detailsDto);
-                    }
-                    if(project.getProId()==1740177341251154377L){
-                        OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                        detilsDto.setYpbm("00006670");
-                        detilsDto.setPcbm("06");
-                        detilsDto.setSl("1");
-                        detilsDto.setDj("60");
-                        detilsDto.setDcjl("1");
-                        detilsDto.setPj("60");
-                        detilsDto.setJj("60");
-                        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.setFzbl("1");
-                        detilsDto.setZh("0");
-                        outpinmedicapplyDetilsDtos.add(detilsDto);
-                    }
-                }
-
-                //妫�鏌�
-//                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 &&
-//                        (project.getDeptId() == 247 || project.getDeptId() == 248 || project.getDeptId() == 249 ||
-//                                project.getDeptId() == 250 || project.getDeptId() == 251 || project.getDeptId() == 252 ||
-//                                project.getDeptId() == 271 || project.getDeptId() == 273 || project.getDeptId() == 274 ||
-//                                project.getDeptId() == 275 || project.getDeptId() == 298)) {
-                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
-                    if (null != project.getHisXmbm()) {
-                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
-                        detailsDto.setMxfyxmbm(project.getHisXmbm());
-                        if (project.getSfzhfy().equals("Y")) {
-                            detailsDto.setSfzhfy("1");
-                        } else {
-                            detailsDto.setSfzhfy("0");
-                        }
-                        detailsDto.setSl(project.getSl());
-                        detailsDtoss.add(detailsDto);
-                    }
-                        if(project.getProId()==1740177341251154377L){
-                            OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                            detilsDto.setYpbm("00006670");
-                            detilsDto.setPcbm("06");
-                            detilsDto.setSl("1");
-                            detilsDto.setDj("60");
-                            detilsDto.setDcjl("1");
-                            detilsDto.setPj("60");
-                            detilsDto.setJj("60");
-                            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.setFzbl("1");
-                            detilsDto.setZh("0");
-                            outpinmedicapplyDetilsDtos.add(detilsDto);
-                        }
-                }
-
-                //澶勭疆
-//                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 &&
-//                        (project.getDeptId() == 100 || project.getDeptId() == 240 || project.getDeptId() == 253 ||
-//                                project.getDeptId() == 254 || project.getDeptId() == 255 || project.getDeptId() == 257 ||
-//                                project.getDeptId() == 258 || project.getDeptId() == 259 || project.getDeptId() == 269 ||
-//                                project.getDeptId() == 270)) {
-                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getCzDeptIds().contains(project.getDeptId().toString())) {
-                    if (null != project.getHisXmbm()) {
-                        OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
-                        detailsDto.setMxfyxmbm(project.getHisXmbm());
-                        if (project.getSfzhfy().equals("Y")) {
-                            detailsDto.setSfzhfy("1");
-                        } else {
-                            detailsDto.setSfzhfy("0");
-                        }
-                        detailsDto.setSl(project.getSl());
-                        detailDtos.add(detailsDto);
-                    }
-                    if(project.getProId()==1740177341251154377L){
-                            OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                            detilsDto.setYpbm("00006670");
-                            detilsDto.setPcbm("06");
-                            detilsDto.setSl("1");
-                            detilsDto.setDj("60");
-                            detilsDto.setDcjl("1");
-                            detilsDto.setPj("60");
-                            detilsDto.setJj("60");
-                            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.setFzbl("1");
-                            detilsDto.setZh("0");
-                            outpinmedicapplyDetilsDtos.add(detilsDto);
-                        }
-                }
-            }
-
-
 
             } else {
-//                wqq.in(TbTransition::getProId, Arrays.asList(tjProIds));
+
+                //濡傛灉璇ラ」鐩瓨鍦� 鍒� 涓嶄繚瀛�
+
+                TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), tjProId);
+//                if(null !=orderDetail) continue;
+                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) {
+                    if (null != projectss && projectss.getProParentId() == 0L) {
                         projectList.add(projectss);
                     }
                 }
@@ -764,31 +874,33 @@
                 detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                 detail.setJxbz(jxbz);
                 tjOrderDetailService.save(detail);
+//                tjOrderDetails.add(detail);
 
             }
 
-//            List<TbTransition> tbTransitionList = transitionService.list(wqq);
-            List<TbTransition> tbTransitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(customer.getCusIdcard(),tjProId);
+            List<TbTransition> tbTransitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(customer.getCusIdcard(), tjProId);
             if (null != tbTransitionList && !tbTransitionList.isEmpty()) {
                 for (TbTransition transition : tbTransitionList) {
-//                    transition.setJxbz(jxbz);
-//                    transition.setTjNum(order.getTjNumber());
-//                    transition.setCardId(order.getCardId());
-//                    transition.setNowPrice(transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(tjFlowingWater.getDiscount())).divide(BigDecimal.valueOf(10))));
-//                    transitionService.updateById(transition);
-                    transitionService.updateTbTransitionById(transition.getId().toString(),jxbz,order.getTjNumber(),order.getCardId(),
+                    transitionService.updateTbTransitionById(transition.getId().toString(), jxbz, order.getTjNumber(), order.getCardId(),
                             transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(tjFlowingWater.getDiscount())).divide(BigDecimal.valueOf(10))));
                 }
             }
 
         }
+        // TODO 鍜岀鍒扮櫥璁颁竴鏍� 鍙湁閰嶇疆涓殑浠ュ強鏀惰垂绫诲瀷涓轰綋妫�绁ㄦ椂鎵嶅鍔犲埌閲囨牱绠$悊琛�
+//        tjOrderDetails = new ArrayList<>();
 
         ArrayList<TjProject> jianChaProjects = new ArrayList<>();
-        ArrayList<TjProject> jianYanProjects = new ArrayList<>();
 
-        if(!projectList.isEmpty()){
+        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 tjOrderRemark = new TjOrderRemark();
                 tjOrderRemark.setProId(project.getProId());
                 tjOrderRemark.setProName(project.getProName());
@@ -803,6 +915,12 @@
                 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 detail1 = new TjOrderDetail();
                 detail1.setTjStatus(0L);
                 detail1.setOrderId(tjFlowingWater.getOrderId());
@@ -816,170 +934,739 @@
                 detail1.setUpdateId(String.valueOf(sysUser.getUserId()));
                 detail1.setJxbz(jxbz);
                 tjOrderDetailService.save(detail1);
-                if(null !=config && config.equals("Y")){
-                    //妫�楠�
-//                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && (project.getDeptId() == 241L || project.getDeptId() == 317L)) {
-                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJyDeptIds().contains(project.getDeptId().toString())) {
-                        if (null != project.getHisXmbm()) {
-                            jianYanProjects.add(project);
-                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
+//                tjOrderDetails.add(detail1);
+                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
+                    if (null != project.getHisXmbm()) {
+                        jianChaProjects.add(project);
+                    }
+                }
+            }
 
-                            detailsDto.setMxfyxmbm(project.getHisXmbm());
+            // 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);
+            }
+        }
 
-                            if (project.getSfzhfy().equals("Y")) {
-                                detailsDto.setSfzhfy("1");
-                            } else {
-                                detailsDto.setSfzhfy("0");
-                            }
-                            detailsDto.setSl(project.getSl());
-                            detailsDtos.add(detailsDto);
+        return true;
+    }
+
+    public void addCaiYangDengJiByDiaoYongShiTu(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
+        try {
+            String lis_tmh_prefix = sysConfigService.selectConfigByKey("make_lis_tmh_prefix");
+            if (null != detailList && detailList1) {
+                Date date = new Date();
+                String format = DateUtil.format(date, "yyMMddHHmmssSSS");
+                for (TjOrderDetail detail : detailList) {
+                    int i = samplingService.isExistProId(order.getTjNumber(), String.valueOf(detail.getProId()));
+                    if (i > 0) continue;
+
+                    TjSampling sampling = new TjSampling();
+                    if (null == projectService.getById(detail.getProId())) continue;
+                    TjProject project = projectService.getById(detail.getProId());
+                    Long proParentId = project.getProParentId();
+                    String dictLabel = sysDictDataService.selectDictLabel("sys_dict_specimen", project.getSpecimenType());
+                    if (null != proParentId && proParentId == 0) {
+                        sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
+                        sampling.setSpecimenTypeCode(project.getSpecimenType());
+                        sampling.setSpecimenType(dictLabel);
+                        sampling.setJyxmdm(project.getProId().toString());
+                    } else {
+                        TjProject project1 = projectService.getById(proParentId);
+                        sampling.setJyxh(idUtils.generateLisID(lis_tmh_prefix));
+
+                        sampling.setSpecimenTypeCode(project1.getSpecimenType());
+                        sampling.setSpecimenType(dictLabel);
+                        sampling.setJyxmdm(project.getProId().toString());
+
+                    }
+                    sampling.setSamplingNumber(format);
+                    sampling.setTjNum(order.getTjNumber());
+                    sampling.setCusId(String.valueOf(order.getUserId()));
+                    if (tjCustomerService.getById(String.valueOf(order.getUserId())) != null) {
+                        sampling.setCusName(tjCustomerService.getById(String.valueOf(order.getUserId())).getCusName());
+                    }
+                    sampling.setApplicationTime(date);
+                    sampling.setTjTime(order.getCreateTime());
+                    sampling.setProId(String.valueOf(detail.getProId()));
+                    sampling.setProName(projectService.getById(detail.getProId()).getProName());
+                    sampling.setCreateBy(sysUser.getNickName());
+                    sampling.setCreateTime(date);
+                    sampling.setUpdateBy(sysUser.getNickName());
+                    sampling.setUpdateTime(date);
+                    sampling.setCreateId(String.valueOf(sysUser.getUserId()));
+                    sampling.setUpdateId(String.valueOf(sysUser.getUserId()));
+                    sampling.setJxbz(jxbz);
+                    samplingService.save(sampling);
+                }
+            }
+            String config = configService.selectConfigByKey("sfkqdyhis");
+            if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) {
+                AjaxResult ajaxResult = lisApiMethod.getJyFlHb();
+                if (ajaxResult.get("code").toString().equals("200")) {
+                    String str = ajaxResult.get("data").toString();
+                    str = str.replace("=", ":");
+                    JSONArray array = JSONUtil.parseArray(str);
+                    for (Object o : array) {
+                        JSONObject object = (JSONObject) o;
+                        LisJyflhb lisJyflhb = new LisJyflhb();
+                        lisJyflhb.setHbhxm(object.getStr("hbhxm"));
+                        lisJyflhb.setFlmc(object.getStr("flmc"));
+                        lisJyflhb.setMc(object.getStr("mc"));
+                        lisJyflhb.setFlbm(object.getStr("flbm"));
+                        LambdaQueryWrapper<LisJyflhb> wrapper = new LambdaQueryWrapper<>();
+                        wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm());
+                        LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper);
+                        if (jyflhb == null) {
+                            lisJyflhb.setId(IdUtil.getSnowflake().nextId());
+                            lisJyflhbService.save(lisJyflhb);
+                        } else {
+                            lisJyflhb.setId(jyflhb.getId());
+                            lisJyflhbService.updateById(lisJyflhb);
                         }
-                        if(project.getProId()==1740177341251154377L){
-                            OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                            detilsDto.setYpbm("00006670");
-                            detilsDto.setPcbm("06");
-                            detilsDto.setSl("1");
-                            detilsDto.setDj("60");
-                            detilsDto.setDcjl("1");
-                            detilsDto.setPj("60");
-                            detilsDto.setJj("60");
-                            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.setFzbl("1");
-                            detilsDto.setZh("0");
-                            outpinmedicapplyDetilsDtos.add(detilsDto);
+                    }
+                }
+
+            }
+            if (StrUtil.isNotBlank(jxbz)) {
+                tjSamplingMapper.updateUserIdByTjNumAndJxbz(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), jxbz);
+            } else {
+                tjSamplingMapper.updateUserIdByTjNum(order.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
+            }
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+
+    private static List<String> mapJinchuan = null;
+
+    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);
+
+        tijianbulushenqingJinchuan(customer, date, cardId, jxbz, jianChaProjects, isTuanTiPiao);
+        return AjaxResult.success();
+        //return AjaxResult.success();
+    }
+
+    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鏍囨湰浠g爜
+                        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());
                         }
                     }
 
-                    //妫�鏌�
-//                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 &&
-//                            (project.getDeptId() == 247L || project.getDeptId() == 248L || project.getDeptId() == 249L ||
-//                                    project.getDeptId() == 250L || project.getDeptId() == 251L || project.getDeptId() == 252L ||
-//                                    project.getDeptId() == 271L || project.getDeptId() == 273L || project.getDeptId() == 274L ||
-//                                    project.getDeptId() == 275L || project.getDeptId() == 298L)) {
-                        if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
-                        if (null != project.getHisXmbm()) {
-                            jianChaProjects.add(project);
-                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
-                            detailsDto.setMxfyxmbm(project.getHisXmbm());
-                            if (project.getSfzhfy().equals("Y")) {
-                                detailsDto.setSfzhfy("1");
-                            } else {
-                                detailsDto.setSfzhfy("0");
+                    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);
+                                    });
+                                }
                             }
-                            detailsDto.setSl(project.getSl());
-                            detailsDtoss.add(detailsDto);
+                            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);
+//                }
+                                }
+                            }
                         }
-                            if(project.getProId()==1740177341251154377L){
-                                OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                                detilsDto.setYpbm("00006670");
-                                detilsDto.setPcbm("06");
-                                detilsDto.setSl("1");
-                                detilsDto.setDj("60");
-                                detilsDto.setDcjl("1");
-                                detilsDto.setPj("60");
-                                detilsDto.setJj("60");
-                                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.setFzbl("1");
-                                detilsDto.setZh("0");
-                                outpinmedicapplyDetilsDtos.add(detilsDto);
-                            }
                     }
+                }
 
-                    //澶勭疆
-//                    if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 &&
-//                            (project.getDeptId() == 100L || project.getDeptId() == 240L || project.getDeptId() == 253L ||
-//                                    project.getDeptId() == 254L || project.getDeptId() == 255L || project.getDeptId() == 257L ||
-//                                    project.getDeptId() == 258L || project.getDeptId() == 259L || project.getDeptId() == 269L ||
-//                                    project.getDeptId() == 270L)) {
-                        if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getCzDeptIds().contains(project.getDeptId().toString())) {
-                        if (null != project.getHisXmbm()) {
-                            OutpintestapplyDetailsDto detailsDto = new OutpintestapplyDetailsDto();
-                            detailsDto.setMxfyxmbm(project.getHisXmbm());
-                            if (project.getSfzhfy().equals("Y")) {
-                                detailsDto.setSfzhfy("1");
-                            } else {
-                                detailsDto.setSfzhfy("0");
-                            }
-                            detailsDto.setSl(project.getSl());
-                            detailDtos.add(detailsDto);
+                //闂ㄨ瘖妫�鏌ョ敵璇�
+//        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(project.getProId()==1740177341251154377L){
-                                OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
-                                detilsDto.setYpbm("00006670");
-                                detilsDto.setPcbm("06");
-                                detilsDto.setSl("1");
-                                detilsDto.setDj("60");
-                                detilsDto.setDcjl("1");
-                                detilsDto.setPj("60");
-                                detilsDto.setJj("60");
-                                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.setFzbl("1");
-                                detilsDto.setZh("0");
-                                outpinmedicapplyDetilsDtos.add(detilsDto);
+                        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 -> 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());
+                                        }
+                                        tree.setCreateTime(DateUtil.date());
+                                        ltkjJianchajianyanTreeService.save(tree);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+                //闂ㄨ瘖娌荤枟澶勭疆鐢宠
+                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());
+                                        }
+                                        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);
+                        }
                     }
                 }
             }
         }
+        return AjaxResult.success();
+    }
 
-        if(null !=config && config.equals("Y")){
-            if (lisApiMethod.isUseLisAndPacsRegister(order)) {
-                List<TjProject> projectList2 = jianYanProjects.stream().distinct().collect(Collectors.toList());
-                LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
-                wq.eq(TjOrderDetail::getOrderId, order.getOrderId());
-                wq.isNotNull(TjOrderDetail::getFlowingWaterId);
-                wq.eq(TjOrderDetail::getIsSampling, 0);
-                List<TjOrderDetail> detailList = tjOrderDetailService.list(wq);
-                addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser);
-
+    //    浣撴瀵筯is鐢宠鍗曡皟鐢ㄦ柟娉�
+    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);
-            }else {
+                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鏍囨湰浠g爜
+                        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();
                 //妫�楠岀敵璇�
-                if(!detailsDtos.isEmpty()){
-                    OutpintestapplyDto dto = new OutpintestapplyDto();
-                    dto.setHisRegistrationId(order.getCardId());
-                    dto.setSfzh(customer.getCusIdcard());
-                    dto.setSqysbm("00029");
-                    dto.setMzksbm("0101");
-                    dto.setSjrq(date);
-                    dto.setCzybm("00029");
-                    dto.setCzyksbm("0101");
-                    dto.setSfjz("0");
-                    dto.setDetails(detailsDtos.stream().distinct().collect(Collectors.toList()));
+                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);
@@ -988,27 +1675,17 @@
                         List<OutpintestapplyDetailsDto> details = dto.getDetails();
                         for (OutpintestapplyDetailsDto detail : details) {
                             LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
-                            tree.setSfjx("Y");
                             tree.setJxbz(jxbz);
                             tree.setCardId(dto.getHisRegistrationId());
-                            LambdaQueryWrapper<TjCustomer> wrapper4 = new LambdaQueryWrapper<>();
-                            wrapper4.eq(TjCustomer::getCardId, tree.getCardId());
-                            TjCustomer tjCustomer = tjCustomerService.getOne(wrapper4);
-                            tree.setPationid(tjCustomer.getPationId());
+                            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("妫�楠�");
-                            LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
-                            wrapper.eq(TjProject::getHisXmbm, mxfyxmbm);
-                            List<TjProject> list = projectService.list(wrapper);
-                            String tj_price = "";
-                            for (TjProject project : list) {
-                                tj_price += project.getProPrice() + "銆�";
-                            }
-                            tree.setTjPrice(tj_price.substring(0, tj_price.length() - 1));
+                            tree.setService("his");
+                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                             LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                             if (detail.getSfzhfy().equals("1"))
                                 wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
@@ -1024,24 +1701,81 @@
                                 LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                 tree.setXmfl(ejjfxmzd.getYjkmdm());
                             }
-                            tree.setCreateTime(dates);
+                            tree.setCreateTime(DateUtil.date());
                             ltkjJianchajianyanTreeService.save(tree);
                         }
-
                     }
                 }
 
                 //闂ㄨ瘖妫�鏌ョ敵璇�
-                if(!detailsDtoss.isEmpty()){
-                    OutpinexamapplyDto outpinexamapplyDto = new OutpinexamapplyDto();
-                    outpinexamapplyDto.setHisRegistrationId(order.getCardId());
-                    outpinexamapplyDto.setSfzh(customer.getCusIdcard());
-                    outpinexamapplyDto.setSqysbm("00029");
-                    outpinexamapplyDto.setMzksbm("0101");
-                    outpinexamapplyDto.setCzybm("00029");
-                    outpinexamapplyDto.setCzyksbm("0101");
-                    outpinexamapplyDto.setSfjz("0");
-                    outpinexamapplyDto.setDetails(detailsDtoss.stream().distinct().collect(Collectors.toList()));
+                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());
+                                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);
@@ -1050,27 +1784,17 @@
                         List<OutpintestapplyDetailsDto> details = outpinexamapplyDto.getDetails();
                         for (OutpintestapplyDetailsDto detail : details) {
                             LtkjJianchajianyanTree tree = new LtkjJianchajianyanTree();
-                            tree.setSfjx("Y");
                             tree.setJxbz(jxbz);
                             tree.setCardId(outpinexamapplyDto.getHisRegistrationId());
-                            LambdaQueryWrapper<TjCustomer> wrapper4 = new LambdaQueryWrapper<>();
-                            wrapper4.eq(TjCustomer::getCardId, tree.getCardId());
-                            TjCustomer tjCustomer = tjCustomerService.getOne(wrapper4);
-                            tree.setPationid(tjCustomer.getPationId());
+                            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("妫�鏌�");
-                            LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
-                            wrapper.eq(TjProject::getHisXmbm, mxfyxmbm);
-                            List<TjProject> list = projectService.list(wrapper);
-                            String tj_price = "";
-                            for (TjProject project : list) {
-                                tj_price += project.getProPrice() + "銆�";
-                            }
-                            tree.setTjPrice(tj_price.substring(0, tj_price.length() - 1));
+                            tree.setService("his");
+                            tree.setTjPrice(String.valueOf(detail.getProjg()));
                             LambdaQueryWrapper<LtkjJfzhglmxjfxmzd> wrapper1 = new LambdaQueryWrapper<>();
                             if (detail.getSfzhfy().equals("1"))
                                 wrapper1.eq(LtkjJfzhglmxjfxmzd::getZhxmdm, mxfyxmbm);
@@ -1086,144 +1810,1202 @@
                                 LtkjEjjfxmzd ejjfxmzd = ltkjEjjfxmzdService.getOne(wrapper3);
                                 tree.setXmfl(ejjfxmzd.getYjkmdm());
                             }
-                            tree.setCreateTime(dates);
+                            tree.setCreateTime(DateUtil.date());
                             ltkjJianchajianyanTreeService.save(tree);
                         }
                     }
                 }
-            }
-            //鑽搧鐢宠
-            if(!outpinmedicapplyDetilsDtos.isEmpty()){
-                OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
-                dto1.setHisRegistrationId(order.getCardId());
-                dto1.setSfzh(customer.getCusIdcard());
-                dto1.setSqysbm("00029");
-                dto1.setMzksbm("0101");
-                dto1.setSjrq(date);
-                dto1.setCzybm("00029");
-                dto1.setCzyksbm("0101");
-                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");
 
-                    for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
-                        TjCf cf=new TjCf();
-                        cf.setCardId(order.getCardId());
-                        cf.setSfzh(customer.getCusIdcard());
-                        cf.setCfh(cfh);
-                        cf.setSqysbm("00029");
-                        cf.setSqysxm("鐜嬪仴钀�");
-                        cf.setMzksbn("0101");
-                        cf.setSqrq(date);
-                        cf.setCzybm("00029");
-                        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());
-                        cf.setJxbz(jxbz);
-                        cfService.save(cf);
+                //闂ㄨ瘖娌荤枟澶勭疆鐢宠
+                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()){
-                OutpintreatapplyDto dao = new OutpintreatapplyDto();
-                dao.setHisRegistrationId(order.getCardId());
-                dao.setSfzh(customer.getCusIdcard());
-                dao.setSqysbm("00029");
-                dao.setMzksbm("0101");
-                dao.setSjrq(date);
-                dao.setCzybm("00029");
-                dao.setCzyksbm("0101");
-                dao.setSfjz("0");
-                dao.setDetails(detailDtos.stream().distinct().collect(Collectors.toList()));
-                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.setSfjx("Y");
-                        tree.setJxbz(jxbz);
-                        tree.setCardId(dao.getHisRegistrationId());
-                        LambdaQueryWrapper<TjCustomer> wrapper4 = new LambdaQueryWrapper<>();
-                        wrapper4.eq(TjCustomer::getCardId, tree.getCardId());
-                        TjCustomer tjCustomer = tjCustomerService.getOne(wrapper4);
-                        tree.setPationid(tjCustomer.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("澶勭疆");
-                        LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
-                        wrapper.eq(TjProject::getHisXmbm, mxfyxmbm);
-                        List<TjProject> list = projectService.list(wrapper);
-                        String tj_price = "";
-                        for (TjProject project : list) {
-                            tj_price += project.getProPrice() + "銆�";
+                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.setTjPrice(tj_price.substring(0, tj_price.length() - 1));
-                        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(dates);
-                        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);
+                    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();
+    }
+
+    /**/
+//    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<>();
+//            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鏍囨湰浠g爜
+//                        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 {
+//                //妫�楠岀敵璇�
+//                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(project.getProId()==1740177341251154377L){
+//                                        OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
+//                                        detilsDto.setYpbm("00006670");
+//                                        detilsDto.setPcbm("06");
+//                                        detilsDto.setSl("1");
+//                                        detilsDto.setDj("60");
+//                                        detilsDto.setDcjl("1");
+//                                        detilsDto.setPj("60");
+//                                        detilsDto.setJj("60");
+//                                        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.setFzbl("1");
+//                                        detilsDto.setZh("0");
+//                                        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);
+////                }
+//                                }
+//                            }
+//                        }
+//                    }
+//                }
+//
+//                //闂ㄨ瘖妫�鏌ョ敵璇�
+////        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);
+//                    if (null != projects && !projects.isEmpty()) {
+//                        for (TjProject project : projects) {
+//                            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<OutpintestapplyDetailsDto> detailsDtoss = new ArrayList<>();
+//                            if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
+//                                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());
+//                                        detailsDtoss.add(detailsDto);
+//                                    }
+//                                }
+//                                if(project.getProId()==1740177341251154377L){
+//                                    OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
+//                                    detilsDto.setYpbm("00006670");
+//                                    detilsDto.setPcbm("06");
+//                                    detilsDto.setSl("1");
+//                                    detilsDto.setDj("60");
+//                                    detilsDto.setDcjl("1");
+//                                    detilsDto.setPj("60");
+//                                    detilsDto.setJj("60");
+//                                    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.setFzbl("1");
+//                                    detilsDto.setZh("0");
+//                                    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);
+//                                    }
+//                                }
+//                            }
+//                        }
+//                    }
+//                }
+//
+//                //闂ㄨ瘖娌荤枟澶勭疆鐢宠
+//                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);
+//                    if (null != projects && !projects.isEmpty()) {
+//                        for (TjProject project : projects) {
+//                            List<OutpintestapplyDetailsDto> detailDtos = new ArrayList<>();
+//                            if (0 == project.getProParentId() && project.getProPrice().compareTo(BigDecimal.ZERO) != 0) {
+//                                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());
+//                                        detailDtos.add(detailsDto);
+//                                    }
+//                                }
+//                                if(project.getProId()==1740177341251154377L){
+//                                    OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
+//                                    detilsDto.setYpbm("00006670");
+//                                    detilsDto.setPcbm("06");
+//                                    detilsDto.setSl("1");
+//                                    detilsDto.setDj("60");
+//                                    detilsDto.setDcjl("1");
+//                                    detilsDto.setPj("60");
+//                                    detilsDto.setJj("60");
+//                                    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.setFzbl("1");
+//                                    detilsDto.setZh("0");
+//                                    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);
+//                    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();
+//    }
+
+    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");
+
+            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));
+
+                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()));
+
+                            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鏍囨湰浠g爜
+                            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();
+                //妫�楠岀敵璇�
+                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);
+//                }
+                                }
+                            }
+                        }
+                    }
+                }
+
+                //闂ㄨ瘖妫�鏌ョ敵璇�
+//        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 -> 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());
+                                        }
+                                        tree.setCreateTime(DateUtil.date());
+                                        ltkjJianchajianyanTreeService.save(tree);
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+
+                //闂ㄨ瘖娌荤枟澶勭疆鐢宠
+                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);
+                                }
+                            }
+                            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);
+                            }
+                        }
+                    });
                 }
             }
         }
-
-        //鐖堕」鑰楁潗
-//        ArrayList<TjConsumables> collect = list2.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TjConsumables::getId))), ArrayList::new));
-//        for (TjConsumables tjConsumables : collect) {
-//            TjChargingStandard tjChargingStandard = new TjChargingStandard();
-//            tjChargingStandard.setTjNum(order.getTjNumber());
-//            tjChargingStandard.setConsumablesId(tjConsumables.getId());
-//            tjChargingStandard.setPrice(tjConsumables.getPrice());
-//            tjChargingStandard.setProName(tjConsumables.getMakings());
-//            tjChargingStandard.setConsumablesName(tjConsumables.getMakings());
-//            tjChargingStandard.setCompany(tjConsumables.getSpecifications());
-//            tjChargingStandard.setCreateBy(sysUser.getNickName());
-//            tjChargingStandard.setCreateTime(dates);
-//            tjChargingStandard.setUpdateBy(sysUser.getNickName());
-//            tjChargingStandard.setUpdateTime(dates);
-//            tjChargingStandard.setCreateId(String.valueOf(sysUser.getUserId()));
-//            tjChargingStandard.setUpdateId(String.valueOf(sysUser.getUserId()));
-//            chargingStandardService.save(tjChargingStandard);
-//        }
+        return AjaxResult.success();
     }
 
-    private void pacsReg(TjOrder order, TjCustomer customer, ArrayList<TjProject> jianChaProjects) {
+    public void pacsReg(TjOrder order, TjCustomer customer, ArrayList<TjProject> jianChaProjects) {
         List<TjProject> projectList1 = jianChaProjects.stream().distinct().collect(Collectors.toList());
         JSONArray array = JSONUtil.createArray();
         ArrayList<SavePacsApply> successPacsList = new ArrayList<>();
@@ -1502,12 +3284,12 @@
 
     @Override
     @Async("async")
-    public void saveRedisTransitionByPacId(String cusId,String cardId, Long pacId, List<Long> proIds) {
+    public void saveRedisTransitionByPacId(String cusId, String cardId, Long pacId, List<Long> proIds) {
         if (null != pacId) {
-            transitionService.saveRedisTransitionByPacId(cusId,cardId ,pacId);
+            transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
         }
         if (null != proIds && proIds.size() > 0) {
-            saveRedisTransitionByProId(cusId,cardId, proIds);
+            saveRedisTransitionByProId(cusId, cardId, proIds);
         }
     }
 
@@ -1616,7 +3398,8 @@
                     @Override
                     public void run() {
                         try {
-                            transitionService.saveTemoTransitionByGroupingId(reservation.getIdCard(), reservation.getGroupingId());
+//                            transitionService.saveTemoTransitionByGroupingId(reservation.getIdCard(), reservation.getGroupingId());
+                            transitionService.ttsaveTemoTransitionByGroupingId(reservation.getIdCard(), "0", reservation.getGroupingId());
 
                             threadPool.shutdown();
                         } catch (Exception e) {
@@ -1740,23 +3523,20 @@
             chargingStandardService.save(tjChargingStandard);
         }
 
-        LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
-        wq.eq(TjOrderDetail::getOrderId, order.getOrderId());
-        wq.isNotNull(TjOrderDetail::getFlowingWaterId);
-        wq.eq(TjOrderDetail::getIsSampling, 0);
-        List<TjOrderDetail> detailList = tjOrderDetailService.list(wq);
-        addCaiYangDengJi(detailList, detailList.size() > 0, order, sysUser);
+        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
+        addCaiYangDengJi(detailList, detailList.size() > 0, order, sysUser, null);
     }
+
 
     //棣栭〉楗肩姸鍥剧櫥璁颁汉鏁版帴鍙�
     private AjaxResult getPieCharts() {
         Map<String, Object> map = new HashMap<>();
 
-        Date date=new Date();
+        Date date = new Date();
 
         //鑾峰彇浣撴鐧昏鏁�
         LambdaQueryWrapper<TjOrder> wq0 = new LambdaQueryWrapper<>();
-        wq0.between(TjOrder::getCreateTime,DateUtil.offsetMonth(date,-1),date);
+        wq0.between(TjOrder::getCreateTime, DateUtil.offsetMonth(date, -1), date);
         List<TjOrder> orderCountList = orderService.list(wq0);
         if (null != orderCountList && !orderCountList.isEmpty()) {
             List<PieChartVo> pieChartVoList = getTjorderCountMap(orderCountList);
@@ -1766,11 +3546,11 @@
         }
         //鑾峰彇浣撴寮傚父鏁�
         LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
-        wq1.between(TjOrder::getCreateTime,DateUtil.offsetMonth(date,-1),date);
+        wq1.between(TjOrder::getCreateTime, DateUtil.offsetMonth(date, -1), date);
 //        wq1.isNotNull(TjOrder::getFinishTime);
 //        wq1.eq(TjOrder::getCheckStatus, 1);
         List<TjOrder> orderList = orderService.list(wq1);
-        if (null !=orderList && !orderList.isEmpty()) {
+        if (null != orderList && !orderList.isEmpty()) {
 //            List<TjOrder> orderList = orderAbnormalCountList.stream().distinct().collect(Collectors.toList());
             List<PieChartVo> pieChartVoList = getTjorderAbnormalCountMap(orderList);
             map.put("tjyc", pieChartVoList);
@@ -1846,7 +3626,7 @@
             wq.eq(TjOrderDetail::getExceptionDesc, 1);
             List<TjOrderDetail> list = tjOrderDetailService.list(wq);
             int count = hysqdService.getHyYcXmCount(tjOrder.getCardId());
-            if ((null != list && !list.isEmpty()) || (count>0)) {
+            if ((null != list && !list.isEmpty()) || (count > 0)) {
                 TjCustomer customer = tjCustomerService.getById(tjOrder.getUserId());
                 if (null != customer) {
                     int age = DateUtil.ageOfNow(customer.getCusBrithday());
@@ -2618,13 +4398,13 @@
     }
 
     //涓存椂琛ㄦ坊鍔犲崟椤�
-    public void saveRedisTransitionByProId(String cusId,String cardId, List<Long> proIds) {
+    public void saveRedisTransitionByProId(String cusId, String cardId, List<Long> proIds) {
         for (Long proId : proIds) {
             TjProject project = projectService.selectTjProjectByProId(proId);
-            if(null !=project){ //&& (!project.getProName().contains("闈欒剦閲囪")|| !project.getProName().contains("璐�"))
+            if (null != project) { //&& (!project.getProName().contains("闈欒剦閲囪")|| !project.getProName().contains("璐�"))
                 List<TbTransition> transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId));
                 if (null == transitionList || transitionList.size() == 0) {
-                    transitionService.saveRedisTransitionByProId(cusId,cardId, proId);
+                    transitionService.saveRedisTransitionByProId(cusId, cardId, proId);
                 }
             }
 //            if(null !=project) transitionService.saveRedisTransitionByProId(cusId,cardId, proId);
@@ -2724,4 +4504,9 @@
         map.put("remark", remark.getRemark());
         return map;
     }
+
+    @Override
+    public void tjUpdateDetatilByVi(String s) {
+
+    }
 }

--
Gitblit v1.8.0