| | |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import cn.hutool.core.collection.ListUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | |
| | | import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.ObjectUtils; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | |
| | | 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)){ |
| | | //查看累计数据时才计算其他用户的比例 || type.equals(BYSTREET) || type.equals(BYAREA)) |
| | | final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY)); |
| | | 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); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public R realUser(Integer type, Long streetId, Long areaCode, Integer range) { |
| | |
| | | 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 (!(type.equals(ALLCOUNTY))){ |
| | | 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)); |
| | | 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); |
| | | } |
| | | |
| | |
| | | vo.setAddUserY(adY); |
| | | vo.setActiveUserY(activeY); |
| | | 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 getCommunityList(Integer type) { |
| | | List<Integer> areaList = areaCodeList(); |
| | | List<AreaVOS> areaVOList=new ArrayList<>(); |
| | | for (Integer code : areaList) { |
| | | AreaVOS areaVO=new AreaVOS(); |
| | | areaVO.setId(code); |
| | | areaVO.setName(areaCodeToName(code.longValue())); |
| | | List<StreetVO> streetVOS = userDao.selectStreetByAreaCode(code); |
| | | Iterator<StreetVO> iterator = streetVOS.listIterator(); |
| | | while (iterator.hasNext()){ |
| | | StreetVO vo = iterator.next(); |
| | | List<CommunityVO> communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type); |
| | | vo.setCommunityList(communityVOS); |
| | | if (type!=3){ |
| | | if (communityVOS==null || communityVOS.size()==0){ |
| | | iterator.remove(); |
| | | } |
| | | } |
| | | } |
| | | List<StreetVOS> list=new ArrayList<>(); |
| | | for (StreetVO streetVO : streetVOS) { |
| | | StreetVOS vo=new StreetVOS(); |
| | | vo.setId(streetVO.getId()); |
| | | vo.setName(streetVO.getName()); |
| | | vo.setChildList(streetVO.getCommunityList()); |
| | | list.add(vo); |
| | | } |
| | | areaVO.setChildList(list); |
| | | areaVOList.add(areaVO); |
| | | } |
| | | return R.ok(areaVOList); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return dateList; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * areaCode转区县名 |
| | | * */ |
| | |
| | | break; |
| | | case "510402": |
| | | name="东区"; |
| | | break; |
| | | case "510411": |
| | | name="仁和区"; |
| | | break; |
| | |
| | | case "510422": |
| | | name="盐边县"; |
| | | break; |
| | | case "510424": |
| | | name="钒钛新区"; |
| | | break; |
| | | } |
| | | return name; |
| | | } |
| | |
| | | *根据type选择要设置的名称 |
| | | * */ |
| | | private String typeToName(Integer type,UserProportion proportion){ |
| | | log.info("当前code"+proportion.getAreaCode()); |
| | | String name=""; |
| | | if (type.equals(ALLCOUNTY)){ |
| | | name=areaCodeToName(proportion.getAreaCode()); |
| | |
| | | * */ |
| | | private List<Integer> areaCodeList(){ |
| | | List<Integer> list=new ArrayList<>(); |
| | | list.add(510423); |
| | | list.add(510402); |
| | | list.add(510423); |
| | | list.add(510411); |
| | | list.add(510421); |
| | | list.add(510422); |
| | | list.add(510424); |
| | | return list; |
| | | } |
| | | |