package com.panzhihua.service_dangjian.service.impl; import java.math.BigDecimal; 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 cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdcardUtil; import com.google.common.collect.Lists; import com.panzhihua.common.enums.ComPbMemberRoleTypeEnum; import com.panzhihua.common.model.dtos.partybuilding.ComDataStatisticsOrgDto; import com.panzhihua.common.model.dtos.partybuilding.PageComDataStatisticsMemberDto; import com.panzhihua.common.model.vos.community.ComActVO; import com.panzhihua.common.model.vos.community.ComMngVolunteerMngVO; import com.panzhihua.common.model.vos.partybuilding.west.*; import com.panzhihua.common.model.vos.partybuilding.excel.ComDataStatisticsMemberExcelVo; import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleErrorExcelVo; import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo; import com.panzhihua.common.service.community.CommunityWestService; import com.panzhihua.common.service.user.UserService; import com.panzhihua.common.utlis.*; 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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.vos.R; import com.panzhihua.service_dangjian.dao.*; import com.panzhihua.service_dangjian.model.dos.*; import com.panzhihua.service_dangjian.service.ComPbMemberWestService; import lombok.extern.slf4j.Slf4j; import static java.util.Objects.nonNull; /** * @program: springcloud_k8s_panzhihuazhihuishequ * @description: 党员 * @author: huang.hongfa weixin hhf9596 qq 959656820 * @create: 2020-11-30 10:53 **/ @Slf4j @Service public class ComPbMemberWestServiceImpl extends ServiceImpl implements ComPbMemberWestService { private final String REDIS_ORG_ALL = "ogrlist"; @Resource private ComPbMemberWestDAO comPbMemberWestDAO; @Resource private StringRedisTemplate stringRedisTemplate; @Resource private ComPbOrgDAO comPbOrgDAO; @Resource private ComPbMemberRoleDAO comPbMemberRoleDAO; @Resource private ComPbDynDAO comPbDynDAO; @Resource private ComPbDynUserDAO comPbDynUserDAO; @Resource private CommunityWestService communityWestService; @Resource private UserService userService; @Resource private ComPbMemberDAO comPbMemberDAO; /** * 新增党员 * * @param partyBuildingMemberVO * 党员基本信息 * @return 新增结果 */ @Override public R addPartyBuildingMember(PartyBuildingMemberVO partyBuildingMemberVO) { String idCard = partyBuildingMemberVO.getIdCard(); List comPbMemberWestDOS = comPbMemberWestDAO.selectList(new QueryWrapper().lambda() .eq(ComPbMemberWestDO::getIdCard, idCard).eq(ComPbMemberWestDO::getAuditResult, 1)); if (!ObjectUtils.isEmpty(comPbMemberWestDOS) && comPbMemberWestDOS.size() > 0) { return R.fail("身份证已经存在"); } ComPbMemberWestDO comPbMemberWestDO1 = new ComPbMemberWestDO(); BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberWestDO1); Date date = new Date(); comPbMemberWestDO1.setCreateAt(date); comPbMemberWestDO1.setUpdateAt(date); comPbMemberWestDO1.setId(null); int insert = comPbMemberWestDAO.insert(comPbMemberWestDO1); if (insert > 0) { // 删除已驳回的记录 int delete = comPbMemberWestDAO.delete(new QueryWrapper().lambda() .eq(ComPbMemberWestDO::getIdCard, partyBuildingMemberVO.getIdCard()) .eq(ComPbMemberWestDO::getUserId, partyBuildingMemberVO.getUserId()) .eq(ComPbMemberWestDO::getCommunityId, partyBuildingMemberVO.getCommunityId()) .eq(ComPbMemberWestDO::getAuditResult, 3)); return R.ok(); } return R.fail(); } /** * 批量新增党员 * * @param list * 党员集合 * @return 新增结果 */ @Override @Transactional(rollbackFor = Exception.class) public R listSavePartyBuildingMemberExcelVO(List list) { // Boolean aBoolean = stringRedisTemplate.hasKey(REDIS_ORG_ALL); // ValueOperations valueOperations = stringRedisTemplate.opsForValue(); List partyOrganizationVOS = new ArrayList<>(); // if (aBoolean) { // String orgs = valueOperations.get(REDIS_ORG_ALL); // if (!ObjectUtils.isEmpty(orgs)) { // partyOrganizationVOS= JSONArray.parseArray(orgs,PartyOrganizationVO.class); // } // } else { // List comPbOrgDOS = comPbOrgDAO.selectList(new LambdaQueryWrapper<>()); // if (!ObjectUtils.isEmpty(comPbOrgDOS)) { // List 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; // } // valueOperations.set(REDIS_ORG_ALL,JSONArray.toJSONString(partyOrganizationVOS),24, TimeUnit.HOURS); // } List comPbOrgDOS = comPbOrgDAO.selectList(new LambdaQueryWrapper<>()); if (!ObjectUtils.isEmpty(comPbOrgDOS)) { List 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 comPbMemberWestDOS = new ArrayList<>(); if (!ObjectUtils.isEmpty(list)) { List partyOrganizationVOArrayList = partyOrganizationVOS; for (PartyBuildingMemberExcelVO partyBuildingMemberExcelVO : list) { ComPbMemberWestDO comPbMemberWestDO = new ComPbMemberWestDO(); Date date = new Date(); comPbMemberWestDO.setUpdateAt(date); comPbMemberWestDO.setCreateAt(date); String orgName = partyBuildingMemberExcelVO.getOrgName(); List 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); comPbMemberWestDO.setOrgId(partyOrganizationVO.getId()); comPbMemberWestDO.setCommunityId(partyOrganizationVO.getCommunityId()); List comPbMemberWestDOList = this.baseMapper.selectList(new QueryWrapper() .lambda().eq(ComPbMemberWestDO::getIdCard, partyBuildingMemberExcelVO.getIdCard()) .eq(ComPbMemberWestDO::getCommunityId, partyOrganizationVO.getCommunityId()) .in(ComPbMemberWestDO::getAuditResult, 0, 1)); if (!comPbMemberWestDOList.isEmpty()) { comPbMemberWestDOList.forEach(comPbMember -> { BeanUtils.copyProperties(partyBuildingMemberExcelVO, comPbMember); this.baseMapper.updateById(comPbMember); }); continue; // throw new PartyBuildingMemberException("导入失败,您导入的数据中有已存在的党员信息,已存在的数据:"+ // partyBuildingMemberExcelVO.getEmploymentTime() + ",已存在的人名:" + // partyBuildingMemberExcelVO.getName()); } } if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getEmploymentTime()) && !DateUtils.isValidDate(partyBuildingMemberExcelVO.getEmploymentTime())) { throw new PartyBuildingMemberException( "导入失败,您导入的数据中有转正日期格式错误,错误数据:" + partyBuildingMemberExcelVO.getEmploymentTime() + ",错误人名:" + partyBuildingMemberExcelVO.getName()); } 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()); comPbMemberWestDO.setEmploymentTime(employmentTime); } else { comPbMemberWestDO.setEmploymentTime(null); } if (StringUtils.isNotEmpty(partyBuildingMemberExcelVO.getJoinTime())) { Date joinTime = DateUtils.toValidDate(partyBuildingMemberExcelVO.getJoinTime()); comPbMemberWestDO.setJoinTime(joinTime); } else { comPbMemberWestDO.setJoinTime(null); } comPbMemberWestDO.setName(partyBuildingMemberExcelVO.getName()); comPbMemberWestDO.setIdCard(partyBuildingMemberExcelVO.getIdCard()); comPbMemberWestDOS.add(comPbMemberWestDO); } } comPbMemberWestDOS.forEach(comPbMemberDO -> { //金沙社区特殊需求 添加党员默认添加志愿者 if(comPbMemberDO.getCommunityId()==2L){ ComMngVolunteerMngVO comMngVolunteerMngVO=new ComMngVolunteerMngVO(); comMngVolunteerMngVO.setOrgId(53L); comMngVolunteerMngVO.setName(comPbMemberDO.getName()); comMngVolunteerMngVO.setPhone(comPbMemberDO.getPhone()); comMngVolunteerMngVO.setIdCard(comPbMemberDO.getIdCard()); comMngVolunteerMngVO.setState(2); comMngVolunteerMngVO.setCommunityId(2L); R r = communityWestService.addVolunteer(comMngVolunteerMngVO); // 支援者添加成功,修改小程序用户的志愿者状态 ,通过手机号 String phone = comMngVolunteerMngVO.getPhone(); if (R.isOk(r) && StringUtils.isNotBlank(phone)) { R r1 = userService.putUserIsVolunteer(phone, 1); if (R.isOk(r1)) { log.info("修改手机号【{}】的支援者状态为是", phone); } else { log.info("手机号【{}】没有小程序用户", phone); } } } }); this.saveBatch(comPbMemberWestDOS); return R.ok(); } /** * 分页党员 * * @param pagePartyOrganizationVO * 查询信息 * @return 分页数据 */ @Override public R pagePartyOrganization(PagePartyOrganizationVO pagePartyOrganizationVO) { Page page = new Page<>(); Long pageNum = pagePartyOrganizationVO.getPageNum(); Long pageSize = pagePartyOrganizationVO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); Long communityId = pagePartyOrganizationVO.getCommunityId(); if (null != communityId){ List communityIds = comPbMemberDAO.selectIds(communityId); if (CollUtil.isEmpty(communityIds)) { communityIds = new ArrayList<>(); communityIds.add(communityId); } pagePartyOrganizationVO.setCommunityIds(communityIds); } IPage iPage = comPbMemberWestDAO.queryAllByLimit(page, pagePartyOrganizationVO); iPage.getRecords().forEach(record -> { record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); }); return R.ok(iPage); } /** * 编辑党员信息 新增字段均可编辑 * * @param partyBuildingMemberVO * 编辑字段 * @return 编辑结果 */ @Override public R updatePartyBuildingMember(PartyBuildingMemberVO partyBuildingMemberVO) { ComPbMemberWestDO comPbMemberWestDO = new ComPbMemberWestDO(); Long orgId = partyBuildingMemberVO.getOrgId(); if (null != orgId && 0 == orgId) { partyBuildingMemberVO.setOrgId(null); } BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberWestDO); Integer type = partyBuildingMemberVO.getType(); if (nonNull(type) && type.equals(1)) { comPbMemberWestDO.setEmploymentTime(null); } comPbMemberWestDO.setAuditResult(partyBuildingMemberVO.getAuditResult()); int i = comPbMemberWestDAO.updateById(comPbMemberWestDO); if (i > 0) { return R.ok(); } return R.fail(); } /** * 查询指定社区的所有党员 * * @param communityId * 社区id * @return 党员列表 */ @Override public R listPartyMember(Long communityId) { List comPbMemberWestDOS = comPbMemberWestDAO.selectList(new QueryWrapper().lambda() .eq(ComPbMemberWestDO::getCommunityId, communityId).eq(ComPbMemberWestDO::getAuditResult, 1)); // 查询社区所有已经注册的党员 // 排除掉已经成为党委的党员 // List comPbMemberDOS = comPbMemberDAO.selectListRegister(communityId); // if (ObjectUtils.isEmpty(comPbMemberDOS)) { // return R.ok(new ArrayList<>()); // } List partyBuildingMemberVOS = new ArrayList<>(); comPbMemberWestDOS.forEach(comPbMemberDO -> { PartyBuildingMemberVO partyBuildingMemberVO = new PartyBuildingMemberVO(); BeanUtils.copyProperties(comPbMemberDO, partyBuildingMemberVO); partyBuildingMemberVOS.add(partyBuildingMemberVO); }); 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); comPbMemberRoleDO.setSex(Integer.parseInt(partyCommitteeVO.getIdCard().substring(16,17))%2==0?2:1); Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard(), partyCommitteeVO.getAreaCode()); if (userCount > 0) { comPbMemberRoleDO.setIsReg(1); } Date nowDate = new Date(); //判断党员信息是否存在党委信息 ComPbMemberWestDO pbMemberDO = comPbMemberWestDAO.selectOne(new QueryWrapper().lambda() .eq(ComPbMemberWestDO::getIdCard,partyCommitteeVO.getIdCard()) .eq(ComPbMemberWestDO::getAuditResult, ComPbMemberWestDO.AuditResult.SHTG) .eq(ComPbMemberWestDO::getCommunityId,partyCommitteeVO.getCommunityId())); if(pbMemberDO == null){ //不存在则创建党委党员信息 pbMemberDO = new ComPbMemberWestDO(); BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO); pbMemberDO.setAuditResult(ComPbMemberWestDO.AuditResult.SHTG); pbMemberDO.setCreateAt(nowDate); pbMemberDO.setUpdateAt(nowDate); pbMemberDO.setType(ComPbMemberWestDO.Type.ZSDY); comPbMemberWestDAO.insert(pbMemberDO); }else{ //存在则更新党委党员信息 BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO); pbMemberDO.setUpdateAt(nowDate); pbMemberDO.setType(ComPbMemberWestDO.Type.ZSDY); comPbMemberWestDAO.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(), partyCommitteeVO.getAreaCode()); if (userCount > 0) { comPbMemberRoleDO.setIsReg(1); } //查询党员信息并更新 ComPbMemberWestDO pbMemberDO = comPbMemberWestDAO.selectOne(new QueryWrapper().lambda() .eq(ComPbMemberWestDO::getIdCard,partyCommitteeVO.getIdCard()) .eq(ComPbMemberWestDO::getAuditResult, ComPbMemberWestDO.AuditResult.SHTG) .eq(ComPbMemberWestDO::getCommunityId,partyCommitteeVO.getCommunityId())); if(pbMemberDO != null){ Long id = pbMemberDO.getId(); BeanUtils.copyProperties(partyCommitteeVO, pbMemberDO); pbMemberDO.setId(id); pbMemberDO.setUpdateAt(nowDate); pbMemberDO.setType(ComPbMemberWestDO.Type.ZSDY); comPbMemberWestDAO.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(), partyCommitteeVO.getAreaCode()); // 删除用户信息缓存 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 iPage = comPbMemberRoleDAO.pagePartyOrganization(page, partyCommitteeVO); iPage.getRecords().forEach(record -> { record.setPhone(SensitiveUtil.desensitizedPhoneNumber(record.getPhone())); }); return R.ok(iPage); } /** * 新建党建动态 * * @param partyCommitteeVO * 动态内容 * @return 新增结果 */ @Override public R adddYnamic(PartyBuildingComPbDynVO partyCommitteeVO) { partyCommitteeVO.setId(null); ComPbDynDO comPbDynDO = new ComPbDynDO(); BeanUtils.copyProperties(partyCommitteeVO, comPbDynDO); comPbDynDO.setCreateAt(new Date()); int insert = comPbDynDAO.insert(comPbDynDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 编辑动态 * * @param partyCommitteeVO * 编辑内容 * @return 编辑结果 */ @Override public R updateYnamic(PartyBuildingComPbDynVO partyCommitteeVO) { ComPbDynDO comPbDynDO = new ComPbDynDO(); BeanUtils.copyProperties(partyCommitteeVO, comPbDynDO); int insert = comPbDynDAO.updateById(comPbDynDO); if (insert > 0) { return R.ok(); } 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 = comPbMemberWestDAO.selectNameByUserId(comPbDynVO.getCreateBy()); name = "后台发布"; comPbDynVO.setCreateByName(name); } // Integer integer = comPbDynUserDAO.selectCount(new // QueryWrapper().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); Long communityId = partyBuildingComPbDynVO.getCommunityId(); if (null != communityId){ List communityIds = comPbMemberDAO.selectIds(communityId); if (CollUtil.isEmpty(communityIds)) { communityIds = new ArrayList<>(); communityIds.add(communityId); } partyBuildingComPbDynVO.setCommunityIds(communityIds); }else { //西区大屏 if (CollUtil.isEmpty(partyBuildingComPbDynVO.getCommunityIds()) || "wx0cef797390444b75".equals(partyBuildingComPbDynVO.getAppId())){ List selectDistinctCommunityId = comPbMemberDAO.selectDistinctCommunityId("西区"); partyBuildingComPbDynVO.setCommunityIds(selectDistinctCommunityId); } } IPage iPage = comPbDynDAO.pageYnamic(page, partyBuildingComPbDynVO); List 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(Long id) { int delete = comPbDynDAO.deleteById(id); if (delete > 0) { return R.ok(); } return R.fail(); } /** * 增加阅读记录 * * @param comPbDynUserVO * 阅读记录 * @return 增加结果 */ @Override public R addDynUser(ComPbDynUserVO comPbDynUserVO) { ComPbDynUserDO comPbDynUserDO = new ComPbDynUserDO(); BeanUtils.copyProperties(comPbDynUserVO, comPbDynUserDO); int insert = comPbDynUserDAO.insert(comPbDynUserDO); if (insert > 0) { return R.ok(); } return R.fail(); } /** * 删除党员 * * @param id * 党员主键 * @return 删除结果 */ @Override @Transactional(rollbackFor = Exception.class) public R deleteDynUser(Integer id) { ComPbMemberWestDO comPbMemberWestDO = comPbMemberWestDAO.selectById(id); if (ObjectUtils.isEmpty(comPbMemberWestDO)) { return R.fail("党员不存在"); } int delete = comPbMemberWestDAO.deleteById(id); if (delete > 0) { comPbMemberRoleDAO.delete(new LambdaQueryWrapper() .eq(ComPbMemberRoleDO::getIdCard, comPbMemberWestDO.getIdCard()) .eq(ComPbMemberRoleDO::getCommunityId, comPbMemberWestDO.getCommunityId())); // 维护用户表党员状态 comPbMemberWestDAO.updateUserIsPartymember(comPbMemberWestDO.getIdCard()); // 删除缓存 String userKey = UserConstants.LOGIN_USER_INFO + comPbMemberWestDO.getUserId(); stringRedisTemplate.delete(userKey); return R.ok(); } return R.fail(); } /** * 定时任务刷新党建动态发布状态 * * @return 刷新数据数量 */ @Override public R timedTaskPartyBuildingStatus() { int num = comPbDynDAO.timedTaskPartyBuildingStatus(); log.info("定时任务更新党建动态发布状态数量【{}】", num); return R.ok(num); } @Override public R pagePrePartyBuilingMember(PagePartyBuildingMemberVO pagePartyBuildingMemberVO) { Page page = new Page<>(); Long pageNum = pagePartyBuildingMemberVO.getPageNum(); Long pageSize = pagePartyBuildingMemberVO.getPageSize(); if (null == pageNum || 0 == pageNum) { pageNum = 1l; } if (null == pageSize || 0 == pageSize) { pageSize = 10l; } page.setSize(pageSize); page.setCurrent(pageNum); IPage iPage = comPbMemberWestDAO.pagePartyBuildingMembersVO(page, pagePartyBuildingMemberVO); return R.ok(iPage); } @Override public R updatePartyBuildingMembers(PartyBuildingMemberVO partyBuildingMemberVO) { ComPbMemberWestDO comPbMemberWestDO = comPbMemberWestDAO.selectById(partyBuildingMemberVO.getId()); if (comPbMemberWestDO == null) { return R.fail("未找到党员认证信息"); } // BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberDO); comPbMemberWestDO.setAuditResult(partyBuildingMemberVO.getAuditResult()); if (partyBuildingMemberVO.getAuditResult() != null && partyBuildingMemberVO.getAuditResult().equals(3)) { comPbMemberWestDO.setRefuseReason(partyBuildingMemberVO.getRefuseReason()); } if (partyBuildingMemberVO.getAuditResult() != null && partyBuildingMemberVO.getAuditResult().equals(1)) { comPbMemberWestDO.setUpdateAt(new Date()); } // 编辑 if (partyBuildingMemberVO.getJoinTime() != null) { comPbMemberWestDO.setJoinTime(partyBuildingMemberVO.getJoinTime()); } if (partyBuildingMemberVO.getEmploymentTime() != null) { comPbMemberWestDO.setEmploymentTime(partyBuildingMemberVO.getEmploymentTime()); } if (partyBuildingMemberVO.getIdCard() != null && !partyBuildingMemberVO.getIdCard().contains("*")) { comPbMemberWestDO.setIdCard(partyBuildingMemberVO.getIdCard()); } if (partyBuildingMemberVO.getName() != null) { comPbMemberWestDO.setName(partyBuildingMemberVO.getName()); } if (partyBuildingMemberVO.getOrgId() != null) { comPbMemberWestDO.setOrgId(partyBuildingMemberVO.getOrgId()); } if (partyBuildingMemberVO.getPhotoPath() != null) { comPbMemberWestDO.setPhotoPath(partyBuildingMemberVO.getPhotoPath()); } if (nonNull(partyBuildingMemberVO.getType())) { comPbMemberWestDO.setType(partyBuildingMemberVO.getType()); } if (StringUtils.isNotEmpty(partyBuildingMemberVO.getPosition())) { comPbMemberWestDO.setPosition(partyBuildingMemberVO.getPosition()); } if (nonNull(partyBuildingMemberVO.getCheckUnitId())) { comPbMemberWestDO.setCheckUnitId(partyBuildingMemberVO.getCheckUnitId()); } if (StringUtils.isNotEmpty(partyBuildingMemberVO.getFunction())) { comPbMemberWestDO.setFunction(partyBuildingMemberVO.getFunction()); } if (nonNull(partyBuildingMemberVO.getSpecialtyCategory())) { comPbMemberWestDO.setSpecialtyCategory(partyBuildingMemberVO.getSpecialtyCategory()); comPbMemberWestDO.setSpecialtyName(partyBuildingMemberVO.getSpecialtyName()); } Integer type = partyBuildingMemberVO.getType(); if (nonNull(type) && type.equals(1)) { comPbMemberWestDO.setEmploymentTime(null); } if (comPbMemberWestDAO.updateById(comPbMemberWestDO) > 0) { PartyBuildingMemberVO rtVO = new PartyBuildingMemberVO(); BeanUtils.copyProperties(comPbMemberWestDO, rtVO); return R.ok(rtVO); } return R.fail(); } @Override public R exportPbMember(PagePartyOrganizationVO organizationVO) { return R.ok(comPbMemberWestDAO.exportPbMember(organizationVO)); } /** * 分页查询党员数据统计 * @param statisticsMemberDto 请求参数 * @return 党员数据统计 */ @Override public R pageDataStatisticsMember(PageComDataStatisticsMemberDto statisticsMemberDto) { IPage memberPage = comPbMemberWestDAO.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("年龄转义失败"); } //查询党员统计数据 if(member.getUserId()!=null&&member.getCommunityId()!=null){ ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberWestDAO.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(memberPage); } /** * 根据组织id查询组织下统计数据 * @param statisticsOrgDto 请求参数 * @return 组织下统计数据 */ @Override public R getOrgDataStatistics(ComDataStatisticsOrgDto statisticsOrgDto) { List orgIds = new ArrayList<>(); Long communityId = statisticsOrgDto.getCommunityId(); ComDataStatisticsOrgVo statisticsOrgVo = new ComDataStatisticsOrgVo(); 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"; String endTime = statisticsOrgDto.getYear() + "-12-31 23:59:59"; ComDataStatisticsOrgVo statisticsVo = new ComDataStatisticsOrgVo(); //查询统计左上数据 statisticsVo = comPbMemberWestDAO.getOrgDataStatistics(communityId,orgIds); if(statisticsVo != null){ BeanUtils.copyProperties(statisticsVo,statisticsOrgVo); } //查询左下数据 statisticsVo = comPbMemberWestDAO.getOrgDataStatisticsLeftDown(communityId,orgIds,startTime,endTime, statisticsOrgDto.getAreaCode()); if(statisticsVo != null){ statisticsOrgVo.setParticipateVolunteerActivityDuration(statisticsVo.getParticipateVolunteerActivityDuration()); statisticsOrgVo.setParticipateVolunteerActivityNum(statisticsVo.getParticipateVolunteerActivityNum()); statisticsOrgVo.setParticipatePartyActivityNum(statisticsVo.getParticipatePartyActivityNum()); } //查询党员数据 IPage partyMemberPage = comPbMemberWestDAO.getOrgDataStatisticsMember(new Page(statisticsOrgDto.getPageNum() ,statisticsOrgDto.getPageSize()),communityId,orgIds, statisticsOrgDto.getAreaCode()); if(partyMemberPage.getRecords() != null && !partyMemberPage.getRecords().isEmpty()){ statisticsOrgVo.setPartyMemberList(partyMemberPage.getRecords()); } List startDateList = DateUtils.getYearFirstMonths(statisticsOrgDto.getYear()); List endDateList = DateUtils.getYearLastMonths(statisticsOrgDto.getYear()); List completeWishList = new ArrayList<>(); List cumulativeWishList = new ArrayList<>(); List completeEasyList = new ArrayList<>(); List cumulativeEasyList = new ArrayList<>(); for (int i = 0; i < startDateList.size(); i++) { Map statisticsMap = comPbMemberWestDAO.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("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 = comPbMemberWestDAO.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 memberList = comPbMemberWestDAO.exportDataStatisticsMember(statisticsMemberDto); memberList.forEach(member -> { //查询党员统计数据 ComDataStatisticsMemberVo statisticsMemberVo = comPbMemberWestDAO.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); } /** * 党委导入接口 * @param list 数据列表 * @param communityId 社区id * @param userId 用户id * @return 导入结果 */ @Override @Transactional(rollbackFor = Exception.class) public R importPbMemberRole(List list, Long communityId, Long userId) { ComActVO actVO = comPbMemberRoleDAO.selectActById(communityId); ArrayList mistakes = Lists.newArrayList(); ArrayList saveList = Lists.newArrayList(); Date nowDate = new Date(); if(list != null && list.size() > 0){ list.forEach(memberRole -> { ComPbMemberRoleDO memberRoleDO = comPbMemberRoleDAO.selectOne(new QueryWrapper().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; } 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(), actVO.getAreaCode()); memberRoleDO.setIsReg(userCount > 0 ? 1 : 2); memberRoleDO.setCommunityId(communityId); saveList.add(memberRoleDO); } }); } if(saveList.size() > 0){ saveList.forEach(save -> { comPbMemberRoleDAO.insert(save); }); } if(mistakes.size() > 0){ return R.fail(mistakes); } return R.ok(); } @Override public R exportPartyMember(PagePartyOrganizationVO pagePartyOrganizationVO) { return R.ok(comPbMemberWestDAO.exportPartyMemberList(pagePartyOrganizationVO)); } @Override public R checkMember(String idCard) { List list= comPbMemberWestDAO.selectList(new QueryWrapper().lambda().eq(ComPbMemberWestDO::getIdCard,idCard)); return R.ok(CollectionUtils.isEmpty(list)); } }