From a3b6ac86de21d83dcda6e523b28895dc13468d8c Mon Sep 17 00:00:00 2001 From: 张天森 <1292933220@qq.com> Date: 星期二, 19 七月 2022 16:54:22 +0800 Subject: [PATCH] 防疫后台数据隔离 --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 171 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 163 insertions(+), 8 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java index a4fb969..571a0b2 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java @@ -13,9 +13,12 @@ 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 cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; @@ -41,6 +44,7 @@ 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; @@ -3463,8 +3467,8 @@ } } if (ObjectUtils.isEmpty(range)){ - //查看累计数据时才计算其他用户的比例 - final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY) || type.equals(BYSTREET) || type.equals(BYAREA)); + //查看累计数据时才计算其他用户的比例 || type.equals(BYSTREET) || type.equals(BYAREA)) + final Boolean flag=(type.equals(ALLSTREET) || type.equals(ALLCOMMUNITY)); if (flag){ UserRateAnalysisVO vo=new UserRateAnalysisVO(); vo.setName(OTHERUSER); @@ -3510,9 +3514,11 @@ realUserVO.setRealUserRate(rate.doubleValue()); } for (RealUser realUser : realUsers) { - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){ - if (realUser.getCommunityId().equals("11")){ - continue; + if (!(type.equals(ALLCOUNTY))){ + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(realUser)){ + if (realUser.getCommunityId().equals("11")){ + continue; + } } } RealUserAnalysisVO vo=new RealUserAnalysisVO(); @@ -3566,7 +3572,6 @@ return R.ok(vo); } - @Override public R uuPush(String washPhone,String phone,String washName,Integer orderStatus) { if(StringUtils.isNotEmpty(phone)){ @@ -3600,6 +3605,83 @@ } @Override + public R getCommunityList(String name,Long id) { + //区级账号名 + String[] streetList={"bingcaogangjiedao","donghuajiedao","nongnongpingjiedao","dadukoujiedaojiedao","guazipingjiedao", + "yinjiangzhen","qingxiangpingjiedao","yuquanjiedao","hemenkoujiedao","dabaodingjiedao","taojiadujiedao","gelipinzhen","dahezhonglujiedao", + "jingjiangzhen","renhezhen","pingdizhen","datianzhen","tongdezhen","futianzhen","qianjinzhen","panlianzhen","binguzhen","baimazhen", + "salianzhen","puweizhen","deshizhen","wanqiuyizuxiang","caochangzhen","xinshanlisuzuxiang","tongzilinzhen","yongxingzhen","yumenzhen", + "honggezhen","hongguoyizuxiang"}; + List<Integer> ids = userDao.selectIdsByAccount(streetList); + //村或社区账号 + Integer type=isVilliage(name); + //是否为市级账号 + Boolean cityAccount = isCityAccount(name); + if (cityAccount){ + 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<StreetVOS> streetVOS = userDao.selectStreetByAreaCode(code); + Iterator<StreetVOS> iterator = streetVOS.listIterator(); + while (iterator.hasNext()){ + StreetVOS vo = iterator.next(); + List<CommunityVO> communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type); + vo.setChildList(communityVOS); + if (type!=3){ + if (communityVOS==null || communityVOS.size()==0){ + iterator.remove(); + } + } + } + areaVO.setChildList(streetVOS); + areaVOList.add(areaVO); + } + return R.ok(areaVOList); + }else{ + Boolean areaAccount = isAreaAccount(name); + if (areaAccount){ + Integer areaCode = accountToCode(name); + List<Integer> areaList=new ArrayList<>(); + areaList.add(areaCode); + List<AreaVOS> areaVOList=new ArrayList<>(); + for (Integer code : areaList) { + AreaVOS areaVO=new AreaVOS(); + areaVO.setId(code); + areaVO.setName(areaCodeToName(code.longValue())); + List<StreetVOS> streetVOS = userDao.selectStreetByAreaCode(code); + Iterator<StreetVOS> iterator = streetVOS.listIterator(); + while (iterator.hasNext()){ + StreetVOS vo = iterator.next(); + List<CommunityVO> communityVOS = userDao.selectCommunityByStreetId(vo.getId(), type); + vo.setChildList(communityVOS); + } + areaVO.setChildList(streetVOS); + areaVOList.add(areaVO); + } + return R.ok(areaVOList); + }else{ + //非区县账号,只看街道下属社区 + if (ArrayUtil.contains(streetList, name)){ + List<StreetVOS> list=new ArrayList<>(); + //只看当前街道下属社区 + StreetVOS streetVOS = userDao.selectStreetByName(name); + List<CommunityVO> communityVOS = userDao.selectCommunityByStreetName(name); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(streetVOS)) { + streetVOS.setChildList(communityVOS); + } + list.add(streetVOS); + return R.ok(list); + } + } + } + return R.ok(null); + } + + + @Override public R getAreaAndStreet() { List<Integer> areaCodeList=areaCodeList(); List<AreaVO> areaVOList=new ArrayList<>(); @@ -3607,7 +3689,7 @@ AreaVO vo=new AreaVO(); vo.setId(code); vo.setName(areaCodeToName(code.longValue())); - vo.setStreetList(userDao.selectStreetByAreaCode(code)); + vo.setStreetList(userDao.selectStreetsByAreaCode(code)); areaVOList.add(vo); } return R.ok(areaVOList); @@ -3728,6 +3810,7 @@ break; case "510402": name="东区"; + break; case "510411": name="仁和区"; break; @@ -3737,6 +3820,9 @@ case "510422": name="盐边县"; break; + case "510424": + name="钒钛新区"; + break; } return name; } @@ -3745,6 +3831,7 @@ *根据type选择要设置的名称 * */ private String typeToName(Integer type,UserProportion proportion){ + log.info("当前code"+proportion.getAreaCode()); String name=""; if (type.equals(ALLCOUNTY)){ name=areaCodeToName(proportion.getAreaCode()); @@ -3776,11 +3863,12 @@ * */ 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; } @@ -3803,6 +3891,73 @@ return null; } + /** + * 是否需要区分村落/社区 + * */ + private Integer isVilliage(String name){ + if ("fangyipingtai".equals(name)){ + return 3; + }else if ("pandashujuzhongxin".equals(name)){ + return 1; + }else if ("pannongyenongcunju".equals(name)){ + return 2; + } + return 3; + } + /** + * 是否为市级账号 + * */ + private Boolean isCityAccount(String name){ + if(("fangyipingtai").equals(name) || ("pandashujuzhongxin").equals(name) || ("pannongyenongcunju").equals(name)){ + return true; + } + return false; + } + + /** + * 是否为区级账号 + * */ + private Boolean isAreaAccount(String name){ + Boolean flag=false; + switch (name){ + case "dongqu": + case "xiqu": + case "renhequ": + case "miyixian": + case "yanbianxian": + flag=true; + break; + } + return flag; + } + + /** + * account转区areaCode + * */ + private Integer accountToCode(String code){ + String name="100000"; + switch (code){ + case "xiqu" : + name= "510423"; + break; + case "dongqu": + name="510402"; + break; + case "renhequ": + name="510411"; + break; + case "miyixian": + name="510421"; + break; + case "yanbianxian": + name="510422"; + break; + case "fantaixinqu": + name="510424"; + break; + } + return Integer.parseInt(name); + } } -- Gitblit v1.7.1