lidongdong
2024-07-11 eef6d2bcdb29348efe4ef17bc45a4c6886b487b1
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/ComActEasyPhotoServiceImpl.java
@@ -1,13 +1,19 @@
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;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.DesensitizedUtil;
import com.alibaba.fastjson.JSONObject;
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;
@@ -81,6 +87,8 @@
    private ComActEasyPhotoHandlerService easyPhotoHandlerService;
    @Resource
    private ComActEasyPhotoEvaluateMapper comActEasyPhotoEvaluateMapper;
    @Resource
    private ComActReserveRecordMapper comActReserveRecordMapper;
    /**
     * 分页查询随手拍
     *
@@ -143,6 +151,51 @@
        return R.ok(iPage);
    }
    @Override
    public R pageEasyPhotoAdminLC(Long pageNum,Long pageSize) {
        Page page = new Page<>();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActEasyPhotoVO> iPage = comActEasyPhotoDAO.pageEasyPhotoAdminLC(page);
        List<ComActEasyPhotoVO> records = iPage.getRecords();
        if (!ObjectUtils.isEmpty(records)) {
            records.forEach(comActEasyPhotoVO1 -> {
                Long id = comActEasyPhotoVO1.getId();
                if (comActEasyPhotoVO1.getActivityId() != null
                        && comActEasyPhotoVO1.getStatus().equals(ComActEasyPhotoDO.status.dpj)) {
                    // 查询随手拍活动
                    ComActEasyPhotoActivityDO photoActivityDO =
                            comActEasyPhotoActivityMapper.selectById(comActEasyPhotoVO1.getActivityId());
                    if (photoActivityDO != null) {
                        if (comActEasyPhotoVO1.getActivityType() != null) {
                            if (comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yz)) {
                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getGoodReward());
                            } else if (comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.jl)) {
                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getExcellentReward());
                            } else if (comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.pt)) {
                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getOrdinaryReward());
                            } else if (comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.yb)) {
                                comActEasyPhotoVO1.setActivityMoney(photoActivityDO.getCommonlyReward());
                            } else if (comActEasyPhotoVO1.getActivityType().equals(ComActEasyPhotoDO.activityType.wu)) {
                                comActEasyPhotoVO1.setActivityMoney(BigDecimal.ZERO);
                            }
                        }
                    }
                }
            });
            iPage.setRecords(records);
        }
        return R.ok(iPage);
    }
    /**
     * 随手拍详情
     *
@@ -177,7 +230,8 @@
        // }
        // 查询反馈信息
        List<ComActEasyPhotoFeedbackVO> photoFeedbackList = comActEasyPhotoFeedbackMapper.getPhotoFeedbackList(id);
        List<ComActEasyPhotoFeedbackVO> photoFeedbackList =
                comActEasyPhotoFeedbackMapper.getPhotoFeedbackList(id);
        if (!photoFeedbackList.isEmpty()) {
            comActEasyPhotoVO.setPhotoFeedbackList(photoFeedbackList);
        }
@@ -190,6 +244,66 @@
        if (comActEasyPhotoVO.getActivityId() != null) {
            ComActEasyPhotoActivityDO photoActivityDO =
                comActEasyPhotoActivityMapper.selectById(comActEasyPhotoVO.getActivityId());
            if (photoActivityDO != null) {
                ComActEasyPhotoActivityVO easyPhotoActivityVO = new ComActEasyPhotoActivityVO();
                BeanUtils.copyProperties(photoActivityDO, easyPhotoActivityVO);
                comActEasyPhotoVO.setEasyPhotoActivityVO(easyPhotoActivityVO);
            }
        }
        PageComActEasyPhotoEvaluateDto evaluateDto = new PageComActEasyPhotoEvaluateDto();
        evaluateDto.setServiceId(id);
        evaluateDto.setServiceType(ComActEasyPhotoEvaluate.ServiceType.SSP);
        comActEasyPhotoVO.setEvaluateList(comActEasyPhotoEvaluateMapper.queryAllByList(evaluateDto));
        return R.ok(comActEasyPhotoVO);
    }
    /**
     * 随手拍详情 - 脱敏
     *
     * @param id
     *            随手拍主键
     * @param userId
     * @return 详情内容
     */
    @Override
    public R detailEasyPhotoDesensitize(Long id, Long userId) {
        ComActEasyPhotoVO comActEasyPhotoVO = comActEasyPhotoDAO.detailEasyPhoto(id);
        Integer status = comActEasyPhotoVO.getStatus();
        if (ObjectUtils.isEmpty(comActEasyPhotoVO) || null == status) {
            return R.fail("随手拍不存在");
        }
        if (!userId.equals(0L)) {
            ComActEasyPhotoUserDO comActEasyPhotoUserDO =
                    comActEasyPhotoUserDAO.selectOne(new QueryWrapper<ComActEasyPhotoUserDO>().lambda()
                            .eq(ComActEasyPhotoUserDO::getEasyPhotoId, id).eq(ComActEasyPhotoUserDO::getUserId, userId));
            if (ObjectUtils.isEmpty(comActEasyPhotoUserDO)) {
                comActEasyPhotoVO.setHaveGiveThumbsUp(0);
            } else {
                comActEasyPhotoVO.setHaveGiveThumbsUp(1);
            }
        }
        comActEasyPhotoVO.setSponsorName(DesensitizedUtil.chineseName(comActEasyPhotoVO.getSponsorName()));
        comActEasyPhotoVO.setHandlerName(DesensitizedUtil.chineseName(comActEasyPhotoVO.getHandlerName()));
        comActEasyPhotoVO.setCompleteName(DesensitizedUtil.chineseName(comActEasyPhotoVO.getCompleteName()));
        comActEasyPhotoVO.setPhone(DesensitizedUtil.mobilePhone(comActEasyPhotoVO.getPhone()));
        // 查询反馈信息
        List<ComActEasyPhotoFeedbackVO> photoFeedbackList = comActEasyPhotoFeedbackMapper.getPhotoFeedbackList(id);
        if (!photoFeedbackList.isEmpty()) {
            if (CollUtil.isNotEmpty(photoFeedbackList)){
                for (ComActEasyPhotoFeedbackVO comActEasyPhotoFeedbackVO : photoFeedbackList) {
                    comActEasyPhotoFeedbackVO.setCreateByName(DesensitizedUtil.chineseName(comActEasyPhotoFeedbackVO.getCreateByName()));
                }
            }
            comActEasyPhotoVO.setPhotoFeedbackList(photoFeedbackList);
        }
        if (comActEasyPhotoVO.getAddrRemark() == null) {
            comActEasyPhotoVO.setAddrRemark("");
        }
        if (comActEasyPhotoVO.getActivityId() != null) {
            ComActEasyPhotoActivityDO photoActivityDO =
                    comActEasyPhotoActivityMapper.selectById(comActEasyPhotoVO.getActivityId());
            if (photoActivityDO != null) {
                ComActEasyPhotoActivityVO easyPhotoActivityVO = new ComActEasyPhotoActivityVO();
                BeanUtils.copyProperties(photoActivityDO, easyPhotoActivityVO);
@@ -230,7 +344,9 @@
        }
        int insert = comActEasyPhotoDAO.insert(comActEasyPhotoDO);
        if (insert > 0) {
            return R.ok();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("id",comActEasyPhotoDO.getId());
            return R.ok(jsonObject);
        }
        return R.fail();
    }
@@ -295,6 +411,7 @@
            case 1:
                if (!cmActEasyPhotoDO.getStatus().equals(ComActEasyPhotoDO.status.dsh)) {
                    return R.fail("该随手拍已处理,不可重复操作");
//                    return R.ok();
                }
                cmActEasyPhotoDO.setStatus(2);// 进行中
                cmActEasyPhotoDO.setIsNeedFeedBack(1);
@@ -305,7 +422,7 @@
                    cmActEasyPhotoDO.setTransferTime(nowDate);
                } else {
                    cmActEasyPhotoDO.setIsReportUrban(ComActEasyPhotoVO.isReportUrban.no);
                    cmActEasyPhotoDO.setIsReportUrban(ComActEasyPhotoVO.isReportUrban.no );
                }
                cmActEasyPhotoDO.setExamineAt(nowDate);
                cmActEasyPhotoDO.setActivityType(comActEasyPhotoVO.getActivityType());
