From 38f1a806a4e1d8e1560f07a5a26b51cf6a4692be Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 17 三月 2025 10:57:57 +0800 Subject: [PATCH] 党员管理接口调试修改 --- springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java | 187 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 181 insertions(+), 6 deletions(-) diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java index 1f23d44..c4a4fbf 100644 --- a/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java +++ b/springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java @@ -1,11 +1,16 @@ package com.panzhihua.sangeshenbian.service.impl; import cn.hutool.core.bean.BeanUtil; -import com.alibaba.fastjson.JSON; +import cn.hutool.core.collection.CollUtil; +import cn.idev.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.deepoove.poi.XWPFTemplate; import com.panzhihua.common.model.vos.LoginUserInfoVO; +import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo; +import com.panzhihua.common.redis.RedisUtils; +import com.panzhihua.sangeshenbian.enums.RateEnum; import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO; import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO; import com.panzhihua.sangeshenbian.model.entity.Complaint; @@ -18,6 +23,8 @@ import com.panzhihua.sangeshenbian.model.entity.ComplaintFlow; import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress; import com.panzhihua.sangeshenbian.model.entity.SystemUser; +import com.panzhihua.sangeshenbian.model.excel.ComplaintExcel; +import com.panzhihua.sangeshenbian.model.excel.PartyMemberExcel; import com.panzhihua.sangeshenbian.model.query.BasePage; import com.panzhihua.sangeshenbian.model.query.ComplaintQuery; import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO; @@ -29,16 +36,23 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.panzhihua.sangeshenbian.model.vo.ComplaintVO; import com.panzhihua.sangeshenbian.service.ISystemUserService; +import com.panzhihua.sangeshenbian.utils.FileUtil; +import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; 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.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -65,8 +79,10 @@ private final IComStreetService comStreetService; private final IComActService comActService; private final IWorkOrderItemConfigService workOrderItemConfigService; - private final IPartyMemberService partyMemberService; private final IComplaintCommentService complaintCommentService; + private final HttpServletResponse response; + private final IPartyMemberService partyMemberService; + private final RedisUtils redisUtils; @Override public void saveComplaint(Complaint complaint, LoginUserInfoVO loginUserInfoVO) { @@ -94,24 +110,32 @@ complaint.setSerialNumber(serialNumber); Optional<SystemUser> systemUserOpt = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()); Integer accountLevel = 5; - if (systemUserOpt.isPresent()) { + //获取当前身份,1=党员,2=管理员 + Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfoVO.getPhone()); + if (systemUserOpt.isPresent() && identity == 2) { SystemUser systemUser = systemUserOpt.get(); accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { case 1: //市级 complaint.setCityCode(510400); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 2: //区县级 complaint.setCityCode(510400); complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode())); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 3: //街道 complaint.setCityCode(510400); complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode())); complaint.setStreetId(Long.valueOf(systemUser.getStreetId())); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 4: //社区 @@ -119,20 +143,31 @@ complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode())); complaint.setStreetId(Long.valueOf(systemUser.getStreetId())); complaint.setCommunityId(systemUser.getCommunityId()); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 5: - //社区 + //党员 complaint.setCityCode(510400); complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode())); complaint.setStreetId(Long.valueOf(systemUser.getStreetId())); complaint.setCommunityId(systemUser.getCommunityId()); PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); complaint.setPartyMemberId(partyMember.getId()); + complaint.setReportUserName(partyMember.getName()); + complaint.setReportUserPhone(partyMember.getPhone()); break; } } else{ PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + //党员 + complaint.setCityCode(510400); + complaint.setDistrictsCode(Integer.valueOf(partyMember.getDistrictsCode())); + complaint.setStreetId(Long.valueOf(partyMember.getStreetId())); + complaint.setCommunityId(partyMember.getCommunityId()); complaint.setPartyMemberId(partyMember.getId()); + complaint.setReportUserName(partyMember.getName()); + complaint.setReportUserPhone(partyMember.getPhone()); } complaint.setReportType(accountLevel); // 设置其他字段 @@ -163,8 +198,10 @@ Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()); Long targetId = null; Integer accountLevel = 5; + //获取当前身份,1=党员,2=管理员 + Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfoVO.getPhone()); //上级 - if (systemUserByPhone.isPresent()) { + if (systemUserByPhone.isPresent() && identity == 2) { SystemUser systemUser = systemUserByPhone.get(); accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { @@ -365,8 +402,10 @@ Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()); String targetId = ""; Integer accountLevel = 5; + //获取当前身份,1=党员,2=管理员 + Integer identity = (Integer) redisUtils.get("identity:" + loginUserInfoVO.getPhone()); //上级 - if (systemUserByPhone.isPresent()) { + if (systemUserByPhone.isPresent() && identity == 2) { SystemUser systemUser = systemUserByPhone.get(); accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { @@ -873,6 +912,142 @@ .eq(ComplaintAuditRecord::getLatestFlag, true) .last("LIMIT 1").one(); } + + /** + * 管理后台-诉求列表 + * + * @param query + * @param loginUserInfo + * @return + */ + @Override + public Page<ComplaintVO> pageList(MgtComplaintQuery query, SystemUserVo loginUserInfo) { + return baseMapper.pageList(new Page<>(query.getPageNum(), query.getPageSize()), query,loginUserInfo); + } + + @Override + public ComplaintVO getDetailMgt(Long id) { + Complaint complaint = getById(id); + ComplaintVO complaintVO = BeanUtil.copyProperties(complaint, ComplaintVO.class); + //查询办理进度 + List<ComplaintProgress> complaintProgresses = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id).orderByAsc(ComplaintProgress::getCreateTime).list(); + complaintVO.setComplaintProgresses(complaintProgresses); + //查询诉求流转记录 + List<ComplaintFlow> complaintFlows = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByAsc(ComplaintFlow::getCreateTime).list(); + complaintVO.setComplaintFlows(complaintFlows); + //查询评价 + ComplaintComment comment = complaintCommentService.lambdaQuery().eq(ComplaintComment::getComplaintId, id).last("LIMIT 1").one(); + complaintVO.setComplaintComment(comment); + return complaintVO; + } + + /** + * 诉求列表导出 + * @param query + * @param loginUserInfo + */ + @Override + public void export(MgtComplaintQuery query, SystemUserVo loginUserInfo) throws IOException { + List<ComplaintVO> list = baseMapper.getList(query, loginUserInfo); + List<ComplaintExcel> complaintExcels = BeanUtil.copyToList(list, ComplaintExcel.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"); + EasyExcel.write(response.getOutputStream(), PartyMemberExcel.class) + .sheet("诉求数据") + .doWrite(complaintExcels); + } + + @Override + public void downloadFile(Long id,Integer type) throws IOException { + Complaint complaint = getById(id); + if (Objects.isNull(complaint)) { + throw new ServiceException("该诉求不存在"); + } + //查询社区信息 + BcRegion region = bcRegionService.getDistrictByCode(complaint.getDistrictsCode().toString()); + ComStreet street = comStreetService.getById(complaint.getStreetId().toString()); + ComAct act = comActService.getById(complaint.getCommunityId()); + String community = region.getRegionName() +"-"+ street.getName() + act.getName(); + PartyMember partyMember = null; + if (Objects.nonNull(complaint.getPartyMemberId())){ + partyMember = partyMemberService.getById(complaint.getPartyMemberId()); + } + String fileName = ""; + switch (type){ + case 1: + fileName = "社区问题单"; + break; + case 2: + fileName = "问题处理单"; + if (Objects.nonNull(partyMember)) { + community = community + "-" + partyMember.getServiceTarget(); + } + break; + case 3: + fileName = "协调通知单"; + break; + } + Map<String, Object> map = new HashMap<>(); + map.put("community", community); + map.put("problemType", complaint.getProblemType()); + map.put("descriptionContent", complaint.getDescriptionContent()); + map.put("reportType", ReportTypeEnum.fromCode(complaint.getReportType())); //TODO待修改 + map.put("partyOrganization",Objects.nonNull(partyMember)? partyMember.getPartyOrganization() : ""); + map.put("name", complaint.getName()); + map.put("contactNumber", complaint.getContactNumber()); + map.put("nickname", complaint.getReportUserName()); + map.put("phone", complaint.getReportUserPhone()); + List<ComplaintProgress> list = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id).orderByAsc(ComplaintProgress::getCreateTime).list(); + StringBuilder sb = new StringBuilder(); + if (CollUtil.isNotEmpty(list)) { + int rowNum = 1; + list.forEach(item->{ + sb.append(rowNum).append("、 "); + sb.append(item.getDescribe()).append("\n"); + }); + } + // 在文本中直接使用换行符 + map.put("complaintProgress", sb.toString()); + map.put("status", ProcessStatusEnum.getDescriptionByCode(complaint.getStatus())); + if (2 == type) { + //查询诉求评价 + ComplaintComment complaintComment = complaintCommentService.lambdaQuery().eq(ComplaintComment::getComplaintId, id).last("LIMIT 1").one(); + if (Objects.nonNull(complaintComment)) { + map.put("rateStr", RateEnum.getEnumByCode(complaintComment.getRate())); + } + } + response.setContentType("application/octet-stream"); + String fileNameEncode = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setHeader("Content-disposition","attachment;filename=\""+fileNameEncode+".docx"+"\""); + String fileTemplateName = FileUtil.getPath() + "template/"+fileName+".docx"; + XWPFTemplate.compile(fileTemplateName).render(map).writeAndClose(response.getOutputStream()); + } + + + public static void main(String[] args) { + try { + /*文本*/ + Map<String, Object> map = new HashMap<>(); + map.put("community", "社区社区"); + map.put("problemType", "就业"); + map.put("descriptionContent", "描述内容"); + map.put("reportType", "党员"); + map.put("partyOrganization", "石羊党群"); + map.put("name", "张三"); + map.put("contactNumber", "1888888888"); + map.put("nickname", "李四"); + map.put("phone", "17777777777"); + // 在文本中直接使用换行符 + String content = "第一行内容\n第二行内容\n第三行内容"; + map.put("complaintProgress", content); + map.put("status", "处理中"); + XWPFTemplate.compile("F:\\DeskTop\\zhihuishequ\\springcloud_k8s_panzhihuazhihuishequ\\service_sangeshenbian\\src\\main\\resources\\template\\社区问题单.docx").render(map).writeToFile("F:\\DeskTop\\社区.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } /** -- Gitblit v1.7.1