zjh
2025-04-16 e1426706a7b0369f7576fa3e1ea36c6a688d1999
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -56,6 +56,8 @@
import com.ltkj.hosp.dto.UpdateTransitionnewPriceDto;
import com.ltkj.hosp.hisDto.OutpinimpapplyDto;
import com.ltkj.hosp.hisDto.OutpinmedicapplyDto;
import com.ltkj.hosp.idutil.IdUtils;
import com.ltkj.hosp.mapper.TbTransitionMapper;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.mapper.TjSamplingMapper;
import com.ltkj.hosp.pacsDto.SavePacsApply;
@@ -89,9 +91,11 @@
import org.aspectj.weaver.ast.Var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.http.HttpRequest;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.NoTransactionException;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
@@ -236,6 +240,10 @@
    private ITjXdPictureService xdPictureService;
    @Autowired
    private TjOrderYcxmService ycxmService;
    @Autowired
    private TbTransitionMapper tbTransitionMapper;
    private static final String TJH = "tjhs:tjh";
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
@@ -302,7 +310,7 @@
            wqq.like(TjCustomer::getCusName, name);
            List<TjCustomer> customerList = tjCustomerService.list(wqq);
            List<TjOrder> list2 = new ArrayList<>();
            if (null != customerList && customerList.size() > 0) {
            if (null != customerList && !customerList.isEmpty()) {
                List<TjOrder> list = new ArrayList<>();
                for (TjCustomer customer : customerList) {
                    LambdaQueryWrapper<TjOrder> wq = new LambdaQueryWrapper<>();
@@ -313,13 +321,13 @@
                    list.addAll(tjOrderService.list(wq));
                }
                List<TjOrder> collect = null;
                if (list.size() > 0) {
                if (!list.isEmpty()) {
                    for (TjOrder order : list) {
                        //筛选有调查问卷的
                        LambdaQueryWrapper<TjSurveyRecord> wqq1 = new LambdaQueryWrapper<>();
                        wqq1.eq(TjSurveyRecord::getTjnumber, order.getTjNumber());
                        List<TjSurveyRecord> one = surveyRecordService.list(wqq1);
                        if (one.size() == 0) {
                        if (one.isEmpty()) {
                            TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                            if (null != tjCustomer) {
                                order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
@@ -380,7 +388,7 @@
                LambdaQueryWrapper<TjSurveyRecord> wqq = new LambdaQueryWrapper<>();
                wqq.eq(TjSurveyRecord::getTjnumber, order.getTjNumber());
                List<TjSurveyRecord> one = surveyRecordService.list(wqq);
                if (one.size() == 0) {
                if (one.isEmpty()) {
                    TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                    if (null != tjCustomer) {
                        order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
@@ -1037,7 +1045,7 @@
                tjOrder.setTjType("2");
            }
        }
        if(StringUtil.isBlank(tjOrder.getFirmId())){
        if (StringUtil.isBlank(tjOrder.getFirmId())) {
            tjOrder.setFirmId("0");
        }
@@ -1079,13 +1087,19 @@
                tjOrderService.tjQiandaodengji(tjOrder.getTjNumber());
                return result;
            }
        } finally {
        }catch (Exception e){
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            log.error(String.valueOf(e),e.getMessage());
            e.printStackTrace();
        }
        finally {
            lock.unlock();
        }
        return AjaxResult.error();
    }
    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
    @Transactional(propagation = Propagation.REQUIRED)
    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
        //获取拼接前缀
@@ -1096,10 +1110,38 @@
//        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        String tjNumber = (SecurityUtils.getUsername()+IdUtils.getTjNumber());
        if(StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber=makeLisTmhPrefix+tjNumber;
        tjOrder.setTjNumber(tjNumber);
//        String tjNumber = (SecurityUtils.getUsername() + idUtils.getTjNumber());
//        String tjNumber = idUtils.getTjNumber();
        String tjNumber = null;
        int a =0;
        while (tjNumber ==null){
            if(a>3){
                throw new RuntimeException("前方拥挤,请稍等!!!");
            }
            try {
                String newTjNumberRedisLockAndMysql = idUtils.getNewTjNumberRedisLockAndMysql();
                if (StringUtil.isNotBlank(makeLisTmhPrefix)){
                    String tjh=  makeLisTmhPrefix + newTjNumberRedisLockAndMysql;
                    int countByTjNum = tjOrderService.getOrderCountByTjNum(tjh);
                    if(countByTjNum==0){
                        tjNumber=tjh;
                    }
                }else {
                    int countByTjNum = tjOrderService.getOrderCountByTjNum(newTjNumberRedisLockAndMysql);
                    if(countByTjNum==0){
                        tjNumber=newTjNumberRedisLockAndMysql;
                    }
                }
            } catch (Exception e) {
                log.error(e.getMessage());
                throw new IllegalStateException();
            }finally {
                a++;
            }
        }
        tjOrder.setTjNumber(tjNumber);
        BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
        tjOrder.setDiscount(discount.toString());
@@ -1144,10 +1186,10 @@
            tjFlowingWater.setDiscount(discount.toString());
            BigDecimal subtract = paidIn.subtract(copeWith.multiply(discount.divide(BigDecimal.valueOf(10))));
            log.info("签到登记体检人: "+tjOrder.getTjNumber()+" 应付: "+copeWith);
            log.info("签到登记体检人: "+tjOrder.getTjNumber()+" 折扣: "+discount);
            log.info("签到登记体检人: "+tjOrder.getTjNumber()+" 实付: "+paidIn);
            log.info("签到登记体检人: "+tjOrder.getTjNumber()+" 相差: "+subtract);
            log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 应付: " + copeWith);
            log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 折扣: " + discount);
            log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 实付: " + paidIn);
            log.info("签到登记体检人: " + tjOrder.getTjNumber() + " 相差: " + subtract);
            if (isPay.equals("true")) {
                if (null != mallOrder) {
@@ -1178,21 +1220,8 @@
                }
            }
            //修改每项的原价现价
//            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
            //修改临时表体检号
            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(),tjOrder.getTjNumber());
            //补差价
    /*        if(subtract.compareTo(BigDecimal.ZERO)>0){
                tjFlowingWater.setPaidIn(paidIn.add(subtract));
                TbTransition onwTbTransition = transitionService.getOnwTbTransition(tjCustomer.getCusIdcard(),tjOrder.getTjNumber());
                if(null !=onwTbTransition){
                    log.info("签到登记体检人: "+tjOrder.getTjNumber()+"给: "+onwTbTransition.getParentProName()+" "+onwTbTransition.getNowPrice()
                            +" 补差价 "+subtract+" 最终得 "+onwTbTransition.getNowPrice().add(subtract));
                    onwTbTransition.setNowPrice(onwTbTransition.getNowPrice().add(subtract));
                    transitionService.updateById(onwTbTransition);
                }
            }*/
            transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
            if (tjFlowingWaterService.save(tjFlowingWater)) {
                tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
@@ -1202,15 +1231,21 @@
            /*调用his接口*/
            String config = configService.selectConfigByKey("sfkqdyhis");
            if (null != config && config.equals("Y")) {
                AjaxResult result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder);
                if (!result.get("code").toString().equals("200")) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    Object jzh = result.get("jzh");
                    if (null != jzh && null != jzh.toString()) {
                        hisApiMethod.ZfHisApiMethod(jzh.toString());
                AjaxResult result = null;
                try {
                    result = hisApiMethod.HisApiMethods(tjCustomer, tjOrder);
                    if (!result.get("code").toString().equals("200")) {
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        Object jzh = result.get("jzh");
                        if (null != jzh && null != jzh.toString()) {
                            hisApiMethod.ZfHisApiMethod(jzh.toString());
                        }
                        log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId());
                        return AjaxResult.error("挂号失败!" + result.get("msg").toString());
                    }
                    log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId());
                    return AjaxResult.error("挂号失败!" + result.get("msg").toString());
                } catch (NoTransactionException e) {
                    log.error(e.getMessage());
                    throw new RuntimeException(e);
                }
                log.info("该登记人的his就诊号是: " + tjOrder.getCardId());
@@ -1225,27 +1260,29 @@
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                }*/
                // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                    // 这是上面个人方法引入数据
                    tjFlowingWater.setPayStasus(1L);
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
                    if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult;
                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
//                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                } else {
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                    hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                try {
                    if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                        // 这是上面个人方法引入数据
                        tjFlowingWater.setPayStasus(1L);
                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                        AjaxResult ajaxResult = hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder, sysUser, result);
                        if (!ajaxResult.get("code").toString().equals("200")) return ajaxResult;
                        tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                                sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                        remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                        List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                        xdPictureService.saveBatch(xdPictureList);
                    } else {
                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                        List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                        addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                    }
                    return AjaxResult.success(tjNumber);
                } catch (Exception e) {
                    log.error(e.getMessage());
                    throw new RuntimeException(e);
                }
                return AjaxResult.success(tjNumber);
            } else {
                tjCustomer.setCardId(tjOrder.getTjNumber());
                tjCustomerService.updateById(tjCustomer);
@@ -1340,33 +1377,110 @@
            // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
            if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                // 这是上面个人方法引入数据
                tjFlowingWater.setPayStasus(1L);
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                xdPictureService.saveBatch(xdPictureList);
                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
                return AjaxResult.success(tjNumber);
            }else {
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                if (error != null) return error;
//                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
//                addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
            //导入人员是否收费
            String drrysfsf = configService.selectConfigByKey("drrysfsf");
            try {
                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                    if(StringUtil.isNotBlank(drrysfsf) && drrysfsf.equalsIgnoreCase("Y")){
                        if(null != tjReservation){
                            return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
                        }else {
                            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                            AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                            if (error != null) return error;
                            return AjaxResult.success(tjNumber);
                        }
                    }
                    return isUseLisAndPacsRegister(tjOrder, tjCustomer, tjReservation, tjFlowingWater, sysUser, discount, tjNumber);
                } else {
                    newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    AjaxResult error = isRequestCommonHisApi(tjOrder, tjCustomer, tjFlowingWater);
                    if (error != null) return error;
                }
            } catch (Exception e) {
                log.error(e.getMessage());
                throw new RuntimeException(e);
            }
            return AjaxResult.success(tjNumber);
//            pacsApiMethodService.OrderAdd(tjCustomer,tjOrder);
//            return AjaxResult.success(tjNumber);
        }
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    private AjaxResult isUseLisAndPacsRegister(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, SysUser sysUser, BigDecimal discount, String tjNumber) {
        try {
            log.info("签到登记进入未收费方法");
            // 这是上面个人方法引入数据
            tjFlowingWater.setPayStasus(1L);
            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
            remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
            List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
            xdPictureService.saveBatch(xdPictureList);
            List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
            log.info("签到登记:采样数据查询个数"+detailList.size());
            addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
            return AjaxResult.success(tjNumber);
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new RuntimeException(e);
        }
    }
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        try {
            tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
            if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
                tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(),
                        String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
            } else {
                tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
            }
            tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
            //添加remark表数据
            if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
                remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
            } else {
                remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
            }
            //判断是否交钱
            if ("1".equals(tjOrder.getTjType())) {
                if (null != tjReservation && tjReservation.getPayType() == 1) {
                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
                }
            }
            if (tjFlowingWater.getPayStasus() == 1L) {
                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
                tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
                tjFlowingWater.setPayType(4L);
                tjFlowingWaterService.updateById(tjFlowingWater);
                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
    //            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                xdPictureService.saveBatch(xdPictureList);
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            throw new RuntimeException(e);
        }
    }
    private AjaxResult isRequestCommonHisApi(TjOrder tjOrder, TjCustomer tjCustomer, TjFlowingWater tjFlowingWater) {
        String s = configService.selectConfigByKey("is_request_common_his_api");
@@ -1390,6 +1504,7 @@
            wrapper.gt(TbTransition::getNowPrice, 0);
            List<TbTransition> list = tbTransitionService.list(wrapper);
            BigDecimal zongjia = new BigDecimal("0.0");
            for (TbTransition transition : list) {
                LambdaQueryWrapper<TjProject> wrapper1 = new LambdaQueryWrapper<>();
                wrapper1.eq(TjProject::getProId, transition.getProId());
@@ -1400,7 +1515,8 @@
                SysDept dept = sysDeptService.getOne(wrapper2);
                JSONObject obj = JSONUtil.createObj();
                Integer sl = project.getSl();
//                Integer sl = project.getSl();
                int sl = 1;
                BigDecimal danjia = transition.getNowPrice();
                BigDecimal allPrice = danjia.multiply(new BigDecimal(sl));
                obj.putOpt("danJia", danjia);
@@ -1411,8 +1527,10 @@
                obj.putOpt("shouFeiXmId", project.getHisXmbm());
                obj.putOpt("shouFeiXmMc", project.getHisXmmc());
                array.add(obj);
                zongjia = zongjia.add(allPrice);
            }
            map.put("feiYongInfoList", array);
            log.info("调用His接口前 收费总价:{}", zongjia.toString());
            String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
            JSONObject object = JSONUtil.parseObj(post);
@@ -1441,6 +1559,8 @@
            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());
