张天森
2022-07-14 c0c4eff59303d0480a38ab13e67cdca543e4f9bc
springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java
@@ -3343,7 +3343,7 @@
        if (type.equals(ALLCOUNTY) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){
            BeanUtils.copyProperties(indexDataKanbanVO,vo);
        }else {
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode);
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,vo);
        }
//            List<UserProportion> userProportionsTotal = userDao.userAnalysis(type, null, streetId,areaCode);
@@ -3419,14 +3419,13 @@
        IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO();
        if (type.equals(BYSTREET) || type.equals(BYAREA)){
            //街道,区县筛选
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode);
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,analysisVO );
        }else {
            //总量数据
            IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(null);
            BeanUtils.copyProperties(indexDataKanbanVO,analysisVO );
        }
        UserRateVO userRateVO=new UserRateVO();
        String date="";
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
@@ -3436,26 +3435,41 @@
        }
        List<UserProportion> userProportions = userDao.userAnalysis(type, date, streetId,areaCode);
        List<UserRateAnalysisVO> userRateAnalysisVOList=new ArrayList<>();
        Boolean monthRange=false;
        if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){
            if (range.equals(1)){
                monthRange=true;
            }
        }
        if (userProportions.size()>0){
            for (UserProportion userProportion : userProportions) {
                if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){
                    UserRateAnalysisVO vo=new UserRateAnalysisVO();
                    vo.setName(typeToName(type,userProportion ));
                    userProportion.setRate(getRate(analysisVO.getAllUser(),userProportion.getUser()));
                    if (monthRange){
                        //获取本月的用户总数作为计算占比的用户总数
                        IndexDataKanbanVO data = userDao.dataKanBanStreet(streetId, areaCode, date);
                        vo.setRate(getRate(data.getAllUser(),userProportion.getUser()));
                    }else{
                        vo.setRate(getRate(analysisVO.getAllUser(),userProportion.getUser()));
                    }
                    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);
@@ -3466,7 +3480,7 @@
        IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO();
        if (type.equals(BYSTREET) || type.equals(BYAREA)){
            //街道,区县筛选
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode);
            IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null);
            BeanUtils.copyProperties(indexDataVO,analysisVO );
        }else {
            //总量数据
@@ -3484,7 +3498,7 @@
        List<RealUser> realUsers = userDao.realUserCount(type, date, streetId, areaCode);
        List<RealUserAnalysisVO> realUserList=new ArrayList<>();
        realUserVO.setRealUserCount(getStreetRealUser(realUsers));
        realUserVO.setRealUserRate(getRate(analysisVO.getAllUser(), realUserVO.getRealUserCount()));
        realUserVO.setRealUserRate(NumberUtil.div(realUserVO.getRealUserCount(), analysisVO.getAllUser()).doubleValue());
        for (RealUser realUser : realUsers) {
            RealUserAnalysisVO vo=new RealUserAnalysisVO();
            vo.setCount(realUser.getCount());
@@ -3492,6 +3506,24 @@
            realUserList.add(vo);
        }
        realUserVO.setRealUserList(realUserList);
        //使用索引迭代避免从列表移除数据后出现空指针异常
        if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY)){
            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(i);
                        }
                    }
                }
            }
        }else {
            //只保留十条
            if (realUserList.size()>=11){
                realUserList.remove(10);
            }
        }
        return R.ok(realUserVO);
    }
@@ -3519,6 +3551,38 @@
        return R.ok(vo);
    }
    @Override
    public R uuPush(String washPhone,String phone,String washName,Integer orderStatus) {
        if(StringUtils.isNotEmpty(phone)){
            SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,phone).orderByDesc(SysUserDO::getCreateAt).last("limit 1"));
            if(sysUserDO!=null&&StringUtils.isNotEmpty(sysUserDO.getOpenid())){
                String status="";
                String accessToken="";
                WxXCXTempSend util = new WxXCXTempSend();
                try {
                    accessToken = util.getAccessToken();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                switch (orderStatus){
                    case 3 : status="已分配车美";
                        WxUtil.sendUuWash3(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"sU18zbyzxFldHAdOREaQCR5uq_uMvCKTmGtklO1xw-w");
                    break;
                    case 4 : status="车美已开始服务";
                        WxUtil.sendUuWash4(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"Eft5ksvsnOQANy2uNOGY43CC3pb33eDGA_lgCEoxuiw");
                    break;
                    case 6 : status="订单确认完成";
                        WxUtil.sendUuWash6(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"k1aV97H3pDNNcNcDTeZBD9jQemNDADnRE801HhTXweI");
                    break;
                    case 9 : status="订单已取消";
                        WxUtil.sendUuWash(sysUserDO.getOpenid(),accessToken,status,washName,washPhone,phone,"9_2FhQPDxZoUqmAuIZ1L1zjjYXokdNvu7A0gzKfvruI");
                    break;
                }
            }
        }
        return R.ok();
    }
    @Override
    public R getAreaAndStreet() {
        List<Integer> areaCodeList=areaCodeList();
@@ -3532,6 +3596,7 @@
        }
        return R.ok(areaVOList);
    }
    /**
     * 获取最近20天数据
@@ -3576,11 +3641,12 @@
    /**
     * 计算占比
     * */
    private Double getRate(Integer total,Integer count){
    private Integer getRate(Integer total,Integer count){
        if (0 != total && null != total){
            if (0 != count && null != count){
                BigDecimal div = NumberUtil.div(count.toString(), total.toString(),2);
                return div.doubleValue();
                BigDecimal mul = NumberUtil.mul(div, 100);
                return mul.intValue();
            }
        }
        return null;
@@ -3634,6 +3700,7 @@
        return dateList;
    }
    /**
     * areaCode转区县名
     * */