lidongdong
2023-11-14 ce4a770744d7a0b4e4ea3b5101556b94e72bdf1c
springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java
@@ -1,41 +1,49 @@
package com.panzhihua.service_dangjian.service.impl;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.panzhihua.common.model.dtos.partybuilding.ComDataStatisticsOrgDto;
import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.IdcardUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.constants.UserConstants;
import com.panzhihua.common.exceptions.PartyBuildingMemberException;
import com.panzhihua.common.model.dtos.community.PageMemberForInviteDTO;
import com.panzhihua.common.model.dtos.partybuilding.ComDataStatisticsOrgDto;
import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.partybuilding.*;
import com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo;
import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo;
import com.panzhihua.common.model.vos.user.SysUserVO;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.common.utlis.DateUtils;
import com.panzhihua.common.utlis.RichTextUtil;
import com.panzhihua.common.utlis.SensitiveUtil;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.service_dangjian.dao.*;
import com.panzhihua.service_dangjian.model.dos.*;
import com.panzhihua.service_dangjian.model.dos.ComPbDynDO;
import com.panzhihua.service_dangjian.model.dos.ComPbDynUserDO;
import com.panzhihua.service_dangjian.model.dos.ComPbMemberDO;
import com.panzhihua.service_dangjian.model.dos.ComPbOrgDO;
import com.panzhihua.service_dangjian.service.ComPbMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import static java.util.Objects.nonNull;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
@@ -59,6 +67,8 @@
    private ComPbDynDAO comPbDynDAO;
    @Resource
    private ComPbDynUserDAO comPbDynUserDAO;
    @Resource
    private UserService userService;
    /**
     * 新增党员
@@ -69,11 +79,19 @@
     */
    @Override
    public R addPartyBuildingMember(PartyBuildingMemberVO partyBuildingMemberVO) {
        String idCard = partyBuildingMemberVO.getIdCard();
        List<ComPbMemberDO> comPbMemberDOs = comPbMemberDAO.selectList(new QueryWrapper<ComPbMemberDO>().lambda()
            .eq(ComPbMemberDO::getIdCard, idCard).eq(ComPbMemberDO::getAuditResult, 1));
            .eq(ComPbMemberDO::getPhone, partyBuildingMemberVO.getPhone()).eq(ComPbMemberDO::getAuditResult, 1).eq(ComPbMemberDO::getType,partyBuildingMemberVO.getType()));
        if (!ObjectUtils.isEmpty(comPbMemberDOs) && comPbMemberDOs.size() > 0) {
            return R.fail("身份证已经存在");
            comPbMemberDOs.forEach(comPbMemberDO -> {
                comPbMemberDAO.deleteById(comPbMemberDO.getId());
            });
        }
        //添加党员同步用户小程序头像
        R<SysUserVO> r=userService.getSysUserVOByPhone(partyBuildingMemberVO.getPhone());
        if(R.isOk(r)&&r.getData()!=null){
            SysUserVO sysUserVO =
                    JSONObject.parseObject(JSONObject.toJSONString(r.getData()), SysUserVO.class);
            partyBuildingMemberVO.setPhotoPath(sysUserVO.getImageUrl());
        }
        ComPbMemberDO comPbMemberDO1 = new ComPbMemberDO();
        BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberDO1);
@@ -83,11 +101,11 @@
        int insert = comPbMemberDAO.insert(comPbMemberDO1);
        if (insert > 0) {
            // 删除已驳回的记录
            int delete = comPbMemberDAO.delete(new QueryWrapper<ComPbMemberDO>().lambda()
                .eq(ComPbMemberDO::getIdCard, partyBuildingMemberVO.getIdCard())
                .eq(ComPbMemberDO::getUserId, partyBuildingMemberVO.getUserId())
                .eq(ComPbMemberDO::getCommunityId, partyBuildingMemberVO.getCommunityId())
                .eq(ComPbMemberDO::getAuditResult, 3));
//            int delete = comPbMemberDAO.delete(new QueryWrapper<ComPbMemberDO>().lambda()
//                .eq(ComPbMemberDO::getIdCard, partyBuildingMemberVO.getIdCard())
//                .eq(ComPbMemberDO::getUserId, partyBuildingMemberVO.getUserId())
//                .eq(ComPbMemberDO::getCommunityId, partyBuildingMemberVO.getCommunityId())
//                .eq(ComPbMemberDO::getAuditResult, 3));
            return R.ok();
        }
        return R.fail();
