zjh
2025-03-28 ea4215c39165f49b4cd956a0b51574d90c1d9b97
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -1,6 +1,5 @@
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;
@@ -14,12 +13,11 @@
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.IdUtils;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.framework.datasource.DynamicDataSourceContextHolder;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.hisDto.*;
import com.ltkj.hosp.idutil.IdUtils;
import com.ltkj.hosp.mapper.TjSamplingMapper;
import com.ltkj.hosp.pacsDto.SavePacsApply;
import com.ltkj.hosp.service.*;
@@ -39,7 +37,6 @@
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;
@@ -47,8 +44,6 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -174,7 +169,6 @@
    private ITjProAdvicerulesService tjProAdvicerulesService;
    @Override
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        long l = System.currentTimeMillis();
@@ -201,7 +195,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) {
@@ -254,7 +248,7 @@
        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.isEmpty()) {
@@ -310,13 +304,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());
                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());
            orderRemarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
        }
        if (tjFlowingWater.getDiscount() == null) {
            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), new BigDecimal(10), tjOrder.getTjNumber());
@@ -324,7 +318,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) {
@@ -439,18 +433,20 @@
        }
        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
        addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser,null);
        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,String jxbz) {
    public void addCaiYangDengJi(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
        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());
@@ -509,9 +505,9 @@
                samplingService.save(sampling);
            }
        }
        if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))){
        if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) {
            AjaxResult ajaxResult = lisApiMethod.getJyFlHb();
            if (ajaxResult.get("code").toString().equals("200")){
            if (ajaxResult.get("code").toString().equals("200")) {
                String str = ajaxResult.get("data").toString();
                str = str.replace("=", ":");
                JSONArray array = JSONUtil.parseArray(str);
@@ -523,12 +519,12 @@
                    lisJyflhb.setMc(object.getStr("mc"));
                    lisJyflhb.setFlbm(object.getStr("flbm"));
                    LambdaQueryWrapper<LisJyflhb> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(LisJyflhb::getFlbm,lisJyflhb.getFlbm());
                    wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm());
                    LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper);
                    if (jyflhb == null) {
                        lisJyflhb.setId(IdUtil.getSnowflake().nextId());
                        lisJyflhbService.save(lisJyflhb);
                    }else {
                    } else {
                        lisJyflhb.setId(jyflhb.getId());
                        lisJyflhbService.updateById(lisJyflhb);
                    }
@@ -536,10 +532,10 @@
            }
        }
        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()));
        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()));
        }
    }