@@ -1511,30 +1631,58 @@
            }
        }
        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()));
        }
    }
    @GetMapping("/addCaiYangDengJi")
    @ApiOperation(value = "手动添加采样记录接口")
    public AjaxResult addCaiYangDengJi(@RequestParam("tjNum") String tjNum){
        try {
            TjOrder order = tjOrderService.getOrderByTjNum(tjNum);
            if(null !=order){
                Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
                SysUser sysUser = userService.getById(userId);
                List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(order.getOrderId());
                log.info("签到登记:采样数据查询个数"+detailList.size());
                addCaiYangDengJi(detailList, !detailList.isEmpty(), order, sysUser, null);
            }
        } catch (NumberFormatException e) {
            log.error(String.valueOf(e));
        }
        return AjaxResult.success();
    }
    @PostMapping("/addPlOrderAndDetail")
    @ApiOperation(value = "体检批量签到登记接口")
    @Transactional  //(切换数据库出错,所以注释)
//    @Transactional  //(切换数据库出错,所以注释)
    public AjaxResult addPlOrderAndDetail(@RequestBody QianDaoDto daoDto, HttpServletResponse response) {
        SysUser sysUser = UserHoder.getLoginUser().getUser();
        List<String> cusIds = daoDto.getCusIds();
        ArrayList<String> tjNumbers = new ArrayList<>();
        ArrayList<String> errTjh = new ArrayList<>();
        if (null != cusIds && !cusIds.isEmpty()) {
            ExecutorService threadPools = Executors.newFixedThreadPool(cusIds.size());
            for (String cusId : cusIds) {
                threadPools.execute(new Runnable() {
                    @Override
                    public void run() {
                        getAjaxResults(cusId);
                    }
                });
//                threadPools.execute(new Runnable() {
//                    @Override
//                    public void run() {
                try {
                    getAjaxResults(cusId);
                } catch (Exception e) {
                }
//                    }
//                });
            }
            LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
            wq.in(TjCustomer::getCusIdcard, cusIds);
@@ -1554,6 +1702,7 @@
//                            }
//                        }
//                    });
                    Future<AjaxResult> future = executor.submit(new Callable<AjaxResult>() {
                        @Override
                        public AjaxResult call() throws Exception {
@@ -1562,61 +1711,51 @@
                    });
                    try {
                        AjaxResult result = future.get();
                        String tjNumber = result.get("tjNumber").toString();
                        tjNumbers.add(tjNumber);
                        String code = result.get("code").toString();
                        if (code.equals("200")) {
                            String tjNumber = result.get("tjNumber").toString();
                            tjNumbers.add(tjNumber);
                        }else {
                            String userId = result.get("userId").toString();
                            errTjh.add(userId);
                        }
                    } catch (InterruptedException | ExecutionException e) {
//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        e.printStackTrace();
                    }
                }
                threadPools.shutdown();
            }
        }
        // TODO 因为有体检号会查出空数据 先使用死数据
        tjNumbers = new ArrayList<>();
        tjNumbers.add("02095240229171627");
        tjNumbers.add("02095240229173104");
        tjNumbers.add("10001240524172002");
        tjNumbers.add("10001240304124410");
        tjNumbers.add("00325240304160123");
        tjNumbers.add("02095240304162044");
        tjNumbers.add("02095240304162152");
        tjNumbers.add("10001240304163505");
        Map<String, Object> map = null;
        try {
            map = PDFDocumentUtil.getDocument();
            Document document = (Document) map.get("document");
            for (int i = 0; i < tjNumbers.size(); i++) {
                try {
                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumbers.get(i));
                    Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumbers.get(i));
                    LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
                    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
                    String time = null;
                    if (tjsj != null) {
                        time = dateFormat.format(tjsj);
                    }
                    PDFDocumentUtil.makeUserInfoTable(document, (String) userInfo.get("tjname"), (String) userInfo.get("sex")
                            , (String) userInfo.get("tjh"), (String) userInfo.get("lxdh"), (String) userInfo.get("tjname"), time);
                    PDFDocumentUtil.makeTjInfo(document, djdInfos);
                    // 多条则换页
                    if (i + 1 < tjNumbers.size()) {
                        document.newPage();
                    }
                } catch (DocumentException | IOException e) {
                    e.printStackTrace();
                }
            // TODO 因为有体检号会查出空数据 先使用死数据  打印导诊单
            if (!tjNumbers.isEmpty()) {
                Map<String,Object> map=new HashMap<>();
                map.put("tjh",tjNumbers);
                return AjaxResult.success("操作成功",map);
            }
            document.close();
            ByteArrayOutputStream outputStream = (ByteArrayOutputStream) map.get("stream");
            String encodeToString = java.util.Base64.getEncoder().encodeToString(outputStream.toByteArray());
            return AjaxResult.success().put("file", encodeToString);
        } catch (IOException | DocumentException e) {
            e.printStackTrace();
            if (!errTjh.isEmpty()){
                Map<String,Object> map=new HashMap<>();
                map.put("errtjh",errTjh);
                return AjaxResult.success("以上人员签到失败",map);
            }
            return AjaxResult.error();
        }
        return AjaxResult.success("操作成功");