@@ -105,7 +123,7 @@
    public R listSavePartyBuildingMemberExcelVO(List<PartyBuildingMemberExcelVO> list) {
        // Boolean aBoolean = stringRedisTemplate.hasKey(REDIS_ORG_ALL);
        // ValueOperations<String, String> valueOperations = stringRedisTemplate.opsForValue();
        List<PartyOrganizationVO> partyOrganizationVOS = new ArrayList<>();
        //List<PartyOrganizationVO> partyOrganizationVOS = new ArrayList<>();
        // if (aBoolean) {
        // String orgs = valueOperations.get(REDIS_ORG_ALL);
        // if (!ObjectUtils.isEmpty(orgs)) {
@@ -126,87 +144,51 @@
        // }
        // valueOperations.set(REDIS_ORG_ALL,JSONArray.toJSONString(partyOrganizationVOS),24, TimeUnit.HOURS);
        // }
        List<ComPbOrgDO> comPbOrgDOS = comPbOrgDAO.selectList(new LambdaQueryWrapper<>());
        if (!ObjectUtils.isEmpty(comPbOrgDOS)) {
            List<PartyOrganizationVO> partyOrganizationVOList = new ArrayList<>();
            comPbOrgDOS.forEach(comPbOrgDO -> {
                PartyOrganizationVO partyOrganizationVO = new PartyOrganizationVO();
                partyOrganizationVO.setId(comPbOrgDO.getId());
                partyOrganizationVO.setName(comPbOrgDO.getName());
                partyOrganizationVO.setCommunityId(comPbOrgDO.getCommunityId());
                partyOrganizationVOList.add(partyOrganizationVO);
            });
            partyOrganizationVOS = partyOrganizationVOList;
        }
        List<ComPbMemberDO> comPbMemberDOS = new ArrayList<>();
        if (!ObjectUtils.isEmpty(list)) {
            List<PartyOrganizationVO> partyOrganizationVOArrayList = partyOrganizationVOS;
            for (PartyBuildingMemberExcelVO partyBuildingMemberExcelVO : list) {
                ComPbMemberDO comPbMemberDO = new ComPbMemberDO();
                Date date = new Date();
                comPbMemberDO.setUpdateAt(date);
                comPbMemberDO.setCreateAt(date);
                String orgName = partyBuildingMemberExcelVO.getOrgName();
                List<PartyOrganizationVO> collect = partyOrganizationVOArrayList.stream()
                    .filter(partyOrganizationVO -> orgName.equals(partyOrganizationVO.getName()))
                    .collect(Collectors.toList());
                if (ObjectUtils.isEmpty(collect)) {
                    throw new PartyBuildingMemberException(
                        "导入失败,组织不存在" + partyBuildingMemberExcelVO.getOrgName() + ",请先在“党支部管理”中添加该党支部");
                } else {
                    PartyOrganizationVO partyOrganizationVO = collect.get(0);
                    comPbMemberDO.setOrgId(partyOrganizationVO.getId());
                    comPbMemberDO.setCommunityId(partyOrganizationVO.getCommunityId());
                if(StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getName())&&StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getPhone())&&StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getOrgName())){
                    ComPbMemberDO comPbMemberDO = new ComPbMemberDO();
                    Date date = new Date();
                    comPbMemberDO.setUpdateAt(date);
                    comPbMemberDO.setCreateAt(date);
                    List<ComPbMemberDO> comPbMemberDOList = this.baseMapper.selectList(new QueryWrapper<ComPbMemberDO>()
                        .lambda().eq(ComPbMemberDO::getIdCard, partyBuildingMemberExcelVO.getIdCard())
                        .eq(ComPbMemberDO::getCommunityId, partyOrganizationVO.getCommunityId())
                        .in(ComPbMemberDO::getAuditResult, 0, 1));
                            .lambda().eq(ComPbMemberDO::getPhone, partyBuildingMemberExcelVO.getPhone())
                            .eq(ComPbMemberDO::getCommunityId, partyBuildingMemberExcelVO.getCommunityId()));
                    if (!comPbMemberDOList.isEmpty()) {
                        comPbMemberDOList.forEach(comPbMember -> {
                            BeanUtils.copyProperties(partyBuildingMemberExcelVO, comPbMember);
                            //添加党员同步用户小程序头像
                            R r=userService.getSysUserVOByPhone(comPbMember.getPhone());
                            if(R.isOk(r)&&r.getData()!=null){
                                SysUserVO sysUserVO =
                                        JSONObject.parseObject(JSONObject.toJSONString(r.getData()), SysUserVO.class);
                                comPbMember.setPhotoPath(sysUserVO.getImageUrl());
                            }
                            this.baseMapper.updateById(comPbMember);
                            userService.updateUserIsPartymemberByPhone(comPbMember.getPhone());
                        });
                        continue;
                        // throw new PartyBuildingMemberException("导入失败,您导入的数据中有已存在的党员信息,已存在的数据:"+
                        // partyBuildingMemberExcelVO.getEmploymentTime() + ",已存在的人名:" +
                        // partyBuildingMemberExcelVO.getName());
                    }
                    BeanUtils.copyProperties(partyBuildingMemberExcelVO,comPbMemberDO);
                    comPbMemberDOS.add(comPbMemberDO);
                    R r=userService.getSysUserVOByPhone(comPbMemberDO.getPhone());
                    if(R.isOk(r)&&r.getData()!=null){
                        SysUserVO sysUserVO =
                                JSONObject.parseObject(JSONObject.toJSONString(r.getData()), SysUserVO.class);
                        comPbMemberDO.setPhotoPath(sysUserVO.getImageUrl());
                    }
                    userService.updateUserIsPartymemberByPhone(comPbMemberDO.getPhone());
                }
                if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getEmploymentTime())
                    && !DateUtils.isValidDate(partyBuildingMemberExcelVO.getEmploymentTime())) {
                    throw new PartyBuildingMemberException(
                        "导入失败,您导入的数据中有转正日期格式错误,错误数据:" + partyBuildingMemberExcelVO.getEmploymentTime() + ",错误人名:"
                            + partyBuildingMemberExcelVO.getName());
                else {
                    throw new PartyBuildingMemberException("导入失败,你导入的内容有未填报项");
                }
                if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getJoinTime())
                    && !DateUtils.isValidDate(partyBuildingMemberExcelVO.getJoinTime())) {
                    throw new PartyBuildingMemberException("导入失败,您导入的数据中有入党日期格式错误,错误数据:"
                        + partyBuildingMemberExcelVO.getJoinTime() + ",错误人名:" + partyBuildingMemberExcelVO.getName());
                }
                if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getEmploymentTime())) {
                    Date employmentTime = DateUtils.toValidDate(partyBuildingMemberExcelVO.getEmploymentTime());
                    comPbMemberDO.setEmploymentTime(employmentTime);
                } else {
                    comPbMemberDO.setEmploymentTime(null);
                }
                if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getJoinTime())) {
                    Date joinTime = DateUtils.toValidDate(partyBuildingMemberExcelVO.getJoinTime());
                    comPbMemberDO.setJoinTime(joinTime);
                } else {
                    comPbMemberDO.setJoinTime(null);
                }
                comPbMemberDO.setName(partyBuildingMemberExcelVO.getName());
                comPbMemberDO.setIdCard(partyBuildingMemberExcelVO.getIdCard());
                comPbMemberDOS.add(comPbMemberDO);
            }
            this.saveBatch(comPbMemberDOS);
        }
        this.saveBatch(comPbMemberDOS);
        return R.ok();
    }
