zjh
2023-12-27 7077fa8ff7f18b2991deafaba9f9dc65d1d27f51
ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjOrderController.java
@@ -348,9 +348,12 @@
                    for (TjOrder order : list) {
                        TjCustomer tjCustomer = tjCustomerService.getById(order.getUserId());
                        if (null != tjCustomer) {
                            order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
                            order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone()));
                            order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard()));
//                            order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
                            order.setTjCustomerName(tjCustomer.getCusName());
//                            order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone()));
                            order.setTjCustomerPhone(tjCustomer.getCusPhone());
//                            order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard()));
                            order.setTjCusIdCard(tjCustomer.getCusIdcard());
                            order.setTjCustomerSex(tjCustomer.getCusSex());
                            order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                            order.setCareer(tjCustomer.getCareer());
@@ -404,8 +407,10 @@
                    order.setTjCustomerSex(tjCustomer.getCusSex());
                    order.setTjCustomerAge(DateUtil.ageOfNow(tjCustomer.getCusBrithday()));
                    order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
                    order.setTjCustomerName(MatchUtils.hideCusName(tjCustomer.getCusName()));
                    order.setTjCustomerPhone(MatchUtils.hidePhoneNum(tjCustomer.getCusPhone()));
                    order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard()));
//                    order.setTjCusIdCard(MatchUtils.hideIdCardNum(tjCustomer.getCusIdcard()));
                    order.setTjCusIdCard(tjCustomer.getCusIdcard());
                    order.setCareer(tjCustomer.getCareer());
                    order.setIdType(tjCustomer.getIdType());
                    order.setAgeUnit(tjCustomer.getAgeUnit());
@@ -791,22 +796,28 @@
     */
    @PostMapping
    @ApiOperation(value = "体检签到登记接口")
    //@Transactional  (切换数据库出错,所以注释)
    @Transactional  //(切换数据库出错,所以注释)
    public AjaxResult addOrderAndDetail(@RequestBody TjOrder tjOrder) throws Exception {
        Long userId = Long.valueOf(SecurityUtils.getLoginUser().getUserId());
        SysUser sysUser = userService.getById(userId);
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusId, tjOrder.getUserId());
        TjCustomer tjCustomer = tjCustomerService.getOne(wq);
        if (tjCustomer == null) return AjaxResult.error("该客户未登记或不存在");
        LambdaQueryWrapper<TjOrder> wqq = new LambdaQueryWrapper<>();
        wqq.eq(TjOrder::getUserId, tjOrder.getUserId());
        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("不可重复登记");
        }
        LambdaQueryWrapper<TjCustomer> wq = new LambdaQueryWrapper<>();
        wq.eq(TjCustomer::getCusId, tjOrder.getUserId());
        TjCustomer tjCustomer = tjCustomerService.getOne(wq);
        if (tjCustomer == null) return AjaxResult.error("该客户未签到或不存在");
        LambdaQueryWrapper<TjReservation> wq1 = new LambdaQueryWrapper<>();
        wq1.eq(TjReservation::getIdCard, tjCustomer.getCusIdcard());
        wq1.eq(TjReservation::getIsExpire, 2);