//        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
    private void getAjaxResults(String cusIdcard) {
    @GetMapping("/signOrderInfo")
    public AjaxResult signOrderInfo(@RequestParam("tjNum") String tjNum){
        List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNum);
        Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNum);
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("djd",djdInfos);
        hashMap.put("user",userInfo);
        return AjaxResult.success(hashMap);
    }
    @Transactional
    public void getAjaxResults(String cusIdcard) {
        if (!"".equals(cusIdcard) && cusIdcard != null) {
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
@@ -1678,51 +1817,59 @@
                    tjReservationService.updateById(tjReservation);
//                    return AjaxResult.error("对不起您的预约已超时请重新预约");
                }*/
                LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
                qw.eq(TjCustomer::getCusIdcard, cusIdcard);
                TjCustomer tjCustomer1 = tjCustomerService.getOne(qw);
                if (tjCustomer1 != null) {
                    tjCustomer1.setTjType(tjReservation.getTjType());
                    tjCustomer1.setCusName(tjReservation.getName());
                    tjCustomer1.setCusSex(Long.valueOf(tjReservation.getSex()));
                    tjCustomer1.setCusBrithday(tjReservation.getBirthday());
                    tjCustomer1.setCusPhone(tjReservation.getPhoe());
                    tjCustomer1.setCusEmail(tjReservation.getEmail());
                    tjCustomer1.setCusAddr(tjReservation.getAddress());
                    tjCustomer1.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                    tjCustomer1.setCusNational(String.valueOf(tjReservation.getNation()));
                    tjCustomer1.setIdType(tjReservation.getIdType());
                    tjCustomer1.setAge(tjReservation.getAge());
                    tjCustomer1.setAgeUnit(tjReservation.getAgeUnit());
                    tjCustomer1.setCareer(tjReservation.getCareer());
                    tjCustomerService.updateById(tjCustomer1);
                } else {
                    TjCustomer tjCustomer = new TjCustomer();
                    tjCustomer.setCusIdcard(tjReservation.getIdCard());
                    tjCustomer.setCusName(tjReservation.getName());
                    tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex()));
                    tjCustomer.setCusBrithday(tjReservation.getBirthday());
                    tjCustomer.setCusPhone(tjReservation.getPhoe());
                    tjCustomer.setCusEmail(tjReservation.getEmail());
                    tjCustomer.setCusAddr(tjReservation.getAddress());
                    tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                    tjCustomer.setCusNational(String.valueOf(tjReservation.getNation()));
                    tjCustomer.setIdType(tjReservation.getIdType());
                    tjCustomer.setAge(tjReservation.getAge());
                    tjCustomer.setAgeUnit(tjReservation.getAgeUnit());
                    tjCustomer.setCareer(tjReservation.getCareer());
                    tjCustomer.setDwPhone(tjReservation.getDwPhone());
                    tjCustomer.setCardId(tjReservation.getCardId());
                    tjCustomer.setIndexCard(tjReservation.getIndexCard());
                    //截取密码自动生成set进去
                    String substring = cusIdcard.substring(cusIdcard.length() - 6);
                    substring = DigestUtils.md5DigestAsHex(substring.getBytes());
                    tjCustomer.setCusPassword(substring);
                    tjCustomer.setTjType(tjReservation.getTjType());
                    tjCustomerService.save(tjCustomer);
                try {
                    LambdaQueryWrapper<TjCustomer> qw = new LambdaQueryWrapper<>();
                    qw.eq(TjCustomer::getCusIdcard, cusIdcard);
                    TjCustomer tjCustomer1 = tjCustomerService.getOne(qw);
                    if (tjCustomer1 != null) {
                        tjCustomer1.setTjType(tjReservation.getTjType());
                        tjCustomer1.setCusName(tjReservation.getName());
                        tjCustomer1.setCusSex(Long.valueOf(tjReservation.getSex()));
                        tjCustomer1.setCusBrithday(tjReservation.getBirthday());
                        tjCustomer1.setCusPhone(tjReservation.getPhoe());
                        tjCustomer1.setCusEmail(tjReservation.getEmail());
                        tjCustomer1.setCusAddr(tjReservation.getAddress());
                        tjCustomer1.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                        tjCustomer1.setCusNational(String.valueOf(tjReservation.getNation()));
                        tjCustomer1.setIdType(tjReservation.getIdType());
                        tjCustomer1.setAge(tjReservation.getAge());
                        tjCustomer1.setAgeUnit(tjReservation.getAgeUnit());
                        tjCustomer1.setCareer(tjReservation.getCareer());
                        tjCustomerService.updateById(tjCustomer1);
                    } else {
                        TjCustomer tjCustomer = new TjCustomer();
                        tjCustomer.setCusIdcard(tjReservation.getIdCard());
                        tjCustomer.setCusName(tjReservation.getName());
                        tjCustomer.setCusSex(Long.valueOf(tjReservation.getSex()));
                        tjCustomer.setCusBrithday(tjReservation.getBirthday());
                        tjCustomer.setCusPhone(tjReservation.getPhoe());
                        tjCustomer.setCusEmail(tjReservation.getEmail());
                        tjCustomer.setCusAddr(tjReservation.getAddress());
                        tjCustomer.setCusMarryStatus(String.valueOf(tjReservation.getMarriage()));
                        tjCustomer.setCusNational(String.valueOf(tjReservation.getNation()));
                        tjCustomer.setIdType(tjReservation.getIdType());
                        tjCustomer.setAge(tjReservation.getAge());
                        tjCustomer.setAgeUnit(tjReservation.getAgeUnit());
                        tjCustomer.setCareer(tjReservation.getCareer());
                        tjCustomer.setDwPhone(tjReservation.getDwPhone());
                        tjCustomer.setCardId(tjReservation.getCardId());
                        tjCustomer.setIndexCard(tjReservation.getIndexCard());
                        //截取密码自动生成set进去
                        String substring = cusIdcard.substring(cusIdcard.length() - 6);
                        substring = DigestUtils.md5DigestAsHex(substring.getBytes());
                        tjCustomer.setCusPassword(substring);
                        tjCustomer.setTjType(tjReservation.getTjType());
                        tjCustomerService.save(tjCustomer);
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }else {
                throw new RuntimeException();
            }
        }else {
            throw new RuntimeException();
        }
    }