@@ -586,70 +582,158 @@
    @Override
    //@Async("async")
    public void updateOrdeltile(List<TjOrderDetail> tjOrderDetailList, SysUser sysUser, TjOrder order,TjOrderRemark orderRemark) {
        String currentDataSource = DynamicDataSourceContextHolder.getDataSourceType();
        log.info("异步线程中的数据源: {}", currentDataSource);
    public void updateOrdeltile(List<TjOrderDetail> tjOrderDetailList, SysUser sysUser, TjOrder order, TjOrderRemark orderRemark) {
        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();
            }
        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();
                }
                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());
                        if (detail.getExceptionDesc() == 1) {
                                if(!detail.getProName().contains("舒张压") && !detail.getProName().contains("收缩压")){
                                    List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
                                            , detail.getProName().replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", ""), "", order.getTjNumber()
                                            , detail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "")
                                            , detail.getProResult());
            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);
                try {
                    LambdaQueryWrapper<TjOrderYcxm> wq=new LambdaQueryWrapper<>();
                    wq.eq(TjOrderYcxm::getTjh,order.getTjNumber());
                    wq.eq(TjOrderYcxm::getJcxm,detail.getProName());
                    TjOrderYcxm ycxm = ycxmService.getOne(wq);
                    if(null !=ycxm){
                        ycxm.setJcjg(detail.getProResult());
                        List<Map<String,Object>> maps= rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
                                ,"","",order.getTjNumber()
                                ,detail.getProName().replaceAll("[((][^))]*[))]", "")
                                        .replaceAll("[ 测定检测]","")
                                ,detail.getProResult());
                                    String[] split = detail.getProResult().split("。|,|,");
                                    List<Map<String, Object>> mapList = new ArrayList<>();
                                    for (String s : split) {
                                        s = s.replaceAll("\n", "");
                                        //                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                        Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0");
                                        if (null != mapss && !mapss.isEmpty()) {
                                            Object bt = mapss.get("bt");
                                            Object nr = mapss.get("nr");
                                            if (null != bt || null != nr) {
                        String[] split = detail.getProResult().split("。|,|,");
                        List<Map<String,Object>> mapList=new ArrayList<>();
                        for (String s : split) {
                            s = s.replaceAll("\n", "");
//                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                            Map<String,Object> mapss= tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname,s,"0");
                            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 {
                                } mapList.add(mapss);
                                    List<Map<String, Object>> maps = rulesService.getyichangxiangmujianyiguize(detail.getProId().toString()
                                            , detail.getProName().replaceAll("[((][^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", ""), "", order.getTjNumber()
                                            , detail.getProName().replaceAll("[((][^))]*[\u4e00-\u9fa5]+[^))]*[))]", "")
                                                    .replaceAll("[ 测定检测]", "").replaceAll("\\[.*?\\]", "")
                                            , detail.getProResult());
                                    String[] split = detail.getProResult().split("。|,|,");
                                    List<Map<String, Object>> mapList = new ArrayList<>();
                                    for (String s : split) {
                                        s = s.replaceAll("\n", "");
                                        //                                        Map<String,Object> maps= rulesService.getyichangxiangmujianyiguizeJianCha(s);
                                        Map<String, Object> mapss = tjProAdvicerulesService.getyichangxiangmujianyiguizeJianCha(deptname, s, "0");
                                        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("/");
                            }
                           ycxmService.remove(wq);
                        }
                }
                        if(null != maps && !maps.isEmpty()){
                            ycxm.setJynr(JSONUtil.toJsonStr(maps));
                        }
                        if( !mapList.isEmpty()){
                            ycxm.setJynr(JSONUtil.toJsonStr(mapList));
                        }
                        ycxmService.updateById(ycxm);
                        if(detail.getExceptionDesc()==0)ycxmService.remove(wq);
                // 使用 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) {
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error(String.valueOf(e));
        }
    }
@@ -672,14 +756,14 @@
    @Override
//    //@Async("async")
//    @Transactional
    public Boolean iundividualCharges(TjFlowingWater tjFlowingWater, TjOrder order, TjCustomer customer, SysUser sysUser,String jxbz) {
    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");
        tjFlowingWater.setJxbz(jxbz);
        tjFlowingWaterService.updateById(tjFlowingWater);
        TjProBl proBl=new TjProBl();
        TjProBl proBl = new TjProBl();
        proBl.setTjh(order.getTjNumber());
        proBl.setBldh(jxbz);
        proBl.setBlsj(date);
@@ -692,7 +776,7 @@
        String config = configService.selectConfigByKey("sfkqdyhis");
        List<TjProject>  projectList=new ArrayList<>();
        List<TjProject> projectList = new ArrayList<>();
//        ArrayList<TjOrderDetail> tjOrderDetails = new ArrayList<>();
        for (String tjProId : tjProIds) {
@@ -749,12 +833,12 @@
                //如果该项目存在 则 不保存
                TjOrderDetail orderDetail = tjOrderDetailService.getTjOrderDetailByOrderId(String.valueOf(tjFlowingWater.getOrderId()), tjProId);
                if(null !=orderDetail) continue;
                if (null != orderDetail) continue;
                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);
                    }
                }
@@ -775,10 +859,10 @@
            }
            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) {
                    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))));
                }
            }
