From 5af3d2fa829a7a454c8ddbb6ffb2a7685ceb9c77 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期一, 16 六月 2025 17:33:50 +0800
Subject: [PATCH] 新增优化1.0

---
 springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java |  177 +++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 147 insertions(+), 30 deletions(-)

diff --git a/springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java b/springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java
index 3197f4d..66cb416 100644
--- a/springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java
+++ b/springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/ComplaintServiceImpl.java
@@ -27,6 +27,7 @@
 import com.panzhihua.westcommittee.model.query.ComplaintQuery;
 import com.panzhihua.westcommittee.model.vo.*;
 import com.panzhihua.westcommittee.service.*;
+import com.panzhihua.westcommittee.utils.AliSmsUtil;
 import com.panzhihua.westcommittee.warpper.*;
 import jodd.util.StringUtil;
 import lombok.RequiredArgsConstructor;
@@ -78,6 +79,7 @@
     private final IPartyMemberService partyMemberService;
     private final IdentityInformationService identityInformationService;
     private final IDepartmentService departmentService;
+
     private final RedisUtils redisUtils;
 
     @Override
@@ -113,12 +115,6 @@
         if (identity == 2) {
             accountLevel = systemUser.getAccountLevel();
             switch (accountLevel) {
-                case 1:
-                    //市级
-                    complaint.setCityCode(510400);
-                    complaint.setReportUserName(systemUser.getName());
-                    complaint.setReportUserPhone(systemUser.getPhone());
-                    break;
                 case 2:
                     //区县级
                     complaint.setCityCode(510400);
@@ -175,15 +171,25 @@
 //            }
         } 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.setSuperiorId(partyMember.getCommunityId());
+            if(partyMember!=null){
+                //党员
+                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.setSuperiorId(partyMember.getCommunityId());
+            }else {
+                complaint.setDistrictsCode(Integer.valueOf(loginUserInfoVO.getAreaCode()));
+                complaint.setStreetId(loginUserInfoVO.getStreetId());
+                complaint.setCommunityId(loginUserInfoVO.getCommunityId());
+                complaint.setReportUserName(loginUserInfoVO.getName());
+                complaint.setReportUserPhone(loginUserInfoVO.getPhone());
+                complaint.setSuperiorId(loginUserInfoVO.getCommunityId());
+            }
+
 
             // 添加处理人
 //            SystemUser one = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getAccountLevel, 4).eq(SystemUser::getIsDeptAdmin, 1).eq(SystemUser::getCommunityId, partyMember.getCommunityId()).ne(SystemUser::getStatus, 3));
@@ -211,6 +217,7 @@
             throw new ServiceException("工单事项未配置,请联系管理员");
         }
         complaint.setNowLevelTime(new Date());
+        complaint.setNowLevelSms(0);
         // 保存诉求记录
         save(complaint);
     }
@@ -282,7 +289,11 @@
             systemUser = null;
             //党员
             PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
-            targetId = partyMember.getCommunityId();
+            if(partyMember!=null){
+                targetId = partyMember.getCommunityId();
+            }else {
+                targetId = loginUserInfoVO.getCommunityId();
+            }
         }
         //查询对应诉求
         //page = baseMapper.selectComplaintPage(page, query, targetId, isSuperior);
@@ -295,15 +306,16 @@
                 // 是管理员 看所有的
                 page = baseMapper.selectComplaintPage3(page, query, accountLevel, targetId);
             } else {
-
                 // 不是管理员 看到指派给我的单位的诉求
                 page = baseMapper.selectComplaintPage4(page, query, systemUser.getOneDepartmentId());
             }
         } else if (accountLevel == 3) {
             // 街道 1
             if (systemUser.getSystemRoleId() == 1) {
+                // 获取这个街道所管的社区id
+                List<Long> communityIds = comActService.list(new LambdaQueryWrapper<ComAct>().eq(ComAct::getStreetId,systemUser.getStreetId())).stream().map(ComAct::getCommunityId).collect(Collectors.toList());
                 // 是管理员 可以看到下派来的  也可以看到上派待审核的
-                page = baseMapper.selectComplaintPage5(page, query, systemUser.getStreetId(), null);
+                page = baseMapper.selectComplaintPage5(page, query, systemUser.getStreetId(), communityIds);
             } else {
                 // 不是管理员 看指派给我的
                 page = baseMapper.selectComplaintPage4(page, query, systemUser.getOneDepartmentId());
@@ -320,7 +332,58 @@
             }
         }
 
