From 9c2e0c9cad7d48014df7fdbe0a7292f86d95f3ae Mon Sep 17 00:00:00 2001 From: luofl <1442745593@qq.com> Date: 星期六, 15 三月 2025 19:03:32 +0800 Subject: [PATCH] 1. --- springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java | 183 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 180 insertions(+), 3 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java index 4a042d5..5e71a8a 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/PartyMemberServiceImpl.java @@ -1,10 +1,37 @@ package com.panzhihua.sangeshenbian.service.impl; -import com.panzhihua.sangeshenbian.model.entity.PartyMember; -import com.panzhihua.sangeshenbian.dao.PartyMemberMapper; -import com.panzhihua.sangeshenbian.service.IPartyMemberService; +import cn.hutool.core.bean.BeanUtil; +import cn.idev.excel.FastExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.panzhihua.common.exceptions.ServiceException; +import com.panzhihua.common.model.vos.LoginUserInfoVO; +import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo; +import com.panzhihua.sangeshenbian.dao.PartyMemberMapper; +import com.panzhihua.sangeshenbian.enums.AuditStatusEnum; +import com.panzhihua.sangeshenbian.enums.ReportTypeEnum; +import com.panzhihua.sangeshenbian.model.entity.PartyMember; +import com.panzhihua.sangeshenbian.model.entity.SystemUser; +import com.panzhihua.sangeshenbian.model.excel.PartyMemberExcel; +import com.panzhihua.sangeshenbian.model.excel.PartyMemberTemplate; +import com.panzhihua.sangeshenbian.service.IPartyMemberService; +import com.panzhihua.sangeshenbian.service.ISystemUserService; +import com.panzhihua.sangeshenbian.warpper.PartyMemberApplicationRequest; +import com.panzhihua.sangeshenbian.warpper.PartyMemberDTO; +import com.panzhihua.sangeshenbian.warpper.PartyMemberQuery; +import com.panzhihua.sangeshenbian.warpper.PendingPartyMemberApplicationVO; +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.util.Collections; +import java.util.List; +import java.util.Objects; /** * <p> @@ -15,6 +42,156 @@ * @since 2025-03-13 */ @Service +@RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class PartyMemberServiceImpl extends ServiceImpl<PartyMemberMapper, PartyMember> implements IPartyMemberService { + private final HttpServletResponse response; + private final ISystemUserService systemUserService; + /** + * 党员分页查询列表 + * + * @param query + * @param loginUserInfo + * @return + */ + @Override + public Page<PartyMember> pageList(PartyMemberQuery query, SystemUserVo loginUserInfo) { + return baseMapper.pageList(new Page<>(query.getPageNum(), query.getPageSize()),query,loginUserInfo); + } + /** + * 添加党员 + * @param dto + * @param loginUserInfo + */ + @Override + public void save(PartyMemberDTO dto, SystemUserVo loginUserInfo) { + PartyMember partyMember = BeanUtil.copyProperties(dto, PartyMember.class); + String idNumber = dto.getIdNumber(); + partyMember.setGender(getGender(idNumber)); + if (Objects.isNull(dto.getId())) { + //添加 + partyMember.setCreateBy(Long.parseLong(loginUserInfo.getId().toString())); + save(partyMember); + } else { + partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString())); + updateById(partyMember); + } + } + /** + * 冻结/解冻 + * @param id + * @param loginUserInfo + */ + @Override + public void freeze(Long id, SystemUserVo loginUserInfo) { + PartyMember partyMember = getById(id); + partyMember.setFreezeStatus(partyMember.getFreezeStatus() == 1 ? 0 : 1); + partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString())); + updateById(partyMember); + } + + @Override + public void download() throws IOException { + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("党员导入模板", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + FastExcel.write(response.getOutputStream(), PartyMemberTemplate.class) + .sheet("党员导入模板") + .doWrite(Collections.emptyList()); + } + + /** + * 导出 + * @param query + * @param loginUserInfo + */ + @Override + public void export(PartyMemberQuery query, SystemUserVo loginUserInfo) throws IOException { + List<PartyMember> list = baseMapper.queryList(query,loginUserInfo); + List<PartyMemberExcel> partyMemberExcels = BeanUtil.copyToList(list, PartyMemberExcel.class); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setCharacterEncoding("utf-8"); + String fileName = URLEncoder.encode("党员数据", "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); + FastExcel.write(response.getOutputStream(), PartyMemberExcel.class) + .sheet("党员数据") + .doWrite(partyMemberExcels); + } + + /** + * + * @param loginUserInfo + */ + @Override + public void importExcel(SystemUserVo loginUserInfo) { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void applyForMembership(PartyMemberApplicationRequest dto, LoginUserInfoVO loginUserInfo) { + PartyMember partyMember = BeanUtil.copyProperties(dto, PartyMember.class); + String idNumber = dto.getIdNumber(); + partyMember.setPhone(loginUserInfo.getPhone()); + partyMember.setGender(getGender(idNumber)); + partyMember.setCreateBy(loginUserInfo.getUserId()); + partyMember.setAuditStatus(AuditStatusEnum.PENDING.getCode()); + saveOrUpdate(partyMember); + } + + + /** + * 审核 + * + * @param dto + * @param loginUserInfo + */ + @Override + public void audit(PartyMemberDTO dto, SystemUserVo loginUserInfo) { + PartyMember partyMember = BeanUtil.copyProperties(dto, PartyMember.class); + partyMember.setUpdateBy(Long.parseLong(loginUserInfo.getId().toString())); + updateById(partyMember); + } + + @Override + public Page<PendingPartyMemberApplicationVO> preAuditList(Page<PendingPartyMemberApplicationVO> page, + LoginUserInfoVO loginUserInfo) { + SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>() + .eq(SystemUser::getPhone, loginUserInfo.getPhone()) + .eq(SystemUser::getIsAdmin, 1) + .ne(SystemUser::getStatus, 3) + .last("LIMIT 1")); + + if (adminUser == null){ + throw new ServiceException("无权审核"); + } + + int accountLevel = adminUser.getAccountLevel(); + Long communityId = null; + String streetId = null; + String districtsCode = null; + if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) { + communityId = adminUser.getCommunityId(); + } else if (accountLevel == ReportTypeEnum.STREET.getCode()) { + streetId = adminUser.getStreetId(); + } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) { + districtsCode = adminUser.getDistrictsCode(); + } else if(accountLevel != ReportTypeEnum.PARTY.getCode()){ + throw new ServiceException("无权审核:未知等级"); + } + Long userId = loginUserInfo.getUserId(); + return this.baseMapper.queryPreAuditPage(page, userId, accountLevel, districtsCode, streetId, communityId); + } + + /** + * 根据身份证号获取性别 + * @param idNumber + * @return + */ + public static Integer getGender(String idNumber) { + char genderChar = idNumber.charAt(16); + int genderDigit = Character.getNumericValue(genderChar); + return (genderDigit % 2 == 0) ? 0 : 1; + } } -- Gitblit v1.7.1