From d8e7ad6acb9f6105ac6ff6fe2ce892e622cde256 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 18 三月 2025 22:11:24 +0800 Subject: [PATCH] Merge remote-tracking branch '喜望/dev-2.0' into dev-2.0 --- springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java | 1136 +++++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 786 insertions(+), 350 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 9eeb578..2e4d59c 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 @@ -2,47 +2,47 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; +import cn.hutool.core.collection.CollectionUtil; +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.panzhihua.common.model.vos.LoginUserInfoVO; -import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO; -import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO; -import com.panzhihua.sangeshenbian.model.entity.Complaint; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.deepoove.poi.XWPFTemplate; 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.ComplaintMapper; +import com.panzhihua.sangeshenbian.enums.AuditStatusEnum; +import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum; +import com.panzhihua.sangeshenbian.enums.RateEnum; import com.panzhihua.sangeshenbian.enums.ReportTypeEnum; import com.panzhihua.sangeshenbian.model.dto.*; import com.panzhihua.sangeshenbian.model.entity.*; -import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum; -import com.panzhihua.sangeshenbian.dao.ComplaintMapper; -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.query.BasePage; import com.panzhihua.sangeshenbian.model.query.ComplaintQuery; import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO; -import com.panzhihua.sangeshenbian.service.IComplaintFlowService; -import com.panzhihua.sangeshenbian.service.IComplaintProgressService; -import com.panzhihua.sangeshenbian.service.IComplaintService; +import com.panzhihua.sangeshenbian.model.vo.ComplaintVO; import com.panzhihua.sangeshenbian.model.vo.DispatchVO; import com.panzhihua.sangeshenbian.service.*; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.panzhihua.sangeshenbian.model.vo.ComplaintVO; -import com.panzhihua.sangeshenbian.service.ISystemUserService; -import io.jsonwebtoken.lang.Collections; +import com.panzhihua.sangeshenbian.utils.FileUtil; +import com.panzhihua.sangeshenbian.warpper.IdentityInformation; +import com.panzhihua.sangeshenbian.warpper.MgtComplaintQuery; +import com.panzhihua.sangeshenbian.warpper.PermissionsVO; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Lazy; +import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.InputStream; +import java.net.URLEncoder; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Objects; -import java.util.Optional; +import java.util.*; import static cn.hutool.core.util.ObjectUtil.isNull; @@ -67,6 +67,10 @@ private final IComStreetService comStreetService; private final IComActService comActService; private final IWorkOrderItemConfigService workOrderItemConfigService; + private final IComplaintCommentService complaintCommentService; + private final HttpServletResponse response; + private final IPartyMemberService partyMemberService; + private final IdentityInformationService identityInformationService; @Override public void saveComplaint(Complaint complaint, LoginUserInfoVO loginUserInfoVO) { @@ -92,38 +96,67 @@ // 设置流水号 complaint.setSerialNumber(serialNumber); - Optional<SystemUser> systemUserOpt = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()); Integer accountLevel = 5; - Long superiorId = null; - if (systemUserOpt.isPresent()) { - SystemUser systemUser = systemUserOpt.get(); + //获取当前身份 + IdentityInformation identityInformationVO = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + //1=党员,2=管理员 + SystemUser systemUser = identityInformationVO.getSystemUser(); + Integer identity = identityInformationVO.getIdentity(); + if (identity == 2) { accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { case 1: //市级 - superiorId = 510400L; + complaint.setCityCode(510400); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 2: //区县级 - superiorId = Long.parseLong(systemUser.getDistrictsCode()); + complaint.setCityCode(510400); + complaint.setDistrictsCode(Integer.valueOf(systemUser.getDistrictsCode())); + complaint.setReportUserName(systemUser.getName()); + complaint.setReportUserPhone(systemUser.getPhone()); break; case 3: //街道 - superiorId = Long.parseLong(systemUser.getStreetId()); + 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: //社区 - superiorId = systemUser.getCommunityId(); + complaint.setCityCode(510400); + 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: - //社区 - superiorId = loginUserInfoVO.getUserId(); + //党员 + 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; } - complaint.setSuperiorType(accountLevel); - complaint.setSuperiorId(superiorId); - }else{ - superiorId = loginUserInfoVO.getUserId(); + } 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); // 设置其他字段 @@ -140,38 +173,278 @@ complaint.setClosingTime(new Date(System.currentTimeMillis() + config.getDemandProcessingTime() * 24 * 60 * 60 * 1000)); // 保存诉求记录 save(complaint); - int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, complaint.getId())); - //保存记录 - ComplaintAuditRecord complaintAuditRecord = new ComplaintAuditRecord(); - complaintAuditRecord.setComplaintId(complaint.getId()); - complaintAuditRecord.setLatestFlag(true); - complaintAuditRecord.setAuditType(0); - complaintAuditRecord.setAuditStatus(-1); - complaintAuditRecord.setCreateBy(loginUserInfoVO.getUserId()); - complaintAuditRecord.setCreateTime(new Date(System.currentTimeMillis())); - complaintAuditRecord.setUpdateBy(loginUserInfoVO.getUserId()); - complaintAuditRecord.setUpdateTime(new Date(System.currentTimeMillis())); - complaintAuditRecord.setReportType(accountLevel); - complaintAuditRecord.setSuperiorId(superiorId); - complaintAuditRecord.setSort(count + 1); - complaintAuditRecordService.save(complaintAuditRecord); } - /** - * @param query - * @param loginUserInfoVO - * @return - */ @Override public Page<ComplaintVO> complaintList(ComplaintQuery query, LoginUserInfoVO loginUserInfoVO) { Page<ComplaintVO> page = new Page<>(query.getPageNum(), query.getPageSize()); //判断当前登录用户级别,查询对应工单 - Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()); - String targetId = ""; - int isSuperior = 0; + Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()); + Long targetId = null; Integer accountLevel = 5; + //获取当前身份,1=党员,2=管理员 + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + Integer identity = identityInformation.getIdentity(); //上级 - if (systemUserByPhone.isPresent()) { + if (systemUserByPhone.isPresent() && null != identity && identity == 2) { + SystemUser systemUser = systemUserByPhone.get(); + accountLevel = systemUser.getAccountLevel(); + switch (accountLevel) { + case 1: + //市级 + targetId = 510400L; + break; + case 2: + //区县级 + targetId = Long.valueOf(systemUser.getDistrictsCode()); + break; + case 3: + //街道 + targetId = Long.valueOf(systemUser.getStreetId()); + break; + case 4: + //社区 + targetId = systemUser.getCommunityId(); + break; + case 5: + //党员 + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + targetId = partyMember.getId(); + break; + } + } else { + //党员 + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + targetId = partyMember.getId(); + } + //查询对应诉求 + //page = baseMapper.selectComplaintPage(page, query, targetId, isSuperior); + page = baseMapper.selectComplaintPage1(page, query, accountLevel, targetId); + page.getRecords().forEach(s -> buttonPermission(s, systemUserByPhone, loginUserInfoVO)); + return page; + } + + + /** + * 列表按钮权限 + */ + public void buttonPermission(ComplaintVO vo, Optional<SystemUser> systemUserByPhone, LoginUserInfoVO loginUserInfo) { + vo.setListControlsButtonStatus(1); + vo.setEvaluateButtonStatus(1); + vo.setAuditButtonStatus(1); + + ComplaintAuditRecord one = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>() + .eq(ComplaintAuditRecord::getComplaintId, vo.getId()) +// .ne(ComplaintAuditRecord::getAuditType, 1) + .orderByDesc(ComplaintAuditRecord::getSort) + .last(" limit 0, 1")); + //没有审核数据,且正在办理,则按钮权限是添加人员的 + if (null == one && (vo.getStatus() == 0 || vo.getStatus() == 1 || vo.getStatus() == 2)) { + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(vo.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setListControlsButtonStatus(0); + } + } else { + if (vo.getReportType() == 5) { + vo.setListControlsButtonStatus(0); + } + } + } + //有审核数据,且正在办理 + if (null != one && (vo.getStatus() == 0 || vo.getStatus() == 1 || vo.getStatus() == 2 || vo.getStatus() == 6)) { + + + //区分是上报数据还是下派数据 + if (one.getAuditType() == 2 || one.getAuditType() == 1) { + //判断当前审核状态 + if (one.getAuditStatus() == 1) { + //审核状态为通过,则权限给到上报审核的这一层 + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(one.getReportType()) == 0 && accountLevel != 5 && 1 == isAdmin) { + vo.setListControlsButtonStatus(0); + } + } + } else { + //没有审核通过,则需要查询上一条审核通过的数据,如果没有则给到添加诉求的人 + ComplaintAuditRecord one1 = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>() + .eq(ComplaintAuditRecord::getComplaintId, vo.getId()) + .eq(ComplaintAuditRecord::getAuditType, 2) + .eq(ComplaintAuditRecord::getAuditStatus, 1) + .orderByDesc(ComplaintAuditRecord::getSort) + .last(" limit 0, 1")); + if (null != one1) { + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(one1.getReportType()) == 0 && accountLevel != 5 && 1 == isAdmin) { + vo.setListControlsButtonStatus(0); + } + } + } else { + //没有上一层审核通过的数据,则权限给到添加人 + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(vo.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setListControlsButtonStatus(0); + } + } else { + if (vo.getReportType() == 5) { + vo.setListControlsButtonStatus(0); + } + } + } + } + } + + //下派数据 + if (one.getAuditType() == 3) { + //判断当前审核状态 + if (one.getAuditStatus() == 1) { + //审核状态为通过,则权限给到下报审核的这一层 + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(one.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setListControlsButtonStatus(0); + } + } else { + if (vo.getReportType() == 5 && one.getReportType() == 5) { + vo.setListControlsButtonStatus(0); + } + } + } else { + //没有审核通过,则需要查询上一条审核通过的数据,如果没有则给到添加诉求的人 + ComplaintAuditRecord one1 = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, vo.getId()) + .eq(ComplaintAuditRecord::getAuditType, 3).eq(ComplaintAuditRecord::getAuditStatus, 1).orderByDesc(ComplaintAuditRecord::getSort).last(" limit 0, 1")); + if (null != one1) { + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(one1.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setListControlsButtonStatus(0); + } + } else { + if (vo.getReportType() == 5 && one1.getReportType() == 5) { + vo.setListControlsButtonStatus(0); + } + } + } else { + //没有上一层审核通过的数据,则权限给到添加人 + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + //非党员用户,必须是管理员有权限 + if (accountLevel.compareTo(vo.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setListControlsButtonStatus(0); + } + } else { + if (vo.getReportType() == 5) { + vo.setListControlsButtonStatus(0); + } + } + } + } + } + } + + //有审核数据,且为审核中 + //审核状态为待审核,需要授权审核按钮 + if (null != one && (vo.getStatus() == 5 || vo.getStatus() == 7) && systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + String targetId = ""; + Integer accountLevel = 5; + //获取当前身份,1=党员,2=管理员 + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo); + if (2 == identityInformation.getIdentity()) { + accountLevel = systemUser.getAccountLevel(); + switch (accountLevel) { + case 1: + //市级 + targetId = "510400"; + break; + case 2: + //区县级 + targetId = systemUser.getDistrictsCode(); + break; + case 3: + //街道 + targetId = systemUser.getStreetId().toString(); + break; + case 4: + //社区 + targetId = systemUser.getCommunityId().toString(); + break; + case 5: + //党员 + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(systemUser.getPhone()); + targetId = partyMember.getId().toString(); + break; + } + + ComplaintAuditRecord one2 = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>() + .eq(ComplaintAuditRecord::getComplaintId, vo.getId()) + .eq(ComplaintAuditRecord::getLatestFlag, 1)); + Integer isAdmin = systemUserByPhone.get().getIsAdmin(); + if (one2.getReportType().equals(accountLevel) && one2.getSuperiorId().toString().equals(targetId) && 1 == isAdmin) { + vo.setAuditButtonStatus(0); + } + } + } + + + //状态为已办结,判断评价按钮 + int count = complaintCommentService.count(new LambdaQueryWrapper<ComplaintComment>().eq(ComplaintComment::getComplaintId, vo.getId()).eq(ComplaintComment::getDelFlag, 0)); + if ((vo.getStatus() == 3 || vo.getStatus() == 8) && 0 == count) { + if (systemUserByPhone.isPresent()) { + SystemUser systemUser = systemUserByPhone.get(); + Integer accountLevel = systemUser.getAccountLevel(); + Integer isAdmin = systemUser.getIsAdmin(); + if (accountLevel.compareTo(vo.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)) { + vo.setEvaluateButtonStatus(0); + } + } else { + if (vo.getReportType() == 5) { + vo.setEvaluateButtonStatus(0); + } + } + } + } + + + /** + * 工单详情 + * + * @param id + * @return + */ + @Override + public ComplaintVO detail(Long id, LoginUserInfoVO loginUserInfoVO) { + Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()); + String targetId = ""; + Integer accountLevel = 5; + //获取当前身份,1=党员,2=管理员 + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + Integer identity = identityInformation.getIdentity(); + //上级 + if (systemUserByPhone.isPresent() && identity == 2) { SystemUser systemUser = systemUserByPhone.get(); accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { @@ -193,66 +466,16 @@ break; case 5: //党员 - targetId = loginUserInfoVO.getUserId().toString(); + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + targetId = partyMember.getId().toString(); break; } - isSuperior = 1; } else { //党员 - targetId = loginUserInfoVO.getUserId().toString(); + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + targetId = partyMember.getId().toString(); } - //查询对应诉求 - //page = baseMapper.selectComplaintPage(page, query, targetId, isSuperior); - page = baseMapper.selectComplaintPage1(page, query, accountLevel, targetId); - return page; - } - - /** - * 工单详情 - * - * @param id - * @return - */ - @Override - public ComplaintVO detail(Long id, LoginUserInfoVO loginUserInfoVO) { - Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()); - String targetId = ""; - int isSuperior = 0; - Integer accountLevel = 5; - //上级 - if (systemUserByPhone.isPresent()) { - SystemUser systemUser = systemUserByPhone.get(); - accountLevel = systemUser.getAccountLevel(); - switch (accountLevel) { - case 1: - //市级 - targetId = "510400"; - break; - case 2: - //区县级 - targetId = systemUser.getDistrictsCode(); - break; - case 3: - //街道 - targetId = systemUser.getStreetId().toString(); - break; - case 4: - //社区 - targetId = systemUser.getCommunityId().toString(); - break; - case 5: - //社区 - targetId = loginUserInfoVO.getUserId().toString(); - break; - } - isSuperior = 1; - } else { - //党员 - targetId = loginUserInfoVO.getUserId().toString(); - } - - - ComplaintVO detail = baseMapper.getDetail(id,targetId, isSuperior); + ComplaintVO detail = baseMapper.getDetail(id); if (detail.getStatus().equals(0)) { List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByAsc(ComplaintFlow::getCreateTime).list(); detail.setComplaintFlows(list); @@ -261,15 +484,36 @@ List<ComplaintProgress> list = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id) .orderByAsc(ComplaintProgress::getCreateTime).list(); detail.setComplaintProgresses(list); - detail.setAuditButtonStatus(1); - Long superiorId = detail.getSuperiorId(); - Integer superiorType = detail.getSuperiorType(); - if((detail.getStatus() == 5 || detail.getStatus() == 7) && systemUserByPhone.isPresent()){ - if(superiorType.equals(accountLevel) && superiorId.toString().equals(targetId)){ - detail.setAuditButtonStatus(0); - } - } +// detail.setAuditButtonStatus(1); +// detail.setEvaluateButtonStatus(1); +// if((detail.getStatus() == 5 || detail.getStatus() == 7) && systemUserByPhone.isPresent()){ +// ComplaintAuditRecord one = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, detail.getId()) +// .eq(ComplaintAuditRecord::getLatestFlag, 1)); +// Integer isAdmin = systemUserByPhone.get().getIsAdmin(); +// if(one.getReportType().equals(accountLevel) && one.getSuperiorId().toString().equals(targetId) && 1 == isAdmin){ +// detail.setAuditButtonStatus(0); +// } +// } + + buttonPermission(detail, systemUserByPhone, loginUserInfoVO); + + +// //已办结,显示评价按钮 +// int count = complaintCommentService.count(new LambdaQueryWrapper<ComplaintComment>().eq(ComplaintComment::getComplaintId, detail.getId()).eq(ComplaintComment::getDelFlag, 0)); +// if(detail.getStatus() == 3 && 0 == count){ +// if(systemUserByPhone.isPresent()){ +// SystemUser systemUser = systemUserByPhone.get(); +// Integer isAdmin = systemUser.getIsAdmin(); +// if(accountLevel.compareTo(detail.getReportType()) == 0 && ((accountLevel != 5 && 1 == isAdmin) || accountLevel == 5)){ +// detail.setEvaluateButtonStatus(0); +// } +// }else{ +// if(detail.getReportType() == 5){ +// detail.setEvaluateButtonStatus(0); +// } +// } +// } return detail; } @@ -281,10 +525,27 @@ */ @Override public void saveProcess(ComplaintProcessDTO dto, LoginUserInfoVO loginUserInfoVO) { + //获取当前身份 + IdentityInformation identityInformationVO = identityInformationService.getIdentityInformation(loginUserInfoVO); + + List<PermissionsVO> permissions = identityInformationVO.getPermissions(); + if (permissions.isEmpty()) { + throw new ServiceException("请先完善个人信息"); + } + //上级 + String name = ""; + if (identityInformationVO.getIdentity() == 2) { + //1=党员,2=管理员 + SystemUser systemUser = identityInformationVO.getSystemUser(); + name = systemUser.getName(); + }else if (identityInformationVO.getIdentity() == 1){ + PartyMember partyMember = identityInformationVO.getPartyMember(); + name = partyMember.getName(); + } ComplaintProgress complaintProgress = BeanUtil.copyProperties(dto, ComplaintProgress.class); complaintProgress.setCreateTime(new Date()); complaintProgress.setCreateBy(loginUserInfoVO.getUserId()); - complaintProgress.setCreateByName(loginUserInfoVO.getNickName()); + complaintProgress.setCreateByName(name); complaintProgressService.save(complaintProgress); } @@ -296,12 +557,33 @@ */ @Override public void saveResult(ComplaintCompletionDTO dto, LoginUserInfoVO loginUserInfoVO) { + //获取当前身份 + IdentityInformation identityInformationVO = identityInformationService.getIdentityInformation(loginUserInfoVO); + + List<PermissionsVO> permissions = identityInformationVO.getPermissions(); + if (permissions.isEmpty()) { + throw new ServiceException("请先完善个人信息"); + } + Integer accountLevel = null; + String name = ""; + //上级 + if (identityInformationVO.getIdentity() == 2) { + //1=党员,2=管理员 + SystemUser systemUser = identityInformationVO.getSystemUser(); + accountLevel = systemUser.getAccountLevel(); + name = systemUser.getName(); + }else if (identityInformationVO.getIdentity() == 1){ + accountLevel = 5; + PartyMember partyMember = identityInformationVO.getPartyMember(); + name = partyMember.getName(); + } Complaint complaint = BeanUtil.copyProperties(dto, Complaint.class); complaint.setUpdateTime(new Date()); complaint.setCompletionUserId(loginUserInfoVO.getUserId()); - complaint.setCompletionUsername(loginUserInfoVO.getNickName()); + complaint.setCompletionUsername(name); complaint.setCompletionUserPhone(loginUserInfoVO.getPhone()); complaint.setCompletionTime(new Date()); + complaint.setCompletionUserLevel(accountLevel); this.updateById(complaint); } @@ -321,56 +603,81 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveReport(ComplaintReportDTO dto, LoginUserInfoVO loginUserInfoVO) { - log.info("用户登录数据----------------》" + JSON.toJSONString(loginUserInfoVO)); String phone = loginUserInfoVO.getPhone(); - - SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>() - .eq(SystemUser::getPhone, phone) - .eq(SystemUser::getIsAdmin, 1) - .ne(SystemUser::getStatus, 3) - .last("LIMIT 1")); + IdentityInformation identityInformationVO = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + SystemUser adminUser = identityInformationVO.getSystemUser(); Long superiorId; - Long currentId; int reportType; - if (adminUser == null) { - superiorId = loginUserInfoVO.getCommunityId(); - currentId = 0L; - if (Objects.isNull(superiorId)) { - throw new ServiceException("上报失败,请绑定社区"); - } - reportType = ReportTypeEnum.COMMUNITY.getCode(); - currentId = loginUserInfoVO.getUserId(); - } else { + int reporterLevel; + Long reporterId = null; + String departmentName = ""; + String reporter = ""; + if (identityInformationVO.getIdentity() == 1) { + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(phone); + superiorId = partyMember.getCommunityId(); + reporterId = partyMember.getId(); + reportType = 4; + reporterLevel = 5; + departmentName = partyMember.getDistricts() + "-" + partyMember.getStreet() + "-" + partyMember.getCommunity(); + reporter = partyMember.getName(); + } else if (identityInformationVO.getIdentity() == 2) { int accountLevel = adminUser.getAccountLevel(); // 改为基本类型 if (accountLevel == 1) { throw new ServiceException("市级账号,无法上报!"); } reportType = accountLevel - 1; + reporterLevel = accountLevel; + reporter = adminUser.getName(); // 使用基本类型比较并补充默认分支 if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) { superiorId = Long.parseLong(adminUser.getStreetId()); - currentId = adminUser.getCommunityId(); + reporterId = adminUser.getCommunityId(); } else if (accountLevel == ReportTypeEnum.STREET.getCode()) { superiorId = Long.parseLong(adminUser.getDistrictsCode()); - currentId = Long.valueOf(adminUser.getStreetId()); + reporterId = Long.parseLong(adminUser.getStreetId()); } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) { superiorId = 510400L; // 攀枝花市 - currentId = Long.valueOf(adminUser.getDistrictsCode()); - } else if(accountLevel == ReportTypeEnum.PARTY.getCode()){ + reporterId = Long.parseLong(adminUser.getDistrictsCode()); + } else if (accountLevel == ReportTypeEnum.PARTY.getCode()) { superiorId = adminUser.getCommunityId(); - currentId = loginUserInfoVO.getUserId(); } else { // 处理未预期的账号等级 throw new ServiceException("未知的账号等级"); } + //查询社区信息 + switch (accountLevel) { + case 2: + BcRegion region = bcRegionService.getDistrictByCode(adminUser.getDistrictsCode().toString()); + if (Objects.nonNull(region)) { + departmentName = region.getRegionName(); + } + break; + case 3: + ComStreet street = comStreetService.getById(adminUser.getStreetId().toString()); + if (Objects.nonNull(street)) { + BcRegion district = bcRegionService.getDistrictByCode(street.getAreaCode().toString()); + departmentName = Objects.nonNull(district) ? district.getRegionName() + "-" + street.getName() : street.getName(); + } + break; + case 4: + ComAct act = comActService.getById(adminUser.getCommunityId()); + if (Objects.nonNull(act)) { + ComStreet street2 = comStreetService.getById(adminUser.getStreetId().toString()); + BcRegion district = bcRegionService.getDistrictByCode(act.getAreaCode()); + departmentName = Objects.nonNull(district) && Objects.nonNull(street2) ? district.getRegionName() + "-" + street2.getName() + "-" + act.getName() : act.getName(); + } + break; + } + } else { + throw new ServiceException("未知的账号等级"); } Complaint complaint = getById(dto.getComplaintId()); - //complaint.setReportType(+); - complaint.setSuperiorType(reportType); - complaint.setSuperiorId(superiorId); + if (complaint.getStatus() != 0) { + complaint.setStatus(0); + } updateById(complaint); // 标记最新 @@ -379,7 +686,6 @@ .set(ComplaintAuditRecord::getLatestFlag, false)); // 添加审核记录 - //complaintAuditRecordService.createComplaintAuditRecord(dto.getComplaintId(), 2, dto.getComment(), loginUserInfoVO,adminUser); int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, complaint.getId())); ComplaintAuditRecord complaintAuditRecord = new ComplaintAuditRecord(); complaintAuditRecord.setComplaintId(complaint.getId()); @@ -390,45 +696,26 @@ complaintAuditRecord.setCreateTime(new Date()); complaintAuditRecord.setUpdateBy(loginUserInfoVO.getUserId()); complaintAuditRecord.setUpdateTime(new Date()); - complaintAuditRecord.setReporter(loginUserInfoVO.getNickName()); - complaintAuditRecord.setReportType(Objects.isNull(adminUser) ? 5 : adminUser.getAccountLevel()); - complaintAuditRecord.setSuperiorId(currentId); + complaintAuditRecord.setReporter(reporter); + complaintAuditRecord.setReportType(reportType); + complaintAuditRecord.setSuperiorId(superiorId); complaintAuditRecord.setComment(dto.getComment()); complaintAuditRecord.setSort(count + 1); + complaintAuditRecord.setDepartmentName(departmentName); + complaintAuditRecord.setReporterLevel(reporterLevel); + complaintAuditRecord.setReporterId(reporterId); complaintAuditRecordService.save(complaintAuditRecord); - - - ComplaintAuditRecord complaintAuditRecord2 = new ComplaintAuditRecord(); - complaintAuditRecord2.setComplaintId(complaint.getId()); - complaintAuditRecord2.setLatestFlag(true); - complaintAuditRecord2.setAuditType(2); - complaintAuditRecord2.setAuditStatus(0); - complaintAuditRecord2.setCreateBy(loginUserInfoVO.getUserId()); - complaintAuditRecord2.setCreateTime(new Date()); - complaintAuditRecord2.setUpdateBy(loginUserInfoVO.getUserId()); - complaintAuditRecord2.setUpdateTime(new Date()); - complaintAuditRecord2.setReporter(loginUserInfoVO.getNickName()); - complaintAuditRecord2.setReportType(reportType); - complaintAuditRecord2.setSuperiorId(superiorId); - complaintAuditRecord2.setComment(dto.getComment()); - complaintAuditRecord2.setSort(count + 2); - complaintAuditRecordService.save(complaintAuditRecord2); } @Override @Transactional(rollbackFor = Exception.class) public void saveDispatch(ComplaintDispatch dto, LoginUserInfoVO loginUserInfoVO) { - String phone = loginUserInfoVO.getPhone(); - SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>() - .eq(SystemUser::getPhone, phone) - .eq(SystemUser::getIsAdmin, 1) - .ne(SystemUser::getStatus, 3) - .last("LIMIT 1")); - - if (adminUser == null) { + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + if (identityInformation.getIdentity() != 2) { throw new ServiceException("无权下派"); } + SystemUser adminUser = identityInformation.getSystemUser(); int accountLevel = adminUser.getAccountLevel(); // 改为基本类型 if (accountLevel == 4) { throw new ServiceException("社区账号,无法下派!"); @@ -436,22 +723,16 @@ accountLevel++; Complaint complaint = getById(dto.getComplaintId()); - complaint.setSuperiorType(accountLevel); - complaint.setSuperiorId(dto.getDispatchId()); - updateById(complaint); - Long superiorOrgId = complaint.getSuperiorId(); - Integer superiorType = complaint.getSuperiorType(); //查询当前单位审核记录表数据 //查询上报审核记录 - ComplaintAuditRecord complaintAuditRecord = complaintAuditRecordService.lambdaQuery() - .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) - .eq(ComplaintAuditRecord::getAuditType, 0) - .eq(ComplaintAuditRecord::getLatestFlag, true) - .eq(ComplaintAuditRecord::getReportType, adminUser.getAccountLevel()) - .last("LIMIT 1").one(); +// ComplaintAuditRecord complaintAuditRecord = complaintAuditRecordService.lambdaQuery() +// .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) +// .eq(ComplaintAuditRecord::getAuditType, 0) +// .eq(ComplaintAuditRecord::getLatestFlag, true) +// .eq(ComplaintAuditRecord::getReportType, adminUser.getAccountLevel()) +// .last("LIMIT 1").one(); // 添加流转记录 - complaintFlowService.createFlow(complaintAuditRecord, 1,loginUserInfoVO.getUserId()); - +// complaintFlowService.createFlow(complaintAuditRecord, 1,loginUserInfoVO.getUserId()); // 标记最新 complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>() .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) @@ -460,7 +741,7 @@ ComplaintAuditRecord record = new ComplaintAuditRecord(); record.setComplaintId(complaint.getId()); record.setLatestFlag(true); - record.setAuditType(0); + record.setAuditType(3); record.setAuditStatus(1); record.setCreateBy(loginUserInfoVO.getUserId()); record.setCreateTime(new Date(System.currentTimeMillis())); @@ -471,17 +752,39 @@ record.setSuperiorId(dto.getDispatchId()); record.setSort(count + 1); complaintAuditRecordService.save(record); + ComplaintAuditRecord complaintAuditRecord = new ComplaintAuditRecord(); + complaintAuditRecord.setComplaintId(complaint.getId()); + complaintAuditRecord.setReportType(adminUser.getAccountLevel()); + Long superiorId = null; + switch (adminUser.getAccountLevel()) { + case 1: + superiorId = 510400L;//默认市级 + break; + case 2: + superiorId = Long.parseLong(adminUser.getDistrictsCode()); + break; + case 3: + superiorId = Long.parseLong(adminUser.getStreetId()); + break; + case 4: + superiorId = adminUser.getCommunityId(); + break; + } + complaintAuditRecord.setSuperiorId(superiorId); + complaintFlowService.createFlow(complaintAuditRecord, 1, loginUserInfoVO.getUserId()); } @Override @Transactional(rollbackFor = Exception.class) public void reportAudit(ComplaintReporAuditDTO complaintReporAuditDTO, LoginUserInfoVO loginUserInfoVO) { - Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()); - if (!systemUserByPhone.isPresent()) { + + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + + SystemUser systemUser = identityInformation.getSystemUser(); + if (systemUser == null || identityInformation.getIdentity() != 2) { throw new ServiceException("无权审核"); } - SystemUser systemUser = systemUserByPhone.get(); Long superiorId = 0L; switch (systemUser.getAccountLevel()) { case 1: @@ -506,82 +809,26 @@ .eq(ComplaintAuditRecord::getReportType, systemUser.getAccountLevel()) .eq(ComplaintAuditRecord::getSuperiorId, superiorId) .last("LIMIT 1").one(); - ComplaintAuditRecord lowLevelRecord = complaintAuditRecordService.lambdaQuery() - .eq(ComplaintAuditRecord::getComplaintId, complaintReporAuditDTO.getId()) - .eq(ComplaintAuditRecord::getAuditType, 2) - .eq(ComplaintAuditRecord::getLatestFlag, true) - .eq(ComplaintAuditRecord::getReportType, systemUser.getAccountLevel()+1) - .last("LIMIT 1").one(); if (Objects.isNull(complaintAuditRecord)) { throw new ServiceException("上报申请记录不存在"); } - //查询待审核诉求 - //complaintAuditRecordService.audit(complaintAuditRecord, loginUserInfoVO.getUserId(), - // complaintReporAuditDTO.getAuditResult(), complaintReporAuditDTO.getRejectReason()); - - // 添加流转记录 - Complaint complaint = getById(complaintAuditRecord.getComplaintId()); - - // 标记最新 - complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>() - .eq(ComplaintAuditRecord::getComplaintId, complaintAuditRecord.getComplaintId()) - .set(ComplaintAuditRecord::getLatestFlag, false)); - + complaintAuditRecord.setAuditorName(systemUser.getName()); + complaintAuditRecord.setAuditorPhone(systemUser.getPhone()); if (complaintReporAuditDTO.getAuditResult().equals(1)) { - int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, complaint.getId())); - ComplaintAuditRecord record = new ComplaintAuditRecord(); - record.setComplaintId(complaint.getId()); - record.setLatestFlag(true); - record.setAuditorId(loginUserInfoVO.getUserId()); - record.setAuditType(0); - record.setAuditStatus(1); - record.setCreateBy(loginUserInfoVO.getUserId()); - record.setCreateTime(new Date()); - record.setUpdateBy(loginUserInfoVO.getUserId()); - record.setUpdateTime(new Date()); - record.setReporter(complaintAuditRecord.getReporter()); - record.setReportType(complaintAuditRecord.getReportType()); - record.setSuperiorId(superiorId); - record.setSort(count + 1); - complaintAuditRecordService.save(record); + complaintAuditRecord.setAuditStatus(1); + complaintAuditRecord.setAuditorId(loginUserInfoVO.getUserId()); + complaintAuditRecordService.updateById(complaintAuditRecord); //创建流程 - complaintFlowService.createFlow(lowLevelRecord ,0, loginUserInfoVO.getUserId()); + ComplaintAuditRecord complaintAuditRecord2 = new ComplaintAuditRecord(); + complaintAuditRecord2.setComplaintId(complaintReporAuditDTO.getId()); + complaintAuditRecord2.setSuperiorId(complaintAuditRecord.getReporterId()); + complaintAuditRecord2.setReportType(complaintAuditRecord.getReporterLevel()); + complaintFlowService.createFlow(complaintAuditRecord2, 0, loginUserInfoVO.getUserId()); } else { - - switch (systemUser.getAccountLevel() + 1) { - case 1: - superiorId = 510400L;//默认市级 - break; - case 2: - superiorId = Long.parseLong(systemUser.getDistrictsCode()); - break; - case 3: - superiorId = Long.parseLong(systemUser.getStreetId()); - break; - case 4: - superiorId = systemUser.getCommunityId(); - break; - case 5: - superiorId = complaint.getCreateBy(); - break; - } - int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, complaint.getId())); - ComplaintAuditRecord record2 = new ComplaintAuditRecord(); - record2.setComplaintId(complaint.getId()); - record2.setLatestFlag(true); - record2.setAuditType(2); - record2.setAuditorId(loginUserInfoVO.getUserId()); - record2.setAuditStatus(2); - record2.setCreateBy(loginUserInfoVO.getUserId()); - record2.setCreateTime(new Date()); - record2.setUpdateBy(loginUserInfoVO.getUserId()); - record2.setUpdateTime(new Date()); - record2.setReporter(complaintAuditRecord.getReporter()); - record2.setReportType(systemUser.getAccountLevel() + 1); - record2.setSuperiorId(superiorId); - record2.setRejectReason(complaintReporAuditDTO.getRejectReason()); - record2.setSort(count + 1); - complaintAuditRecordService.save(record2); + complaintAuditRecord.setRejectReason(complaintReporAuditDTO.getRejectReason()); + complaintAuditRecord.setAuditStatus(2); + complaintAuditRecord.setAuditorId(loginUserInfoVO.getUserId()); + complaintAuditRecordService.updateById(complaintAuditRecord); } } @@ -589,57 +836,75 @@ @Override @Transactional(rollbackFor = Exception.class) public void saveDelay(ComplaintDelayDTO dto, LoginUserInfoVO loginUserInfoVO) { - SystemUser systemUser = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()).orElse(null); + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + + SystemUser systemUser = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()).orElse(null); Long superiorId; - Long currentId; int reportType; - if (systemUser == null) { - superiorId = loginUserInfoVO.getCommunityId(); - currentId = loginUserInfoVO.getUserId(); + String departmentName = ""; + if (identityInformation.getIdentity() == 1) { + PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone()); + superiorId = partyMember.getCommunityId(); if (Objects.isNull(superiorId)) { - throw new ServiceException("上报失败,请绑定社区"); + throw new ServiceException("延期申请失败,请绑定社区"); } reportType = ReportTypeEnum.COMMUNITY.getCode(); - } else { + departmentName = partyMember.getDistricts() + "-" + partyMember.getStreet() + "-" + partyMember.getCommunity(); + } else if (identityInformation.getIdentity() == 2 && systemUser != null) { int accountLevel = systemUser.getAccountLevel(); // 改为基本类型 if (accountLevel == 1) { - throw new ServiceException("市级账号,无法上报!"); + throw new ServiceException("市级账号,无法延期申请!"); } reportType = accountLevel - 1; // 使用基本类型比较并补充默认分支 if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) { superiorId = Long.parseLong(systemUser.getStreetId()); - currentId = systemUser.getCommunityId(); } else if (accountLevel == ReportTypeEnum.STREET.getCode()) { superiorId = Long.parseLong(systemUser.getDistrictsCode()); - currentId = Long.parseLong(systemUser.getStreetId()); } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) { superiorId = 510400L; // 攀枝花市 - currentId = Long.parseLong(systemUser.getDistrictsCode()); } else if (accountLevel == ReportTypeEnum.PARTY.getCode()) { superiorId = systemUser.getCommunityId(); - currentId = loginUserInfoVO.getUserId(); } else { // 处理未预期的账号等级 throw new ServiceException("未知的账号等级"); } + //查询社区信息 + switch (accountLevel) { + case 2: + BcRegion region = bcRegionService.getDistrictByCode(systemUser.getDistrictsCode().toString()); + if (Objects.nonNull(region)) { + departmentName = region.getRegionName(); + } + break; + case 3: + ComStreet street = comStreetService.getById(systemUser.getStreetId().toString()); + if (Objects.nonNull(street)) { + BcRegion district = bcRegionService.getDistrictByCode(street.getAreaCode().toString()); + departmentName = Objects.nonNull(district) ? district.getRegionName() + "-" + street.getName() : street.getName(); + } + break; + case 4: + ComAct act = comActService.getById(systemUser.getCommunityId()); + if (Objects.nonNull(act)) { + ComStreet street2 = comStreetService.getById(systemUser.getStreetId().toString()); + BcRegion district = bcRegionService.getDistrictByCode(act.getAreaCode()); + departmentName = Objects.nonNull(district) && Objects.nonNull(street2) ? district.getRegionName() + "-" + street2.getName() + "-" + act.getName() : act.getName(); + } + break; + } + } else { + throw new ServiceException("无权申请"); } - - Complaint complaint = getById(dto.getComplaintId()); - complaint.setSuperiorType(reportType); - complaint.setSuperiorId(superiorId); - updateById(complaint); - // 添加审核记录 - //complaintAuditRecordService.createComplaintAuditRecord(dto.getComplaintId(), 1, dto.getComment(), loginUserInfoVO, systemUser); // 清除最新记录 complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>() .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) .set(ComplaintAuditRecord::getLatestFlag, false)); - int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, complaint.getId())); + int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId())); ComplaintAuditRecord record1 = new ComplaintAuditRecord(); - record1.setComplaintId(complaint.getId()); + record1.setComplaintId(dto.getComplaintId()); record1.setLatestFlag(true); record1.setAuditType(1); record1.setAuditStatus(0); @@ -648,42 +913,34 @@ record1.setUpdateBy(loginUserInfoVO.getUserId()); record1.setUpdateTime(new Date(System.currentTimeMillis())); record1.setReporter(loginUserInfoVO.getNickName()); - record1.setReportType(Objects.isNull(systemUser) ? 5 : systemUser.getAccountLevel()); - record1.setSuperiorId(currentId); + record1.setReportType(reportType); + record1.setSuperiorId(superiorId); record1.setSort(count + 1); + record1.setComment(dto.getComment()); + record1.setDepartmentName(departmentName); complaintAuditRecordService.save(record1); - - ComplaintAuditRecord record2 = new ComplaintAuditRecord(); - record2.setComplaintId(complaint.getId()); - record2.setLatestFlag(true); - record2.setAuditType(1); - record2.setAuditStatus(0); - record2.setCreateBy(loginUserInfoVO.getUserId()); - record2.setCreateTime(new Date(System.currentTimeMillis())); - record2.setUpdateBy(loginUserInfoVO.getUserId()); - record2.setUpdateTime(new Date(System.currentTimeMillis())); - record2.setReporter(loginUserInfoVO.getNickName()); - record2.setReportType(reportType); - record2.setSuperiorId(superiorId); - record2.setSort(count + 2); - complaintAuditRecordService.save(record2); } @Override public void delayAudit(ComplaintDelayAuditDTO dto, LoginUserInfoVO loginUserInfoVO) { - - SystemUser systemUser = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()).orElse(null); + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); + SystemUser systemUser = identityInformation.getSystemUser(); + if (identityInformation.getIdentity() != 2 || systemUser == null) { + throw new ServiceException("无权审核"); + } int accountLevel = systemUser.getAccountLevel(); // 改为基本类型 - Long cunrrentId; + Long superiorId; // 使用基本类型比较并补充默认分支 if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) { - cunrrentId = systemUser.getCommunityId(); + superiorId = systemUser.getCommunityId(); } else if (accountLevel == ReportTypeEnum.STREET.getCode()) { - cunrrentId = Long.parseLong(systemUser.getStreetId()); + superiorId = Long.parseLong(systemUser.getStreetId()); } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) { - cunrrentId = Long.parseLong(systemUser.getDistrictsCode()); + superiorId = Long.parseLong(systemUser.getDistrictsCode()); + } else if (accountLevel == ReportTypeEnum.CITY.getCode()) { + superiorId = 510400L; } else { // 处理未预期的账号等级 throw new ServiceException("未知的账号等级"); @@ -694,8 +951,8 @@ .eq(ComplaintAuditRecord::getAuditType, 1) .eq(ComplaintAuditRecord::getLatestFlag, 1) .eq(ComplaintAuditRecord::getAuditStatus, 0) - .ne(ComplaintAuditRecord::getSuperiorId, cunrrentId) - .eq(ComplaintAuditRecord::getReportType, accountLevel+1) + .eq(ComplaintAuditRecord::getSuperiorId, superiorId) + .eq(ComplaintAuditRecord::getReportType, accountLevel) .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) .last("LIMIT 1")); @@ -703,49 +960,33 @@ if (Objects.isNull(complaintAuditRecord)) { throw new ServiceException("诉求延期申请不存在"); } - //complaintAuditRecordService.audit(complaintAuditRecord, loginUserInfoVO.getUserId(), - // dto.getAuditResult(), dto.getRejectReason()); //审核通过后,设置诉求延期 - if (complaintAuditRecord.getAuditType().equals(1) && complaintAuditRecord.getAuditStatus().equals(0)) { + if (complaintAuditRecord.getAuditType().equals(1) && complaintAuditRecord.getAuditStatus().equals(0) && dto.getAuditResult().equals(1)) { Complaint complaint = getById(complaintAuditRecord.getComplaintId()); complaint.setStatus(1); updateById(complaint); + + complaintAuditRecord.setAuditStatus(1); + complaintAuditRecord.setAuditorId(loginUserInfoVO.getUserId()); + complaintAuditRecordService.updateById(complaintAuditRecord); } - - - complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>() - .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId()) - .set(ComplaintAuditRecord::getLatestFlag, false)); - int count = complaintAuditRecordService.count(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, dto.getId())); - ComplaintAuditRecord record1 = new ComplaintAuditRecord(); - record1.setComplaintId(dto.getComplaintId()); - record1.setLatestFlag(true); - record1.setAuditType(2); - record1.setAuditorId(loginUserInfoVO.getUserId()); - record1.setAuditStatus(dto.getAuditResult()); - record1.setCreateBy(loginUserInfoVO.getUserId()); - record1.setCreateTime(new Date(System.currentTimeMillis())); - record1.setUpdateBy(loginUserInfoVO.getUserId()); - record1.setUpdateTime(new Date(System.currentTimeMillis())); - record1.setReporter(complaintAuditRecord.getReporter()); - record1.setReportType(complaintAuditRecord.getReportType()); - record1.setSuperiorId(complaintAuditRecord.getSuperiorId()); - record1.setSort(count + 1); - complaintAuditRecordService.save(record1); - + //审核不通过 + if (complaintAuditRecord.getAuditType().equals(1) && complaintAuditRecord.getAuditStatus().equals(0) && dto.getAuditResult().equals(2)) { + complaintAuditRecord.setRejectReason(dto.getRejectReason()); + complaintAuditRecord.setAuditStatus(2); + complaintAuditRecord.setAuditorId(loginUserInfoVO.getUserId()); + complaintAuditRecordService.updateById(complaintAuditRecord); + } } @Override public List<DispatchVO> getDispatchList(LoginUserInfoVO loginUserInfoVO) { - String phone = loginUserInfoVO.getPhone(); - SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>() - .eq(SystemUser::getPhone, phone) - .eq(SystemUser::getIsAdmin, 1) - .ne(SystemUser::getStatus, 3) - .last("LIMIT 1")); + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO); - if (adminUser == null) { + SystemUser adminUser = identityInformation.getSystemUser(); + + if (adminUser == null || identityInformation.getIdentity() != 2) { throw new ServiceException("无权下派"); } int accountLevel = adminUser.getAccountLevel(); // 改为基本类型 @@ -798,12 +1039,12 @@ */ @Override public Page<ComplaintTodoVO> getTodoList(BasePage basePage, LoginUserInfoVO loginUserInfo) { - Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfo.getPhone()); + IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo); + SystemUser systemUser = identityInformation.getSystemUser(); String targetId = ""; int isSuperior = 0; //上级 - if (systemUserByPhone.isPresent()) { - SystemUser systemUser = systemUserByPhone.get(); + if (identityInformation.getIdentity() == 2) { Integer accountLevel = systemUser.getAccountLevel(); switch (accountLevel) { case 1: @@ -816,7 +1057,7 @@ break; case 3: //街道 - targetId = systemUser.getStreetId().toString(); + targetId = systemUser.getStreetId(); break; case 4: //社区 @@ -828,8 +1069,7 @@ //党员 targetId = loginUserInfo.getUserId().toString(); } - Page<ComplaintTodoVO> page = baseMapper.getTodoList(new Page<>(basePage.getPageNum(), basePage.getPageSize()), targetId, isSuperior); - return page; + return baseMapper.getTodoList(new Page<>(basePage.getPageNum(), basePage.getPageSize()), targetId, isSuperior); } /** @@ -845,5 +1085,201 @@ .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).orderByDesc(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(), ComplaintExcel.class) + .sheet("诉求数据") + .doWrite(complaintExcels); + } + + @Override + public void downloadFile(Long id, Integer type) throws IOException { + Complaint complaint = baseMapper.getDetailBg(id); + if (Objects.isNull(complaint)) { + throw new ServiceException("该诉求不存在"); + } + //查询社区信息 + Integer reportType = complaint.getReportType(); + String community = ""; + switch (reportType) { + case 1: + community = "攀枝花市"; + break; + case 2: + BcRegion region = bcRegionService.getDistrictByCode(complaint.getDistrictsCode().toString()); + if (Objects.nonNull(region)) { + community = region.getRegionName(); + } + break; + case 3: + ComStreet street = comStreetService.getById(complaint.getStreetId().toString()); + if (Objects.nonNull(street)) { + BcRegion district = bcRegionService.getDistrictByCode(street.getAreaCode().toString()); + community = Objects.nonNull(district) ? district.getRegionName() + "-" + street.getName() : street.getName(); + } + break; + case 4: + ComAct act = comActService.getById(complaint.getCommunityId()); + if (Objects.nonNull(act)) { + ComStreet street2 = comStreetService.getById(complaint.getStreetId().toString()); + BcRegion district = bcRegionService.getDistrictByCode(act.getAreaCode()); + community = Objects.nonNull(district) && Objects.nonNull(street2) ? district.getRegionName() + "-" + street2.getName() + "-" + act.getName() : act.getName(); + } + break; + case 5: + ComAct act2 = comActService.getById(complaint.getCommunityId()); + if (Objects.nonNull(act2)) { + ComStreet street2 = comStreetService.getById(complaint.getStreetId().toString()); + BcRegion district = bcRegionService.getDistrictByCode(act2.getAreaCode()); + community = Objects.nonNull(district) && Objects.nonNull(street2) ? district.getRegionName() + "-" + street2.getName() + "-" + act2.getName() : act2.getName(); + } + break; + } + + PartyMember partyMember = null; + if (Objects.nonNull(complaint.getPartyMemberId())) { + partyMember = partyMemberService.getById(complaint.getPartyMemberId()); + } + String fileName = ""; + switch (type) { + case 1: + fileName = "community_question.docx"; + break; + case 2: + fileName = "question_handle.docx"; + if (Objects.nonNull(partyMember)) { + community = community + "-" + partyMember.getServiceTarget(); + } + reportType = complaint.getCompletionUserLevel(); + break; + case 3: + //如果上报或下派了,取当前操作人的层级 + ComplaintAuditRecord record = complaintAuditRecordService.lambdaQuery().eq(ComplaintAuditRecord::getComplaintId, complaint.getId()) + .in(ComplaintAuditRecord::getAuditType, 2, 3) + .eq(ComplaintAuditRecord::getAuditStatus, AuditStatusEnum.APPROVED.getCode()) + .eq(ComplaintAuditRecord::getLatestFlag, true) + .last("LIMIT 1").one(); + if (Objects.nonNull(record)) { + reportType = record.getReportType(); + } + fileName = "notice.docx"; + break; + } + Map<String, Object> map = new HashMap<>(); + map.put("community", community); + map.put("problemType", complaint.getProblemType()); + map.put("descriptionContent", complaint.getDescriptionContent()); + map.put("reportType", reportType == null ? "" : ReportTypeEnum.getDescriptionByCode(reportType)); + 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" + "\""); + InputStream resourceAsStream = this.getClass().getResourceAsStream("/template/" + fileName); + XWPFTemplate.compile(resourceAsStream).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\\community_question.docx").render(map).writeToFile("F:\\DeskTop\\社区.docx"); + } catch (IOException e) { + e.printStackTrace(); + } + } + + + /** + * 获取超时未评价的数据 + * + * @return + */ + @Override + public List<Complaint> getTimeoutAndNotComment() { + return this.baseMapper.getTimeoutAndNotComment(); + } + } -- Gitblit v1.7.1