@@ -1750,25 +1897,13 @@
        DynamicDataSourceContextHolder.clearDataSourceType();
    }
    private AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
    @Transactional
    public AjaxResult getAjaxResult(Long userId, SysUser sysUser, String tjCategory) throws IOException {
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusId, userId);
        TjCustomer tjCustomer = tjCustomerService.getOne(wq);
        if (tjCustomer == null) return AjaxResult.error("该客户未登记或不存在");
//        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
//        wqq.eq(TjOrder::getUserId, userId);
//        wqq.eq(TjOrder::getCheckStatus, 0);
//        wqq.isNull(TjOrder::getFinishTime);
//        if (!tjCustomer.getCardId().equals("0")) {
//            wqq.eq(TjOrder::getCardId, tjCustomer.getCardId());
//        }
//        TjOrder order = tjOrderService.getOne(wqq);
//        if (null != order) {
//            transitionService.deletedTbTransitionListByCusIdAndTjNum(tjCustomer.getCusIdcard(), tjCustomer.getCardId());
//            return AjaxResult.error("不可重复登记");
//        }
        TjOrder tjOrder = new TjOrder();
        Date date = new Date();
        tjOrder.setCreateTime(date);
@@ -1785,16 +1920,17 @@
        if (tjReservation != null) {
            tjOrder.setReservationId(tjReservation.getId());
            mallOrder = mallOrderService.getOne(new LambdaQueryWrapper<MallOrder>().eq(MallOrder::getReservationId, tjReservation.getId()));
            if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) {
                return AjaxResult.error("未到预约时间");
            }
            if (DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) {
                tjReservation.setIsExpire(1);
                tjReservationService.updateById(tjReservation);
                return AjaxResult.error("对不起您的预约已超时请重新预约");
            }