@@ -219,6 +201,18 @@
     */
    @Override
    public R pagePartyOrganization(PagePartyOrganizationVO pagePartyOrganizationVO) {
        Long communityId = pagePartyOrganizationVO.getCommunityId();
        if (null != communityId){
            List<Long> communityIds = comPbMemberDAO.selectIds(communityId);
            if (CollUtil.isEmpty(communityIds)) {
                communityIds = new ArrayList<>();
                communityIds.add(communityId);
            }
            pagePartyOrganizationVO.setCommunityIds(communityIds);
        }
        Page page = new Page<>();
        Long pageNum = pagePartyOrganizationVO.getPageNum();
        Long pageSize = pagePartyOrganizationVO.getPageSize();
@@ -252,6 +246,10 @@
            partyBuildingMemberVO.setOrgId(null);
        }
        BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberDO);
        Integer type = partyBuildingMemberVO.getType();
        if (nonNull(type) && type.equals(1)) {
            comPbMemberDO.setEmploymentTime(null);
        }
        comPbMemberDO.setAuditResult(partyBuildingMemberVO.getAuditResult());
        int i = comPbMemberDAO.updateById(comPbMemberDO);
        if (i > 0) {
@@ -286,124 +284,21 @@
        return R.ok(partyBuildingMemberVOS);
    }
    /**
     * 新增党委
     *
     * @param partyCommitteeVO
     *            新增信息
     * @return 新增结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addPartyCommittee(PartyCommitteeVO partyCommitteeVO) {
        ComPbMemberRoleDO comPbMemberRoleDO = new ComPbMemberRoleDO();
        BeanUtils.copyProperties(partyCommitteeVO, comPbMemberRoleDO);
        comPbMemberRoleDO.setCreateAt(new Date());
        comPbMemberRoleDO.setUpdateAt(new Date());
        comPbMemberRoleDO.setIsReg(2);
        Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard());
        if (userCount > 0) {
            comPbMemberRoleDO.setIsReg(1);
        }
        Date nowDate = new Date();
        //判断党员信息是否存在党委信息
        ComPbMemberDO pbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
                .eq(ComPbMemberDO::getIdCard,partyCommitteeVO.getIdCard())
                .eq(ComPbMemberDO::getAuditResult,ComPbMemberDO.AuditResult.SHTG)
                .eq(ComPbMemberDO::getCommunityId,partyCommitteeVO.getCommunityId()));
        if(pbMemberDO == null){
            //不存在则创建党委党员信息
            pbMemberDO = new ComPbMemberDO();
            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
            pbMemberDO.setAuditResult(ComPbMemberDO.AuditResult.SHTG);
            pbMemberDO.setCreateAt(nowDate);
            pbMemberDO.setUpdateAt(nowDate);
            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
            comPbMemberDAO.insert(pbMemberDO);
        }else{
            //存在则更新党委党员信息
            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
            pbMemberDO.setUpdateAt(nowDate);
            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
            comPbMemberDAO.updateById(pbMemberDO);
        }
        int insert = comPbMemberRoleDAO.insert(comPbMemberRoleDO);
        if (insert > 0) {
            return R.ok();
        }
        return R.fail();
        return null;
    }
    /**
     * 编辑党委
     *
     * @param partyCommitteeVO
     *            编辑信息
     * @return 编辑结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R updatePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
        ComPbMemberRoleDO comPbMemberRoleDO = new ComPbMemberRoleDO();
        Date nowDate = new Date();
        BeanUtils.copyProperties(partyCommitteeVO, comPbMemberRoleDO);
        comPbMemberRoleDO.setUpdateAt(nowDate);
        comPbMemberRoleDO.setIsReg(2);
        Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard());
        if (userCount > 0) {
            comPbMemberRoleDO.setIsReg(1);
        }
        //查询党员信息并更新
        ComPbMemberDO pbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
                .eq(ComPbMemberDO::getIdCard,partyCommitteeVO.getIdCard())
                .eq(ComPbMemberDO::getAuditResult,ComPbMemberDO.AuditResult.SHTG)
                .eq(ComPbMemberDO::getCommunityId,partyCommitteeVO.getCommunityId()));
        if(pbMemberDO != null){
            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
            pbMemberDO.setUpdateAt(nowDate);
            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
            comPbMemberDAO.updateById(pbMemberDO);
        }
        int update = comPbMemberRoleDAO.updateById(comPbMemberRoleDO);
        if (update > 0) {
            return R.ok();
        }
        return R.fail();
        return null;
    }
    /**
     * 删除党委
     *
     * @param partyCommitteeVO
     *            删除id
     * @return 删除结果
     */
    @Override
    public R deletePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
        ComPbMemberRoleDO comPbMemberRoleDO = comPbMemberRoleDAO.selectById(partyCommitteeVO.getId());
        if (comPbMemberRoleDO == null) {
            return R.fail("记录不存在");
        }
        int delete = comPbMemberRoleDAO.deleteById(partyCommitteeVO.getId());
        if (delete > 0) {
            Long userId = comPbMemberRoleDAO.getUserIdByIdCard(comPbMemberRoleDO.getIdCard());
            // 删除用户信息缓存
            if (userId != null) {
                String userKey = UserConstants.LOGIN_USER_INFO + userId;
                stringRedisTemplate.delete(userKey);
                return R.ok();
            }
        }
        return R.fail();
        return null;
    }
    /**
     * 分页社区党委查询
     *
     * @param partyCommitteeVO
     *            查询参数
     * @return 分页集合
     */
    @Override
    public R pagePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
        Page page = new Page<>();
@@ -417,12 +312,174 @@
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<PartyCommitteeVO> iPage = comPbMemberRoleDAO.pagePartyOrganization(page, partyCommitteeVO);
        IPage<PartyCommitteeVO> iPage = comPbMemberRoleDAO.pagePartyOrganizations(page, partyCommitteeVO);
        iPage.getRecords().forEach(record -> {
            record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone()));
        });
        return R.ok(iPage);
    }
