From edf2bc6f41c9784e9cdccc9b569a7091a5a5a438 Mon Sep 17 00:00:00 2001 From: lidongdong <1459917685@qq.com> Date: 星期五, 23 九月 2022 16:10:07 +0800 Subject: [PATCH] Merge branch 'zigonggao_dev' of http://gitlab.nhys.cdnhxx.com/root/zhihuishequ into huacheng_test --- springcloud_k8s_panzhihuazhihuishequ/service_user/src/main/java/com/panzhihua/service_user/service/impl/UserServiceImpl.java | 758 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 620 insertions(+), 138 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 b107f57..61a13c0 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 @@ -15,12 +15,17 @@ 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; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import com.panzhihua.common.model.dtos.community.microCommercialStreet.BindUserPhoneDTO; import com.panzhihua.common.model.vos.community.ComAreaTownCommunityVO; +import com.panzhihua.common.model.vos.community.acid.ComActAcidCheckRecordVO; import com.panzhihua.common.model.vos.community.acid.ComActAcidMemberVO; +import com.panzhihua.common.model.vos.community.acid.ComActAcidRecordVO; import com.panzhihua.common.model.vos.community.microCommercialStreet.McsLoginUserInfoVO; import com.panzhihua.common.model.vos.user.*; import com.panzhihua.common.utlis.*; @@ -90,7 +95,6 @@ import com.panzhihua.service_user.model.dos.SysUserAgreementDO; import com.panzhihua.service_user.model.dos.SysUserDO; import com.panzhihua.service_user.model.dos.SysUserFeedbackDO; -import com.panzhihua.service_user.model.dos.SysUserInputDO; import com.panzhihua.service_user.model.dos.SysUserNoticeDO; import com.panzhihua.service_user.model.dos.SysUserRoleDO; import com.panzhihua.service_user.model.dtos.DataKanbanDTO; @@ -152,10 +156,17 @@ private SysAppConfigDao sysAppConfigDao; @Resource private SysTemplateConfigDao sysTemplateConfigDao; - public static final Integer ALLCOUNTY=1; - public static final Integer ALLSTREET=2; - public static final Integer ALLCOMMUNITY=3; - public static final Integer BYSTREET=4; + @Resource + private ObjectMapper objectMapper; + private static final Integer ALLCOUNTY=1; + private static final Integer ALLSTREET=2; + private static final Integer ALLCOMMUNITY=3; + private static final Integer BYSTREET=4; + private static final Integer BYAREA=5; + private static final String OTHERUSER="其他用户"; + private static final String UPDATEACIDCHECKRECORD="修改排查数据"; + private static final String UPDATEACIDMEMBER="修改防疫工作人员信息"; + private static final String UPDATEACIDRECORD="修改防疫信息数据"; // @Resource // private GridService gridService; @@ -164,11 +175,11 @@ // String encode = new BCryptPasswordEncoder().encode("lbsq123456"); // System.out.println(encode); - List<Date> dates = new ArrayList<>(); + List<String> dates = new ArrayList<>(); Date date = new Date(); - for (int i = 6; i >= 0; i--) { + for (int i = 19; i >= 0; i--) { Date date1 = DateUtils.addDays(date, -i); - dates.add(date1); + dates.add(DateFormatUtils.format(date1,"MM-dd" )); } System.out.println(dates); @@ -189,7 +200,7 @@ * @return token */ @Override - public R updateInsertUser(String openid, String sessionKey, String unionid) { + public R updateInsertUser(String openid, String sessionKey, String unionid,String appId) { SysUserDO sysUserDO = userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getOpenid, openid)); boolean empty = ObjectUtils.isEmpty(sysUserDO); @@ -205,6 +216,7 @@ sysUserDO1.setLastLoginTime(date); sysUserDO1.setPassword(encode); sysUserDO1.setType(1); + sysUserDO1.setAppId(appId); num = userDao.insert(sysUserDO1); } else { String encode = new BCryptPasswordEncoder().encode(UserConstants.PASSWORD); @@ -213,6 +225,7 @@ sysUserDO.setPassword(encode); sysUserDO.setLastLoginTime(date); sysUserDO.setType(1); + sysUserDO.setAppId(appId); num = userDao.updateById(sysUserDO); } if (num > 0) { @@ -287,7 +300,7 @@ * @return 用户基本信息、角色 */ @Override - public R<LoginUserInfoVO> getUserInfo(String name, int type) { + public R<LoginUserInfoVO> getUserInfo(String name, int type,String appId) { SysUserDO sysUserDO = null; if (1 == type) { sysUserDO = userDao.selectOne( @@ -296,9 +309,9 @@ LambdaQueryWrapper<SysUserDO> wrapper = new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getType, type); if (type == 11) { //只允许通过account登录 - wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name)); + wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).eq(SysUserDO::getAppId,appId)); } else { - wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAccount, name).or() + wrapper.and(sysUserDOLambdaQueryWrapper -> sysUserDOLambdaQueryWrapper.eq(SysUserDO::getAppId,appId).eq(SysUserDO::getAccount, name).or() .eq(SysUserDO::getPhone, name)); } sysUserDO = userDao.selectOne(wrapper); @@ -324,11 +337,11 @@ if(StringUtils.isNotEmpty(areaName)){ loginUserInfoVO.setAreaName(areaName); } - SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode())); - if(sysAppConfig!=null){ - loginUserInfoVO.setAppId(sysAppConfig.getAppId()); - loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); - } +// SysAppConfig sysAppConfig=sysAppConfigDao.selectOne(new QueryWrapper<SysAppConfig>().lambda().eq(SysAppConfig::getAreaCode,comActVO.getAreaCode())); +// if(sysAppConfig!=null){ +// loginUserInfoVO.setAppId(sysAppConfig.getAppId()); +// loginUserInfoVO.setAppSecret(sysAppConfig.getSecret()); +// } } } List<SysRoleDO> roleDOList = roleDAO.selectByUserId(sysUserDO.getUserId()); @@ -675,12 +688,10 @@ @Override public R<LoginUserInfoVO> detailUser(Long userId) { LoginUserInfoVO loginUserInfoVO = new LoginUserInfoVO(); - if (userId < 100000000l) { SysUserDO sysUserDO = userDao.selectById(userId); if (ObjectUtils.isEmpty(sysUserDO)) { return R.fail("人员不存在"); } - BeanUtils.copyProperties(sysUserDO, loginUserInfoVO); List<ComMngFamilyInfoDO> comMngFamilyInfoDOS = comMngFamilyInfoDAO .selectList(new QueryWrapper<ComMngFamilyInfoDO>().lambda().eq(ComMngFamilyInfoDO::getUserId, userId)); @@ -693,43 +704,6 @@ }); loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); } - - } else { - // 导入社区人员 - SysUserInputDO sysUserInputDO = sysUserInputDAO.selectById(userId - 100000000); - if (ObjectUtils.isEmpty(sysUserInputDO)) { - return R.fail("人员不存在"); - } - String name1 = sysUserInputDO.getName(); - BeanUtils.copyProperties(sysUserInputDO, loginUserInfoVO); - String doorNumber = sysUserInputDO.getDoorNumber(); - Long areaId = sysUserInputDO.getAreaId(); - List<SysUserInputDO> sysUserInputDOS = sysUserInputDAO.selectList(new QueryWrapper<SysUserInputDO>() - .lambda().eq(SysUserInputDO::getDoorNumber, doorNumber).eq(SysUserInputDO::getAreaId, areaId)); - if (!ObjectUtils.isEmpty(sysUserInputDOS)) { - List<ComMngFamilyInfoVO> comMngFamilyInfoVOS = new ArrayList<>(); - sysUserInputDOS.forEach(sysUserInputDO1 -> { - String name = sysUserInputDO1.getName(); - if (name1.equals(name)) { - return; - } - Integer isRent = sysUserInputDO1.getIsRent(); - ComMngFamilyInfoVO comMngFamilyInfoVO = new ComMngFamilyInfoVO(); - comMngFamilyInfoVO.setIdCard(SensitiveUtil.desensitizedIdNumber(sysUserInputDO1.getIdCard())); - comMngFamilyInfoVO.setName(name); - comMngFamilyInfoVO.setPhone(SensitiveUtil.desensitizedPhoneNumber(sysUserInputDO1.getPhone())); - if (isRent.intValue() == 0) { - comMngFamilyInfoVO.setRelationship("家人"); - } else { - comMngFamilyInfoVO.setRelationship("合租"); - } - comMngFamilyInfoVO.setAge(IdCard.IdNOToAge(sysUserInputDO1.getIdCard())); - comMngFamilyInfoVOS.add(comMngFamilyInfoVO); - }); - loginUserInfoVO.setComMngFamilyInfoVOS(comMngFamilyInfoVOS); - } - - } ComActVO comActVO = userDao.selectCommunity(loginUserInfoVO.getCommunityId()); if (!ObjectUtils.isEmpty(comActVO)) { String areaName=userDao.selectAreaCodeByStreetId(comActVO.getStreetId()); @@ -1237,6 +1211,7 @@ String encode = new BCryptPasswordEncoder().encode(administratorsUserVO.getPassword()); administratorsUserVO.setPassword(encode); BeanUtils.copyProperties(administratorsUserVO, sysUserDO); + sysUserDO.setAppId(administratorsUserVO.getAppid()); int insert = 0; try { insert = userDao.insert(sysUserDO); @@ -1544,6 +1519,17 @@ */ @Override public R addOperLog(SysOperLogVO operlog) { + //判断是否需要保存修改前的数据 + final Boolean flag=(operlog.getTitle().equals(UPDATEACIDCHECKRECORD) || operlog.getTitle().equals(UPDATEACIDMEMBER) + || operlog.getTitle().equals(UPDATEACIDRECORD)); + if (flag){ + //保存数据 + try { + operlog.setBeforeUpdateData(saveBeforeUpdateData(operlog)); + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + } SysOperLogDO sysOperLogDO = new SysOperLogDO(); BeanUtils.copyProperties(operlog, sysOperLogDO); int insert = sysOperLogDAO.insert(sysOperLogDO); @@ -1729,9 +1715,9 @@ * @return 协议内容 */ @Override - public R userAgreement(int type) { + public R userAgreement(int type,String appId) { SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO - .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type)); + .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId,appId)); return R.ok(sysUserAgreementDO); } @@ -2050,9 +2036,9 @@ * @return 协议内容 */ @Override - public R agreement(Integer type) { + public R agreement(Integer type,String appId) { SysUserAgreementDO sysUserAgreementDO = sysUserAgreementDAO - .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type)); + .selectOne(new QueryWrapper<SysUserAgreementDO>().lambda().eq(SysUserAgreementDO::getType, type).eq(SysUserAgreementDO::getAppId,appId)); if (ObjectUtils.isEmpty(sysUserAgreementDO)) { return R.fail("协议不存在"); } @@ -2266,14 +2252,20 @@ String encode = new BCryptPasswordEncoder().encode(storeVO.getStorePassword()); BeanUtils.copyProperties(storeVO, sysUserDO); sysUserDO.setAccount(storeVO.getStoreAccount()); - sysUserDO.setType(5); + sysUserDO.setType(20); + sysUserDO.setCommunityId(communityId); sysUserDO.setAreaId(null); sysUserDO.setStatus(1); sysUserDO.setPhone(storeVO.getPhone()); sysUserDO.setName(storeVO.getContacts()); sysUserDO.setPassword(encode); + sysUserDO.setAppId("wx0cef797390444b75"); try { insert = userDao.insert(sysUserDO); + SysUserRoleDO sysUserRoleDO = new SysUserRoleDO(); + sysUserRoleDO.setUserId(sysUserDO.getUserId()); + sysUserRoleDO.setRoleId(sysRoleDO.getRoleId()); + sysUserRoleDAO.insert(sysUserRoleDO); // 把SysUserId赋值给店铺 if (sysUserDO.getUserId() != null) { userDao.updateStoreByPhone(storeVO.getPhone(), sysUserDO.getUserId()); @@ -2920,7 +2912,7 @@ */ @Override public R dataKanBans(DataKanBansDto dataKanBansDto){ - IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAreaCode()); + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(dataKanBansDto.getAppId()); List<String> communityUserX = new ArrayList<>(); List<Integer> communityUserY = new ArrayList<>(); @@ -2938,9 +2930,9 @@ page.setSize(20L); } if(dataKanBansDto.getType() != null && dataKanBansDto.getType().equals(DataKanBansDto.type.by)){ - dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(page, dataKanBansDto.getAreaCode()).getRecords(); + dataKanbanDTOS = userDao.selectCommunityUserOrderMonth(page, dataKanBansDto.getAppId()).getRecords(); }else{ - dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAreaCode()).getRecords(); + dataKanbanDTOS = userDao.selectCommunityUserOrder(page, dataKanBansDto.getAppId()).getRecords(); } if (!ObjectUtils.isEmpty(dataKanbanDTOS)) { dataKanbanDTOS.forEach(dataKanbanDTO -> { @@ -2953,7 +2945,7 @@ List<Date> serverndays = com.panzhihua.common.utlis.DateUtils.getOldDays(); serverndays.forEach(date -> { // 查询社区活动数量 - DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAreaCode(),date); + DataKanbanDTO dataKanbanDTO = userDao.selectCommunityAddUserOrder(dataKanBansDto.getAppId(),date); communityActiveUserX.add(DateFormatUtils.format(date, "MM-dd")); communityActiveUserY.add(dataKanbanDTO.getNum()); communityActiveUserZ.add(dataKanbanDTO.getDayNum()); @@ -3292,7 +3284,7 @@ } Map<String, String> headerMap=new HashMap<>(); headerMap.put("appid","10000"); - String resultJson=HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province="+uuLoginVO.getProvince()+"&city="+uuLoginVO.getCity()+"&area="+uuLoginVO.getArea()+"&appid=10000×tamp="+uuLoginVO.getTimestamp()+"&sign="+uuLoginVO.getSign()+"&mobile="+uuLoginVO.getMobile(),headerMap,null); + String resultJson=HttpClientUtil.get("https://api.uucsh.cn/member/wx/get-access?province="+uuLoginVO.getProvince()+"&city="+uuLoginVO.getCity()+"&area="+uuLoginVO.getArea()+"&appid=10000×tamp="+uuLoginVO.getTimestamp()+"&sign="+uuLoginVO.getSign()+"&mobile="+uuLoginVO.getMobile()+"&couponId="+uuLoginVO.getCouponId(),headerMap,null); JSONObject result = JSON.parseObject(resultJson); if(result.get("status").equals(1)){ return R.ok(result.get("data")); @@ -3309,8 +3301,8 @@ } @Override - public R newIndexData(Integer type, Long streetId) { - IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(null); + public R newIndexData(Integer type, Long streetId,Long areaCode,String appId) { + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); IndexDataAnalysisVO vo=new IndexDataAnalysisVO(); if (ObjectUtils.isEmpty(type)){ //不传默认为所有区县 @@ -3319,74 +3311,387 @@ if (type.equals(ALLCOUNTY) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ BeanUtils.copyProperties(indexDataKanbanVO,vo); }else { - IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId); + IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null); BeanUtils.copyProperties(indexDataVO,vo); } - List<UserProportion> userProportionsTotal = userDao.userAnalysis(type, null, streetId); - Integer streetUser = userDao.streetUserCount(streetId); - for (UserProportion userProportion : userProportionsTotal) { - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ - //计算占比 - //userProportion.setAreaCode(null); - if (type.equals(BYSTREET)){ - userProportion.setRate(getRate(streetUser,userProportion.getUser())); - } - userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); - } - } - } - List<UserProportion> userProportionsMonth = userDao.userAnalysis(type, DateUtil.beginOfMonth(new Date()).toString(), streetId); - for (UserProportion userProportion : userProportionsMonth) { - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ - //计算占比 - //userProportion.setAreaCode(null); - if (type.equals(BYSTREET)){ - userProportion.setRate(getRate(streetUser,userProportion.getUser())); - } - userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); - } - } - } - vo.setUserProportionTotal(userProportionsTotal); - vo.setUserProportionMonth(userProportionsMonth); - List<RealUser> realUsersTotal = userDao.realUserCount(type, null, streetId); - List<RealUser> realUsersMonth = userDao.realUserCount(type, DateUtil.beginOfMonth(new Date()).toString(), streetId); - vo.setRealUsersTotal(realUsersTotal); - vo.setRealUsersMonth(realUsersMonth); - vo.setRealUser(getStreetRealUser(realUsersTotal)); - vo.setRealUserRate(getRate(vo.getAllUser(),vo.getRealUser())); - vo.setUserActivityXAll(getTwentyDays()); - vo.setUserActivityXMonth(getMonthTwentyDays()); - List<String> addUserYAll=new ArrayList<>(); - List<String> addUserYMonth=new ArrayList<>(); - List<String> activeUserYAll=new ArrayList<>(); - List<String> activeUserYMonth=new ArrayList<>(); - SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); - //获取用户行为Y轴 - for (Date date : vo.getUserActivityXAll()) { - //查询当天的新增和日活 - Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId); - addUserYAll.add(map.get("addUser").toString()); - activeUserYAll.add(map.get("activeUser").toString()); - } - for (Date date : vo.getUserActivityXMonth()) { - Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId); - addUserYMonth.add(map.get("addUser").toString()); - activeUserYMonth.add(map.get("activeUser").toString()); - } - vo.setAddUserYAll(addUserYAll); - vo.setAddUserYWeek(addUserYMonth); - vo.setActiveUserYAll(activeUserYAll); - vo.setActiveUserYMonth(activeUserYMonth); - if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ - //获取其他用户 - vo.setOtherUser(indexDataKanbanVO.getAllUser()-countUser(vo.getUserProportionTotal())); - vo.setOtherUserRate(getRate(indexDataKanbanVO.getAllUser(),vo.getOtherUser())); - } +// List<UserProportion> userProportionsTotal = userDao.userAnalysis(type, null, streetId,areaCode); +// Integer streetUser = userDao.streetUserCount(streetId,areaCode); +// for (UserProportion userProportion : userProportionsTotal) { +// if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ +// if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ +// //计算占比 +// //userProportion.setAreaCode(null); +// if (type.equals(BYSTREET)){ +// userProportion.setRate(getRate(streetUser,userProportion.getUser())); +// } +// userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); +// } +// } +// } +// List<UserProportion> userProportionsMonth = userDao.userAnalysis(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode); +// for (UserProportion userProportion : userProportionsMonth) { +// if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion)){ +// if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(userProportion.getUser())){ +// //计算占比 +// //userProportion.setAreaCode(null); +// if (type.equals(BYSTREET)){ +// userProportion.setRate(getRate(streetUser,userProportion.getUser())); +// } +// userProportion.setRate(getRate(vo.getAllUser(),userProportion.getUser())); +// } +// } +// } +// vo.setUserProportionTotal(userProportionsTotal); +// vo.setUserProportionMonth(userProportionsMonth); +// List<RealUser> realUsersTotal = userDao.realUserCount(type, null, streetId,areaCode); +// List<RealUser> realUsersMonth = userDao.realUserCount(type, DateUtil.beginOfMonth(new Date()).toString(), streetId,areaCode); +// vo.setRealUsersTotal(realUsersTotal); +// vo.setRealUsersMonth(realUsersMonth); +// vo.setRealUser(getStreetRealUser(realUsersTotal)); +// vo.setRealUserRate(getRate(vo.getAllUser(),vo.getRealUser())); +// List<Date> twentyDays = getTwentyDays(); +// List<Date> monthTwentyDays = getMonthTwentyDays(); +// vo.setUserActivityXAll(getMAndD(getTwentyDays())); +// vo.setUserActivityXMonth(getMAndD(getMonthTwentyDays())); +// List<String> addUserYAll=new ArrayList<>(); +// List<String> addUserYMonth=new ArrayList<>(); +// List<String> activeUserYAll=new ArrayList<>(); +// List<String> activeUserYMonth=new ArrayList<>(); +// SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); +// //获取用户行为Y轴 +// for (Date date : twentyDays) { +// //查询当天的新增和日活 +// Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode); +// addUserYAll.add(map.get("addUser").toString()); +// activeUserYAll.add(map.get("activeUser").toString()); +// } +// for (Date date : monthTwentyDays) { +// Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode); +// addUserYMonth.add(map.get("addUser").toString()); +// activeUserYMonth.add(map.get("activeUser").toString()); +// } +// vo.setAddUserYAll(addUserYAll); +// vo.setAddUserYWeek(addUserYMonth); +// vo.setActiveUserYAll(activeUserYAll); +// vo.setActiveUserYMonth(activeUserYMonth); +// if (type.equals(BYSTREET) || type.equals(ALLCOMMUNITY) || type.equals(ALLSTREET)){ +// //获取其他用户 +// vo.setOtherUser(indexDataKanbanVO.getAllUser()-countUser(vo.getUserProportionTotal())); +// vo.setOtherUserRate(getRate(indexDataKanbanVO.getAllUser(),vo.getOtherUser())); +// } return R.ok(vo); } + + @Override + public R userRate(Integer type, Long streetId, Long areaCode, Integer range,String appId) { + IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO(); + if (type.equals(BYSTREET) || type.equals(BYAREA)){ + //街道,区县筛选 + IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null); + BeanUtils.copyProperties(indexDataVO,analysisVO ); + }else { + //总量数据 + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); + BeanUtils.copyProperties(indexDataKanbanVO,analysisVO ); + } + String date=""; + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){ + if (range.equals(1)){ + DateTime dateTime = DateUtil.beginOfMonth(new Date()); + date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString(); + } + } + List<UserProportion> userProportions = userDao.userAnalysis(type, date, streetId,areaCode,appId); + 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,appId); + 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); + } + } + } + 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,String appId) { + IndexDataAnalysisVO analysisVO=new IndexDataAnalysisVO(); + if (type.equals(BYSTREET) || type.equals(BYAREA)){ + //街道,区县筛选 + IndexDataKanbanVO indexDataVO = userDao.dataKanBanStreet(streetId,areaCode,null); + BeanUtils.copyProperties(indexDataVO,analysisVO ); + }else { + //总量数据 + IndexDataKanbanVO indexDataKanbanVO = userDao.selectIndexDataKanban(appId); + BeanUtils.copyProperties(indexDataKanbanVO,analysisVO ); + } + String date=""; + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){ + if (range.equals(1)){ + DateTime dateTime = DateUtil.beginOfMonth(new Date()); + date = DateUtil.parse(dateTime.toString(), "yyyy-MM-dd HH:mm:ss").toString(); + } + } + RealUserVO realUserVO=new RealUserVO(); + List<RealUser> realUsers = userDao.realUserCount(type, date, streetId, areaCode,appId); + List<RealUserAnalysisVO> realUserList=new ArrayList<>(); + realUserVO.setRealUserCount(getStreetRealUser(realUsers)); + 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); + } + + @Override + public R userActivity(Integer type, Long streetId, Long areaCode, Integer range, String appId) { + UserActivityAnalysisVO vo=new UserActivityAnalysisVO(); + List<Date> activeX=getTwentyDays(); + List<String> activeY=new ArrayList<>(); + List<String> adY=new ArrayList<>(); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(range)){ + if (range.equals(1)){ + //本月数据 + activeX = getMonthTwentyDays(); + } + } + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + for (Date date : activeX) { + Map<String, Long> map = userDao.getDailyAddAndActive(DateUtil.parse(sdf.format(date)), streetId,areaCode, appId); + adY.add(map.get("addUser").toString()); + activeY.add(map.get("activeUser").toString()); + } + vo.setUserX(getMAndD(activeX)); + 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).eq(SysUserDO::getAppId,"wx118de8a734d269f0").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(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 resetPassword(Integer type, String account,String appId) { + SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getAccount,account).eq(SysUserDO::getType,type).eq(SysUserDO::getAppId,appId)); + if(sysUserDO!=null){ + sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR."); + userDao.updateById(sysUserDO); + } + return R.ok(); + } + + @Override + public R tfLogin(UuLoginVO uuLoginVO) { + SysUserDO sysUserDO=userDao.selectOne(new QueryWrapper<SysUserDO>().lambda().eq(SysUserDO::getPhone,uuLoginVO.getMobile()).eq(SysUserDO::getType,16)); + if(sysUserDO==null){ + sysUserDO=new SysUserDO(); + sysUserDO.setPassword("$2a$10$F/2lE2NMhKNHJfi5.FLmfu7jIr7ImRWgCTTeO6m3IRNR2V4sv8YR."); + sysUserDO.setType(16); + sysUserDO.setStatus(1); + sysUserDO.setPhone(uuLoginVO.getMobile()); + sysUserDO.setAccount(uuLoginVO.getMobile()); + sysUserDO.setAppId("wx0cef797390444b75"); + userDao.insert(sysUserDO); + } + return R.ok(); + } + + @Override + public R accept(Long userId) { + SysUserDO sysUserDO=new SysUserDO(); + sysUserDO.setUserId(userId); + sysUserDO.setIsAccept(1); + userDao.updateById(sysUserDO); + return R.ok(); + } + + + @Override + public R getAreaAndStreet() { + List<Integer> areaCodeList=areaCodeList(); + List<AreaVO> areaVOList=new ArrayList<>(); + for (Integer code : areaCodeList) { + AreaVO vo=new AreaVO(); + vo.setId(code); + vo.setName(areaCodeToName(code.longValue())); + vo.setStreetList(userDao.selectStreetsByAreaCode(code)); + areaVOList.add(vo); + } + return R.ok(areaVOList); + } + /** * 获取最近20天数据 @@ -3431,11 +3736,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; @@ -3462,13 +3768,13 @@ /** * 计算当前统计范围内的所有用户数 * */ - public Integer countUser(List<UserProportion> list){ + public Integer countUser(List<UserRateAnalysisVO> list){ Integer count=0; if (list.size()>0){ - for (UserProportion proportion : list) { + for (UserRateAnalysisVO proportion : list) { if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion)){ - if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion.getUser())){ - count+=proportion.getUser(); + if (org.apache.commons.lang3.ObjectUtils.isNotEmpty(proportion.getCount())){ + count+=proportion.getCount(); } } } @@ -3476,4 +3782,180 @@ return count; } + /** + * 截取月,日 + * */ + public List<String> getMAndD(List<Date> list){ + List<String> dateList=new ArrayList<>(); + if (list.size()>0){ + for (Date date : list) { + dateList.add(DateFormatUtils.format(date,"MM-dd" )); + } + } + return dateList; + } + + + /** + * areaCode转区县名 + * */ + private String areaCodeToName(Long areaCode){ + String code = areaCode.toString(); + String name="不正确的areaCode"; + switch (code){ + case "510423" : + name= "西区"; + break; + case "510402": + name="东区"; + break; + case "510411": + name="仁和区"; + break; + case "510421": + 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()); + }else if(type.equals(ALLSTREET) || type.equals(BYAREA)){ + name=proportion.getStreetName(); + }else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)){ + name=proportion.getCommunityName(); + } + return name; + } + + /** + *根据type选择要设置的名称 + * */ + private String typeToNameRealUser(Integer type,RealUser proportion){ + String name=""; + if (type.equals(ALLCOUNTY)){ + name=areaCodeToName(Long.parseLong(proportion.getAreaCode())); + }else if(type.equals(ALLSTREET) || type.equals(BYAREA)){ + name=proportion.getStreetName(); + }else if (type.equals(ALLCOMMUNITY) || type.equals(BYSTREET)){ + name=proportion.getCommunityName(); + } + return name; + } + + /** + * 生成区县code列表 + * */ + private List<Integer> areaCodeList(){ + List<Integer> list=new ArrayList<>(); + list.add(510402); + list.add(510423); + list.add(510411); + list.add(510421); + list.add(510422); + list.add(510424); + return list; + } + + /** + * 根据日志保存修改之前的信息 + * */ + private String saveBeforeUpdateData(SysOperLogVO operlog) throws JsonProcessingException { + if (operlog.getTitle().equals(UPDATEACIDCHECKRECORD)){ + // + ComActAcidCheckRecordVO comActAcidCheckRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidCheckRecordVO.class); + ComActAcidCheckRecordVO comActAcidCheckRecordVO1 = userDao.selectComActAcidCheckRecordById(comActAcidCheckRecordVO.getId()); + return JSONObject.toJSONString(comActAcidCheckRecordVO1); + }else if (operlog.getTitle().equals(UPDATEACIDRECORD)){ + ComActAcidRecordVO comActAcidRecordVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidRecordVO.class); + return JSONObject.toJSONString(userDao.selectComActAcidRecord(comActAcidRecordVO.getId())); + }else if(operlog.getTitle().equals(UPDATEACIDMEMBER)){ + ComActAcidMemberVO comActAcidMemberVO = objectMapper.readValue(operlog.getOperParam(), ComActAcidMemberVO.class); + return JSONObject.toJSONString(userDao.selectComActAcidMember(comActAcidMemberVO.getId())); + } + 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