lige
2023-11-22 6ed1b7488cf62d9c35f5fd5fa09cacc896eb520f
ltkj-admin/src/main/java/com/ltkj/web/controller/service/TjSysAsyncServiceImpl.java
@@ -6,11 +6,14 @@
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.common.core.domain.entity.SysUser;
import com.ltkj.common.core.redis.RedisCache;
import com.ltkj.common.utils.SecurityUtils;
import com.ltkj.common.utils.StringUtils;
import com.ltkj.framework.config.MatchUtils;
import com.ltkj.hosp.domain.*;
import com.ltkj.hosp.service.*;
import com.ltkj.hosp.vodomain.AddNewReservationConfirm;
import com.ltkj.hosp.vodomain.LineChartsVo;
import com.ltkj.hosp.vodomain.PieChartVo;
import com.ltkj.hosp.vodomain.QjDomainVo;
import com.ltkj.mall.mallOrderUtils.TjConstants;
import com.ltkj.system.service.ISysUserService;
@@ -25,6 +28,7 @@
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -90,6 +94,8 @@
    private ITjPrintOrderService printOrderService;
    @Resource
    private IDictSfxmService dictSfxmService;
    @Autowired
    private ITjRulesService tjRulesService;
    @Override
@@ -273,6 +279,7 @@
    @Async("async")
    public void collectFees(TjOrder order, List<TjConsumables> list2, List<TbTransition> tbTransitionList, SysUser sysUser, String discount) {
        orderRemarkService.deletedOrderRemarkByTjNum(order.getTjNumber());
        redisCache.deleteObject("getOrderDetailByProParentId"+order.getTjNumber());
        for (TbTransition transition : tbTransitionList) {
            transition.setNowPrice(transition.getOrdPrice().multiply(BigDecimal.valueOf(Double.parseDouble(discount)).divide(BigDecimal.valueOf(10))));
            transitionService.updateById(transition);
@@ -322,6 +329,8 @@
                    tjOrderRemark.setCreateId(String.valueOf(sysUser.getUserId()));
                    tjOrderRemark.setUpdateId(String.valueOf(sysUser.getUserId()));
                    orderRemarkService.save(tjOrderRemark);
                    Map<String, Object> map = getOrderDetailByProParentId(String.valueOf(parentProId), order.getTjNumber());
                    redisCache.setCacheMapValue("getOrderDetailByProParentId"+order.getTjNumber(),String.valueOf(parentProId),map);
                }
            }
        }
@@ -647,6 +656,7 @@
            wq2.eq(TjSampling::getTjNum,tjNum);
            wq2.eq(TjSampling::getProId,refundPro.getProId());
            samplingService.remove(wq2);
            redisCache.deleteCacheMapValue("getOrderDetailByProParentId"+tjNum, String.valueOf(refundPro.getProId()));
        }
    }
@@ -679,6 +689,7 @@
                td.setCreateId(String.valueOf(sysUser.getUserId()));
                td.setUpdateId(String.valueOf(sysUser.getUserId()));
                discardInspectionService.save(td);
                redisCache.deleteCacheMapValue("getOrderDetailByProParentId"+domainVo.getTjNumber(),String.valueOf(remark.getProId()));
            }
            LambdaQueryWrapper<TjProject>wq1=new LambdaQueryWrapper<>();
@@ -878,7 +889,6 @@
    @Override
    @Async("async")
    public void saveNewReservationConfirm(List<TjReservation> rightList) {
        long l = System.currentTimeMillis();
        if(null !=rightList && rightList.size()>0){
            //创建线程池
            ExecutorService threadPool = Executors.newFixedThreadPool(rightList.size());
@@ -900,16 +910,13 @@
                });
            }
        }
        long ll = System.currentTimeMillis();
        System.out.println("这段代码执行时间为"+ (ll-l));
    }
    @Override
    @Async("async")
    public void updateCheckType(String tjNum) {
//        AjaxResult ajaxResult = getAjaxResult(tjNum);
        redisCache.setCacheMapValue("updateCheckType"+tjNum,tjNum,getAjaxResult(tjNum));
        redisCache.setHashKeyExpireTime("updateCheckType"+tjNum,7L, TimeUnit.DAYS);
    }
    @Override
