zhaowenxuan
2024-11-01 fe9f16a02c89eb6c5264c06bf76e748a0d809647
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -57,6 +57,7 @@
import com.ltkj.hosp.hisDto.OutpinimpapplyDto;
import com.ltkj.hosp.hisDto.OutpinmedicapplyDto;
import com.ltkj.hosp.mapper.TestMapper;
import com.ltkj.hosp.mapper.TjSamplingMapper;
import com.ltkj.hosp.pacsDto.SavePacsApply;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.sqlDomain.LtkjMiddleDetail;
@@ -72,9 +73,11 @@
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.mall.service.IMallCheckLogService;
import com.ltkj.mall.service.IMallOrderService;
import com.ltkj.system.domain.TjDjdDyjl;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.system.service.ISysDeptService;
import com.ltkj.system.service.ISysUserService;
import com.ltkj.system.service.ITjDjdDyjlService;
import com.ltkj.web.controller.his.*;
import com.ltkj.web.controller.lis.LisApiMethod;
import com.ltkj.web.controller.pacs.PacsApiMethodService;
@@ -212,6 +215,14 @@
    private HisPDFUtil hisPDFUtil;
    @Value("${path.reportServer}")
    private String urlValue;
    @Autowired
    private ITjSamplingService samplingService;
    @Autowired
    private TjSamplingMapper tjSamplingMapper;
    @Autowired
    private ITjGroupingProService groupingProService;
    @Autowired
    private ITjDjdDyjlService djdDyjlService;
    //将方法返回值解析成json格式
    public JSONObject getJSONObject(String builder) {
@@ -447,6 +458,8 @@
                                order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName());
                            }
                        }
                        TjDjdDyjl dycs = djdDyjlService.getDjdDyCsByTjNum(order.getTjNumber());
                        if(null !=dycs)order.setDycs(Math.toIntExact(dycs.getDycs()));
                    }
                    collect = list.stream().skip((long) (pageNum - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
                }
@@ -505,6 +518,8 @@
                        order.setPacName(dwDeptService.getById(order.getPacId()).getDwDeptName());
                    }
                }
                TjDjdDyjl dycs = djdDyjlService.getDjdDyCsByTjNum(order.getTjNumber());
                if(null !=dycs)order.setDycs(Math.toIntExact(dycs.getDycs()));
            }
        }
        map.put("list", list);
@@ -875,13 +890,12 @@
    }
    /**
     * 体检签到登记接口
     */
    ReentrantLock lock=new ReentrantLock();
    ReentrantLock lock = new ReentrantLock();
    @PostMapping
    @ApiOperation(value = "体检签到登记接口")
@@ -938,9 +952,9 @@
            //            if (null != tjReservation.getDepartmentId()) tjOrder.setFirmDeptId(tjReservation.getDepartmentId());
            tjReservation.setIsExpire(1);
            tjReservationService.updateById(tjReservation);
            if (null != tjReservation.getTeamNo()) {
            if (null != tjReservation.getTeamNo() && tjOrder.getTjType().equals("1")) {
                tjOrder.setTjType("1");
            } else {
            } else if (tjOrder.getTjType().equals("2")) {
                tjOrder.setTjType("2");
            }
        }
