From af7766f2983181bd31d271a2547c3ca875a2cbc2 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期二, 18 三月 2025 17:34:31 +0800
Subject: [PATCH] Merge branch 'dev-2.0' of http://120.76.84.145:10101/gitblit/r/java/zhihuishenqu into dev-2.0

---
 springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java |  149 +++++++++++++++++++++++++++++--------------------
 1 files changed, 88 insertions(+), 61 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 46d70ce..cb99004 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
@@ -13,6 +13,7 @@
 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;
@@ -95,13 +96,9 @@
         complaint.setSerialNumber(serialNumber);
         Integer accountLevel = 5;
         //获取当前身份
-        IdentityInformation identityInformationVO = identityInformationService.getIdentityInformation(loginUserInfoVO);
+        IdentityInformation identityInformationVO = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
         //1=党员,2=管理员
         SystemUser systemUser = identityInformationVO.getSystemUser();
-        List<PermissionsVO> permissions = identityInformationVO.getPermissions();
-        if (permissions.isEmpty()) {
-            throw new ServiceException("请先完善个人信息");
-        }
         Integer identity = identityInformationVO.getIdentity();
         if (identity == 2) {
             accountLevel = systemUser.getAccountLevel();
@@ -184,10 +181,7 @@
         Long targetId = null;
         Integer accountLevel = 5;
         //获取当前身份,1=党员,2=管理员
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        if (CollectionUtil.isEmpty(identityInformation.getPermissions())) {
-            throw new ServiceException("请先完善个人信息");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
         Integer identity = identityInformation.getIdentity();
         //上级
         if (systemUserByPhone.isPresent() && null != identity && identity == 2) {
@@ -237,8 +231,11 @@
         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"));
+        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()) {
@@ -257,8 +254,10 @@
         }
         //有审核数据,且正在办理
         if (null != one && (vo.getStatus() == 0 || vo.getStatus() == 1 || vo.getStatus() == 2 || vo.getStatus() == 6)) {
+
+
             //区分是上报数据还是下派数据
-            if (one.getAuditType() == 2) {
+            if (one.getAuditType() == 2 || one.getAuditType() == 1) {
                 //判断当前审核状态
                 if (one.getAuditStatus() == 1) {
                     //审核状态为通过,则权限给到上报审核的这一层
@@ -273,8 +272,12 @@
                     }
                 } 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"));
+                    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();
@@ -367,7 +370,7 @@
             String targetId = "";
             Integer accountLevel = 5;
             //获取当前身份,1=党员,2=管理员
-            IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfo);
+            IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo);
             if (2 == identityInformation.getIdentity()) {
                 accountLevel = systemUser.getAccountLevel();
                 switch (accountLevel) {
@@ -394,7 +397,8 @@
                         break;
                 }
 
-                ComplaintAuditRecord one2 = complaintAuditRecordService.getOne(new LambdaQueryWrapper<ComplaintAuditRecord>().eq(ComplaintAuditRecord::getComplaintId, vo.getId())
+                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) {
@@ -435,10 +439,7 @@
         String targetId = "";
         Integer accountLevel = 5;
         //获取当前身份,1=党员,2=管理员
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        if (CollectionUtil.isEmpty(identityInformation.getPermissions())) {
-            throw new ServiceException("身份信息异常");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
         Integer identity = identityInformation.getIdentity();
         //上级
         if (systemUserByPhone.isPresent() && identity == 2) {
@@ -537,12 +538,29 @@
      */
     @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;
+        //上级
+        if (identityInformationVO.getIdentity() == 2) {
+            //1=党员,2=管理员
+            SystemUser systemUser = identityInformationVO.getSystemUser();
+            accountLevel = systemUser.getAccountLevel();
+        }else if (identityInformationVO.getIdentity() == 1){
+            accountLevel = 5;
+        }
         Complaint complaint = BeanUtil.copyProperties(dto, Complaint.class);
         complaint.setUpdateTime(new Date());
         complaint.setCompletionUserId(loginUserInfoVO.getUserId());
         complaint.setCompletionUsername(loginUserInfoVO.getNickName());
         complaint.setCompletionUserPhone(loginUserInfoVO.getPhone());
         complaint.setCompletionTime(new Date());
+        complaint.setCompletionUserLevel(accountLevel);
         this.updateById(complaint);
     }
 
@@ -563,16 +581,8 @@
     @Transactional(rollbackFor = Exception.class)
     public void saveReport(ComplaintReportDTO 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"));
-
-        IdentityInformation identityInformationVO = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        if (CollectionUtil.isEmpty(identityInformationVO.getPermissions())) {
-            throw new ServiceException("请先完成认证");
-        }
+        IdentityInformation identityInformationVO = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
+        SystemUser adminUser = identityInformationVO.getSystemUser();
 
         Long superiorId;
         int reportType;
@@ -664,11 +674,7 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveDispatch(ComplaintDispatch dto, LoginUserInfoVO loginUserInfoVO) {
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        List<PermissionsVO> permissions = identityInformation.getPermissions();
-        if (CollectionUtil.isEmpty(permissions)) {
-            throw new ServiceException("请先完成认证");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
         if (identityInformation.getIdentity() != 2) {
             throw new ServiceException("无权下派");
         }
@@ -736,11 +742,7 @@
     @Transactional(rollbackFor = Exception.class)
     public void reportAudit(ComplaintReporAuditDTO complaintReporAuditDTO, LoginUserInfoVO loginUserInfoVO) {
 
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        List<PermissionsVO> permissions = identityInformation.getPermissions();
-        if (CollectionUtil.isEmpty(permissions)) {
-            throw new ServiceException("请先完成认证");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
 
         SystemUser systemUser = identityInformation.getSystemUser();
         if (systemUser == null || identityInformation.getIdentity() != 2) {
@@ -792,16 +794,12 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void saveDelay(ComplaintDelayDTO dto, LoginUserInfoVO loginUserInfoVO) {
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        List<PermissionsVO> permissions = identityInformation.getPermissions();
-
-        if (CollectionUtil.isEmpty(permissions)) {
-            throw new ServiceException("请先完成认证");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
 
         SystemUser systemUser = systemUserService.getSystemUserAdminByPhone(loginUserInfoVO.getPhone()).orElse(null);
         Long superiorId;
         int reportType;
+        String departmentName = "";
         if (identityInformation.getIdentity() == 1) {
             PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
             superiorId = partyMember.getCommunityId();
@@ -809,6 +807,7 @@
                 throw new ServiceException("延期申请失败,请绑定社区");
             }
             reportType = ReportTypeEnum.COMMUNITY.getCode();
+            departmentName = partyMember.getDistricts() + "-" + partyMember.getStreet() + "-" + partyMember.getCommunity();
         } else if (identityInformation.getIdentity() == 2 && systemUser != null) {
             int accountLevel = systemUser.getAccountLevel(); // 改为基本类型
             if (accountLevel == 1) {
@@ -828,6 +827,30 @@
             } 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("无权申请");
@@ -852,17 +875,14 @@
         record1.setSuperiorId(superiorId);
         record1.setSort(count + 1);
         record1.setComment(dto.getComment());
+        record1.setDepartmentName(departmentName);
         complaintAuditRecordService.save(record1);
     }
 
 
     @Override
     public void delayAudit(ComplaintDelayAuditDTO dto, LoginUserInfoVO loginUserInfoVO) {
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
-        List<PermissionsVO> permissions = identityInformation.getPermissions();
-        if (CollectionUtil.isEmpty(permissions)) {
-            throw new ServiceException("请先完成认证");
-        }
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
         SystemUser systemUser = identityInformation.getSystemUser();
         if (identityInformation.getIdentity() != 2 || systemUser == null) {
             throw new ServiceException("无权审核");
@@ -889,7 +909,7 @@
                 .eq(ComplaintAuditRecord::getAuditType, 1)
                 .eq(ComplaintAuditRecord::getLatestFlag, 1)
                 .eq(ComplaintAuditRecord::getAuditStatus, 0)
-                .ne(ComplaintAuditRecord::getSuperiorId, superiorId)
+                .eq(ComplaintAuditRecord::getSuperiorId, superiorId)
                 .eq(ComplaintAuditRecord::getReportType, accountLevel)
                 .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId())
                 .last("LIMIT 1"));
@@ -920,7 +940,7 @@
     @Override
     public List<DispatchVO> getDispatchList(LoginUserInfoVO loginUserInfoVO) {
 
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfoVO);
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfoVO);
 
         SystemUser adminUser = identityInformation.getSystemUser();
 
@@ -977,12 +997,8 @@
      */
     @Override
     public Page<ComplaintTodoVO> getTodoList(BasePage basePage, LoginUserInfoVO loginUserInfo) {
-        IdentityInformation identityInformation = identityInformationService.getIdentityInformation(loginUserInfo);
-        List<PermissionsVO> permissions = identityInformation.getPermissions();
+        IdentityInformation identityInformation = identityInformationService.getCurrentIdentityInformation(loginUserInfo);
         SystemUser systemUser = identityInformation.getSystemUser();
-        if (permissions.isEmpty()) {
-            throw new ServiceException("无权限");
-        }
         String targetId = "";
         int isSuperior = 0;
         //上级
@@ -1045,12 +1061,13 @@
         Complaint complaint = getById(id);
         ComplaintVO complaintVO = BeanUtil.copyProperties(complaint, ComplaintVO.class);
         //查询办理进度
-        List<ComplaintProgress> complaintProgresses = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id).orderByAsc(ComplaintProgress::getCreateTime).list();
+        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)
-                .orderByDesc(ComplaintFlow::getCreateTime)
+                .orderByAsc(ComplaintFlow::getCreateTime)
                 .list();
         complaintVO.setComplaintFlows(complaintFlows);
         //查询评价
@@ -1136,8 +1153,18 @@
                 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 = "协调通知单";
                 break;
         }
@@ -1145,7 +1172,7 @@
         map.put("community", community);
         map.put("problemType", complaint.getProblemType());
         map.put("descriptionContent", complaint.getDescriptionContent());
-        map.put("reportType", ReportTypeEnum.fromCode(reportType).getDescription());
+        map.put("reportType", ReportTypeEnum.getDescriptionByCode(reportType));
         map.put("partyOrganization", Objects.nonNull(partyMember) ? partyMember.getPartyOrganization() : "");
         map.put("name", complaint.getName());
         map.put("contactNumber", complaint.getContactNumber());

--
Gitblit v1.7.1