+
+        Date date = new Date();
+        WorkOrderItemConfig config = workOrderItemConfigService.getById(1);
         for (ComplaintVO record : page.getRecords()) {
+
+            // 处理页面颜色展示和倒计时
+            Date nowLevelTime = record.getNowLevelTime();
+            if(record.getNowLevel()==2){
+                Integer HandlingTime = config.getDistrictHandlingTime();
+                Integer DeadlineReminder = config.getDistrictDeadlineReminder();
+                // 判断是超时 还是  临期
+                if (nowLevelTime.getTime()  + HandlingTime * 24 * 60 * 60 * 1000< date.getTime()) {
+                    record.setRemindStatus(2);
+                }else if (nowLevelTime.getTime() + DeadlineReminder * 24 * 60 * 60 * 1000 < date.getTime()) {
+                    record.setRemindStatus(1);
+                }
+                long l = nowLevelTime.getTime() + HandlingTime * 24 * 60 * 60 * 1000 - date.getTime();
+                double days = (double) l / (24 * 60 * 60 * 1000); // 毫秒转天数
+                BigDecimal result = new BigDecimal(days).setScale(1, RoundingMode.HALF_UP); // 保留1位小数
+                record.setRemindTime(result.doubleValue());
+            }else if(record.getNowLevel()==3){
+                Integer HandlingTime = config.getStreetHandlingTime();
+                Integer DeadlineReminder = config.getStreetDeadlineReminder();
+                // 判断是超时 还是  临期
+                if (nowLevelTime.getTime()  + HandlingTime * 24 * 60 * 60 * 1000< date.getTime()) {
+                    record.setRemindStatus(2);
+                }else if (nowLevelTime.getTime() + DeadlineReminder * 24 * 60 * 60 * 1000 < date.getTime()) {
+                    record.setRemindStatus(1);
+                }
+                long l = nowLevelTime.getTime() + HandlingTime * 24 * 60 * 60 * 1000 - date.getTime();
+                double days = (double) l / (24 * 60 * 60 * 1000); // 毫秒转天数
+                BigDecimal result = new BigDecimal(days).setScale(1, RoundingMode.HALF_UP); // 保留1位小数
+                record.setRemindTime(result.doubleValue());
+            } else if(record.getNowLevel()==4){
+                Integer HandlingTime = config.getCommunityHandlingTime();
+                Integer DeadlineReminder = config.getCommunityDeadlineReminder();
+                // 判断是超时 还是  临期
+                if (nowLevelTime.getTime()  + HandlingTime * 24 * 60 * 60 * 1000< date.getTime()) {
+                    record.setRemindStatus(2);
+                }else if (nowLevelTime.getTime() + DeadlineReminder * 24 * 60 * 60 * 1000 < date.getTime()) {
+                    record.setRemindStatus(1);
+                }
+                long l = nowLevelTime.getTime() + HandlingTime * 24 * 60 * 60 * 1000 - date.getTime();
+                double days = (double) l / (24 * 60 * 60 * 1000); // 毫秒转天数
+                BigDecimal result = new BigDecimal(days).setScale(1, RoundingMode.HALF_UP); // 保留1位小数
+                record.setRemindTime(result.doubleValue());
+            }
+
+
+
+
+
             int count = complaintCommentService.count(new LambdaQueryWrapper<ComplaintComment>().eq(ComplaintComment::getComplaintId, record.getId()));
             if (count > 0) {
                 record.setEvaluateButtonStatus(1);
@@ -614,7 +677,12 @@
         } else {
             //党员
             PartyMember partyMember = partyMemberService.getPartyMemberByPhone(loginUserInfoVO.getPhone());
-            targetId = partyMember.getId().toString();
+            if(partyMember!=null){
+                targetId = partyMember.getId().toString();
+            }else {
+                targetId =loginUserInfoVO.getUserId().toString();
+            }
+
         }
         // 更新状态 此时status是表中的状态 未做变动
         // 如果是区级
@@ -631,7 +699,7 @@
                     }
                 }
                 if (detail.getFirstStatus() == 0) {
-                    detail.setStatus(-2);
+                    detail.setStatus(5);
                 }
 
             }
