| | |
| | | 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> |
| | |
| | | * @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; |
| | | } |
| | | |
| | | } |