//            if (DateUtil.endOfDay(new Date()).before(tjReservation.getReservationTime())) {
//                return AjaxResult.error("未到预约时间");
//            }
//            if (DateUtil.endOfDay(tjReservation.getReservationTime()).before(new Date())) {
//                tjReservation.setIsExpire(1);
//                tjReservationService.updateById(tjReservation);
//                return AjaxResult.error("对不起您的预约已超时请重新预约");
//            }
            if (null != tjReservation.getTeamNo()) tjOrder.setTeamNo(tjReservation.getTeamNo());
            if (null != tjReservation.getCompanyId()) tjOrder.setFirmId(tjReservation.getCompanyId());
            if (null != tjReservation.getCompany()) tjOrder.setFirmName(tjReservation.getCompany());
            if (null != tjReservation.getDepartment()) tjOrder.setFirmDeptName(tjReservation.getDepartment());
            if (null != tjReservation.getJobNo()) tjOrder.setFirmWorkId(tjReservation.getJobNo());
            if (null != tjReservation.getPacId()) tjOrder.setPacId(tjReservation.getPacId());
@@ -1805,12 +1941,47 @@
            }
            tjReservation.setIsExpire(1);
            tjReservationService.updateById(tjReservation);
            if (null != tjReservation.getTeamNo()) {
                tjOrder.setTjType("1");
            } else{
                tjOrder.setTjType("2");
            }
            if (StringUtil.isBlank(tjOrder.getFirmId())) {
                tjOrder.setFirmId("0");
            }