@@ -864,6 +875,7 @@
        //判断小程序上预约是否付钱
        if (null != mallOrder) tjOrder.setMallOrderId(String.valueOf(mallOrder.getId()));
        tjOrder.setStatus(TjConstants.TJ_BEGIN);
        tjOrder.setCardId(tjCustomer.getCardId());
        if (tjOrderService.save(tjOrder)) {
            //保存收货地址
            if ("2".equals(tjOrder.getGetType())){
@@ -876,9 +888,9 @@
            Long cusNumber = tjCustomer.getCusNumber();
            cusNumber += 1;
            tjCustomer.setCusNumber(cusNumber);
            tjCustomerService.updateById(tjCustomer);
            BigDecimal discount = BigDecimal.valueOf(Double.parseDouble(tjOrder.getTjFlowingWater().getDiscount())).divide(BigDecimal.valueOf(10));
            TjFlowingWater tjFlowingWater = new TjFlowingWater();
            tjFlowingWater.setPayStasus(0L);
            if ("1".equals(tjOrder.getTjType())) {
                if (null != tjReservation && tjReservation.getPayType() == 1) {
                    tjFlowingWater.setPayStasus(3L);
@@ -888,66 +900,44 @@
            //调用SQL server拿取收费情况
            //根据配置调取存储过程 将临时表数据存入预约表2023.12.12
            final String getInfoFromSqlData = configService.selectConfigByKey("getInfoFromSqlData");
            final String isPay = configService.selectConfigByKey("isPay");
            if ("Y".equals(getInfoFromSqlData)){
                //查询是否his已收费  若收费则将流水表收费状态改成已收费
                LambdaQueryWrapper<LtkjMiddleHead> middleHeadLambdaQueryWrapper =new LambdaQueryWrapper<>();
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getPatId,tjCustomer.getCusIdcard());
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getIsCanceled,"N");
                middleHeadLambdaQueryWrapper.eq(LtkjMiddleHead::getIsChg,"Y");
                LtkjMiddleHead middleHead = headService.getOne(middleHeadLambdaQueryWrapper);
                LtkjMiddleHead middleHead = headService.getMiddleHeadByPartId(tjCustomer.getCardId());
                if(null !=middleHead){
                    tjFlowingWater.setPayStasus(1L);
                }
                List<LtkjMiddleHead> one = testMapper.saveMiddleHeadByPatId(tjCustomer.getCusIdcard());
                if (one!=null){
                    for (LtkjMiddleHead ltkjMiddleHead : one) {
                        DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                        headService.save(ltkjMiddleHead);
                        DynamicDataSourceContextHolder.clearDataSourceType();
                        List<LtkjMiddleDetail> detailList = testMapper.getMiddleDetailByHeadId(ltkjMiddleHead.getFeadId());
                        if (detailList!=null){
                            for (LtkjMiddleDetail ltkjMiddleDetail : detailList) {
                                DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.MASTER.name());
                                middleDetailService.save(ltkjMiddleDetail);
                                DynamicDataSourceContextHolder.clearDataSourceType();
                            }
                        }
                    }
                }
            }
            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(), "") + s1);
            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);
            tjFlowingWater.setWaterId(PinyinUtil.getFirstLetter(tjCustomer.getCusName(), "").toUpperCase() + s1);
            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);
                }
            } 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()));
@@ -963,7 +953,7 @@
            //个人
            if ("2".equals(tjOrder.getTjType())) {
//                asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                //asyncService.newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
                newSaveextracted(tjOrder, tjCustomer, discount, sysUser, tjReservation, tjFlowingWater);
            }
@@ -989,7 +979,8 @@
//
//                }
//            }
            tjCustomer.setCardId("0");
            tjCustomerService.updateById(tjCustomer);
            return AjaxResult.success(tjNumber);
        }
        return AjaxResult.error();
