From ea9120887a18d0c121705ff312321097e3e8abcc Mon Sep 17 00:00:00 2001 From: 罗元桥 <2376770955@qq.com> Date: 星期四, 24 六月 2021 18:10:24 +0800 Subject: [PATCH] Merge branch 'test' into 'master' --- springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java | 196 +++++++++++++++++++++++++++++++++--------------- 1 files changed, 134 insertions(+), 62 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java index 9da51fd..1ac8cdb 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ScreenWorkServiceImpl.java @@ -1,8 +1,8 @@ package com.panzhihua.service_community.service.impl; -import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.panzhihua.common.model.dtos.partybuilding.ComPbActivityDTO; import com.panzhihua.common.model.vos.R; import com.panzhihua.common.model.vos.screen.*; @@ -10,13 +10,14 @@ import com.panzhihua.common.utlis.StringUtils; import com.panzhihua.service_community.dao.*; import com.panzhihua.service_community.model.dos.ComActDO; +import com.panzhihua.service_community.model.dos.ComActDynDO; import com.panzhihua.service_community.service.ScreenWorkService; +import org.apache.commons.net.ntp.TimeStamp; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.math.RoundingMode; -import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -31,33 +32,23 @@ private static final Integer pageSize = 200; @Resource + private ComActDAO comActDAO; + @Resource private ComActNeighborCircleDAO comActNeighborCircleDAO; - + @Resource + private ComActDynDAO comActDynDAO; @Resource private ComActMicroWishDAO comActMicroWishDAO; - @Resource private ComActActivityDAO actActivityDAO; - @Resource private ComActDiscussDAO comActDiscussDAO; - @Resource private ComPbDynDAO comPbDynDAO; - @Resource private ComActEasyPhotoDAO comActEasyPhotoDAO; - @Resource ComActDAO comActDAO; - - /** - * 项目开始时间,超过的不统计 - */ - private final String initMonth = "2020-12"; - private final String moth_format_str = "yyyy-MM"; - - private final String moth_format_ch = "yyyy年MM月"; private final String[] monthStr = new String[]{"一","二","三","四","五","六","七","八","九","十","十一","十二"}; @@ -122,12 +113,12 @@ //统计本月新增、居民活动,志愿者活动 String date = DateUtils.getDateFormatString(new Date(),moth_format_str); Map<String,Long> countMap = actActivityDAO.countByCommunityId(communityId,date); + comActActivityScreenVO.setTotalNum(countMap.get("totalNum") == null ? 0L : countMap.get("totalNum")); comActActivityScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : countMap.get("currentNum")); comActActivityScreenVO.setCommonNum(countMap.get("commonNum") == null ? 0L : countMap.get("commonNum")); comActActivityScreenVO.setCommonPeopleNum(countMap.get("commonPeopleNum") == null ? 0L : countMap.get("commonPeopleNum")); comActActivityScreenVO.setVolunteerNum(countMap.get("volunteerNum") == null ? 0L : countMap.get("volunteerNum")); comActActivityScreenVO.setVolunteerPeopleNum(countMap.get("volunteerPeopleNum") == null ? 0L : countMap.get("volunteerPeopleNum")); - comActActivityScreenVO.setTotalNum(comActActivityScreenVO.getCommonNum()+comActActivityScreenVO.getVolunteerNum()); //最近活动 comActActivityScreenVO.setList(actActivityDAO.screenActivity(communityId,pageSize)); return R.ok(comActActivityScreenVO); @@ -140,11 +131,11 @@ String date = DateUtils.getDateFormatString(new Date(),moth_format_str); Map<String,Long> countMap = comActDiscussDAO.countByCommunityId(communityId,date); discussScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : countMap.get("currentNum")); + discussScreenVO.setTotalNum(countMap.get("totalNum") == null ? 0L : countMap.get("totalNum")); discussScreenVO.setImgNum(countMap.get("imgNum") == null ? 0L : countMap.get("imgNum")); discussScreenVO.setImgPeopleNum(countMap.get("imgPeopleNum") == null ? 0L : countMap.get("imgPeopleNum")); - discussScreenVO.setVoteNum(countMap.get("voteNum") == null ? 0L : countMap.get("voteNum")); + discussScreenVO.setVoteNum(discussScreenVO.getTotalNum() - discussScreenVO.getImgNum()); discussScreenVO.setVotePeopleNum(countMap.get("votePeopleNum") == null ? 0L : countMap.get("votePeopleNum")); - discussScreenVO.setTotalNum(discussScreenVO.getImgNum()+discussScreenVO.getVoteNum()); discussScreenVO.setList(comActDiscussDAO.screenDiscuss(communityId,pageSize)); return R.ok(discussScreenVO); } @@ -159,11 +150,10 @@ pbWorkScreenVO.setTotalNum(pbWorkScreenVO.getActivityNum() + pbWorkScreenVO.getDynNum()); pbWorkScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : countMap.get("currentNum")); //统计近半年数据 - int n = 6; List<PbWorkVO> list = new ArrayList<>(); - for(Map<String,String> map : listHalfYear(n)){ - PbWorkVO result = comPbDynDAO.countByTime(map.get("start"),map.get("end"),communityId); - result.setMonth(map.get("name")); + for(PbWorkVO workVO: listHalfYear()){ + PbWorkVO result = comPbDynDAO.countByTime(workVO.getStart(),workVO.getEnd(),communityId); + result.setMonth(workVO.getMonth()); list.add(result); } pbWorkScreenVO.setList(list); @@ -171,30 +161,31 @@ } - private List<Map<String,String>> listHalfYear(int num) { - List<Map<String,String>> dateList = new ArrayList<>(); + private List<PbWorkVO> listHalfYear() { + List<PbWorkVO> dateList = new ArrayList<>(); Date now = new Date(); - for(int i= num;i>=1;i--){ + for(int i= 6;i>=1;i--){ Date date = DateUtils.getDateM(now,-i); DateTime endDay = DateUtil.endOfMonth(date); int m = DateUtil.month(endDay); + if(m == 0){ + m = 12; + } + m--; int day = DateUtil.dayOfMonth(endDay); int half = day/2; String month = DateUtil.format(date,moth_format_str); - if(Objects.equals(month,initMonth)){ - continue; - } - Map<String,String> startMap = new HashMap<>(); - startMap.put("name",monthStr[m]+"月上旬"); - startMap.put("start",month+ "-01 00:00:00"); - startMap.put("end",month+ "-"+half+" 23:59:58"); - dateList.add(startMap); - Map<String,String> endMap = new HashMap<>(); - endMap.put("name",monthStr[m]+"月下旬"); - endMap.put("start",month+ "-"+half+" 23:59:59"); - endMap.put("end",DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss")); - dateList.add(endMap); + PbWorkVO pbWorkVO = new PbWorkVO(); + pbWorkVO.setMonth(monthStr[m]+"月上旬"); + pbWorkVO.setStart(month+ "-01 00:00:00"); + pbWorkVO.setEnd(month+ "-"+half+" 23:59:58"); + dateList.add(pbWorkVO); + PbWorkVO pbWorkVO2 = new PbWorkVO(); + pbWorkVO2.setMonth(monthStr[m]+"月下旬"); + pbWorkVO2.setStart(month+ "-"+half+" 23:59:58"); + pbWorkVO2.setEnd(DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss")); + dateList.add(pbWorkVO2); } return dateList; @@ -210,36 +201,32 @@ Map<String,Object> countMap = comActEasyPhotoDAO.countByCommunityId(communityId,date); comActEasyPhotoScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : Long.valueOf(countMap.get("currentNum").toString())); comActEasyPhotoScreenVO.setNoneDeal(countMap.get("noneDeal") == null ? 0L : Long.valueOf(countMap.get("noneDeal").toString())); - comActEasyPhotoScreenVO.setPubPoint(countMap.get("pubPoint") == null ? 0 : Double.valueOf(countMap.get("pubPoint").toString()).intValue()); - comActEasyPhotoScreenVO.setDealTime(countMap.get("dealTime") == null ? "0h" : convertTimeStr(Double.valueOf(countMap.get("dealTime").toString()).intValue())); + comActEasyPhotoScreenVO.setPubPoint(countMap.get("pubPoint") == null ? 0 : Integer.valueOf(countMap.get("pubPoint").toString())); + comActEasyPhotoScreenVO.setDealTime(countMap.get("dealTime") == null ? 0 : Double.valueOf(countMap.get("dealTime").toString()).intValue()); List<EastPhotoVO> list = new ArrayList<>(); - //统计半年数据 - int n = 6; - List<Map<String,String>> timeList = listHalfYear(n); - for(Map<String,String> map : timeList){ - String nowDate = DateUtils.getDateFormatString(DateUtil.parseDate(map.get("start")),moth_format_str); - EastPhotoVO result = comActEasyPhotoDAO.countByTime(map.get("start"),map.get("end"),nowDate,communityId); - result.setMonth(map.get("name")); + for(PbWorkVO workVO: listHalfYear()){ + String nowDate = DateUtils.getDateFormatString(DateUtil.parseDate(workVO.getStart()),moth_format_str); + EastPhotoVO result = comActEasyPhotoDAO.countByTime(workVO.getStart(),workVO.getEnd(),nowDate,communityId); + result.setMonth(workVO.getMonth()); list.add(result); } comActEasyPhotoScreenVO.setList(list); - comActEasyPhotoScreenVO.setListTimes(DateUtil.format(DateUtil.parse(timeList.get(0).get("start"),DatePattern.NORM_DATETIME_FORMAT),moth_format_ch)+"-"+DateUtil.format(DateUtil.parse(timeList.get(timeList.size()-1).get("start"),DatePattern.NORM_DATETIME_FORMAT),moth_format_ch)); return R.ok(comActEasyPhotoScreenVO); } - private String convertTimeStr(int minute) { - int hour = minute/60; - int min = minute%60; - StringBuilder timestr = new StringBuilder(); - if(hour > 0){ - timestr.append(hour).append("h"); - } - if(min > 0){ - timestr.append(min).append("min"); - } - return timestr.toString(); - } + private List<EasyPhotoPointVO> getList(Map<String, Long> dealMap) { + Set<Map.Entry<String,Long>> entrySet = dealMap.entrySet(); + List<EasyPhotoPointVO> list = new ArrayList<>(); + for(Map.Entry<String,Long> en:entrySet){ + EasyPhotoPointVO easyPhotoPointVO = new EasyPhotoPointVO(); + easyPhotoPointVO.setTypeName(en.getKey()); + easyPhotoPointVO.setPoint(en.getValue().intValue()); + list.add(easyPhotoPointVO); + } + return list; + + } @Override public R workCount(Long communityId) { @@ -259,9 +246,94 @@ ComActDO comActDO = comActDAO.selectById(communityId); BigDecimal days = new BigDecimal(DateUtil.betweenDay(comActDO.getCreateAt(),new Date(),false)); BigDecimal num = new BigDecimal(comActWorkScreenVO.getTotalCompleted()); - BigDecimal rt = num.divide(days,1,RoundingMode.HALF_UP); + BigDecimal rt = num.divide(days,1, RoundingMode.HALF_UP); comActWorkScreenVO.setEveryDayNum(rt.toString()); return R.ok(comActWorkScreenVO); } + private String convertTimeStr(int minute) { + int hour = minute/60; + int min = minute%60; + StringBuilder timestr = new StringBuilder(); + if(hour > 0){ + timestr.append(hour).append("h"); + } + if(min > 0){ + timestr.append(min).append("min"); + } + return timestr.toString(); + } + + @Override + public R dynamicWork(Long communityId){ + ComDynamicWorkScreenVO workScreenVO = new ComDynamicWorkScreenVO(); + String date = DateUtils.getDateFormatString(new Date(),moth_format_str); + Map<String,Long> countMap = comActDynDAO.countByCommunityId(communityId,date); + if(!countMap.isEmpty()){ + workScreenVO.setTotalNum(countMap.get("dynTotal")== null ? 0L : Long.valueOf(countMap.get("dynTotal").toString())); + workScreenVO.setCurrentNum(countMap.get("currentNum")== null ? 0L : Long.valueOf(countMap.get("currentNum").toString())); + } + + //计算平均每天动态 + DateScreenVO countAvg = comActDynDAO.countByAvgCommunityId(communityId); + if(countAvg != null){ + int day = DateUtils.differentDays(countAvg.getStartTime(),countAvg.getEndTime()); + if(day > 0){ + workScreenVO.setCurrentAvgNum(workScreenVO.getTotalNum().intValue()/day); + } + } + + //查询最新的10条社区动态 + List<String> dynList = new ArrayList<>(); + List<ComActDynDO> actDynDOList = comActDynDAO.selectList(new QueryWrapper<ComActDynDO>().lambda().eq(ComActDynDO::getCommunityId,communityId).orderByDesc(ComActDynDO::getCreateAt).last("limit 10")); + if(!actDynDOList.isEmpty()){ + actDynDOList.forEach(actDyn -> { + dynList.add(actDyn.getTitle()); + }); + } + workScreenVO.setDynList(dynList); + + //统计近半年数据 + List<DynamicWorkVO> list = new ArrayList<>(); + for(DynamicWorkVO dynamicWorkVO: listHalfYearByDyn()){ + DynamicWorkVO result = comActDynDAO.countByTime(dynamicWorkVO.getStart(),dynamicWorkVO.getEnd(),communityId); + result.setMonth(dynamicWorkVO.getMonth()); + list.add(result); + } + workScreenVO.setList(list); + + return R.ok(workScreenVO); + } + + private List<DynamicWorkVO> listHalfYearByDyn() { + List<DynamicWorkVO> dateList = new ArrayList<>(); + Date now = new Date(); + for(int i= 6;i>=1;i--){ + Date date = DateUtils.getDateM(now,-i); + DateTime endDay = DateUtil.endOfMonth(date); + + int m = DateUtil.month(endDay); +// if(m == 0){ +// m = 12; +// } +// m--; + int day = DateUtil.dayOfMonth(endDay); + int half = day/2; + String month = DateUtil.format(date,moth_format_str); + DynamicWorkVO dynamicWorkVO = new DynamicWorkVO(); + dynamicWorkVO.setMonth(monthStr[m]+"月上旬"); + dynamicWorkVO.setStart(month+ "-01 00:00:00"); + dynamicWorkVO.setEnd(month+ "-"+half+" 23:59:58"); + dateList.add(dynamicWorkVO); + DynamicWorkVO dynamicWorkVO1 = new DynamicWorkVO(); + dynamicWorkVO1.setMonth(monthStr[m]+"月下旬"); + dynamicWorkVO1.setStart(month+ "-"+half+" 23:59:58"); + dynamicWorkVO1.setEnd(DateUtils.getDateFormatString(endDay,"yyyy-MM-dd HH:mm:ss")); + dateList.add(dynamicWorkVO1); + } + return dateList; + + } + + } -- Gitblit v1.7.1