//
//            tjReservation.setIsExpire(1);
//            tjReservationService.updateById(tjReservation);
            //生成体检号
            String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
//            String tjNumber = (sysUser.getUserName() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
//            tjNumber = tjNumber.replaceAll(".{6}$", userId.toString().substring(userId.toString().length() - 6));
            tjNumber = tjNumber.replaceAll(".{4}$", userId.toString().substring(userId.toString().length() - 4));
            //获取拼接前缀
            String makeLisTmhPrefix = configService.selectConfigByKey("make_lis_tmh_prefix");
//            String tjNumber = (sysUser.getUserName() + idUtils.getTjNumber());
            String tjNumber = idUtils.getTjNumber();
            if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
//            if (redisCache.hasKey(TJH)) {
//                while (true){
//                    List<String> tjh = redisCache.getCacheList(TJH);
//                    if(tjh.contains(tjNumber)){
//                        tjNumber =(sysUser.getUserName() + IdUtils.getTjNumber());
//                        if (StringUtil.isNotBlank(makeLisTmhPrefix)) tjNumber = makeLisTmhPrefix + tjNumber;
//                    }else {
//                        tjh.add(tjNumber);
//                    }
//                }
//            }else {
//                List<String> stringList = tjOrderService.
//                        list(new LambdaQueryWrapper<TjOrder>().select(TjOrder::getTjNumber)).stream().map(TjOrder::getTjNumber).collect(Collectors.toList());
//                stringList.add(tjNumber);
//                redisCache.setCacheList(TJH,stringList);
//            }
            tjOrder.setTjNumber(tjNumber);
            if (null != tjOrder.getPhoto()) {
                File file = new File(tjOrder.getPhoto());
@@ -1851,6 +2022,21 @@
                tjCustomer.setCusNumber(cusNumber);
//            BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10));
                TjFlowingWater tjFlowingWater = new TjFlowingWater();
                tjFlowingWater.setCreateTime(date);
                tjFlowingWater.setCreateTime(date);
                tjFlowingWater.setUpdateTime(date);
                tjFlowingWater.setCreateBy(sysUser.getNickName());
                tjFlowingWater.setUpdateBy(sysUser.getNickName());
//                BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNum(tjOrder.getTjNumber());
                BigDecimal bigDecimal = tbTransitionMapper.sumTbTransitionOrdPriceByTjNumIsNull(tjCustomer.getCusIdcard());
                tjFlowingWater.setCopeWith(bigDecimal);
//                BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNum(tjOrder.getTjNumber());
                BigDecimal bigDecimal1 = tbTransitionMapper.sumTbTransitionNowPriceByTjNumIsNull(tjCustomer.getCusIdcard());
                tjFlowingWater.setPaidIn(bigDecimal1);
                tjFlowingWater.setDiscount(String.valueOf(10));
                tjFlowingWater.setPayStasus(1L);
                tjFlowingWater.setPayType(3L);
                tjFlowingWater.setPayStasus(0L);
                if ("1".equals(tjOrder.getTjType())) {
                    if (tjReservation.getPayType() == 1) {
@@ -1899,18 +2085,38 @@
                if (tjFlowingWaterService.save(tjFlowingWater)) {
                    tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    tjOrderService.updateById(tjOrder);
                }
                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                transitionService.updateTbTransitionTjNumByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber());
                tjCustomer.setCardId(tjOrder.getTjNumber());
                tjCustomerService.updateById(tjCustomer);
                transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
                tjOrder.setCardId(tjOrder.getTjNumber());
                tjOrderService.updateById(tjOrder);
//                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                if (lisApiMethod.isUseLisAndPacsRegister(tjOrder)) {
                    // 这是上面个人方法引入数据
                    tjFlowingWater.setPayStasus(1L);
                    tjOrder.setTjFlowingWater(tjFlowingWater);
                    newSaveextracted(tjOrder, tjCustomer, BigDecimal.valueOf(10), sysUser, tjReservation, tjFlowingWater);
                    tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                            sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                    remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                    List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                    xdPictureService.saveBatch(xdPictureList);
                    List<TjOrderDetail> detailList = tjOrderDetailService.getCaiYangDengJi(tjOrder.getOrderId());
                    addCaiYangDengJi(detailList, !detailList.isEmpty(), tjOrder, sysUser, null);
//                    return AjaxResult.success(tjNumber);
                }
                tjCustomer.setCardId("0");
                tjCustomerService.updateById(tjCustomer);
                return AjaxResult.success().put("tjNumber", tjNumber);
            }
        }
        return AjaxResult.error();
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error().put("userId",userId);
    }