@@ -977,144 +991,160 @@
        try {
            boolean b = lock.tryLock(3, TimeUnit.MINUTES);
            if(b){
                //生成体检号
                String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
                tjOrder.setTjNumber(tjNumber);
                if (tjOrderService.save(tjOrder)) {
                    //保存收货地址
                    if ("2".equals(tjOrder.getGetType())) {
                        final TjReportGetAddress address = tjOrder.getAddAddress();
                        if (address != null) {
                            address.setTjNumber(tjNumber);
                            tjReportGetAddressService.save(address);
                        }
                    }
                    Long cusNumber = tjCustomer.getCusNumber();
                    cusNumber += 1;
                    tjCustomer.setCusNumber(cusNumber);
                    BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
                    if ("1".equals(tjOrder.getTjType())) {
                        if (null != tjReservation && tjReservation.getPayType() == 1) {
                            tjFlowingWater.setPayStasus(3L);
                        }
                    }
                    //调用SQL server拿取收费情况
                    //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
                    final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
                    final String isPay = configService.selectConfigByKey("isPay");
                    if ("Y".equals(getInfoFromSqlData)) {
                        LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
                        if (null != middleHead) {
                            tjFlowingWater.setPayStasus(1L);
                        }
                    }
                    tjFlowingWater.setOrderId(tjOrder.getOrderId());
                    Date date1 = new Date(System.currentTimeMillis());
                    String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
                    tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
                    tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
                    tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
                    tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
                    if (isPay.equals("true")) {
                        if (null != mallOrder) {
                            if (mallOrder.getOrderStatus().equals(201L)) {
                                tjFlowingWater.setCopeWith(mallOrder.getActualPrice());
                                tjFlowingWater.setPaidIn(mallOrder.getActualPrice());
                                tjFlowingWater.setDiscount(String.valueOf(1));
                                tjFlowingWater.setPayStasus(1L);
                                tjFlowingWater.setPayType(3L);
                                MallCheckLog checkLog = new MallCheckLog();
                                checkLog.setCheckBy(sysUser.getNickName());
                                checkLog.setUserId(mallOrder.getUserId());
                                checkLog.setConsignee(mallOrder.getConsignee());
                                checkLog.setIdCard(mallOrder.getIdCard());
                                checkLog.setOrderId(String.valueOf(mallOrder.getId()));
                                checkLog.setOrderSn(mallOrder.getOrderSn());
                                checkLog.setCheckTime(new Date());
                                checkLog.setShipSn("HX" + s1);
                                mallCheckLogService.save(checkLog);
                                mallOrder.setOrderStatus(301L);
                                mallOrderService.updateById(mallOrder);
                            }
                        } else {
                            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
                            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
                            tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
    //                    tjFlowingWater.setPayStasus(0L);
                        }
                    }
                    if (tjFlowingWaterService.save(tjFlowingWater)) {
                        tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                        tjOrderService.updateById(tjOrder);
                    }
                    //修改每项的原价现价 //修改临时表体检号
                    transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
                    /*调用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());
                            }
                            log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId());
                            return AjaxResult.error("挂号失败!" + result.get("msg").toString());
                        }
                        log.info("该登记人的his就诊号是: " + tjOrder.getCardId());
                        //团体
                        if ("1".equals(tjOrder.getTjType())) {
                            asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                        }
                        //个人
                        if ("2".equals(tjOrder.getTjType())) {
                            //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                            newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                        }
                        // 查询 对接Lis、Pacs申请如果类型包含在配置内则使用对接lis、pacs
//                        if (isUseLisAndPacsRegister(tjOrder)) {
//                          hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"),tjOrder,sysUser,result);
//                        }else {
//                            hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
//                        }
                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                        return AjaxResult.success(tjNumber);
                    } else {
                        tjCustomer.setCardId(tjOrder.getTjNumber());
                        tjCustomerService.updateById(tjCustomer);
                        transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
                        tjOrder.setCardId(tjOrder.getTjNumber());
                        tjOrderService.updateById(tjOrder);
                    }
                    //团体
                    if ("1".equals(tjOrder.getTjType())) {
                        asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                    }
                    //个人
                    if ("2".equals(tjOrder.getTjType())) {
                        //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                        newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    }
                    return AjaxResult.success(tjNumber);
                }
                return AjaxResult.error();
            if (b) {
                AjaxResult result = processOrderWithTransaction(tjOrder, tjCustomer, tjReservation, tjFlowingWater, mallOrder, sysUser);
                if (!result.get("code").toString().equals("200"))
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return result;
            }
        } finally {
            lock.unlock();
        }
        return AjaxResult.error();
    }
    @Transactional(propagation = Propagation.REQUIRES_NEW, isolation = Isolation.READ_COMMITTED)
    public AjaxResult processOrderWithTransaction(TjOrder tjOrder, TjCustomer tjCustomer, TjReservation tjReservation, TjFlowingWater tjFlowingWater, MallOrder mallOrder, SysUser sysUser) {
        //生成体检号
        String tjNumber = (SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmss").format(new Date()));
        tjOrder.setTjNumber(tjNumber);
        if (tjOrderService.save(tjOrder)) {
            //保存收货地址
            if ("2".equals(tjOrder.getGetType())) {
                final TjReportGetAddress address = tjOrder.getAddAddress();
                if (address != null) {
                    address.setTjNumber(tjNumber);
                    tjReportGetAddressService.save(address);
                }
            }
            Long cusNumber = tjCustomer.getCusNumber();
            cusNumber += 1;
            tjCustomer.setCusNumber(cusNumber);
            BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount()));
            if ("1".equals(tjOrder.getTjType())) {
                if (null != tjReservation && tjReservation.getPayType() == 1) {
                    tjFlowingWater.setPayStasus(3L);
                }
            }
            //调用SQL server拿取收费情况
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
            final String isPay = configService.selectConfigByKey("isPay");
            if ("Y".equals(getInfoFromSqlData)) {
                LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
                if (null != middleHead) {
                    tjFlowingWater.setPayStasus(1L);
                }
            }
            tjFlowingWater.setOrderId(tjOrder.getOrderId());
            Date date1 = new Date(System.currentTimeMillis());
            String s1 = SecurityUtils.getUsername() + new SimpleDateFormat("yyMMddHHmmssSSS").format(date1);
            tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
            tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
            tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
            tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
            if (isPay.equals("true")) {
                if (null != mallOrder) {
                    if (mallOrder.getOrderStatus().equals(201L)) {
                        tjFlowingWater.setCopeWith(mallOrder.getActualPrice());
                        tjFlowingWater.setPaidIn(mallOrder.getActualPrice());
                        tjFlowingWater.setDiscount(String.valueOf(1));
                        tjFlowingWater.setPayStasus(1L);
                        tjFlowingWater.setPayType(3L);
                        MallCheckLog checkLog = new MallCheckLog();
                        checkLog.setCheckBy(sysUser.getNickName());
                        checkLog.setUserId(mallOrder.getUserId());
                        checkLog.setConsignee(mallOrder.getConsignee());
                        checkLog.setIdCard(mallOrder.getIdCard());
                        checkLog.setOrderId(String.valueOf(mallOrder.getId()));
                        checkLog.setOrderSn(mallOrder.getOrderSn());
                        checkLog.setCheckTime(new Date());
                        checkLog.setShipSn("HX" + s1);
                        mallCheckLogService.save(checkLog);
                        mallOrder.setOrderStatus(301L);
                        mallOrderService.updateById(mallOrder);
                    }
                } else {
                    tjFlowingWater.setCopeWith(tjOrder.getTjFlowingWater().getCopeWith());
                    tjFlowingWater.setPaidIn(tjOrder.getTjFlowingWater().getPaidIn());
                    tjFlowingWater.setDiscount(tjOrder.getTjFlowingWater().getDiscount());
                    //                    tjFlowingWater.setPayStasus(0L);
                }
            }
            if (tjFlowingWaterService.save(tjFlowingWater)) {
                tjOrder.setTjSerialNumber(String.valueOf(tjFlowingWater.getTjSerialNumber()));
                tjOrderService.updateById(tjOrder);
            }
            //修改每项的原价现价 //修改临时表体检号
            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount, tjOrder.getTjNumber());
            /*调用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());
                    }
                    log.info("该登记人挂号失败, 就诊号为: " + tjOrder.getCardId());
                    return AjaxResult.error("挂号失败!" + result.get("msg").toString());
                }
                log.info("该登记人的his就诊号是: " + tjOrder.getCardId());
                //团体
                if ("1".equals(tjOrder.getTjType())) {
//                            asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                    ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                }
                //个人
                if ("2".equals(tjOrder.getTjType())) {
                    //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                    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()));
                } else {
                    hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                }
//                        hisApiMethod.tijianshenqing(tjCustomer, DateUtil.format(date1, "yyyy-MM-dd HH:mm:ss"), tjOrder.getCardId());
                return AjaxResult.success(tjNumber);
            } else {
                tjCustomer.setCardId(tjOrder.getTjNumber());
                tjCustomerService.updateById(tjCustomer);
                transitionService.updateCardIdByTjNumAndIdCard(tjCustomer.getCusIdcard(), tjOrder.getTjNumber(), tjOrder.getTjNumber());
                tjOrder.setCardId(tjOrder.getTjNumber());
                tjOrderService.updateById(tjOrder);
            }
            //团体
            if ("1".equals(tjOrder.getTjType())) {
//                        asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
                asyncService.ttextracted(tjOrder, tjCustomer, sysUser, tjReservation, tjFlowingWater);
            }
            //个人
            if ("2".equals(tjOrder.getTjType())) {
                //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
            }
            return AjaxResult.success(tjNumber);
        }
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return AjaxResult.error();
    }
@@ -1575,7 +1605,7 @@
        if (null != tjCustomer) {
            cardId = tjCustomer.getCardId();
        }
        if ((null == proIds || proIds.size() == 0) && (null == packId || packId.equals(""))) {
        if ((null == proIds || proIds.isEmpty()) && (null == packId || packId.equals(""))) {
            transitionService.deletedTbTransitionByCusId(cusId);
            if (redisCache.hasKey(cardId + cusId)) {
                redisCache.deleteObject(cardId + cusId);
@@ -1808,6 +1838,7 @@
                    }
                }
            }
            remarkService.updateRemark(tjNumber);
            asyncService.tjGoutAsync(domainVos, sysUser, list);
            TjCustomer customer = tjCustomerService.selectTjCustomerByCusId(tjOrder.getUserId());
@@ -1844,6 +1875,7 @@
            }*/
            return AjaxResult.success("签离成功!");
        } else {
            remarkService.updateRemark(tjNumber);
            return getAjaxResult(tjNumber);
        }
    }
@@ -2276,6 +2308,7 @@
        return AjaxResult.success().put("data", map);
    }
    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")) {