@@ -789,7 +873,7 @@
        ArrayList<TjProject> jianChaProjects = new ArrayList<>();
        if(!projectList.isEmpty()){
        if (!projectList.isEmpty()) {
            List<TjProject> list = projectList.stream().distinct().collect(Collectors.toList());
            for (TjProject project : list) {
                TjOrderRemark tjOrderRemark = new TjOrderRemark();
@@ -820,23 +904,23 @@
                detail1.setJxbz(jxbz);
                tjOrderDetailService.save(detail1);
//                tjOrderDetails.add(detail1);
                        if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
                        if (null != project.getHisXmbm()) {
                            jianChaProjects.add(project);
                        }
                if (project.getProPrice().compareTo(BigDecimal.ZERO) != 0 && deptService.getJcDeptIds().contains(project.getDeptId().toString())) {
                    if (null != project.getHisXmbm()) {
                        jianChaProjects.add(project);
                    }
                }
            }
            // TODO 和签到登记一样 只有配置中的以及收费类型为体检票时才增加到采样管理表
            if(config.equalsIgnoreCase("Y")){
            if (config.equalsIgnoreCase("Y")) {
//                if (lisApiMethod.isUseLisAndPacsRegister(order) && tjFlowingWater.getPayType() == 6L) {
                    List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                    addCaiYangDengJi(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
                List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                addCaiYangDengJi(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
//                }
                 AjaxResult result = tijianbulushenqing(customer, date, order.getCardId(), jxbz, jianChaProjects, tjFlowingWater.getPayType() == 6L);
                 if (!result.get("code").toString().equals("200"))
                     return false;
            }else {
                AjaxResult result = tijianbulushenqing(customer, date, order.getCardId(), jxbz, jianChaProjects, tjFlowingWater.getPayType() == 6L);
                if (!result.get("code").toString().equals("200"))
                    return false;
            } else {
                List<TjOrderDetail> detailLists = tjOrderDetailService.getCaiYangDengJiJxbz(order.getOrderId(), jxbz);
                addCaiYangDengJiByDiaoYongShiTu(detailLists, !detailLists.isEmpty(), order, sysUser, jxbz);
            }
@@ -845,12 +929,14 @@
        return true;
    }
    public void addCaiYangDengJiByDiaoYongShiTu(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser,String jxbz) {
    public void addCaiYangDengJiByDiaoYongShiTu(List<TjOrderDetail> detailList, boolean detailList1, TjOrder order, SysUser sysUser, String jxbz) {
        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());
@@ -891,9 +977,9 @@
            }
        }
        String config = configService.selectConfigByKey("sfkqdyhis");
        if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))){
        if (lisApiMethod.isUseLisAndPacsRegister(order) && (null != config && config.equals("Y"))) {
            AjaxResult ajaxResult = lisApiMethod.getJyFlHb();
            if (ajaxResult.get("code").toString().equals("200")){
            if (ajaxResult.get("code").toString().equals("200")) {
                String str = ajaxResult.get("data").toString();
                str = str.replace("=", ":");
                JSONArray array = JSONUtil.parseArray(str);
@@ -905,12 +991,12 @@
                    lisJyflhb.setMc(object.getStr("mc"));
                    lisJyflhb.setFlbm(object.getStr("flbm"));
                    LambdaQueryWrapper<LisJyflhb> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(LisJyflhb::getFlbm,lisJyflhb.getFlbm());
                    wrapper.eq(LisJyflhb::getFlbm, lisJyflhb.getFlbm());
                    LisJyflhb jyflhb = lisJyflhbService.getOne(wrapper);
                    if (jyflhb == null) {
                        lisJyflhb.setId(IdUtil.getSnowflake().nextId());
                        lisJyflhbService.save(lisJyflhb);
                    }else {
                    } else {
                        lisJyflhb.setId(jyflhb.getId());
                        lisJyflhbService.updateById(lisJyflhb);
                    }
@@ -918,13 +1004,12 @@
            }
        }
        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()));
        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()));
        }
    }
    //体检对his申请单调用方法
@@ -1783,34 +1868,34 @@
//        return AjaxResult.success();
//    }
    public AjaxResult tijianbulushenqing(TjCustomer customer, String date,String cardId,String jxbz,ArrayList<TjProject> jianChaProjects,Boolean isTuanTiPiao) {
    public AjaxResult tijianbulushenqing(TjCustomer customer, String date, String cardId, String jxbz, ArrayList<TjProject> jianChaProjects, Boolean isTuanTiPiao) {
        TjOrder order = orderService.getOrderByCardId(cardId);
        if(null !=order){
        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);
            List<TbTransition> detailList = transitionService.getBlTbTransitionListByCusId(customer.getCusIdcard(), cardId, jxbz);
            Boolean useLisAndPacsRegister = lisApiMethod.isUseLisAndPacsRegister(order);
            List<OutpinmedicapplyDetilsDto> outpinmedicapplyDetilsDtos =new ArrayList<>();
            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);
                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()){
                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));
                    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());
                        log.info("key ->{},val ->{}", entry.getKey(), entry.getValue());
                        // Lis标本代码
                        String specimenTypeCode = entry.getKey();
                        List<TjSampling> samplings = entry.getValue();
                        if (samplings.size() >= 2){
                        if (samplings.size() >= 2) {
                            // 进行合并
                            List<String> stringList = samplings.stream().map(TjSampling::getId).collect(Collectors.toList());
//                            log.info("提取id ->{}",stringList);
@@ -1822,12 +1907,12 @@
                                }
                            }
                            if (stringList.size() > 1) {
                                String id = tjSamplingService.mergeCaiYangApi(stringList,lis_tmh_prefix);
                                String id = tjSamplingService.mergeCaiYangApi(stringList, lis_tmh_prefix);
                                ids.add(id);
                            }else {
                            } else {
                                ids.add(stringList.get(0));
                            }
                        }else {
                        } else {
                            ids.add(samplings.get(0).getId());
                        }
                    }