@@ -646,7 +714,7 @@
                     }
                 }
                 if (detail.getFirstStatus() == 0) {
-                    detail.setStatus(-2);
+                    detail.setStatus(5);
                 }
             }
             if (systemUser.getAccountLevel() == 4) {
@@ -660,14 +728,14 @@
                     }
                 }
                 if (detail.getFirstStatus() == 0) {
-                    detail.setStatus(-2);
+                    detail.setStatus(5);
                 }
             }
         } else {
             if (detail.getFirstStatus() == 1 && detail.getStatus() != 3  && detail.getStatus() != 8) {
                 detail.setStatus(0);
             } else if(detail.getFirstStatus()==0){
-                detail.setStatus(-2);
+                detail.setStatus(5);
             }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 3  ){
                 detail.setStatus(3);
             }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 8){
@@ -676,8 +744,8 @@
         }
 
 
-        if (detail.getStatus().equals(0)) {
-            List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByAsc(ComplaintFlow::getSort).list();
+        if (true) {
+            List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByDesc(ComplaintFlow::getCreateTime).orderByAsc(ComplaintFlow::getType).list();
             detail.setComplaintFlows(list);
         }
         //查询办理进度
@@ -724,14 +792,14 @@
         if (detail.getFirstStatus() == 1 && detail.getStatus() != 3  && detail.getStatus() != 8) {
             detail.setStatus(0);
         } else if(detail.getFirstStatus()==0){
-            detail.setStatus(-2);
+            detail.setStatus(5);
         }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 3  ){
             detail.setStatus(3);
         }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 8){
             detail.setStatus(8);
         }
 
-        List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByAsc(ComplaintFlow::getSort).list();
+        List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByDesc(ComplaintFlow::getCreateTime).orderByAsc(ComplaintFlow::getType).list();
         detail.setComplaintFlows(list);
         //查询办理进度
         List<ComplaintProgress> list1 = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id)
@@ -824,6 +892,16 @@
         double handlingDay = new BigDecimal(l).divide(new BigDecimal("24"), 2, RoundingMode.HALF_UP).doubleValue();
         complaint.setHandlingDay(handlingDay);
         this.updateById(complaint);
