From c40f8e3d2e08e108780091776437242528bf61d6 Mon Sep 17 00:00:00 2001
From: 101captain <237651143@qq.com>
Date: 星期三, 20 七月 2022 17:44:56 +0800
Subject: [PATCH] bug修改

---
 springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java |  117 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 101 insertions(+), 16 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 268b549..826137d 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
@@ -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,45 @@
         }
         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();
+                    if (monthRange){
+                        if (userProportion.getCommunityId().equals("11")){
+                            continue;
+                        }
+                        //获取本月的用户总数作为计算占比的用户总数
+                        //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 ));
-                    userProportion.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)){
+            //查看累计数据时才计算其他用户的比例 || 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);
@@ -3466,7 +3484,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,14 +3502,44 @@
         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()));
+        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);
     }
 
@@ -3519,6 +3567,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 +3612,7 @@
         }
         return R.ok(areaVOList);
     }
+
 
     /**
      * 获取最近20天数据
@@ -3576,11 +3657,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 +3716,7 @@
         return dateList;
     }
 
+
     /**
      * areaCode转区县名
      * */
@@ -3646,6 +3729,7 @@
                 break;
             case "510402":
                 name="东区";
+                break;
             case "510411":
                 name="仁和区";
                 break;
@@ -3663,6 +3747,7 @@
      *根据type选择要设置的名称
      * */
     private String typeToName(Integer type,UserProportion proportion){
+        log.info("当前code"+proportion.getAreaCode());
         String name="";
         if (type.equals(ALLCOUNTY)){
             name=areaCodeToName(proportion.getAreaCode());

--
Gitblit v1.7.1