//    /**
//     * 新增党委
//     *
//     * @param partyCommitteeVO
//     *            新增信息
//     * @return 新增结果
//     */
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public R addPartyCommittee(PartyCommitteeVO partyCommitteeVO) {
//        ComPbMemberRoleDO comPbMemberRoleDO = new ComPbMemberRoleDO();
//        BeanUtils.copyProperties(partyCommitteeVO, comPbMemberRoleDO);
//        comPbMemberRoleDO.setCreateAt(new Date());
//        comPbMemberRoleDO.setUpdateAt(new Date());
//        comPbMemberRoleDO.setIsReg(2);
//        comPbMemberRoleDO.setSex(Integer.parseInt(partyCommitteeVO.getIdCard().substring(16,17))%2==0?2:1);
//        Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard());
//        if (userCount > 0) {
//            comPbMemberRoleDO.setIsReg(1);
//        }
//        Date nowDate = new Date();
//        //判断党员信息是否存在党委信息
//        ComPbMemberDO pbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
//                .eq(ComPbMemberDO::getIdCard,partyCommitteeVO.getIdCard())
//                .eq(ComPbMemberDO::getAuditResult,ComPbMemberDO.AuditResult.SHTG)
//                .eq(ComPbMemberDO::getCommunityId,partyCommitteeVO.getCommunityId()));
//        if(pbMemberDO == null){
//            //不存在则创建党委党员信息
//            pbMemberDO = new ComPbMemberDO();
//            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
//            pbMemberDO.setAuditResult(ComPbMemberDO.AuditResult.SHTG);
//            pbMemberDO.setCreateAt(nowDate);
//            pbMemberDO.setUpdateAt(nowDate);
//            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
//            comPbMemberDAO.insert(pbMemberDO);
//            //金沙特殊需求
//            if(pbMemberDO.getCommunityId()==2L){
//                ComMngVolunteerMngVO comMngVolunteerMngVO=new ComMngVolunteerMngVO();
//                comMngVolunteerMngVO.setOrgId(53L);
//                comMngVolunteerMngVO.setName(pbMemberDO.getName());
//                comMngVolunteerMngVO.setPhone(pbMemberDO.getPhone());
//                comMngVolunteerMngVO.setIdCard(pbMemberDO.getIdCard());
//                comMngVolunteerMngVO.setState(2);
//                comMngVolunteerMngVO.setCommunityId(2L);
//                R r = communityService.addVolunteer(comMngVolunteerMngVO);
//                // 支援者添加成功,修改小程序用户的志愿者状态    ,通过手机号
//                if (R.isOk(r)) {
//                    String phone = comMngVolunteerMngVO.getPhone();
//                    R r1 = userService.putUserIsVolunteer(phone, 1);
//                    if (R.isOk(r1)) {
//                        log.info("修改手机号【{}】的支援者状态为是", phone);
//                    } else {
//                        log.info("手机号【{}】没有小程序用户", phone);
//                    }
//                }
//            }
//        }else{
//            //存在则更新党委党员信息
//            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
//            pbMemberDO.setUpdateAt(nowDate);
//            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
//            comPbMemberDAO.updateById(pbMemberDO);
//        }
//        int insert = comPbMemberRoleDAO.insert(comPbMemberRoleDO);
//        if (insert > 0) {
//            return R.ok();
//        }
//        return R.fail();
//    }
//    /**
//     * 编辑党委
//     *
//     * @param partyCommitteeVO
//     *            编辑信息
//     * @return 编辑结果
//     */
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public R updatePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
//        ComPbMemberRoleDO comPbMemberRoleDO = new ComPbMemberRoleDO();
//        Date nowDate = new Date();
//        BeanUtils.copyProperties(partyCommitteeVO, comPbMemberRoleDO);
//        comPbMemberRoleDO.setUpdateAt(nowDate);
//        comPbMemberRoleDO.setIsReg(2);
//        Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard());
//        if (userCount > 0) {
//            comPbMemberRoleDO.setIsReg(1);
//        }
//        //查询党员信息并更新
//        ComPbMemberDO pbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
//                .eq(ComPbMemberDO::getIdCard,partyCommitteeVO.getIdCard())
//                .eq(ComPbMemberDO::getAuditResult,ComPbMemberDO.AuditResult.SHTG)
//                .eq(ComPbMemberDO::getCommunityId,partyCommitteeVO.getCommunityId()));
//        if(pbMemberDO != null){
//            Long id = pbMemberDO.getId();
//            BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO);
//            pbMemberDO.setId(id);
//            pbMemberDO.setUpdateAt(nowDate);
//            pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
//            comPbMemberDAO.updateById(pbMemberDO);
//        }
//        int update = comPbMemberRoleDAO.updateById(comPbMemberRoleDO);
//        if (update > 0) {
//            return R.ok();
//        }
//        return R.fail();
//    }
//
//    /**
//     * 删除党委
//     *
//     * @param partyCommitteeVO
//     *            删除id
//     * @return 删除结果
//     */
//    @Override
//    public R deletePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
//        ComPbMemberRoleDO comPbMemberRoleDO = comPbMemberRoleDAO.selectById(partyCommitteeVO.getId());
//        if (comPbMemberRoleDO == null) {
//            return R.fail("记录不存在");
//        }
//        int delete = comPbMemberRoleDAO.deleteById(partyCommitteeVO.getId());
//        if (delete > 0) {
//            Long userId = comPbMemberRoleDAO.getUserIdByIdCard(comPbMemberRoleDO.getIdCard());
//            // 删除用户信息缓存
//            if (userId != null) {
//                String userKey = UserConstants.LOGIN_USER_INFO + userId;
//                stringRedisTemplate.delete(userKey);
//            }
//            return R.ok();
//        }
//        return R.fail();
//    }
//
//    /**
//     * 分页社区党委查询
//     *
//     * @param partyCommitteeVO
//     *            查询参数
//     * @return 分页集合
//     */
//    @Override
//    public R pagePartyCommittee(PartyCommitteeVO partyCommitteeVO) {
//        Page page = new Page<>();
//        Long pageNum = partyCommitteeVO.getPageNum();
//        Long pageSize = partyCommitteeVO.getPageSize();
//        if (null == pageNum || 0 == pageNum) {
//            pageNum = 1l;
//        }
//        if (null == pageSize || 0 == pageSize) {
//            pageSize = 10l;
//        }
//        page.setSize(pageSize);
//        page.setCurrent(pageNum);
//        IPage<PartyCommitteeVO> iPage = comPbMemberRoleDAO.pagePartyOrganization(page, partyCommitteeVO);
//        iPage.getRecords().forEach(record -> {
//            record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone()));
//        });
//        return R.ok(iPage);
//    }
    /**
     * 新建党建动态
@@ -461,43 +518,14 @@
        return R.fail();
    }
    /**
     * 动态详情
     *
     * @param id
     *            动态主键
     * @return 详情
     */
    @Override
    public R infoYnamic(Long id) {
        PartyBuildingComPbDynVO comPbDynVO = comPbDynDAO.selectVoById(id);
        if (ObjectUtils.isEmpty(comPbDynVO)) {
            return R.fail("动态不存在");
        }
        // ComPbMemberDO comPbMemberDO = comPbMemberDAO.selectById(createBy);
        // String name = comPbMemberDAO.selectNameByUserId(createBy);
        if (ObjectUtils.isEmpty(comPbDynVO.getCreateByName())) {
            // return R.fail("发布人不存在");
            String name = comPbMemberDAO.selectNameByUserId(comPbDynVO.getCreateBy());
            name = "后台发布";
            comPbDynVO.setCreateByName(name);
        }
        // Integer integer = comPbDynUserDAO.selectCount(new
        // QueryWrapper<ComPbDynUserDO>().lambda().eq(ComPbDynUserDO::getDynId, id));
        comPbDynVO.setReadingVolume(null == comPbDynVO.getReadingVolume() ? 0 : comPbDynVO.getReadingVolume());
        return R.ok(comPbDynVO);
        return null;
    }
    /**
     * 分页查询党员动态
     *
     * @param partyBuildingComPbDynVO
     *            查询参数
     * @return 分页数据
     */
    @Override
    public R pageYnamic(PartyBuildingComPbDynVO partyBuildingComPbDynVO) {
    public R pageYnamic(PartyBuildingComPbDynVO partyBuildingComPbDynVO)
    {
        Page page = new Page<>();
        Long pageNum = partyBuildingComPbDynVO.getPageNum();
        Long pageSize = partyBuildingComPbDynVO.getPageSize();
@@ -509,7 +537,7 @@
        }
        page.setSize(pageSize);
        page.setCurrent(pageNum);
        IPage<PartyBuildingComPbDynVO> iPage = comPbDynDAO.pageYnamic(page, partyBuildingComPbDynVO);
        IPage<PartyBuildingComPbDynVO> iPage = comPbDynDAO.pageYnamics(page, partyBuildingComPbDynVO);
        List<PartyBuildingComPbDynVO> records = iPage.getRecords();
        if (!(ObjectUtils.isEmpty(records))) {
            records.forEach(partyBuildingComPbDynVO1 -> {
@@ -523,21 +551,88 @@
        return R.ok(iPage);
    }
    /**
     * 删除动态
     *
     * @param id
     *            动态主键
     * @return 删除结果
     */
    @Override
    public R deleteYnamic(Integer id) {
        int delete = comPbDynDAO.deleteById(id);
        if (delete > 0) {
            return R.ok();
        }
        return R.fail();
        return null;
    }
//    /**
//     * 动态详情
//     *
//     * @param id
//     *            动态主键
//     * @return 详情
//     */
//    @Override
//    public R infoYnamic(Long id) {
//        PartyBuildingComPbDynVO comPbDynVO = comPbDynDAO.selectVoById(id);
//        if (ObjectUtils.isEmpty(comPbDynVO)) {
//            return R.fail("动态不存在");
//        }
//        // ComPbMemberDO comPbMemberDO = comPbMemberDAO.selectById(createBy);
//        // String name = comPbMemberDAO.selectNameByUserId(createBy);
//
//        if (ObjectUtils.isEmpty(comPbDynVO.getCreateByName())) {
//            // return R.fail("发布人不存在");
//            String name = comPbMemberDAO.selectNameByUserId(comPbDynVO.getCreateBy());
//            name = "后台发布";
//            comPbDynVO.setCreateByName(name);
//        }
//        // Integer integer = comPbDynUserDAO.selectCount(new
//        // QueryWrapper<ComPbDynUserDO>().lambda().eq(ComPbDynUserDO::getDynId, id));
//        comPbDynVO.setReadingVolume(null == comPbDynVO.getReadingVolume() ? 0 : comPbDynVO.getReadingVolume());
//        return R.ok(comPbDynVO);
//    }
//
//    /**
//     * 分页查询党员动态
//     *
//     * @param partyBuildingComPbDynVO
//     *            查询参数
//     * @return 分页数据
//     */
//    @Override
//    public R pageYnamic(PartyBuildingComPbDynVO partyBuildingComPbDynVO) {
//        Page page = new Page<>();
//        Long pageNum = partyBuildingComPbDynVO.getPageNum();
//        Long pageSize = partyBuildingComPbDynVO.getPageSize();
//        if (null == pageNum) {
//            pageNum = 1l;
//        }
//        if (null == pageSize) {
//            pageSize = 10l;
//        }
//        page.setSize(pageSize);
//        page.setCurrent(pageNum);
//        IPage<PartyBuildingComPbDynVO> iPage = comPbDynDAO.pageYnamic(page, partyBuildingComPbDynVO);
//        List<PartyBuildingComPbDynVO> records = iPage.getRecords();
//        if (!(ObjectUtils.isEmpty(records))) {
//            records.forEach(partyBuildingComPbDynVO1 -> {
//                String content = partyBuildingComPbDynVO1.getContent();
//                if (!ObjectUtils.isEmpty(content)) {
//                    String text = RichTextUtil.getText(content);
//                    partyBuildingComPbDynVO1.setContentText(text);
//                }
//            });
//        }
//        return R.ok(iPage);
//    }
//
//    /**
//     * 删除动态
//     *
//     * @param id
//     *            动态主键
//     * @return 删除结果
//     */
//    @Override
//    public R deleteYnamic(Integer id) {
//        int delete = comPbDynDAO.deleteById(id);
//        if (delete > 0) {
//            return R.ok();
//        }
//        return R.fail();
//    }
    /**
     * 增加阅读记录
@@ -566,7 +661,7 @@
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R deleteDynUser(Integer id) {
    public R deleteDynUser(Long id) {
        ComPbMemberDO comPbMemberDO = comPbMemberDAO.selectById(id);
        if (ObjectUtils.isEmpty(comPbMemberDO)) {
            return R.fail("党员不存在");
@@ -574,7 +669,7 @@
        int delete = comPbMemberDAO.deleteById(id);
        if (delete > 0) {
            // 维护用户表党员状态
            comPbMemberDAO.updateUserIsPartymember(comPbMemberDO.getIdCard());
            comPbMemberDAO.updateUserIsPartymember(comPbMemberDO.getPhone());
            // 删除缓存
            String userKey = UserConstants.LOGIN_USER_INFO + comPbMemberDO.getUserId();
            stringRedisTemplate.delete(userKey);
@@ -645,8 +740,55 @@
        if (partyBuildingMemberVO.getOrgId() != null) {
            comPbMemberDO.setOrgId(partyBuildingMemberVO.getOrgId());
        }
        if (partyBuildingMemberVO.getOrgName() != null) {
            comPbMemberDO.setOrgName(partyBuildingMemberVO.getOrgName());
        }
        if (partyBuildingMemberVO.getPhotoPath() != null) {
            comPbMemberDO.setPhotoPath(partyBuildingMemberVO.getPhotoPath());
        }
        if (nonNull(partyBuildingMemberVO.getType())) {
            comPbMemberDO.setType(partyBuildingMemberVO.getType());
        }
        if (StringUtils.isNotEmpty(partyBuildingMemberVO.getPosition())) {
            comPbMemberDO.setPosition(partyBuildingMemberVO.getPosition());
        }
        if (nonNull(partyBuildingMemberVO.getCheckUnitId())) {
            comPbMemberDO.setCheckUnitId(partyBuildingMemberVO.getCheckUnitId());
        }
        if (StringUtils.isNotEmpty(partyBuildingMemberVO.getFunction())) {
            comPbMemberDO.setFunction(partyBuildingMemberVO.getFunction());
        }
        if (nonNull(partyBuildingMemberVO.getSpecialtyName())) {
            comPbMemberDO.setSpecialtyName(partyBuildingMemberVO.getSpecialtyName());
        }
        if(nonNull(partyBuildingMemberVO.getPhone())){
            comPbMemberDO.setPhone(partyBuildingMemberVO.getPhone());
        }
        Integer type = partyBuildingMemberVO.getType();
        if (nonNull(type) && type.equals(1)) {
            comPbMemberDO.setEmploymentTime(null);
        }
        if(partyBuildingMemberVO.getVillageId()!=null){
            comPbMemberDO.setVillageId(partyBuildingMemberVO.getVillageId());
        }
        if(partyBuildingMemberVO.getHelpCommunityId()!=null){
            comPbMemberDO.setHelpCommunityId(partyBuildingMemberVO.getHelpCommunityId());
        }
        if(partyBuildingMemberVO.getCommunityId()!=null){
            comPbMemberDO.setCommunityId(partyBuildingMemberVO.getCommunityId());
        }
        if(partyBuildingMemberVO.getNatureId()!=null){
            comPbMemberDO.setNatureId(partyBuildingMemberVO.getNatureId());
        }
        if(nonNull(partyBuildingMemberVO.getNatureName())){
            comPbMemberDO.setNatureName(partyBuildingMemberVO.getNatureName());
        }
        if(nonNull(partyBuildingMemberVO.getOtherRemark())){
            comPbMemberDO.setOtherRemark(partyBuildingMemberVO.getOtherRemark());
        }
        if(nonNull(partyBuildingMemberVO.getHelpCommunityName())){
            comPbMemberDO.setHelpCommunityName(partyBuildingMemberVO.getHelpCommunityName());
        }
        if (comPbMemberDAO.updateById(comPbMemberDO) > 0) {
@@ -672,11 +814,22 @@
        IPage<ComDataStatisticsMemberVo> memberPage = comPbMemberDAO.pageDataStatisticsMember(new Page(statisticsMemberDto.getPageNum()
                ,statisticsMemberDto.getPageSize()),statisticsMemberDto);
        memberPage.getRecords().forEach(member -> {
            if(member.getIsRole() > 0){
                member.setIsRole(1);
            }else{
                member.setIsRole(2);
            }
            try {
                member.setAge(IdcardUtil.getAgeByIdCard(member.getIdCard()));
            } catch (Exception e) {
                log.error("年龄转义失败");
            }
            //查询党员统计数据
            ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberDAO.getMemberStatistics(member.getUserId(),member.getCommunityId());
            if(statisticsMemberVo != null){
                member.setPartyActivityCount(statisticsMemberVo.getPartyActivityCount());
                member.setPartyActivityDuration(statisticsMemberVo.getPartyActivityDuration());
                member.setPartyActivityIntegral(statisticsMemberVo.getPartyActivityIntegral());
                member.setVolunteerActivityCount(statisticsMemberVo.getVolunteerActivityCount());
                member.setVolunteerActivityDuration(statisticsMemberVo.getVolunteerActivityDuration());
                member.setVolunteerActivityIntegral(statisticsMemberVo.getVolunteerActivityIntegral());
@@ -699,25 +852,27 @@
        List<Long> orgIds = new ArrayList<>();
        Long communityId = statisticsOrgDto.getCommunityId();
        ComDataStatisticsOrgVo statisticsOrgVo = new ComDataStatisticsOrgVo();
        ComPbOrgDO pbOrgDO = comPbOrgDAO.selectById(statisticsOrgDto.getOrgId());
        if(pbOrgDO == null){
            return R.fail("未查询到党组织");
        }
        //拼接党组织id
        if(pbOrgDO.getOneId() != null){
            orgIds.add(pbOrgDO.getOneId());
        }
        if(pbOrgDO.getTwoId() != null){
            orgIds.add(pbOrgDO.getTwoId());
        }
        if(pbOrgDO.getThirdId() != null){
            orgIds.add(pbOrgDO.getThirdId());
        }
        if(pbOrgDO.getFourId() != null){
            orgIds.add(pbOrgDO.getFourId());
        }
        if(pbOrgDO.getFiveId() != null){
            orgIds.add(pbOrgDO.getFiveId());
        if(statisticsOrgDto.getOrgId() != null){
            ComPbOrgDO pbOrgDO = comPbOrgDAO.selectById(statisticsOrgDto.getOrgId());
            if(pbOrgDO == null){
                return R.fail("未查询到党组织");
            }
            //拼接党组织id
            if(pbOrgDO.getOneId() != null){
                orgIds.add(pbOrgDO.getOneId());
            }
            if(pbOrgDO.getTwoId() != null){
                orgIds.add(pbOrgDO.getTwoId());
            }
            if(pbOrgDO.getThirdId() != null){
                orgIds.add(pbOrgDO.getThirdId());
            }
            if(pbOrgDO.getFourId() != null){
                orgIds.add(pbOrgDO.getFourId());
            }
            if(pbOrgDO.getFiveId() != null){
                orgIds.add(pbOrgDO.getFiveId());
            }
        }
        //拼接查询开始结束时间
        String startTime = statisticsOrgDto.getYear() + "-01-01 00:00:00";
@@ -731,16 +886,20 @@
        }
        //查询左下数据
        statisticsVo = comPbMemberDAO.getOrgDataStatisticsLeftDown(communityId,orgIds,startTime,endTime);
        statisticsVo = comPbMemberDAO.getOrgDataStatisticsLeftDown(communityId,orgIds,startTime,endTime,"");
        if(statisticsVo != null){
            statisticsOrgVo.setParticipateVolunteerActivityDuration(statisticsVo.getParticipateVolunteerActivityDuration());
            statisticsOrgVo.setParticipateVolunteerActivityNum(statisticsVo.getParticipateVolunteerActivityNum());
            statisticsOrgVo.setParticipatePartyActivityNum(statisticsVo.getParticipatePartyActivityNum());
            statisticsOrgVo.setParticipatePartyActivityDuration(statisticsVo.getParticipatePartyActivityDuration());
            statisticsOrgVo.setParticipateActivityDuration(statisticsVo.getParticipateActivityDuration());
            statisticsOrgVo.setParticipateActivityNum(statisticsVo.getParticipateActivityNum());
        }
        //查询党员数据
        IPage<PartyBuildingMemberVO> partyMemberPage = comPbMemberDAO.getOrgDataStatisticsMember(new Page(statisticsOrgDto.getPageNum()
                ,statisticsOrgDto.getPageSize()),communityId,orgIds);
        IPage<PartyBuildingMemberVO> partyMemberPage = comPbMemberDAO.getOrgDataStatisticsMember(
                new Page(statisticsOrgDto.getPageNum()
                ,statisticsOrgDto.getPageSize()),communityId,orgIds,"");
        if(partyMemberPage.getRecords() != null && !partyMemberPage.getRecords().isEmpty()){
            statisticsOrgVo.setPartyMemberList(partyMemberPage.getRecords());
        }
@@ -752,19 +911,310 @@
        List<String> completeEasyList = new ArrayList<>();
        List<String> cumulativeEasyList = new ArrayList<>();
        for (int i = 0; i < startDateList.size(); i++) {
            Map<String,Object> statisticsMap = comPbMemberDAO.getOrgDataStatisticsRightDown(communityId,orgIds, startDateList.get(i), endDateList.get(i));
            Map<String,Object> statisticsMap = comPbMemberDAO.getOrgDataStatisticsRightDown(communityId,orgIds,
                    startDateList.get(i) + " 00:00:00", endDateList.get(i) + " 23:59:59");
            if(statisticsMap != null){
                completeWishList.add(statisticsMap.get("completeWishNum").toString());
                cumulativeWishList.add(statisticsMap.get("cumulativeWishNum").toString());
                completeEasyList.add(statisticsMap.get("completeEasyNum").toString());
                cumulativeEasyList.add(statisticsMap.get("completeEasyNum").toString());
                cumulativeEasyList.add(statisticsMap.get("cumulativeEasyNum").toString());
                if(i == startDateList.size() - 1){
                    statisticsOrgVo.setWishNum(statisticsMap.get("cumulativeWishNum").toString());
                    statisticsOrgVo.setEasyNum(statisticsMap.get("cumulativeEasyNum").toString());
                }
            }
        }
        statisticsOrgVo.setCompleteEasyList(completeEasyList);
        statisticsOrgVo.setCompleteWishList(completeWishList);
        statisticsOrgVo.setCumulativeWishList(cumulativeWishList);
        statisticsOrgVo.setCumulativeEasyList(cumulativeEasyList);
        Integer partyMemberNum = statisticsOrgVo.getPartyMemberNum();
        if (nonNull(partyMemberNum) && partyMemberNum.intValue() > 0) {
            Integer formalPartyMemberNum = statisticsOrgVo.getFormalPartyMemberNum();
            if (nonNull(formalPartyMemberNum) && formalPartyMemberNum.intValue() > 0) {
                statisticsOrgVo.setFormalPartyMemberNumPercent(new BigDecimal(formalPartyMemberNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer preparePartyMemberNum = statisticsOrgVo.getPreparePartyMemberNum();
            if (nonNull(preparePartyMemberNum) && preparePartyMemberNum.intValue() > 0) {
                statisticsOrgVo.setPreparePartyMemberNumPercent(new BigDecimal(preparePartyMemberNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer tyNum = statisticsOrgVo.getTyNum();
            if (nonNull(tyNum) && tyNum.intValue() > 0) {
                statisticsOrgVo.setTyNumPercent(new BigDecimal(tyNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer msNum = statisticsOrgVo.getMsNum();
            if (nonNull(msNum) && msNum.intValue() > 0) {
                statisticsOrgVo.setMsNumPercent(new BigDecimal(msNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer yyNum = statisticsOrgVo.getYyNum();
            if (nonNull(yyNum) && yyNum.intValue() > 0) {
                statisticsOrgVo.setYyNumPercent(new BigDecimal(yyNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer wdNum = statisticsOrgVo.getWdNum();
            if (nonNull(wdNum) && wdNum.intValue() > 0) {
                statisticsOrgVo.setWdNumPercent(new BigDecimal(wdNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer qtNum = statisticsOrgVo.getQtNum();
            if (nonNull(qtNum) && qtNum.intValue() > 0) {
                statisticsOrgVo.setQtNumPercent(new BigDecimal(qtNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer wuNum = statisticsOrgVo.getWuNum();
            if (nonNull(wuNum) && wuNum.intValue() > 0) {
                statisticsOrgVo.setWuNumPercent(new BigDecimal(wuNum)
                        .divide(new BigDecimal(partyMemberNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
        }
        Integer participateActivityNum = statisticsOrgVo.getParticipateActivityNum();
        if (nonNull(participateActivityNum) && participateActivityNum.intValue() > 0) {
            Integer participateVolunteerActivityNum = statisticsOrgVo.getParticipateVolunteerActivityNum();
            if (nonNull(participateVolunteerActivityNum) && participateVolunteerActivityNum.intValue() > 0) {
                statisticsOrgVo.setParticipateVolunteerActivityNumPercent(new BigDecimal(participateVolunteerActivityNum)
                        .divide(new BigDecimal(participateActivityNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer participatePartyActivityNum = statisticsOrgVo.getParticipatePartyActivityNum();
            if (nonNull(participatePartyActivityNum) && participatePartyActivityNum.intValue() > 0) {
                statisticsOrgVo.setParticipatePartyActivityNumPercent(new BigDecimal(participatePartyActivityNum)
                        .divide(new BigDecimal(participateActivityNum), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
        }
        Integer participateActivityDuration = statisticsOrgVo.getParticipateActivityDuration();
        if (nonNull(participateActivityDuration) && participateActivityDuration.intValue() > 0) {
            Integer participateVolunteerActivityDuration = statisticsOrgVo.getParticipateVolunteerActivityDuration();
            if (nonNull(participateVolunteerActivityDuration) && participateVolunteerActivityDuration.intValue() > 0) {
                statisticsOrgVo.setParticipateVolunteerActivityDurationPercent(new BigDecimal(participateVolunteerActivityDuration)
                        .divide(new BigDecimal(participateActivityDuration), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
            Integer participatePartyActivityDuration = statisticsOrgVo.getParticipatePartyActivityDuration();
            if (nonNull(participatePartyActivityDuration) && participatePartyActivityDuration.intValue() > 0) {
                statisticsOrgVo.setParticipatePartyActivityDurationPercent(new BigDecimal(participatePartyActivityDuration)
                        .divide(new BigDecimal(participateActivityDuration), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).setScale(0));
            }
        }
        return R.ok(statisticsOrgVo);
    }
    /**
     * 查询党组织表头统计数据
     * @param communityId
     *            社区id
     * @return  党组织表头统计数据
     */
    @Override
    public R getHeaderOrgDataStatistics(Long communityId) {
        ComDataStatisticsHeaderOrgVo headerOrgVo = comPbMemberDAO.getHeaderOrgDataStatistics(communityId);
        if(headerOrgVo != null){
            if(headerOrgVo.getVillageNum() == null || headerOrgVo.getVillageNum().equals(0)){
                headerOrgVo.setVillageRate(BigDecimal.ZERO);
            }else{
                headerOrgVo.setVillageRate(BigDecimal.valueOf(headerOrgVo.getAreaNum()).divide(BigDecimal.valueOf(headerOrgVo.getVillageNum())
                        ,4,BigDecimal.ROUND_HALF_UP).multiply(BigDecimal.valueOf(100)));
            }
        }
        return R.ok(headerOrgVo);
    }
    /**
     * 党员数据统计-党员导出数据查询
     * @param statisticsMemberDto   请求参数
     * @return  党员导出数据
     */
    @Override
    public R exportDataStatisticsMember(PageComDataStatisticsMemberDto statisticsMemberDto) {
        List<ComDataStatisticsMemberExcelVo> memberList = comPbMemberDAO.exportDataStatisticsMember(statisticsMemberDto);
        memberList.forEach(member -> {
            //查询党员统计数据
            ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberDAO.getMemberStatistics(member.getUserId(),member.getCommunityId());
            if(statisticsMemberVo != null){
                member.setPartyActivityCount(statisticsMemberVo.getPartyActivityCount());
                member.setPartyActivityDuration(statisticsMemberVo.getPartyActivityDuration());
                member.setVolunteerActivityCount(statisticsMemberVo.getVolunteerActivityCount());
                member.setVolunteerActivityDuration(statisticsMemberVo.getVolunteerActivityDuration());
                member.setVolunteerActivityIntegral(statisticsMemberVo.getVolunteerActivityIntegral());
                member.setWishCount(statisticsMemberVo.getWishCount());
                member.setEasyCount(statisticsMemberVo.getEasyCount());
                member.setActivityCount(member.getPartyActivityCount() + member.getVolunteerActivityCount());
                member.setActivityDuration(member.getPartyActivityDuration() + member.getVolunteerActivityDuration());
            }
        });
        return R.ok(memberList);
    }
    @Override
    public R importPbMemberRole(List<ComPbMemberRoleExcelVo> list, Long communityId, Long userId) {
        return null;
    }
//    /**
//     * 党委导入接口
//     * @param list 数据列表
//     * @param communityId   社区id
//     * @param userId    用户id
//     * @return  导入结果
//     */
//    @Override
//    @Transactional(rollbackFor = Exception.class)
//    public R importPbMemberRole(List<ComPbMemberRoleExcelVo> list, Long communityId, Long userId) {
//        ArrayList<ComPbMemberRoleErrorExcelVo> mistakes = Lists.newArrayList();
//        ArrayList<ComPbMemberRoleDO> saveList = Lists.newArrayList();
//        Date nowDate = new Date();
//        if(list != null && list.size() > 0){
//            list.forEach(memberRole -> {
//                ComPbMemberRoleDO memberRoleDO = comPbMemberRoleDAO.selectOne(new QueryWrapper<ComPbMemberRoleDO>().lambda()
//                        .eq(ComPbMemberRoleDO::getCommunityId,communityId).eq(ComPbMemberRoleDO::getIdCard,memberRole.getIdCard()));
//                if(memberRoleDO != null){
//                    ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
//                    BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
//                    roleErrorExcelVo.setError("该党委已存在,不可重复导入");
//                    mistakes.add(roleErrorExcelVo);
//                }else{
//                    memberRoleDO = new ComPbMemberRoleDO();
//                    BeanUtils.copyProperties(memberRole,memberRoleDO);
//                    Integer type = ComPbMemberRoleTypeEnum.getCodeByName(memberRole.getTypeName());
//                    if(type.equals(0)){
//                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
//                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
//                        roleErrorExcelVo.setError("党委标签不存在,请核对后再重新导入");
//                        mistakes.add(roleErrorExcelVo);
//                        return;
//                    }else{
//                        memberRoleDO.setType(type);
//                    }
//                    try {
//                        Date joinTime = DateUtils.stringToDate(memberRole.getJoinTime(),DateUtils.yyyyMMdd_format);
//                        memberRoleDO.setJoinTime(joinTime);
//                    } catch (Exception e) {
//                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
//                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
//                        roleErrorExcelVo.setError("入党时间格式错误,请按照正确格式填写,如:2022-01-01");
//                        mistakes.add(roleErrorExcelVo);
//                        return;
//                    }
//                    if(StringUtils.isNotEmpty(memberRole.getOrg())){
//                        ComPbOrgDO comPbOrgDO=comPbOrgDAO.selectOne(new QueryWrapper<ComPbOrgDO>().lambda().eq(ComPbOrgDO::getName,memberRole.getOrg()).eq(ComPbOrgDO::getCommunityId,communityId));
//                        if(comPbOrgDO!=null){
//                            memberRoleDO.setOrgId(comPbOrgDO.getId());
//                        }
//                    }
//                    try {
//                        Date employmentTime = DateUtils.stringToDate(memberRole.getEmploymentTime(),DateUtils.yyyyMMdd_format);
//                        memberRoleDO.setEmploymentTime(employmentTime);
//                    } catch (Exception e) {
//                        ComPbMemberRoleErrorExcelVo roleErrorExcelVo = new ComPbMemberRoleErrorExcelVo();
//                        BeanUtils.copyProperties(memberRole,roleErrorExcelVo);
//                        roleErrorExcelVo.setError("转正时间格式错误,请按照正确格式填写,如:2022-01-01");
//                        mistakes.add(roleErrorExcelVo);
//                        return;
//                    }
//                    Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(memberRole.getIdCard());
//                    memberRoleDO.setIsReg(userCount > 0 ? 1 : 2);
//                    memberRoleDO.setCommunityId(communityId);
//                    memberRoleDO.setSex(Integer.parseInt(memberRoleDO.getIdCard().substring(16,17))%2==0?2:1);
//                    saveList.add(memberRoleDO);
//                }
//            });
//        }
//
//        if(saveList.size() > 0){
//            saveList.forEach(save -> {
//                int result = comPbMemberRoleDAO.insert(save);
//                if(result>0){
//                    //判断党员信息是否存在党委信息
//                    ComPbMemberDO pbMemberDO = comPbMemberDAO.selectOne(new QueryWrapper<ComPbMemberDO>().lambda()
//                            .eq(ComPbMemberDO::getIdCard,save.getIdCard())
//                            .eq(ComPbMemberDO::getAuditResult,ComPbMemberDO.AuditResult.SHTG)
//                            .eq(ComPbMemberDO::getCommunityId,save.getCommunityId()));
//                    if(pbMemberDO == null){
//                        //不存在则创建党委党员信息
//                        pbMemberDO = new ComPbMemberDO();
//                        BeanUtils.copyProperties(save, pbMemberDO);
//                        pbMemberDO.setAuditResult(ComPbMemberDO.AuditResult.SHTG);
//                        pbMemberDO.setCreateAt(nowDate);
//                        pbMemberDO.setUpdateAt(nowDate);
//                        pbMemberDO.setType(ComPbMemberDO.Type.ZSDY);
//                        comPbMemberDAO.insert(pbMemberDO);
//                        //金沙特殊需求
//                        if(pbMemberDO.getCommunityId()==2L){
//                            ComMngVolunteerMngVO comMngVolunteerMngVO=new ComMngVolunteerMngVO();
//                            comMngVolunteerMngVO.setOrgId(53L);
//                            comMngVolunteerMngVO.setName(pbMemberDO.getName());
//                            comMngVolunteerMngVO.setPhone(pbMemberDO.getPhone());
//                            comMngVolunteerMngVO.setIdCard(pbMemberDO.getIdCard());
//                            comMngVolunteerMngVO.setState(2);
//                            comMngVolunteerMngVO.setCommunityId(2L);
//                            R r = communityService.addVolunteer(comMngVolunteerMngVO);
//                            // 支援者添加成功,修改小程序用户的志愿者状态    ,通过手机号
//                            if (R.isOk(r)) {
//                                String phone = comMngVolunteerMngVO.getPhone();
//                                R r1 = userService.putUserIsVolunteer(phone, 1);
//                                if (R.isOk(r1)) {
//                                    log.info("修改手机号【{}】的支援者状态为是", phone);
//                                } else {
//                                    log.info("手机号【{}】没有小程序用户", phone);
//                                }
//                            }
//                        }
//                    }
//                }
//                userService.updateUserIsPartymember(save.getIdCard());
//            });
//        }
//        if(mistakes.size() > 0){
//            return R.fail(mistakes);
//        }
//        return R.ok();
//    }
    @Override
    public R exportPartyMember(PagePartyOrganizationVO pagePartyOrganizationVO) {
        return R.ok(comPbMemberDAO.exportPartyMemberList(pagePartyOrganizationVO));
    }
    @Override
    public R checkMember(String idCard) {
        List<ComPbMemberDO> list=comPbMemberDAO.selectList(new QueryWrapper<ComPbMemberDO>().lambda().eq(ComPbMemberDO::getIdCard,idCard));
        return R.ok(CollectionUtils.isEmpty(list));
    }
    @Override
    public R getPagePbMember(PartyBuildingMemberVO dto) {
        IPage<PartyBuildingMemberVO> memberPage = comPbMemberDAO.getPbMemberByApplets(new Page(dto.getPageNum(),dto.getPageSize()),dto);
        memberPage.getRecords().forEach(member -> {
            if(StringUtils.isEmpty(member.getOrgName())){
                member.setOrgName("待编辑党支部");
            }
            if(StringUtils.isEmpty(member.getCheckUnitName())){
                member.setCheckUnitName("待编辑报到单位");
            }
            //member.setName(SensitiveUtil.replaceName(member.getName()));
        });
        return R.ok(memberPage);
    }
    @Override
    public R getPartyMember(String phone,Integer type) {
        return R.ok(comPbMemberDAO.selectDetail(phone,type));
    }
    @Override
    public R memberDetail(Long id) {
        return R.ok(comPbMemberDAO.getDetailByApp(id));
    }
    /**
     * 分页查询注册党员列表
     * @param dto
     * @return
     */
    @Override
    public R pageRegisterMember(PageMemberForInviteDTO dto) {
        return R.ok(comPbMemberDAO.pageRegisterMember(new Page(dto.getPageNum(), dto.getPageSize()), dto));
    }
}