@@ -926,6 +933,158 @@
    public void getDictSfxms() {
        List<DictSfxm> dictSfxm = getDictSfxm();
        redisCache.setCacheObject("getDictSfxms",dictSfxm);
    }
    @Override
    @Async("async")
    public void getOrderDetailByProParentId(String tjNumber,Map<String, Object> map,String proParentId) {
        if(null !=map && !map.isEmpty()){
            redisCache.setCacheMapValue("getOrderDetailByProParentId"+tjNumber,proParentId,map);
        }else {
            redisCache.setCacheMapValue("getOrderDetailByProParentId"+tjNumber,proParentId,getOrderDetailByProParentId(proParentId,tjNumber));
        }
        redisCache.setHashKeyExpireTime("getOrderDetailByProParentId"+tjNumber,7L,TimeUnit.DAYS);
    }
    @Override
    @Async("async")
    public void getLineChart() {
        redisCache.setCacheObject("getLineChart",getLineCharts());
    }
    @Override
    @Async("async")
    public void getPieChart() {
        redisCache.setCacheObject("getPieChart",getPieCharts());
    }
    //首页饼状图登记人数接口
    private AjaxResult getPieCharts() {
        Map<String, Object> map = new HashMap<>();
        //获取体检登记数
        LambdaQueryWrapper<TjOrder> wq0 = new LambdaQueryWrapper<>();
        wq0.between(TjOrder::getCreateTime, DateUtil.lastMonth(), DateUtil.now());
        List<TjOrder> orderCountList = orderService.list(wq0);
        if (null != orderCountList && orderCountList.size() > 0) {
            List<PieChartVo> pieChartVoList = getTjorderCountMap(orderCountList);
            map.put("tjdj", pieChartVoList);
        } else {
            map.put("tjdj", 0);
        }
        //获取体检异常数
        LambdaQueryWrapper<TjOrder> wq1 = new LambdaQueryWrapper<>();
        wq1.between(TjOrder::getFinishTime, DateUtil.lastMonth(), DateUtil.now());
        wq1.eq(TjOrder::getCheckStatus, 1);
        List<TjOrder> orderAbnormalCountList = orderService.list(wq1);
        if (null != orderAbnormalCountList && orderAbnormalCountList.size() > 0) {
            List<PieChartVo> pieChartVoList = getTjorderAbnormalCountMap(orderAbnormalCountList);
            map.put("tjyc", pieChartVoList);
        } else {
            map.put("tjyc", 0);
        }
        return AjaxResult.success(map);
    }
    //首页折线图数据
    private AjaxResult getLineCharts() {
//        List<Map<Object, Object>> line = orderService.getLine();
        List<LineChartsVo> line = orderService.getLine();
        Collections.reverse(line);
        return AjaxResult.success("折线图数据", line);
    }
    //获取体检登记数
    private List<PieChartVo> getTjorderCountMap(List<TjOrder> orderList) {
        int a = 0;
        int b = 0;
        int c = 0;
        int d = 0;
        int e = 0;
        Map<String, Object> map = null;
        for (TjOrder tjOrder : orderList) {
            map = new HashMap<>();
            TjCustomer customer = tjCustomerService.getById(tjOrder.getUserId());
            if (null != customer) {
                int age = DateUtil.ageOfNow(customer.getCusBrithday());
                if (age >= 0 && age <= 3) {
                    a += 1;
                } else if (age > 3 && age <= 16) {
                    b += 1;
                } else if (age > 16 && age <= 40) {
                    c += 1;
                } else if (age > 40 && age <= 60) {
                    d += 1;
                } else {
                    e += 1;
                }
            }
            map.put("0-3岁", a);
            map.put("3-16岁", b);
            map.put("16-40岁", c);
            map.put("40-60岁", d);
            map.put("60岁以上", e);
        }
        List<PieChartVo> pieChartVoList = new ArrayList<>();
        assert map != null;
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            PieChartVo pieChartVo = new PieChartVo();
            pieChartVo.setName(entry.getKey());
            pieChartVo.setCount((Integer) entry.getValue());
            pieChartVoList.add(pieChartVo);
        }
        return pieChartVoList;
    }
    //获取体检异常数
    private List<PieChartVo> getTjorderAbnormalCountMap(List<TjOrder> orderList) {
        int a = 0;
        int b = 0;
        int c = 0;
        int d = 0;
        int e = 0;
        Map<String, Object> map = null;
        for (TjOrder tjOrder : orderList) {
            map = new HashMap<>();
            LambdaQueryWrapper<TjOrderDetail> wq = new LambdaQueryWrapper<>();
            wq.eq(TjOrderDetail::getOrderId, tjOrder.getOrderId());
            wq.eq(TjOrderDetail::getExceptionDesc, 1);
            List<TjOrderDetail> list = tjOrderDetailService.list(wq);
            if (null != list && list.size() > 0) {
                TjCustomer customer = tjCustomerService.getById(tjOrder.getUserId());
                if (null != customer) {
                    int age = DateUtil.ageOfNow(customer.getCusBrithday());
                    if (age >= 0 && age <= 3) {
                        a += 1;
                    } else if (age > 3 && age <= 16) {
                        b += 1;
                    } else if (age > 16 && age <= 40) {
                        c += 1;
                    } else if (age > 40 && age <= 60) {
                        d += 1;
                    } else {
                        e += 1;
                    }
                }
                map.put("0-3岁", a);
                map.put("3-16岁", b);
                map.put("16-40岁", c);
                map.put("40-60岁", d);
                map.put("60岁以上", e);
            }
        }
        List<PieChartVo> pieChartVoList = new ArrayList<>();
        assert map != null;
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            PieChartVo pieChartVo = new PieChartVo();
            pieChartVo.setName(entry.getKey());
            pieChartVo.setCount((Integer) entry.getValue());
            pieChartVoList.add(pieChartVo);
        }
        return pieChartVoList;
    }
    private List<DictSfxm> getDictSfxm() {
@@ -1100,8 +1259,6 @@
            redisCache.setCacheMapValue("getTjPackageListBySex","getTjPackageListByManAndWoMan",tjPackageList);
        }
    }
    //已检
    public List<TjCustomer> getYjAjaxResult(List<Long> ksproList) {
        List<TjCustomer> customerLis = new ArrayList<>();
@@ -1165,7 +1322,6 @@
        }
        return customerLis;
    }
    //未检
    public List<TjCustomer> getWjAjaxResult(List<Long> ksproList) {
        List<TjCustomer> customerLis = new ArrayList<>();
@@ -1221,7 +1377,6 @@
        }
        return customerLis;
    }
    //已审
    private List<TjCustomer> getYsResult(String config) {
        List<TjOrder> orderList = null;
@@ -1261,7 +1416,6 @@
        }
        return customerList;
    }
    //未审
    private List<TjCustomer> getWsResult(String config) {
        List<TjOrder> orderList = null;
@@ -1301,16 +1455,13 @@
        }
        return customerList;
    }
    //总检点击体检信息详情
    private AjaxResult getAjaxResult(String tjNumber) {
    private List<Map<String, Object>> getAjaxResult(String tjNumber) {
        List<Map<String, Object>> list = new ArrayList<>();
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
        if (one == null) {
            return AjaxResult.error("暂无数据!!");
            return list;
        }
        TjCustomer customer = tjCustomerService.getById(one.getUserId());
        List<TjOrderRemark> remarkList = orderRemarkService.getRemarkListByTjNumAndType(tjNumber);
@@ -1327,7 +1478,11 @@
                if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
                    for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                        final TjProject byId = projectService.selectTjProjectByProId(tjOrderDetail.getProId());
                         if(null==byId){
                             tjOrderDetailService.removeById(tjOrderDetail.getOrderDetailId());
                        }else {
                        tjOrderDetail.setProject(byId);
                        }
                        List<TjStandard> list2 = tjStandardService.getTjStandardListByProId(String.valueOf(tjOrderDetail.getProId()));
                        if (list2.size() == 0) {
                            tjOrderDetail.setStandard(new TjStandard());
@@ -1342,7 +1497,14 @@
                    String summary = remark.getSummary();
                    if (null != summary) {
                        String[] split = summary.split(";");
                        parent.put("parentAdvice", tjAdviceService.getAdviceStringByIds(Arrays.asList(split)));
//                        List<Long> longList = new ArrayList<>();
//                        for (String str : split) {
//                            if(!"".equals(str)){
//                                longList.add(Long.valueOf(str));
//                            }
//                        }
//                        parent.put("parentAdvice", tjAdviceService.getAdviceStringByIds(longList));
                        parent.put("parentAdvice", tjAdviceService.getAdviceStringsByIds(Arrays.asList(split)));
                    } else {
                        parent.put("parentAdvice", null);
@@ -1353,16 +1515,11 @@
                        parent.put("doctorName", userService.getById(remark.getDoctorName()).getNickName());
                    }
                    list.add(parent);
                } else {
                    return AjaxResult.success("该客户没有体检项目数据");
                }
//                }
            }
            return AjaxResult.success(list);
        }
        return AjaxResult.success("该客户没有体检项目数据!");
        return list;
    }
    //已签收/未签收
    private List<Map<String, Object>>  getYWqsResult(int a) {
        LambdaQueryWrapper<TjSampling>wq=new LambdaQueryWrapper<>();
@@ -1400,8 +1557,6 @@
        }
        return arrayList;
    }
    /**
     * 隐藏手机号
     *
@@ -1409,6 +1564,9 @@
     * @return
     */
    public static String hidePhoneNum(String phoneNum){
        if(null==phoneNum){
            return "";
        }
        if(phoneNum.contains("*")){
            return phoneNum;
        }
@@ -1427,7 +1585,6 @@
        }
        return sb.toString();
    }
    /**
     * 隐藏身份证号码
     *
@@ -1435,6 +1592,9 @@
     * @return
     */
    public static String hideIdCardNum(String idCardNum){
        if(null==idCardNum){
            return "";
        }
        if(idCardNum.contains("*")){
            return idCardNum;
        }
@@ -1456,8 +1616,6 @@
        }
        return sb.toString();
    }
    /**
     * 隐藏用户姓名
     *
@@ -1465,6 +1623,9 @@
     * @return
     */
    public static String hideCusName(String cusName){
        if(null==cusName){
            return "";
        }
        if(!cusName.contains("*")){
            String realname=null;
            char[] r =  cusName.toCharArray();
@@ -1481,16 +1642,107 @@
        }
        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) {
            List<TbTransition> transitionList = transitionService.getTbTransitionListByCusIdAndPacIdAndProId(cusId, String.valueOf(proId));
            if (null != transitionList && transitionList.size() > 0) {
                continue;
            }
            transitionService.saveRedisTransitionByProId(cusId,proId);
        }
    }
    //向缓存中添加 父项目的子项目详情
    private Map<String, Object> getOrderDetailByProParentId(String proParentId, String tjNumber) {
        TjOrderRemark remark = orderRemarkService.getTjOrderRemarkByTjNumAndProParentId(tjNumber, proParentId);
        List<TjProject> proParentList = projectService.getTjProjectListBySoneId(proParentId);
        if (null == proParentList) {
            return AjaxResult.error("该项目下暂时没数据");
        }
        List<Long> proParentIdList = proParentList.stream().map(TjProject::getProId).collect(Collectors.toList());
        TjOrder one = orderService.getOrderByTjNum(tjNumber);
        if (null == one) {
            return AjaxResult.success("该用户暂时没有体检数据");
        }
        List<TjOrderDetail> tjOrderDetails = tjOrderDetailService.getTjOrderDetailListInProParentIdList(String.valueOf(one.getOrderId()), proParentIdList);
        TjCustomer customer = tjCustomerService.getById(one.getUserId());
        if (null != tjOrderDetails && tjOrderDetails.size() > 0) {
            for (TjOrderDetail tjOrderDetail : tjOrderDetails) {
                TjProject project = projectService.getById(tjOrderDetail.getProId());
                List<TjRules> rulesList = tjRulesService.getTjRulesListByTjNumAndProId(tjNumber, tjOrderDetail.getProId());
                tjOrderDetail.setRulesList(rulesList);
                //查标准和单位----start
                List<TjStandard> list26 = tjStandardService.getTjStandardListByProId(String.valueOf(tjOrderDetail.getProId()));
                if (list26.size() == 0) {
                    project.setProMetering("/");
                    project.setProScope("/");
                } else if (list26.size() == 1) {
                    project.setProMetering(list26.get(0).getCompany() == null ? " " : list26.get(0).getCompany());
                    project.setProScope((list26.get(0).getTjStandardLtValue() == null ? " " : list26.get(0).getTjStandardLtValue()) + "-" + (list26.get(0).getTjStandardGtValue() == null ? " " : list26.get(0).getTjStandardGtValue()));
                } else {
                    Long cusSex = customer.getCusSex();
                    Date cusBrithday = customer.getCusBrithday();
                    int age = DateUtil.ageOfNow(cusBrithday);
                    for (TjStandard tjStandard : list26) {
                        LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
                        if (tjStandard.getTjSex() != null) {
                            wq8.eq(TjStandard::getTjSex, cusSex);
                        }
                        if (tjStandard.getTjType() != null) {
                            wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(age));
                        }
                        TjStandard standard = tjStandardService.getOne(wq8);
                        project.setProMetering(standard.getCompany());
                        project.setProScope((standard.getTjStandardLtValue() == null ? " " : standard.getTjStandardLtValue()) + "-" + (standard.getTjStandardGtValue() == null ? " " : standard.getTjStandardGtValue()));
                    }
                }
                //查标准和单位-----end
                tjOrderDetail.setProject(project);
                List<TjStandard> list2 = tjStandardService.getTjStandardListByProId(String.valueOf(project.getProId()));
                if (list2.size() == 0) {
                    tjOrderDetail.setStandard(null);
                } else if (list2.size() == 1) {
                    tjOrderDetail.setStandard(list2.get(0));
                } else {
                    for (TjStandard tjStandard : list2) {
                        LambdaQueryWrapper<TjStandard> wq8 = new LambdaQueryWrapper<>();
                        if (tjStandard.getTjSex() != null) {
                            wq8.eq(TjStandard::getTjSex, customer.getCusSex());
                        }
                        if (tjStandard.getTjType() != null) {
                            wq8.eq(TjStandard::getTjType, StringUtils.getAgeType(DateUtil.ageOfNow(customer.getCusBrithday())));
                        }
                        TjStandard standard = tjStandardService.getOne(wq8);
                        tjOrderDetail.setStandard(standard);
                    }
                }
                if (null != remark.getDoctorName()) {
                    //lg0412
                    SysUser byId = userService.getById(remark.getDoctorName());
                    if (byId != null) {
                        tjOrderDetail.setDoctorName(userService.getById(remark.getDoctorName()).getNickName());
                    }
                } else {
                    tjOrderDetail.setDoctorName(null);
                }
            }
        }
        Map<String, Object> map = new HashMap<>();
        List<TjAdvice> adviceList = new ArrayList<>();
        if (null != remark) {
            String[] strings = StringUtils.split(remark.getSummary(), ";");
            if(null !=strings && strings.length>0){
                List<TjAdvice> list = tjAdviceService.getAdviceStringByIds(strings);
                adviceList.addAll(list);
            }
            map.put("xiaoJieIds", StringUtils.split(remark.getSummary(), ";"));
        } else {
            map.put("xiaoJieIds", null);
        }
        map.put("sons", tjOrderDetails);
        map.put("xiaoJie", adviceList);
        map.put("remark", remark.getRemark());
        return map;
    }
}