zjh
2023-09-14 e9191e6d4485d94c75f76762b4926439503c20c6
ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjAsyncServiceImpl.java
@@ -76,123 +76,6 @@
    private ITjGroupingProService groupingProService;
    @Override
    @Async("async")
    public void extracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        long l = System.currentTimeMillis();
        LambdaQueryWrapper<TjAskMedicalHistory> wq=new LambdaQueryWrapper<>();
        wq.eq(TjAskMedicalHistory::getCusId,tjCustomer.getCusId());
        wq.isNull(TjAskMedicalHistory::getTjNum);
        TjAskMedicalHistory history = tjAskMedicalHistoryService.getOne(wq);
        if(null !=history){
            history.setTjNum(tjOrder.getTjNumber());
            tjAskMedicalHistoryService.updateById(history);
        }
        List<TbTransition> tbTransitionList =null;
        if (redisCache.hasKey(tjCustomer.getCusIdcard())) {
            tbTransitionList = redisCache.getCacheList(tjCustomer.getCusIdcard());
            redisCache.deleteObject(tjCustomer.getCusIdcard());
        }else {
            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
            wqq.eq(TbTransition::getCusId, tjCustomer.getCusIdcard());
            tbTransitionList = transitionService.list(wqq);
        }
        if (redisCache.hasKey(tjCustomer.getCusIdcard() + "cusId"))
            redisCache.deleteObject(tjCustomer.getCusIdcard() + "cusId");
        if (null != tbTransitionList && tbTransitionList.size() > 0) {
            //所有子项
            for (TbTransition transition : tbTransitionList) {
                TjOrderDetail detail = new TjOrderDetail();
                detail.setOrderId(tjOrder.getOrderId());
                detail.setProId(transition.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()));
                //获取该项目的默认值赋值给结果
                TjProject tjProject = projectService.selectTjProjectByProId(transition.getProId());
                if(null !=tjProject){
                    if(null !=tjProject.getProDefault()){
                        detail.setProResult(tjProject.getProDefault());
                    }else {
                        detail.setProResult(null);
                    }
                    detail.setIsSampling(String.valueOf(tjProject.getIsSampling()));
                }
                if (null != transition.getPacId()) {
                    detail.setProType(String.valueOf(transition.getPacId()));
                }
                tjOrderDetailService.save(detail);
                transition.setOrdPrice(transition.getNowPrice());
                transition.setNowPrice(transition.getNowPrice().multiply(discount));
                transitionService.updateById(transition);
            }
            //父项
            ArrayList<TbTransition> collect = tbTransitionList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(TbTransition::getParentProId))), ArrayList::new));
            for (TbTransition transition : collect) {
                TjOrderDetail detail = new TjOrderDetail();
                if (null != transition.getPacId()) {
                    detail.setProType(String.valueOf(transition.getPacId()));
                }
                TjProject tjProject = projectService.selectTjProjectByProId(transition.getParentProId());
                detail.setIsSampling(String.valueOf(tjProject.getIsSampling()));
                detail.setOrderId(tjOrder.getOrderId());
                detail.setProId(transition.getParentProId());
                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);
            }
        }
        LambdaQueryWrapper<TjOrderDetail> wrapper1 = new LambdaQueryWrapper<>();
        wrapper1.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
        List<TjOrderDetail> list = tjOrderDetailService.list(wrapper1);
        if (list != null && list.size()>0) {
            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);
            }
        }
        System.out.println("这段代码时间"+(l-System.currentTimeMillis()));
    }
    @Override
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        long l = System.currentTimeMillis();
@@ -268,76 +151,11 @@
    @Override
    @Async("async")
    public void ttextracted(TjOrder tjOrder, TjCustomer tjCustomer,SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        LambdaQueryWrapper<TjAskMedicalHistory> wq=new LambdaQueryWrapper<>();
        wq.eq(TjAskMedicalHistory::getCusId,tjCustomer.getCusId());
        wq.isNull(TjAskMedicalHistory::getTjNum);
        TjAskMedicalHistory history = tjAskMedicalHistoryService.getOne(wq);
        if(null !=history){
            history.setTjNum(tjOrder.getTjNumber());
            tjAskMedicalHistoryService.updateById(history);
        }
        List<TbTransition> tbTransitionList =null;
        if (redisCache.hasKey(tjCustomer.getCusIdcard())) {
            tbTransitionList = redisCache.getCacheList(tjCustomer.getCusIdcard());
            redisCache.deleteObject(tjCustomer.getCusIdcard());
        }else {
            LambdaQueryWrapper<TbTransition> wqq = new LambdaQueryWrapper<>();
            wqq.eq(TbTransition::getCusId, tjCustomer.getCusIdcard());
            tbTransitionList = transitionService.list(wqq);
        }
        if (redisCache.hasKey(tjCustomer.getCusIdcard() + "cusId"))
            redisCache.deleteObject(tjCustomer.getCusIdcard() + "cusId");
        if (null != tbTransitionList && tbTransitionList.size() > 0) {
            //所有子项
            for (TbTransition transition : tbTransitionList) {
                TjOrderDetail detail = new TjOrderDetail();
                detail.setOrderId(tjOrder.getOrderId());
                detail.setProId(transition.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()));
                //获取该项目的默认值赋值给结果
                TjProject tjProject = projectService.getById(transition.getProId());
                if(null !=tjProject){
                    if(null !=tjProject.getProDefault()){
                        detail.setProResult(tjProject.getProDefault());
                    }else {
                        detail.setProResult(null);
                    }
                    detail.setIsSampling(String.valueOf(tjProject.getIsSampling()));
                }
                if (null != transition.getPacId()) {
                    detail.setProType(String.valueOf(transition.getPacId()));
                }
                tjOrderDetailService.save(detail);
            }
            //父项
            ArrayList<TbTransition> collect = tbTransitionList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() ->
                    new TreeSet<>(Comparator.comparing(TbTransition::getParentProId))), ArrayList::new));
            for (TbTransition transition : collect) {
                TjOrderDetail detail = new TjOrderDetail();
                if (null != transition.getPacId()) {
                    detail.setProType(String.valueOf(transition.getPacId()));
                }
                TjProject tjProject = projectService.selectTjProjectByProId(transition.getParentProId());
                detail.setIsSampling(String.valueOf(tjProject.getIsSampling()));
                detail.setOrderId(tjOrder.getOrderId());
                detail.setProId(transition.getParentProId());
                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);
            }
        }else {
        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()));
        if (!b){
            List<TjGroupingPro> proList = groupingProService.list(new LambdaQueryWrapper<TjGroupingPro>().eq(TjGroupingPro::getGroupingId,tjOrder.getGroupId()));
            if(null !=proList && proList.size()>0){
                for (TjGroupingPro groupingPro : proList) {
@@ -384,39 +202,54 @@
            }
        }
        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);
        //添加remark表数据
        orderRemarkService.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()));
        }
