lidongdong
2022-12-06 2a212f983f35e1c569dfec3a172fb5f0c9f85fac
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
@@ -1,9 +1,10 @@
package com.panzhihua.service_community.service.impl;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
@@ -11,6 +12,7 @@
import cn.hutool.core.util.DesensitizedUtil;
import com.panzhihua.common.model.dtos.common.PageComActEasyPhotoEvaluateDto;
import com.panzhihua.common.model.vos.common.ComActEasyPhotoHandlerVo;
import com.panzhihua.common.model.vos.community.acid.ComActAcidColorChartsVO;
import com.panzhihua.common.model.vos.community.easyPhoto.BannerVO;
import com.panzhihua.service_community.entity.ComActEasyPhotoEvaluate;
import com.panzhihua.service_community.entity.ComActEasyPhotoHandler;
@@ -1093,4 +1095,69 @@
        return R.ok(easyPhotoRewardVO);
    }
    @Override
    public R selectStatisticsPhoto(){
        //所有分组
        List<StatisticsPhotoVO> statisticsPhotoVOS = this.baseMapper.selectPhotoAll();
        int all = statisticsPhotoVOS.stream().mapToInt(StatisticsPhotoVO::getCountNum).sum();
        for (StatisticsPhotoVO statisticsPhotoVO : statisticsPhotoVOS) {
            if (0!=all){
                BigDecimal countNum = new BigDecimal(statisticsPhotoVO.getCountNum());
                BigDecimal allDecimal = new BigDecimal(all);
                BigDecimal percent = countNum.divide(allDecimal,2, BigDecimal.ROUND_HALF_DOWN);
                statisticsPhotoVO.setPercent(percent);
            }
        }
        Map<String, StatisticsPhotoVO> circleMap = statisticsPhotoVOS
                .stream()
                .collect(Collectors.toMap(StatisticsPhotoVO::getCountName, Function.identity()));
        //按月份查询
        List<StatisticsPhotoVO> statisticsPhotoVOS1 = this.baseMapper.selectPhotoByMonth();
        //按类型分组求和
        Map<String, IntSummaryStatistics> statusCollect = statisticsPhotoVOS1
                .stream()
                .collect(Collectors.groupingBy(StatisticsPhotoVO::getCountName,
                        Collectors.summarizingInt(StatisticsPhotoVO::getCountNum)));
        for (StatisticsPhotoVO statisticsPhotoVO : statisticsPhotoVOS1) {
            String countName = statisticsPhotoVO.getCountName();
            if (statusCollect.containsKey(countName)){
                IntSummaryStatistics intSummaryStatistics = statusCollect.get(countName);
                long sum = intSummaryStatistics.getSum();
                if (0L!=sum) {
                    BigDecimal countNum = new BigDecimal(statisticsPhotoVO.getCountNum());
                    BigDecimal sumDecimal = new BigDecimal(sum);
                    BigDecimal percent = countNum.divide(sumDecimal, 2, BigDecimal.ROUND_HALF_DOWN);
                    statisticsPhotoVO.setPercent(percent);
                }
            }
        }
        Map<String, Map<String, StatisticsPhotoVO>> chartMap = statisticsPhotoVOS1.stream().collect(Collectors.groupingBy(StatisticsPhotoVO::getStatisticsDate, Collectors.toMap(StatisticsPhotoVO::getCountName, Function.identity())));
        // 状态 1待处理   2进行中 3已驳回 4待评价 5.已完成
        String[] statusArr = {"dcl","jxz","ybh","dpj","ywc"};
        List<String> latest12Month = DateUtils.getLatest12Month(LocalDate.now(), 10);
        for (String month : latest12Month) {
            Map<String, StatisticsPhotoVO> map1;
            if(chartMap.containsKey(month)){
                map1 = chartMap.get(month);
            }else {
                map1 = new HashMap<>();
            }
            for (String status : statusArr) {
                if (!map1.containsKey(status)){
                    StatisticsPhotoVO statisticsPhotoVO = new StatisticsPhotoVO();
                    statisticsPhotoVO.setCountNum(0);
                    statisticsPhotoVO.setStatisticsDate(month);
                    statisticsPhotoVO.setCountName(status);
                    map1.put(status,statisticsPhotoVO);
                }
            }
            chartMap.put(month,map1);
        }
        return R.ok();
    }
}