@@ -1052,28 +1043,33 @@
        if (null != proIds1 && !proIds1.equals("")) {
            proIds = JSON.parseArray(proIds1.toString(), Long.class);
        }
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId);
        String cardId ="0";
        if(null !=tjCustomer){
             cardId = tjCustomer.getCardId();
        }
        if ((null == proIds || proIds.size() == 0) && (null == packId || packId.equals(""))) {
            transitionService.deletedTbTransitionByCusId(cusId);
            if (redisCache.hasKey(cusId)) redisCache.deleteObject(cusId);
            if (redisCache.hasKey(cusId + "cusId")) redisCache.deleteCacheMapValue(cusId + "cusId", cusId);
            if (redisCache.hasKey(cardId+cusId + "cusId")) redisCache.deleteCacheMapValue(cardId+cusId + "cusId", cardId+cusId);
        }
        List<TbTransition> tbTransitionList = null;
        if (!redisCache.hasKey(cusId)) {
        if (!redisCache.hasKey(cardId+cusId)) {
            tbTransitionList = new ArrayList<>();
        } else {
            tbTransitionList = redisCache.getCacheList(cusId);
            tbTransitionList = redisCache.getCacheList(cardId+cusId);
        }
        //套餐
        if (null != packId && !packId.equals("")) {
            Long pacId = Long.valueOf(packId.toString());
            List<TbTransition> list = transitionService.getTbTransitionListByCusIdAndPac(cusId, String.valueOf(pacId));
            if (null == list || list.size() == 0) {
                transitionService.deletedTbTransitionListByCusIdAndPac(cusId);
                if (redisCache.hasKey(cusId + "cusId")) redisCache.deleteCacheMapValue(cusId + "cusId", cusId);
                if (redisCache.hasKey(cusId)) {
                transitionService.deletedTbTransitionListByCusIdAndPac(cusId,cardId);
                if (redisCache.hasKey(cardId+cusId + "cusId")) redisCache.deleteCacheMapValue(cardId+cusId + "cusId", cardId+cusId);
                if (redisCache.hasKey(cardId+cusId)) {
                    tbTransitionList = new ArrayList<>();
                    redisCache.deleteObject(cusId);
                    redisCache.deleteObject(cardId+cusId);
                }
                List<TjPackageProject> ppList = tjPackageProjectService.getTjPackageProjectListByPacId(String.valueOf(pacId));
                if (null != ppList && ppList.size() > 0) {
@@ -1163,13 +1159,13 @@
            }
        }
        if (null != tbTransitionList && tbTransitionList.size() > 0) {
            if (redisCache.hasKey(cusId)) {
                redisCache.deleteObject(cusId);
                redisCache.setCacheList(cusId, tbTransitionList);
                redisCache.setCacheMapValue(cusId + "cusId", cusId, getMaps(cusId));
            if (redisCache.hasKey(cardId+cusId)) {
                redisCache.deleteObject(cardId+cusId);
                redisCache.setCacheList(cardId+cusId, tbTransitionList);
                redisCache.setCacheMapValue(cardId+cusId + "cusId", cardId+cusId, getMaps(cusId,cardId));
            } else {
                redisCache.setCacheList(cusId, tbTransitionList);
                redisCache.setCacheMapValue(cusId + "cusId", cusId, getMaps(cusId));
                redisCache.setCacheList(cardId+cusId, tbTransitionList);
                redisCache.setCacheMapValue(cardId+cusId + "cusId", cardId+cusId, getMaps(cusId,cardId));
            }
        }
        return AjaxResult.success();
@@ -1183,7 +1179,12 @@
            List<Map<String, Object>> list = redisCache.getCacheMapValue(cusId + "cusId", cusId);
            return AjaxResult.success(list);
        }
        List<Map<String, Object>> list = getMaps(cusId);
        TjCustomer tjCustomer = tjCustomerService.getTjCustomerByCusIdCard(cusId);
        String cardId ="0";
        if(null !=tjCustomer){
            cardId = tjCustomer.getCardId();
        }
        List<Map<String, Object>> list = getMaps(cusId,cardId);
        return AjaxResult.success(list);
    }
@@ -1316,6 +1317,9 @@
            for (TjOrderRemark remark : remarkList) {
                TjProject project = projectService.getTjProjectById(String.valueOf(remark.getProId()));
                if (null != project) {
                    if ("N".equals(project.getNeedReport())){
                        continue;
                    }
                    remark.setProCheckType(project.getProCheckType());
                    remark.setProName(project.getProName());
                }
@@ -1417,13 +1421,13 @@
    }
    private List<Map<String, Object>> getMaps(String cusId) {
    private List<Map<String, Object>> getMaps(String cusId,String cardId) {
        List<TbTransition> transitionList = null;
        if (redisCache.hasKey(cusId)) {
            transitionList = redisCache.getCacheList(cusId);
        if (redisCache.hasKey(cardId+cusId)) {
            transitionList = redisCache.getCacheList(cardId+cusId);
        } else {
            transitionList = transitionService.getTbTransitionListByCusId(cusId);
            transitionList = transitionService.getTbTransitionListByCusId(cusId,cardId);
        }
        if (null == transitionList) return null;
        Map<Long, List<TbTransition>> collect = transitionList.stream().collect(Collectors.groupingBy(TbTransition::getParentProId));
@@ -1680,11 +1684,10 @@
    }
    public void newSaveextracted(TjOrder tjOrder, TjCustomer tjCustomer, BigDecimal discount, SysUser sysUser, TjReservation tjReservation, TjFlowingWater tjFlowingWater) {
        long l = System.currentTimeMillis();
        tjAskMedicalHistoryService.updateTjAskMedicalHistoryByCusId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjCustomer.getCusId()));
        tjOrderDetailService.saveTjOrderDetailsByCusId(tjCustomer.getCusIdcard(), String.valueOf(tjOrder.getOrderId()), sysUser.getNickName(), String.valueOf(sysUser.getUserId()));
        //修改每项的原价现价
        transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount);
        //修改每项的原价现价 //修改临时表体检号
        transitionService.updateTbTransitionPriceByCusId(tjCustomer.getCusIdcard(), discount,tjOrder.getTjNumber());
        //添加remark表数据
        remarkService.saveTjOrderRemarkByOrderId(tjOrder.getTjNumber(), sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjOrder.getOrderId()));
        //判断是否交钱
@@ -1694,11 +1697,11 @@
                        sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
            }
        }
        if (tjFlowingWater.getPayStasus() == 1) {
        if (tjFlowingWater.getPayStasus() == 1L) {
            tjOrderDetailService.updateTjOrderDetailsByOrderId(String.valueOf(tjOrder.getOrderId()),
                    sysUser.getNickName(), String.valueOf(sysUser.getUserId()), String.valueOf(tjFlowingWater.getTjSerialNumber()));
        }
        System.out.println("这段代码时间" + (System.currentTimeMillis() - l));
//        System.out.println("这段代码时间" + (System.currentTimeMillis() - l));
    }