@@ -2313,6 +2346,111 @@
        }
    }
    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()));
        boolean b = tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(),
                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()) {
                for (TjGroupingPro groupingPro : proList) {
                    TjOrderDetail detail = new TjOrderDetail();
                    TjProject tjProject = projectService.selectTjProjectByProId(Long.valueOf(groupingPro.getProId()));
                    detail.setIsSampling(String.valueOf(tjProject.getIsSampling()));
                    detail.setOrderId(tjOrder.getOrderId());
                    detail.setProId(Long.valueOf(groupingPro.getProId()));
                    detail.setTjStatus(0L);
                    detail.setCreateBy(sysUser.getNickName());
                    detail.setCreateTime(new Date());
                    detail.setUpdateBy(sysUser.getNickName());
                    detail.setUpdateTime(new Date());
                    detail.setCreateId(String.valueOf(sysUser.getUserId()));
                    detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                    tjOrderDetailService.save(detail);
                }
                List<String> list = proList.stream().map(TjGroupingPro::getProId).collect(Collectors.toList());
                List<TjProject> projectList = projectService.list(new LambdaQueryWrapper<TjProject>().in(TjProject::getProParentId, list));
                for (TjProject project : projectList) {
                    TjOrderDetail detail = new TjOrderDetail();
                    detail.setOrderId(tjOrder.getOrderId());
                    detail.setProId(project.getProId());
                    detail.setTjStatus(0L);
                    detail.setCreateBy(sysUser.getNickName());
                    detail.setCreateTime(new Date());
                    detail.setUpdateBy(sysUser.getNickName());
                    detail.setUpdateTime(new Date());
                    detail.setCreateId(String.valueOf(sysUser.getUserId()));
                    detail.setUpdateId(String.valueOf(sysUser.getUserId()));
                    //获取该项目的默认值赋值给结果
                    if (null != project.getProDefault()) {
                        detail.setProResult(project.getProDefault());
                    } else {
                        detail.setProResult(null);
                    }
                    detail.setIsSampling(String.valueOf(project.getIsSampling()));
                    tjOrderDetailService.save(detail);
                }
            }
        }
        //添加remark表数据
        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()));
            }
        }
        if (tjFlowingWater.getPayStasus() == 1) {
            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
        }
        if (tjFlowingWater.getDiscount() == null) {
            transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), new BigDecimal(10), tjOrder.getTjNumber());
        } else {
            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());