@@ -387,6 +504,9 @@
            default:
                break;
        }
        if (!ObjectUtils.isEmpty(comActEasyPhotoVO.getIsReportDpc())){
            cmActEasyPhotoDO.setIsReportDpc(comActEasyPhotoVO.getIsReportDpc());
        }
        if (!type.equals(3)) {
            int update = comActEasyPhotoDAO.updateById(cmActEasyPhotoDO);
            if (update > 0) {
@@ -461,6 +581,65 @@
    }
    /**
     * 小程序分页查询随手拍 脱敏
     *
     * @param comActEasyPhotoVO
     *            查询参数
     * @return 返回结果
     */
    @Override
    public R pageEasyPhotoAppletsDesensitize(ComActEasyPhotoVO comActEasyPhotoVO) {
        Page page = new Page<>();
        Long pageNum = comActEasyPhotoVO.getPageNum();
        Long pageSize = comActEasyPhotoVO.getPageSize();
        Long userId = comActEasyPhotoVO.getLogInUserId();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActEasyPhotoVO> iPage = comActEasyPhotoDAO.pageEasyPhotoApplets(page, comActEasyPhotoVO);
        List<ComActEasyPhotoVO> records = iPage.getRecords();
        if (userId != null) {
            if (!ObjectUtils.isEmpty(records)) {
                records.forEach(comActEasyPhotoVO1 -> {
                    Long id = comActEasyPhotoVO1.getId();
                    Integer status = comActEasyPhotoVO1.getStatus();
                    Date feedbackAt = comActEasyPhotoVO1.getFeedbackAt();
                    comActEasyPhotoVO1.setSponsorName(DesensitizedUtil.chineseName(comActEasyPhotoVO1.getSponsorName()));
                    comActEasyPhotoVO1.setHandlerName(DesensitizedUtil.chineseName(comActEasyPhotoVO1.getHandlerName()));
                    comActEasyPhotoVO1.setCompleteName(DesensitizedUtil.chineseName(comActEasyPhotoVO1.getCompleteName()));
                    comActEasyPhotoVO1.setPhone(DesensitizedUtil.mobilePhone(comActEasyPhotoVO1.getPhone()));
                    List<ComActEasyPhotoUserDO> comActEasyPhotoUserDO = comActEasyPhotoUserDAO.selectList(
                            new QueryWrapper<ComActEasyPhotoUserDO>().lambda().eq(ComActEasyPhotoUserDO::getEasyPhotoId, id)
                                    .eq(ComActEasyPhotoUserDO::getUserId, userId));
                    if (comActEasyPhotoUserDO == null || comActEasyPhotoUserDO.size() == 0) {
                        comActEasyPhotoVO1.setHaveGiveThumbsUp(0);
                    } else {
                        comActEasyPhotoVO1.setHaveGiveThumbsUp(1);
                    }
                    if (status.intValue() == 4 && null == feedbackAt) {
                        comActEasyPhotoVO1.setFeedbackAt(comActEasyPhotoVO1.getExamineAt());
                    }
                    //反馈信息列表
                    List<ComActEasyPhotoFeedbackVO> photoFeedbackList = comActEasyPhotoVO1.getPhotoFeedbackList();
                    if (CollUtil.isNotEmpty(photoFeedbackList)){
                        for (ComActEasyPhotoFeedbackVO comActEasyPhotoFeedbackVO : photoFeedbackList) {
                            comActEasyPhotoFeedbackVO.setCreateByName(DesensitizedUtil.chineseName(comActEasyPhotoFeedbackVO.getCreateByName()));
                        }
                    }
                    comActEasyPhotoVO1.setPhotoFeedbackList(photoFeedbackList);
                });
                iPage.setRecords(records);
            }
        }
        return R.ok(iPage);
    }
    /**
     * 随手拍评论分页查询
     *
     * @param pageComActEasyPhotoCommentDTO
@@ -484,6 +663,39 @@
            comActEasyPhotoCommentDAO.pageComActEasyPhotoComment(page, pageComActEasyPhotoCommentDTO);
        if (!iPage.getRecords().isEmpty()) {
            for (ComActEasyPhotoCommentVO commentVO : iPage.getRecords()) {
                if (StringUtils.isEmpty(commentVO.getName())) {
                    commentVO.setName(commentVO.getNickName());
                }
            }
        }
        return R.ok(iPage);
    }
    /**
     * 随手拍评论分页查询 - 脱敏
     *
     * @param pageComActEasyPhotoCommentDTO
     *            查询参数
     * @return 查询结果
     */
    @Override
    public R pageComActEasyPhotoCommentDesensitize(PageComActEasyPhotoCommentDTO pageComActEasyPhotoCommentDTO) {
        Page page = new Page<>();
        Long pageNum = pageComActEasyPhotoCommentDTO.getPageNum();
        Long pageSize = pageComActEasyPhotoCommentDTO.getPageSize();
        if (null == pageNum || 0 == pageNum) {
            pageNum = 1l;
        }
        if (null == pageSize || 0 == pageSize) {
            pageSize = 10l;
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<ComActEasyPhotoCommentVO> iPage =
                comActEasyPhotoCommentDAO.pageComActEasyPhotoComment(page, pageComActEasyPhotoCommentDTO);
        if (!iPage.getRecords().isEmpty()) {
            for (ComActEasyPhotoCommentVO commentVO : iPage.getRecords()) {
                commentVO.setNickName(DesensitizedUtil.chineseName(commentVO.getNickName()));
                if (StringUtils.isEmpty(commentVO.getName())) {
                    commentVO.setName(commentVO.getNickName());
                }
@@ -621,7 +833,7 @@
                    SysTemplateConfig sysTemplateConfig=sysTemplateConfigDao.selectOne(new QueryWrapper<SysTemplateConfig>().lambda().eq(SysTemplateConfig::getAreaCode, grantRewardDTO.getAreaCode()).eq(SysTemplateConfig::getType,7));
                    WxXCXTempSend util = new WxXCXTempSend();
                    try {
                        WxUtil.sendSubscribeJLDZ(openid, util.getAppAccessToken(), "随手拍有奖活动",
                        WxUtil.sendSubscribeJLDZ(openid, util.getAccessToken(), "随手拍有奖活动",
                            grantRewardDTO.getAmount(), activityType,sysTemplateConfig.getTemplateId());
                    } catch (Exception e) {
                        log.error("消息推送失败,失败原因:" + e.getMessage());
@@ -716,6 +928,15 @@
        //查询社区正在进行中的应用预约/登记列表
        List<ComActReserveIndexVo> comActReserveIndexApplicationVos=comActReserveMapper.indexApplication(communityId);
        if(!comActReserveIndexApplicationVos.isEmpty()){
            comActReserveIndexApplicationVos.forEach(comActReserveIndexVo -> {
               Integer count=comActReserveRecordMapper.selectCount(new QueryWrapper<ComActReserveRecordDO>().lambda().eq(ComActReserveRecordDO::getReserveId,comActReserveIndexVo.getId()).eq(ComActReserveRecordDO::getUserId,userId));
               if(count>0){
                   comActReserveIndexVo.setIsCommit(1);
               }
               else {
                   comActReserveIndexVo.setIsCommit(2);
               }
            });
            easyPhotoRewardVO.setComActReserveIndexApplicationVos(comActReserveIndexApplicationVos);
        }
        //查询banner
@@ -869,4 +1090,138 @@
        return R.ok(this.baseMapper.easyPhotoNoHandleIds(communityId));
    }
    /**
     * 获取人大代表反馈记录
     * @param id 随手拍id
     * @return
     */
    @Override
    public R getFeedbackList(Long id) {
        return R.ok(comActEasyPhotoFeedbackMapper.getPhotoFeedbackListForDpc(id));
    }
    /**
     * 人大代表反馈随手拍
     * @param comActEasyPhotoVO
     * @return
     */
    @Override
    public R addEasyPhotoFeedbackForDpc(ComActEasyPhotoVO comActEasyPhotoVO) {
        Date nowDate = new Date();
        // 操作类型 1审核通过 2驳回 3反馈 4完成随手拍
        ComActEasyPhotoDO cmActEasyPhotoDO = this.comActEasyPhotoDAO.selectById(comActEasyPhotoVO.getId());
        if (cmActEasyPhotoDO == null) {
            return R.fail("未查询到随手拍记录");
        }
        if (!cmActEasyPhotoDO.getStatus().equals(ComActEasyPhotoDO.status.dfk)) {
            return R.fail("该随手拍不是进行中状态,不可进行反馈");
        }
        // 给随手拍新增反馈信息
        ComActEasyPhotoFeedbackDO photoFeedbackDO = new ComActEasyPhotoFeedbackDO();
        photoFeedbackDO.setEasyId(comActEasyPhotoVO.getId());
        photoFeedbackDO.setFeedbackContent(comActEasyPhotoVO.getHandleResult());
        photoFeedbackDO.setFeedbackImg(comActEasyPhotoVO.getHandlePhotoList());
        photoFeedbackDO.setType(2);
        photoFeedbackDO.setCreateAt(nowDate);
        photoFeedbackDO.setCreateBy(comActEasyPhotoVO.getUserId());
        int result = comActEasyPhotoFeedbackMapper.insert(photoFeedbackDO);
        if (result > 0) {
            return R.ok();
        }
        return R.fail();
    }
    /**
     * 获取社区置顶动态banner
     * @param communityId
     * */
    @Override
    public R getUserRewardNew(Long userId, Long communityId) {
        ComActEasyPhotoRewardVO easyPhotoRewardVO=new ComActEasyPhotoRewardVO();
        List<BannerVO> bannerVOS=this.comActEasyPhotoDAO.getBanner(communityId);
        if(!bannerVOS.isEmpty()){
            easyPhotoRewardVO.setBannerVOS(bannerVOS);
        }
        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,4, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100));
                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, 4, BigDecimal.ROUND_HALF_DOWN).multiply(new BigDecimal(100));
                    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 = {"待处理","进行中","已驳回","待评价","已完成"};
        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);
                    statisticsPhotoVOS1.add(statisticsPhotoVO);
                    map1.put(status,statisticsPhotoVO);
                }
            }
            chartMap.put(month,map1);
        }
        Map<String, List<StatisticsPhotoVO>> stringListMap = statisticsPhotoVOS1
                .stream()
                .sorted(Comparator.comparing(StatisticsPhotoVO::getStatisticsDate))
                .collect(Collectors.groupingBy(StatisticsPhotoVO::getCountName));
        Map<String,Object> retMap = new HashMap<>();
        retMap.put("statisticsPhotoVOS",statisticsPhotoVOS);
        retMap.put("monthMap",stringListMap);
        return R.ok(retMap);
    }
}