package com.panzhihua.service_community.service.impl;
|
|
import cn.hutool.core.date.DateTime;
|
import cn.hutool.core.date.DateUtil;
|
import com.panzhihua.common.model.dtos.partybuilding.ComPbActivityDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.screen.*;
|
import com.panzhihua.common.utlis.DateUtils;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.dao.*;
|
import com.panzhihua.service_community.service.ScreenWorkService;
|
import org.springframework.stereotype.Service;
|
|
import javax.annotation.Resource;
|
import java.util.*;
|
import java.util.stream.Collectors;
|
import java.util.stream.Stream;
|
|
/**
|
* @author xyh
|
* @date 2021/6/15 15:14
|
*/
|
@Service
|
public class ScreenWorkServiceImpl implements ScreenWorkService {
|
|
private static final Integer pageSize = 200;
|
|
@Resource
|
private ComActNeighborCircleDAO comActNeighborCircleDAO;
|
|
@Resource
|
private ComActMicroWishDAO comActMicroWishDAO;
|
|
@Resource
|
private ComActActivityDAO actActivityDAO;
|
|
@Resource
|
private ComActDiscussDAO comActDiscussDAO;
|
|
@Resource
|
private ComPbDynDAO comPbDynDAO;
|
|
@Resource
|
private ComActEasyPhotoDAO comActEasyPhotoDAO;
|
|
private final String moth_format_str = "yyyy-MM";
|
|
private final String[] monthStr = new String[]{"一","二","三","四","五","六","七","八","九","十","十一","十二"};
|
|
@Override
|
public R statisticNeighborCircle(Long communityId) {
|
|
ComActNeighborCircleScreenVO comActNeighborCircleScreenVO = new ComActNeighborCircleScreenVO();
|
String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
|
Map<String,Long> countMap = comActNeighborCircleDAO.countByCommunityId(communityId,date);
|
comActNeighborCircleScreenVO.setCurrentNum(countMap.get("currentNum"));
|
comActNeighborCircleScreenVO.setTotalNum(countMap.get("totalNum"));
|
Map<String,Object> sumMap = comActNeighborCircleDAO.sumScreenNum(communityId);
|
comActNeighborCircleScreenVO.setFabulousNum(sumMap.get("fabulousNum") == null?0L:Long.valueOf(sumMap.get("fabulousNum").toString()));
|
comActNeighborCircleScreenVO.setCommentNum(sumMap.get("commentNum") == null?0L:Long.valueOf(sumMap.get("commentNum").toString()));
|
comActNeighborCircleScreenVO.setSharedNum(sumMap.get("forwardNum") == null?0L:Long.valueOf(sumMap.get("forwardNum").toString()));
|
//查询最近发布的邻里圈
|
comActNeighborCircleScreenVO.setList(comActNeighborCircleDAO.screenNeighborCircle(communityId,pageSize));
|
//查询最近发布的邻里圈图片
|
comActNeighborCircleScreenVO.setImgs(convertStringList(comActNeighborCircleDAO.screenNeighborCircleImgs(communityId,pageSize)));
|
return R.ok(comActNeighborCircleScreenVO);
|
}
|
|
@Override
|
public R wish(Long communityId) {
|
ComActMicroWishScreenVO wishScreenVO = new ComActMicroWishScreenVO();
|
String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
|
//统计本月新增,累计实现,待实现
|
Map<String,Long> countMap = comActMicroWishDAO.countByCommunityId(communityId,date);
|
wishScreenVO.setCompletedNum(countMap.get("completedNum") == null ? 0L : countMap.get("completedNum"));
|
wishScreenVO.setWillNum(countMap.get("willNum") == null ? 0L : countMap.get("willNum"));
|
wishScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : countMap.get("currentNum"));
|
//微心愿轮播图片
|
wishScreenVO.setImgs(convertStringList(comActMicroWishDAO.getAllImgs(communityId,pageSize)));
|
return R.ok(wishScreenVO);
|
}
|
|
|
|
private List<String> convertStringList(List<String> imgList) {
|
List<String> imgs = new ArrayList<>();
|
for(String img:imgList){
|
if(StringUtils.isEmpty(img)){
|
continue;
|
}
|
String[] arrs = img.split(",");
|
if(arrs.length > 1){
|
for(String arr: arrs){
|
imgs.add(arr);
|
}
|
}else{
|
imgs.add(img);
|
}
|
}
|
return imgs;
|
}
|
|
@Override
|
public R activity(Long communityId) {
|
ComActActivityScreenVO comActActivityScreenVO = new ComActActivityScreenVO();
|
|
comActActivityScreenVO.setImgs(convertStringList(actActivityDAO.listImg(communityId)));
|
//统计本月新增、居民活动,志愿者活动
|
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.setList(actActivityDAO.screenActivity(communityId,pageSize));
|
return R.ok(comActActivityScreenVO);
|
}
|
|
@Override
|
public R discuss(Long communityId) {
|
ComActDiscussScreenVO discussScreenVO = new ComActDiscussScreenVO();
|
//统计本月新增,总共,图文,投票
|
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(discussScreenVO.getTotalNum() - discussScreenVO.getImgNum());
|
discussScreenVO.setVotePeopleNum(countMap.get("votePeopleNum") == null ? 0L : countMap.get("votePeopleNum"));
|
discussScreenVO.setList(comActDiscussDAO.screenDiscuss(communityId,pageSize));
|
return R.ok(discussScreenVO);
|
}
|
|
@Override
|
public R pbWork(Long communityId) {
|
ComPbWorkScreenVO pbWorkScreenVO = new ComPbWorkScreenVO();
|
String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
|
Map<String,Long> countMap = comPbDynDAO.countByCommunityId(communityId,date);
|
pbWorkScreenVO.setActivityNum(countMap.get("activityNum") == null ? 0L : countMap.get("activityNum"));
|
pbWorkScreenVO.setDynNum(countMap.get("dynNum") == null ? 0L : countMap.get("dynNum"));
|
pbWorkScreenVO.setTotalNum(pbWorkScreenVO.getActivityNum() + pbWorkScreenVO.getDynNum());
|
pbWorkScreenVO.setCurrentNum(countMap.get("currentNum") == null ? 0L : countMap.get("currentNum"));
|
//统计近半年数据
|
List<PbWorkVO> list = new ArrayList<>();
|
for(PbWorkVO workVO: listHalfYear()){
|
PbWorkVO result = comPbDynDAO.countByTime(workVO.getStart(),workVO.getEnd(),communityId);
|
result.setMonth(workVO.getMonth());
|
list.add(result);
|
}
|
pbWorkScreenVO.setList(list);
|
return R.ok(pbWorkScreenVO);
|
}
|
|
|
private List<PbWorkVO> listHalfYear() {
|
List<PbWorkVO> 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);
|
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;
|
|
}
|
|
@Override
|
public R easyPhoto(Long communityId) {
|
ComActEasyPhotoScreenVO comActEasyPhotoScreenVO = new ComActEasyPhotoScreenVO();
|
comActEasyPhotoScreenVO.setDeal(comActEasyPhotoDAO.countDeal(communityId));
|
comActEasyPhotoScreenVO.setPub(comActEasyPhotoDAO.countPub(communityId));
|
comActEasyPhotoScreenVO.setApproved(comActEasyPhotoDAO.countApproved(communityId));
|
String date = DateUtils.getDateFormatString(new Date(),moth_format_str);
|
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 : 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<>();
|
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);
|
return R.ok(comActEasyPhotoScreenVO);
|
}
|
|
|
|
|
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) {
|
ComActWorkScreenVO comActWorkScreenVO = new ComActWorkScreenVO();
|
comActWorkScreenVO.setAvgTime("1小时");
|
comActWorkScreenVO.setTotalCompletedPoint(70);
|
comActWorkScreenVO.setEveryDayNum("0.3");
|
List<ActWorkCountVO> completetPoint = new ArrayList<>();
|
ActWorkCountVO easyPhoto = new ActWorkCountVO();
|
easyPhoto.setName("随手拍");
|
easyPhoto.setNum(10);
|
completetPoint.add(easyPhoto);
|
ActWorkCountVO wish = new ActWorkCountVO();
|
wish.setName("微心愿");
|
wish.setNum(23);
|
completetPoint.add(wish);
|
ActWorkCountVO discuss = new ActWorkCountVO();
|
discuss.setName("一起议");
|
discuss.setNum(33);
|
completetPoint.add(discuss);
|
ActWorkCountVO neighbor = new ActWorkCountVO();
|
neighbor.setName("邻里圈");
|
neighbor.setNum(43);
|
completetPoint.add(neighbor);
|
ActWorkCountVO pbWork = new ActWorkCountVO();
|
pbWork.setName("党建工作");
|
pbWork.setNum(13);
|
completetPoint.add(pbWork);
|
ActWorkCountVO activity = new ActWorkCountVO();
|
activity.setName("社区活动");
|
activity.setNum(63);
|
completetPoint.add(activity);
|
comActWorkScreenVO.setCompletetPoint(completetPoint);
|
|
List<ActWorkCountVO> completetPoint2 = new ArrayList<>();
|
ActWorkCountVO easyPhoto2 = new ActWorkCountVO();
|
easyPhoto2.setName("随手拍");
|
easyPhoto2.setNum(10);
|
completetPoint2.add(easyPhoto2);
|
ActWorkCountVO wish2 = new ActWorkCountVO();
|
wish2.setName("微心愿");
|
wish2.setNum(23);
|
completetPoint2.add(wish2);
|
ActWorkCountVO discuss2 = new ActWorkCountVO();
|
discuss2.setName("一起议");
|
discuss2.setNum(33);
|
completetPoint2.add(discuss2);
|
ActWorkCountVO neighbor2 = new ActWorkCountVO();
|
neighbor2.setName("邻里圈");
|
neighbor2.setNum(43);
|
completetPoint2.add(neighbor2);
|
ActWorkCountVO pbWork2 = new ActWorkCountVO();
|
pbWork2.setName("党建工作");
|
pbWork2.setNum(13);
|
completetPoint2.add(pbWork2);
|
ActWorkCountVO activity2 = new ActWorkCountVO();
|
activity2.setName("社区活动");
|
activity2.setNum(63);
|
completetPoint2.add(activity2);
|
comActWorkScreenVO.setNonePoint(completetPoint2);
|
return R.ok(comActWorkScreenVO);
|
}
|
|
}
|