//        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);
//            }
//        }
    }
    @Override
@@ -898,11 +731,7 @@
                        TbTransition tbTransition = new TbTransition();
                        tbTransition.setCusId(cusId);
                        tbTransition.setPacId(pacId);
//                        if (null != tjProject.getProPrice()) {
//                            tbTransition.setOrdPrice(tjProject.getProPrice());
//                        } else {
//                            tbTransition.setOrdPrice(BigDecimal.valueOf(0.00));
//                        }
                        if (null != tjPackageProject.getPriceNow() && divide.compareTo(BigDecimal.valueOf(0)) > 0) {
                            tbTransition.setNowPrice(tjProject.getProPrice().multiply(divide).setScale(2,RoundingMode.HALF_DOWN));
                            tbTransition.setOrdPrice(tjProject.getProPrice().multiply(divide).setScale(2,RoundingMode.HALF_DOWN));
@@ -923,6 +752,17 @@
                }
            }
        }
    }
    @Override
    @Async("async")
    public void saveRedisTransitionByPacId(String cusId, Long pacId,List<Long> proIds) {
        if(null != pacId){
            transitionService.saveRedisTransitionByPacId(cusId,pacId);
        }
        if(null != proIds && proIds.size() > 0){
            saveRedisTransitionByProId(cusId,proIds);
        }
    }
@@ -1454,4 +1294,15 @@
        }
        return cusName;
    }
    //临时表添加单项
    public void saveRedisTransitionByProId(String cusId, List<Long> proIds) {
        for (Long proId : proIds) {
            if (null != transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId)) && transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId)).size() > 0) {
                continue;
            }
            transitionService.saveRedisTransitionByProId(cusId,proId);
        }
    }
}