//        List<TjOrderDetail> list = tjOrderDetailService.getTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()));
//        if (list != null) {
//            for (TjOrderDetail tjOrderDetail : list) {
//                TjProject tjProject = projectService.getById(tjOrderDetail.getProId());
//                if(tjProject==null){
//                    continue;
//                }
//                tjOrderDetail.setProject(tjProject);
//                if (tjProject.getProParentId() == 0) {
//                    TjOrderRemark tjOrderRemark = new TjOrderRemark();
//                    tjOrderRemark.setProId(tjProject.getProId());
//                    tjOrderRemark.setProName(tjProject.getProName());
//                    tjOrderRemark.setDeptId(tjProject.getDeptId());
//                    tjOrderRemark.setTjNumber(tjOrder.getTjNumber());
//                    tjOrderRemark.setCreateBy(sysUser.getNickName());
//                    tjOrderRemark.setCreateTime(new Date());
//                    tjOrderRemark.setUpdateBy(sysUser.getNickName());
//                    tjOrderRemark.setUpdateTime(new Date());
//                    tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
//                    tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
//                    orderRemarkService.save(tjOrderRemark);
//                }
//                if ("1".equals(tjOrder.getTjType())) {
//                    if (null != tjReservation && tjReservation.getPayType() == 1) {
//                        tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
//                    }
//                }
//                if(tjFlowingWater.getPayStasus()==1){
//                    tjOrderDetail.setFlowingWaterId(String.valueOf(tjFlowingWater.getTjSerialNumber()));
//                }
//                tjOrderDetailService.updateById(tjOrderDetail);
//            }
//        }
    }
    @PostMapping("/heXiaoByIds/{orderIds}")
    @ApiOperation(value = "核收报告——————总检审核通过后可以核销,核收后才能打印")
