From 85cf42314fc04a637f1a44e78c1e476a445bf0f3 Mon Sep 17 00:00:00 2001 From: 101captain <237651143@qq.com> Date: 星期一, 14 三月 2022 13:29:18 +0800 Subject: [PATCH] Merge branch 'dev' --- springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java | 359 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 341 insertions(+), 18 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java index 783fe1c..c0846c2 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_partybuilding/src/main/java/com/panzhihua/service_dangjian/service/impl/ComPbMemberServiceImpl.java @@ -1,16 +1,31 @@ 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.Objects; import java.util.stream.Collectors; import javax.annotation.Resource; +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.partybuilding.excel.ComDataStatisticsMemberExcelVo; +import com.panzhihua.common.model.vos.partybuilding.excel.ComPbCheckUnitErrorExcelVO; +import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleErrorExcelVo; +import com.panzhihua.common.model.vos.partybuilding.excel.ComPbMemberRoleExcelVo; +import com.panzhihua.service_dangjian.entity.ComPbCheckUnit; +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.CollectionUtils; import org.springframework.util.ObjectUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -226,7 +241,7 @@ } page.setSize(pageSize); page.setCurrent(pageNum); - IPage<PartyBuildingMemberVO> iPage = comPbMemberDAO.pagePartyOrganization(page, pagePartyOrganizationVO); + IPage<PartyBuildingMemberVO> iPage = comPbMemberDAO.queryAllByLimit(page, pagePartyOrganizationVO); iPage.getRecords().forEach(record -> { record.setIdCard(SensitiveUtil.desensitizedIdNumber(record.getIdCard())); }); @@ -290,15 +305,38 @@ * @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); - SysUserVO sysUser = comPbMemberRoleDAO.getSysUserByPhone(partyCommitteeVO.getPhone()); - if (!ObjectUtils.isEmpty(sysUser)) { + 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) { @@ -315,24 +353,29 @@ * @return 编辑结果 */ @Override + @Transactional(rollbackFor = Exception.class) public R updatePartyCommittee(PartyCommitteeVO partyCommitteeVO) { ComPbMemberRoleDO comPbMemberRoleDO = new ComPbMemberRoleDO(); + Date nowDate = new Date(); BeanUtils.copyProperties(partyCommitteeVO, comPbMemberRoleDO); - ComPbMemberRoleDO comPbMemberRoleDOOld = comPbMemberRoleDAO.selectById(partyCommitteeVO.getId()); - comPbMemberRoleDO.setCreateAt(comPbMemberRoleDOOld.getCreateAt()); - comPbMemberRoleDO.setUpdateAt(new Date()); - comPbMemberRoleDO.setPositionTwo(partyCommitteeVO.getPositionTwo()); + comPbMemberRoleDO.setUpdateAt(nowDate); comPbMemberRoleDO.setIsReg(2); - PartyCommitteeVO oldPartyCommitteeVO = comPbMemberRoleDAO.selectPartyCommitteeById(partyCommitteeVO.getId()); - String oldphone = oldPartyCommitteeVO.getPhone(); - SysUserVO sysUserOld = comPbMemberRoleDAO.getSysUserByPhone(oldphone); - String newphone = partyCommitteeVO.getPhone(); - SysUserVO sysUserNew = comPbMemberRoleDAO.getSysUserByPhone(newphone); - if (!ObjectUtils.isEmpty(sysUserOld) || !ObjectUtils.isEmpty(sysUserNew)) { + Integer userCount = comPbMemberRoleDAO.getSysUserByIdCardCount(partyCommitteeVO.getIdCard()); + if (userCount > 0) { comPbMemberRoleDO.setIsReg(1); } - if (!newphone.equals(oldphone)) { - comPbMemberRoleDAO.updateUserPhone(newphone, oldphone); + //查询党员信息并更新 + 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) { @@ -356,10 +399,9 @@ } int delete = comPbMemberRoleDAO.deleteById(partyCommitteeVO.getId()); if (delete > 0) { - SysUserVO sysUserVO = comPbMemberRoleDAO.getSysUserByPhone(comPbMemberRoleDO.getPhone()); + Long userId = comPbMemberRoleDAO.getUserIdByIdCard(comPbMemberRoleDO.getIdCard()); // 删除用户信息缓存 - if (sysUserVO != null) { - Long userId = sysUserVO.getUserId(); + if (userId != null) { String userKey = UserConstants.LOGIN_USER_INFO + userId; stringRedisTemplate.delete(userKey); return R.ok(); @@ -591,6 +633,7 @@ if (comPbMemberDO == null) { return R.fail("未找到党员认证信息"); } +// BeanUtils.copyProperties(partyBuildingMemberVO, comPbMemberDO); comPbMemberDO.setAuditResult(partyBuildingMemberVO.getAuditResult()); if (partyBuildingMemberVO.getAuditResult() != null && partyBuildingMemberVO.getAuditResult().equals(3)) { comPbMemberDO.setRefuseReason(partyBuildingMemberVO.getRefuseReason()); @@ -618,6 +661,23 @@ if (partyBuildingMemberVO.getPhotoPath() != null) { comPbMemberDO.setPhotoPath(partyBuildingMemberVO.getPhotoPath()); } + if (Objects.nonNull(partyBuildingMemberVO.getType())) { + comPbMemberDO.setType(partyBuildingMemberVO.getType()); + } + if (StringUtils.isNotEmpty(partyBuildingMemberVO.getPosition())) { + comPbMemberDO.setPosition(partyBuildingMemberVO.getPosition()); + } + if (Objects.nonNull(partyBuildingMemberVO.getCheckUnitId())) { + comPbMemberDO.setCheckUnitId(partyBuildingMemberVO.getCheckUnitId()); + } + if (StringUtils.isNotEmpty(partyBuildingMemberVO.getFunction())) { + comPbMemberDO.setFunction(partyBuildingMemberVO.getFunction()); + } + if (Objects.nonNull(partyBuildingMemberVO.getSpecialtyCategory())) { + comPbMemberDO.setSpecialtyCategory(partyBuildingMemberVO.getSpecialtyCategory()); + comPbMemberDO.setSpecialtyName(partyBuildingMemberVO.getSpecialtyName()); + } + if (comPbMemberDAO.updateById(comPbMemberDO) > 0) { PartyBuildingMemberVO rtVO = new PartyBuildingMemberVO(); @@ -632,4 +692,267 @@ return R.ok(comPbMemberDAO.exportPbMember(organizationVO)); } + /** + * 分页查询党员数据统计 + * @param statisticsMemberDto 请求参数 + * @return 党员数据统计 + */ + @Override + public R pageDataStatisticsMember(PageComDataStatisticsMemberDto statisticsMemberDto) { + 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.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<Long> 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 = comPbMemberDAO.getOrgDataStatistics(communityId,orgIds); + if(statisticsVo != null){ + BeanUtils.copyProperties(statisticsVo,statisticsOrgVo); + } + + //查询左下数据 + statisticsVo = comPbMemberDAO.getOrgDataStatisticsLeftDown(communityId,orgIds,startTime,endTime); + if(statisticsVo != null){ + statisticsOrgVo.setParticipateVolunteerActivityDuration(statisticsVo.getParticipateVolunteerActivityDuration()); + statisticsOrgVo.setParticipateVolunteerActivityNum(statisticsVo.getParticipateVolunteerActivityNum()); + statisticsOrgVo.setParticipatePartyActivityNum(statisticsVo.getParticipatePartyActivityNum()); + } + + //查询党员数据 + IPage<PartyBuildingMemberVO> partyMemberPage = comPbMemberDAO.getOrgDataStatisticsMember(new Page(statisticsOrgDto.getPageNum() + ,statisticsOrgDto.getPageSize()),communityId,orgIds); + if(partyMemberPage.getRecords() != null && !partyMemberPage.getRecords().isEmpty()){ + statisticsOrgVo.setPartyMemberList(partyMemberPage.getRecords()); + } + + List<String> startDateList = DateUtils.getYearFirstMonths(statisticsOrgDto.getYear()); + List<String> endDateList = DateUtils.getYearLastMonths(statisticsOrgDto.getYear()); + List<String> completeWishList = new ArrayList<>(); + List<String> cumulativeWishList = new ArrayList<>(); + 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) + " 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 (Objects.nonNull(partyMemberNum) && partyMemberNum.intValue() > 0) { + Integer formalPartyMemberNum = statisticsOrgVo.getFormalPartyMemberNum(); + if (Objects.nonNull(formalPartyMemberNum) && formalPartyMemberNum.intValue() > 0) { + statisticsOrgVo.setFormalPartyMemberNumPercent(new BigDecimal(formalPartyMemberNum/partyMemberNum).setScale(2)); + } + Integer preparePartyMemberNum = statisticsOrgVo.getPreparePartyMemberNum(); + if (Objects.nonNull(preparePartyMemberNum) && preparePartyMemberNum.intValue() > 0) { + statisticsOrgVo.setPreparePartyMemberNumPercent(new BigDecimal(preparePartyMemberNum/partyMemberNum).setScale(2)); + } + } + 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); + } + + /** + * 党委导入接口 + * @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; + } + + 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); + 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(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)); + } } -- Gitblit v1.7.1