@@ -1835,7 +1920,7 @@
                    if (!confirmed)
                        return AjaxResult.error("处理失败");
                }
            }else {
            } else {
                List<TjOutpinmedicXm> outpinmedicXms = tjOutpinmedicXmService.list();
                //检验申请
                if (null != detailList && !detailList.isEmpty()) {
@@ -1843,14 +1928,14 @@
                    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());
                    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);
                            listMap.put("", isNull);
                        for (Map.Entry<String, List<TjProject>> entry : listMap.entrySet()) {
                            OutpintestapplyDto dto = new OutpintestapplyDto();
                            dto.setHisRegistrationId(cardId);
@@ -1865,7 +1950,7 @@
                            List<TjProject> value = entry.getValue();
                            for (TjProject project : value) {
                                LambdaQueryWrapper<TjProject> wrapper = new LambdaQueryWrapper<>();
                                wrapper.eq(TjProject::getProParentId,project.getProId());
                                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) {
@@ -1883,7 +1968,7 @@
                                }
                                if (!outpinmedicXms.isEmpty()) {
                                    outpinmedicXms.stream().filter(i -> i.getProId().equals(project.getProId())).forEach(i -> {
                                        OutpinmedicapplyDetilsDto detilsDto=new OutpinmedicapplyDetilsDto();
                                        OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                        detilsDto.setYpbm(i.getYpbm());
                                        detilsDto.setPcbm(i.getPcbm());
                                        detilsDto.setSl(i.getSl());
@@ -1966,15 +2051,15 @@
                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());
                    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()){
                    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.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()) {
@@ -1994,7 +2079,7 @@
                            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();
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
@@ -2087,15 +2172,15 @@
                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());
                    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()){
                    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.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()) {
@@ -2113,7 +2198,7 @@
                            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();
                                    OutpinmedicapplyDetilsDto detilsDto = new OutpinmedicapplyDetilsDto();
                                    detilsDto.setYpbm(i.getYpbm());
                                    detilsDto.setPcbm(i.getPcbm());
                                    detilsDto.setSl(i.getSl());
@@ -2184,31 +2269,44 @@
                }
                //药品申请
                if(!outpinmedicapplyDetilsDtos.isEmpty()){
                    OutpinmedicapplyDto dto1=new OutpinmedicapplyDto();
                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");
                    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");
                    dto1.setMzzd("");
                    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")){
                    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());
                        log.info("药品申请后的处方号是: " + cfh + "  outpinmedicapplyDetilsDtos 里面的值为: " + outpinmedicapplyDetilsDtos.toString());
                        for (OutpinmedicapplyDetilsDto detilsDto : outpinmedicapplyDetilsDtos) {
                            TjCf cf=new TjCf();
                            TjCf cf = new TjCf();
                            cf.setJxbz(jxbz);
                            cf.setCardId(cardId);
                            cf.setSfzh(customer.getCusIdcard());
@@ -2514,12 +2612,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);
        }
    }
@@ -2617,26 +2715,13 @@
    @Override
    //@Async("async")
    public void saveNewReservationConfirm(List<TjReservation> rightList) {
        if (null != rightList && rightList.size() > 0) {
        if (null != rightList && !rightList.isEmpty()) {
            //创建线程池
            ExecutorService threadPool = Executors.newFixedThreadPool(rightList.size());
//            ExecutorService threadPool = Executors.newFixedThreadPool(rightList.size());
            for (TjReservation reservation : rightList) {
                //删除之前的数据
                transitionService.deletedTbTransitionByCusId(reservation.getIdCard());
                //获取线程
                threadPool.execute(new Runnable() {
                    @Override
                    public void run() {
                        try {
//                            transitionService.saveTemoTransitionByGroupingId(reservation.getIdCard(), reservation.getGroupingId());
                            transitionService.ttsaveTemoTransitionByGroupingId(reservation.getIdCard(),"0",reservation.getGroupingId());
                            threadPool.shutdown();
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                });
                transitionService.ttsaveTemoTransitionByGroupingId(reservation.getIdCard(), "0", reservation.getGroupingId());
            }
        }
    }
@@ -2754,20 +2839,19 @@
        }
        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
        addCaiYangDengJi(detailList, detailList.size() > 0, order, sysUser,null);
        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);
@@ -2777,11 +2861,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);
@@ -2857,7 +2941,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());
@@ -3629,13 +3713,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);