@@ -2551,6 +2689,7 @@
            customer.setCardId("0");
            tjCustomerService.updateById(customer);
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            tjSamplingMapper.deleteByTjNumAndCusId(tjNum, order.getUserId());
            if (configByKey.equals("Y")) {
                HashMap<String, Object> hisRequestParams = new HashMap<>();
@@ -2569,7 +2708,7 @@
                        return AjaxResult.error("撤销失败,该人员已缴费,请先退费!");
                    }
                }
                boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order,lisApiMethod.isUseLisAndPacsRegister(order));
                boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order, lisApiMethod.isUseLisAndPacsRegister(order));
                if (zfHisApiMethods) {
                    return AjaxResult.success("撤销成功");
                } else {
@@ -2578,7 +2717,6 @@
                }
            }
            return AjaxResult.success("撤销成功!!!");
        }
        return AjaxResult.success("签到记录不存在!");
    }
@@ -2716,7 +2854,7 @@
    public AjaxResult revokeTjOrderByTjCardId(@RequestParam @ApiParam(value = "就诊号") String cardId) {
        LambdaQueryWrapper<TjOrder> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(TjOrder::getCardId,cardId);
        queryWrapper.eq(TjOrder::getCardId, cardId);
        TjOrder order = tjOrderService.getOne(queryWrapper);
        order.setCardId(cardId);
        String configByKey = configService.selectConfigByKey("sfkqdyhis");
@@ -2737,7 +2875,7 @@
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                return AjaxResult.error("撤销失败,门诊患者费用清单信息不为空");
            } else {
                boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order,lisApiMethod.isUseLisAndPacsRegister(order));
                boolean zfHisApiMethods = hisApiMethod.ZfHisApiMethods(null, order, lisApiMethod.isUseLisAndPacsRegister(order));
                if (zfHisApiMethods) {
                    return AjaxResult.success("撤销成功", map);
                } else {
@@ -2807,10 +2945,11 @@
    @PostMapping("/revokeBlProByBldhAndTjh")
    @ApiOperation(value = "根据补录单号和体检号删除记录")
    @Transactional
//    @Transactional
    public AjaxResult revokeBlProByBldhAndTjh(@RequestBody TjProBlDto dto) {
        if (null == dto.getBldhs() || dto.getBldhs().size() == 0) {
            log.info("请选择要撤销的补录项目");
            return AjaxResult.error("请选择要撤销的补录项目");
        }
@@ -2818,42 +2957,66 @@
        if (null != order) {
            String configByKey = configService.selectConfigByKey("sfkqdyhis");
            if (null != configByKey && configByKey.equals("Y")) {
                log.info("dto的数据是" + JSONUtil.toJsonStr(dto));
                HashMap<String, Object> hisRequestParams = new HashMap<>();
                hisRequestParams.put("patientId", order.getCardId());
                AjaxResult queryPay = hisApiGetMethodService.getHISDataNew("QueryPay", hisRequestParams);
                log.info("queryPay ->{}", JSONUtil.toJsonStr(queryPay));
                if (Integer.parseInt(queryPay.get("code").toString()) == 200) {
                    List<Map<String, String>> data = (List<Map<String, String>>) queryPay.get("data");
                    BigDecimal cateFeeAll = BigDecimal.ZERO;
                    List<String> advIds = new ArrayList<>();
                    for (Map<String, String> datum : data) {
                        String advId = datum.get("Adv_Id").split("_")[1];
                        BigDecimal cateFee = new BigDecimal(datum.get("CateFee"));
                        cateFeeAll = cateFeeAll.add(cateFee);
                        advIds.add(advId);
                    log.info("data的数据是" + JSONUtil.toJsonStr(data));
//                    BigDecimal cateFeeAll = BigDecimal.ZERO;
//                    List<String> advIds = new ArrayList<>();
                    List<LtkjJianchajianyanTree> buLuXmXinXi = tjOrderService.getBuLuXmXinXi(dto.getBldhs(), order.getCardId());
                    log.info("buLuXmXinXi的值为:==========" + buLuXmXinXi);
                    if (null != buLuXmXinXi && !buLuXmXinXi.isEmpty()) {
                        for (Map<String, String> datum : data) {
                            for (LtkjJianchajianyanTree tree : buLuXmXinXi) {
                                String advId = datum.get("Adv_Id").split("_")[1];
                                log.info("advid的值为:==========" + advId);
                                log.info("tree的值为:==========" + advId);
                                BigDecimal cateFee = new BigDecimal(datum.get("CateFee"));
                                log.info("cateFee的值为:==========" + cateFee);
                                log.info("tree.getFyhj()的值为:==========" + tree.getFyhj());
                                if (tree.getSqdh().equals(advId) && cateFee.compareTo(new BigDecimal(tree.getFyhj())) == 0) {
                                    log.info("该项目已缴费不可撤销");
                                    return AjaxResult.error("该项目已缴费不可撤销!!!");
                                }
                            }
                        }
                    }
                    if (advIds.containsAll(dto.getBldhs()) && cateFeeAll.compareTo(BigDecimal.ZERO) != 0) {
                        return AjaxResult.error("改项目已缴费不可撤销!!!");
                    }
                }
                boolean b = hisApiMethod.ZfBlXm(dto.getBldhs(), order);
                if (!b) {
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
//                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    log.info("撤销失败,调用作废出现失败");
                    return AjaxResult.error("撤销失败,调用作废出现失败");
                }
            }
            for (String bldh : dto.getBldhs()) {
                remarkService.deleteTjOrderDetailByjxbz(bldh);
                tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
                tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
                transitionService.deleteTjOrderDetailByjxbz(bldh);
                blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh));
            try {
                extracted(dto, order);
            } catch (Exception e) {
                log.info("撤销失败,删除表失败");
                return AjaxResult.error("撤销失败,删除表失败!");
            }
            return AjaxResult.success();
        }
        return AjaxResult.error();
    }
    //    @Transactional(propagation =Propagation.REQUIRES_NEW)
    public void extracted(TjProBlDto dto, TjOrder order) {
        for (String bldh : dto.getBldhs()) {
            remarkService.deleteTjOrderDetailByjxbz(bldh);
            tjOrderDetailService.deleteTjOrderDetailByjxbz(bldh);
            tjFlowingWaterService.deleteTjOrderDetailByjxbz(bldh);
            transitionService.deleteTjOrderDetailByjxbz(bldh);
            blService.remove(new LambdaQueryWrapper<TjProBl>().eq(TjProBl::getTjh, dto.getTjh()).eq(TjProBl::getBldh, bldh));
        }
        tjSamplingMapper.deleteByTjNumAndCusIdAndJxbz(dto.getTjh(), order.getUserId(), dto.getBldhs());
    }
    @PostMapping("/addYaoPinShenQing")
    @ApiOperation(value = "药品信息申请")