@@ -2000,10 +2206,10 @@
                    transitionService.saveRedisTransitionByPacId(cusId, cardId, pacId);
                    //补差价
                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if(null !=cjMaps && !cjMaps.isEmpty()){
                    List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if (null != cjMaps && !cjMaps.isEmpty()) {
                        for (Map<String, Object> cjMap : cjMaps) {
                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
                            transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                        }
                    }
@@ -2692,50 +2898,6 @@
    }
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
            tjOrderDetailService.saveJSYTjOrderDetailsByCusId(tjCustomer.getCusIdcard(),
                    String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId(), String.valueOf(tjFlowingWater.getTjSerialNumber()));
        } else {
            tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
        }
        tjOrderDetailService.saveTjPureToneTesByCusId(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), tjOrder.getCardId());
        //添加remark表数据
        if (null != tjOrder.getTjCategory() && tjOrder.getTjCategory().equals("13")) {
            remarkService.saveJSYTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
        } else {
            remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
        }
        //判断是否交钱
        if ("1".equals(tjOrder.getTjType())) {
            if (null != tjReservation && tjReservation.getPayType() == 1) {
                tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
                remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
                List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
                xdPictureService.saveBatch(xdPictureList);
            }
        }
        if (tjFlowingWater.getPayStasus() == 1L) {
            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
            tjFlowingWater.setPayType(4L);
            tjFlowingWaterService.updateById(tjFlowingWater);
            remarkService.updateTjOrderRemarkSfbzByJxbzisnull(tjOrder.getOrderId().toString(), tjFlowingWater.getTjSerialNumber().toString());
//            asyncService.addTjChargingStandard(tjOrder, transitionService.getTbTransitionListByCusId(tjCustomer.getCusIdcard(), tjOrder.getCardId()), sysUser);
            List<TjXdPicture> xdPictureList = xdPictureService.saveTjXdPicture(tjOrder.getTjNumber());
            xdPictureService.saveBatch(xdPictureList);
        }
    }
    public void ttextracted(TjOrder tjOrder, TjCustomer tjCustomer, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
@@ -2917,8 +3079,8 @@
            tjReport.setTjNumber(String.valueOf(tjNumber));
            tjReport.setPath(urlValue + outputFileName1);
            String outputPath1 = value + File.separator;
            String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
            tjReport.setReport(pdfBinary);
//            String pdfBinary = getPDFBinary(outputPath1 + outputFileName1);
//            tjReport.setReport(pdfBinary);
            tjReport.setType("体检报告");
            tjReport.setPrint("pdf");
            tjReportService.save(tjReport);
@@ -3217,7 +3379,7 @@
            for (int i = 0; i < tjNumbers.size(); i++) {
                String tjNumber = tjNumbers.get(i).getTjNumber();
                try {
                    List<Map<String, String>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                    List<Map<String, Object>> djdInfos = tjOrderService.selectDjdInfo(tjNumber);
                    Map<String, Object> userInfo = tjOrderService.selectDjdUserInfo(tjNumber);
                    LocalDateTime tjsj = (LocalDateTime) userInfo.get("tjsj");
                    DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@@ -3511,7 +3673,7 @@
                log.info("退费申请 入参 -> {}", JSONUtil.toJsonStr(map));
                String post = HttpClientUtils.sendPost(apiUrl + "/api/his/" + hospbm + "/creatCostInfo", map);
                log.info("退费申请 返回 -> {}", JSONUtil.toJsonStr(post));
                if(null !=post){
                if (null != post) {
                    JSONObject jsonObject = JSONUtil.parseObj(post);
                    if (jsonObject.getStr("code").equals("200")) {
                        // hisTfWaterId
@@ -3701,7 +3863,7 @@
                    }
                }
            }
            if(!list.isEmpty()) {
            if (!list.isEmpty()) {
                int i = tjReportService.deleteTjReportByReIds(list.toArray(new Long[]{}));
                if (i == 0) {
                    return AjaxResult.error("撤回失败!");
@@ -3757,14 +3919,14 @@
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return AjaxResult.error("操作失败! 以下项目已存在: " + string);
                }
                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString()) ;
                    //补差价
                    List<Map<String,Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                    if(null !=cjMaps && !cjMaps.isEmpty()){
                        for (Map<String, Object> cjMap : cjMaps) {
                            transitionService.buxiangmuchajia(cusId,pacId.toString(),cjMap.get("xmid").toString(),new BigDecimal(cjMap.get("cj").toString()));
                        }
                transitionService.ttsaveTemoTransitionByGroupingId(cusId, cardId, pacId.toString());
                //补差价
                List<Map<String, Object>> cjMaps = groupingProService.huoquxiangmuchajia(pacId.toString(), cusId);
                if (null != cjMaps && !cjMaps.isEmpty()) {
                    for (Map<String, Object> cjMap : cjMaps) {
                        transitionService.buxiangmuchajia(cusId, pacId.toString(), cjMap.get("xmid").toString(), new BigDecimal(cjMap.get("cj").toString()));
                    }
                }
            }
        }
@@ -3799,7 +3961,7 @@
//                }
//            }
//        }
        List<TbTransition> list= transitionService.newgetTransitionList(cusId);
        List<TbTransition> list = transitionService.newgetTransitionList(cusId);
        return AjaxResult.success(list);
    }
@@ -3808,33 +3970,43 @@
    @Transactional
    public AjaxResult updateTransitionnewPrice(@RequestBody List<UpdateTransitionnewPriceDto> dtos) {
        if(null !=dtos && !dtos.isEmpty()){
        if (null != dtos && !dtos.isEmpty()) {
            boolean flag = false;
            for (UpdateTransitionnewPriceDto dto : dtos) {
                LambdaQueryWrapper<TbTransition> wq=new LambdaQueryWrapper<>();
                wq.eq(TbTransition::getCusId,dto.getCusIdCard());
                wq.eq(TbTransition::getParentProId,dto.getParentProId());
                LambdaQueryWrapper<TbTransition> wq = new LambdaQueryWrapper<>();
                wq.eq(TbTransition::getCusId, dto.getCusIdCard());
                wq.eq(TbTransition::getParentProId, dto.getParentProId());
                wq.isNull(TbTransition::getTjNum);
                List<TbTransition> list = transitionService.list(wq);
                log.info("修改的客户身份证号为: "+dto.getCusIdCard());
                log.info("父项目id为: "+dto.getParentProId());
                log.info("折扣为: "+new BigDecimal(dto.getDiscount()));
                if(null !=list && !list.isEmpty()){
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId());
                log.info("修改的客户身份证号为: " + dto.getCusIdCard());
                log.info("父项目id为: " + dto.getParentProId());
                log.info("折扣为: " + new BigDecimal(dto.getDiscount()));
                if (null != list && !list.isEmpty()) {
                    for (TbTransition transition : list) {
                        BigDecimal ordPrice = transition.getOrdPrice();
                        BigDecimal multiply = ordPrice.multiply((new BigDecimal(dto.getDiscount()).divide(BigDecimal.valueOf(10))));
                        log.info("后端计算的金额: "+multiply);
                        log.info("后端计算的金额: " + multiply.toString());
                        transition.setNowPrice(multiply);
                        transition.setDiscount(new BigDecimal(dto.getDiscount()));
                        transitionService.updateById(transition);
                    }
                    if(null !=dto.getYhj() && dto.getYhj().compareTo(BigDecimal.ZERO)>=0){
                        List<TbTransition> transitionList = list.stream().filter(a ->
                                transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(),dto.getParentProId()).subtract(dto.getYhj()).compareTo(BigDecimal.ZERO) >= 0).collect(Collectors.toList());
                        if(!transitionList.isEmpty()){
                            TbTransition tbTransition = transitionList.get(0);
                            tbTransition.setNowPrice(dxzj);
                            transitionService.updateById(tbTransition);
                    BigDecimal dxzj = transitionService.getTbTransitionPriceAndOrdPrice(dto.getCusIdCard(), dto.getParentProId());
                    BigDecimal yhj = dto.getYhj();
                    log.info("前端传递的价格:{}",yhj.toString());
                    BigDecimal cj = yhj.subtract(dxzj);
                    log.info("计算的差价:{}",cj.toString());
                    for (TbTransition transition : list) {
                        BigDecimal result = transition.getNowPrice().add(cj);
                        log.info("补上差价前的价格为:{}",transition.getNowPrice().toString());
                        if (result.compareTo(BigDecimal.ZERO)>0 && !flag && cj.compareTo(BigDecimal.ZERO) != 0){
                            transition.setNowPrice(result);
                            transitionService.updateById(transition);
                            log.info("修改 补上差价后的价格为:{}",result.toString());
                            flag = true;
                            break;
                        }
                    }
                }
@@ -3844,5 +4016,37 @@
    }
    @PostMapping("/huifuyuyuejilu")
    @ApiOperation(value = "体检记录页面恢复预约记录接口")
    @Transactional
    public AjaxResult huifuyuyuejilu(@RequestBody List<String> tjNUms) {
        if (null != tjNUms && !tjNUms.isEmpty()) {
            for (String tjNUm : tjNUms) {
                TjOrder order = tjOrderService.getOrderByTjNum(tjNUm);
                if(null !=order && StringUtil.isNotBlank(order.getReservationId())){
                    //这里删除的是这个人所有项目包括补录项目
                    tjOrderService.deleteTjOrderByOrderId(order.getOrderId());
                    tjOrderDetailService.deleteTjOrderDetailByOrderDetailId(String.valueOf(order.getOrderId()));
                    remarkService.deletedOrderRemarkByTjNum(tjNUm);
                    tjFlowingWaterService.deleteTjFlowingWaterByOrderId(String.valueOf(order.getOrderId()));
//                transitionService.deletedTbTransitionByTjNum(tjNum);
                    tjSamplingMapper.deleteByTjNumAndCusId(order.getTjNumber(), order.getUserId());
                    TjReservation reservation = tjReservationService.getById(order.getReservationId());
                    if(null !=reservation){
                        reservation.setIsExpire(2);
                        tjReservationService.updateById(reservation);
                        transitionService.updateTbTransitionByTjNum(tjNUm);
                    }
                }
            }
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
}