+
+        if(dto.getStatus()==3){
+            // 发送短信
+            Long createBy = complaint.getCreateBy();
+
+            String phone = systemUserService.getCreateByIdPhone(createBy);
+            if(StringUtils.isNotEmpty(phone)){
+                AliSmsUtil.sendSuccessMessage(phone);
+            }
+        }
     }
 
     /**
@@ -935,6 +1013,7 @@
         complaint.setLastLevel(nowLevel + 1);
         complaint.setAssignStatus(0);
         complaint.setNowLevelTime(new Date());
+        complaint.setNowLevelSms(0);
         updateById(complaint);
 
         // 标记最新
@@ -1080,6 +1159,7 @@
         complaint.setNowLevel(nowLevel);
         complaint.setLastLevel(nowLevel);
         complaint.setNowLevelTime(new Date());
+        complaint.setNowLevelSms(0);
         this.updateById(complaint);
 
         complaintAuditRecord.setSuperiorId(superiorId);
@@ -1145,6 +1225,9 @@
             complaintAuditRecord2.setReportType(complaintAuditRecord.getReporterLevel());
             complaintFlowService.createFlow(complaintAuditRecord2, 0, loginUserInfoVO.getUserId());
 
+
+
+
             // 通过修改状态  已经修改superiorId  和层级  不需要修改 superiorId
             Complaint complaint = this.getById(complaintReporAuditDTO.getId());
             complaint.setAssignPersonId(complaintReporAuditDTO.getDeptId());
@@ -1153,8 +1236,25 @@
             complaint.setLastLevel(complaint.getNowLevel());
             complaint.setRemark(complaintReporAuditDTO.getRemark());
             complaint.setNowLevelTime(new Date());
-            this.updateById(complaint);
+            complaint.setNowLevelSms(0);
 
+            // 分配流转
+            ComplaintFlow complaintFlow = new ComplaintFlow();
+            complaintFlow.setComplaintId(complaintReporAuditDTO.getId());
+            complaintFlow.setLevel(complaintAuditRecord.getReporterLevel());
+            Department byId = departmentService.getById(complaintReporAuditDTO.getDeptId());
+            complaintFlow.setName(byId.getName());
+            complaintFlow.setType(1);
+            complaintFlow.setCreateTime(new Date(System.currentTimeMillis()+1000));
+            complaintFlowService.save(complaintFlow);
+
+
+            this.updateById(complaint);
+            List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, complaintReporAuditDTO.getDeptId()).eq(SystemUser::getSystemRoleId, 1).eq(SystemUser::getStatus, 1));
+            if(!list.isEmpty()){
+                List<String> phoneList = list.stream().map(SystemUser::getPhone).collect(Collectors.toList());
+                AliSmsUtil.sendAssignMessageAdmin(phoneList,complaint.getSerialNumber());
+            }
 
         } else {
             complaintAuditRecord.setRejectReason(complaintReporAuditDTO.getRejectReason());
@@ -1169,6 +1269,7 @@
             complaint.setSuperiorId(complaint.getLastSuperiorId());
             complaint.setNowLevel(complaint.getLastLevel());
             complaint.setNowLevelTime(new Date());
+            complaint.setNowLevelSms(0);
             this.updateById(complaint);
 
         }
@@ -2013,7 +2114,25 @@
             complaint.setAssignStatus(1);
             complaint.setRemark(remark);
             complaint.setNowLevelTime(new Date());
+            complaint.setNowLevelSms(0);
             baseMapper.updateById(complaint);
+
+            Department department = departmentService.getById(userId);
+            ComplaintFlow complaintFlow = new ComplaintFlow();
+            complaintFlow.setComplaintId(complainId);
+            complaintFlow.setLevel(complaint.getNowLevel());
+            complaintFlow.setName(department.getName());
+            complaintFlow.setCreateTime(new Date());
+            complaintFlow.setType(1);
+            complaintFlowService.save(complaintFlow);
+
+
+            List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, userId).eq(SystemUser::getSystemRoleId, 1).eq(SystemUser::getStatus, 1));
+            if(!list.isEmpty()){
+                List<String> phoneList = list.stream().map(SystemUser::getPhone).collect(Collectors.toList());
+                AliSmsUtil.sendAssignMessageAdmin(phoneList,complaint.getSerialNumber());
+            }
+
         } else {
             throw new ServiceException("你没有分配权限");
         }
@@ -2027,15 +2146,13 @@
         // 已分派了的
         Page<ComplaintVO> page = new Page<>(query.getPageNum(), query.getPageSize());
 
-        String address = this.baseMapper.getHouseAddressFromId(query.getHouseId());
-        query.setAddress(address);
         page = baseMapper.pageScreenList(page, query);
 
         page.getRecords().forEach(detail -> {
             if (detail.getFirstStatus() == 1 && detail.getStatus() != 3  && detail.getStatus() != 8) {
                 detail.setStatus(0);
             } else if(detail.getFirstStatus()==0){
-                detail.setStatus(-2);
+                detail.setStatus(5);
             }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 3  ){
                 detail.setStatus(3);
             }else if(detail.getFirstStatus() == 1 && detail.getStatus() == 8){

--
Gitblit v1.7.1