张天森
2022-07-14 76d54c5f5ce3a7d10c1766143b64b0af164db23e
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -3445,28 +3445,35 @@
            for (UserProportion userProportion : userProportions) {
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){
                    UserRateAnalysisVO vo=new UserRateAnalysisVO();
                    vo.setName(typeToName(type,userProportion ));
                    if (monthRange){
                        if (userProportion.getCommunityId().equals("11")){
                            continue;
                        }
                        //获取本月的用户总数作为计算占比的用户总数
                        IndexDataKanbanVO data = userDao.dataKanBanStreet(streetId, areaCode, date);
                        vo.setRate(getRate(data.getAllUser(),userProportion.getUser()));
                        //IndexDataKanbanVO data = userDao.dataKanBanStreet(streetId, areaCode, date);
                        Integer monthUsers = userDao.getMonthUsers(streetId, areaCode, date);
                        vo.setRate(getRate(monthUsers,userProportion.getUser()));
                    }else{
                        vo.setRate(getRate(analysisVO.getAllUser(),userProportion.getUser()));
                    }
                    vo.setName(typeToName(type,userProportion ));
                    vo.setCount(userProportion.getUser());
                    userRateAnalysisVOList.add(vo);
                }
            }
        }
        //计算其他用户占比
        final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY) || type.equals(BYSTREET) || type.equals(BYAREA));
        if (flag){
            UserRateAnalysisVO vo=new UserRateAnalysisVO();
            vo.setName(OTHERUSER);
            vo.setCount(analysisVO.getAllUser()-countUser(userRateAnalysisVOList));
            vo.setRate(getRate(analysisVO.getAllUser(), vo.getCount()));
            userRateAnalysisVOList.add(vo);
        if (ObjectUtils.isEmpty(range)){
            //查看累计数据时才计算其他用户的比例
            final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY) || type.equals(BYSTREET) || type.equals(BYAREA));
            if (flag){
                UserRateAnalysisVO vo=new UserRateAnalysisVO();
                vo.setName(OTHERUSER);
                vo.setCount(analysisVO.getAllUser()-countUser(userRateAnalysisVOList));
                vo.setRate(getRate(analysisVO.getAllUser(), vo.getCount()));
                userRateAnalysisVOList.add(vo);
            }
        }
        //计算其他用户占比
        UserRateVO userRate=new UserRateVO();
        userRate.setUserList(userRateAnalysisVOList);
        return R.ok(userRate);
@@ -3496,8 +3503,18 @@
        List<RealUser> realUsers = userDao.realUserCount(type, date, streetId, areaCode);
        List<RealUserAnalysisVO> realUserList=new ArrayList<>();
        realUserVO.setRealUserCount(getStreetRealUser(realUsers));
        realUserVO.setRealUserRate(NumberUtil.div(realUserVO.getRealUserCount(), analysisVO.getAllUser()).doubleValue());
        Integer rate = getRate(analysisVO.getAllUser(), realUserVO.getRealUserCount());
        if (null == rate){
            realUserVO.setRealUserRate(0.0);
        }else{
            realUserVO.setRealUserRate(rate.doubleValue());
        }
        for (RealUser realUser : realUsers) {
            if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){
                if (realUser.getCommunityId().equals("11")){
                    continue;
                }
            }
            RealUserAnalysisVO vo=new RealUserAnalysisVO();
            vo.setCount(realUser.getCount());
            vo.setName(typeToNameRealUser(type, realUser));
@@ -3506,19 +3523,21 @@
        realUserVO.setRealUserList(realUserList);
        //使用索引迭代避免从列表移除数据后出现空指针异常
        if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY)){
            for (int i = 0; i <= realUserList.size() ; i++) {
            for (int i = 0; i < realUserList.size() ; i++) {
                RealUserAnalysisVO realUserAnalysisVO = realUserList.get(i);
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUserAnalysisVO)){
                    if (StringUtils.isNotEmpty(realUserAnalysisVO.getName())){
                        if (realUserAnalysisVO.getName().equals("请选择社区")){
                            realUserList.remove(realUserAnalysisVO);
                            realUserList.remove(i);
                        }
                    }
                }
            }
        }else {
            //只保留十条
            realUserList.remove(10);
            if (realUserList.size()>=11){
                realUserList.remove(10);
            }
        }
        return R.ok(realUserVO);
    }