springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/api/DepartmentController.java
@@ -158,6 +158,30 @@ return R.fail("单位名称重复。"); } departmentService.updateById(department); List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, department.getId())); if(!list.isEmpty()) { if (department.getTier() == 2) { list.stream().forEach(e -> { e.setAccountLevel(department.getTier()); e.setCommunity(null); e.setCommunityId(null); e.setStreet(null); e.setStreetId(null); }); } else if (department.getTier() == 3) { list.stream().forEach(e -> { e.setAccountLevel(department.getTier()); e.setCommunity(null); e.setCommunityId(null); }); } else if (department.getTier() == 4) { list.stream().forEach(e -> { e.setAccountLevel(department.getTier()); }); } systemUserService.updateBatchById(list); } return R.ok(); } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/controller/ComplaintController.java
@@ -126,6 +126,10 @@ @PostMapping("/save-process") @ApiOperation("办理进度录入") public R<?> saveProcess(@Valid @RequestBody ComplaintProcessDTO dto){ Complaint byId = complaintService.getById(dto.getComplaintId()); if(byId.getAssignStatus()==0){ return R.fail("该诉求未分配"); } complaintService.saveProcess(dto,getLoginUserInfo()); return R.ok(); } @@ -149,6 +153,12 @@ @PostMapping("/report") @ApiOperation(value = "问题上报") public R<?> report(@RequestBody ComplaintReportDTO complaintReportDTO) { Complaint byId = complaintService.getById(complaintReportDTO.getComplaintId()); if(byId.getAssignStatus()==0){ return R.fail("该诉求未分配"); } complaintService.saveReport(complaintReportDTO, getLoginUserInfo()); return R.ok(); } @@ -170,6 +180,10 @@ @PostMapping("/saveDelay") @ApiOperation(value = "延期申请") public R<?> saveDelay(@Valid @RequestBody ComplaintDelayDTO dto){ Complaint byId = complaintService.getById(dto.getComplaintId()); if(byId.getAssignStatus()==0){ return R.fail("该诉求未分配"); } complaintService.saveDelay(dto, getLoginUserInfo()); return R.ok(); } @@ -222,7 +236,9 @@ @PostMapping("/assignComplain") @ApiOperation(value = "分配诉求") public R<?> assignComplain(@Valid@RequestBody AssignComplainDto dto) { complaintService.assignComplain(getLoginUserInfo(),dto.getComplainId(),dto.getDeptId(),dto.getRemark()); return R.ok(); } @@ -291,6 +307,7 @@ complaint1.setCompletionOtherDescription(null); complaint1.setRemark(null); complaint1.setNowLevelTime(new Date()); complaint1.setNowLevelSms(0); complaint1.setRedispatch(1); complaintService.save(complaint1); } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/dao/ComplaintMapper.java
@@ -123,7 +123,7 @@ Page<ComplaintVO> selectComplaintPage4(@Param("page") Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("oneDepartmentId") Integer oneDepartmentId); Page<ComplaintVO> selectComplaintPage5(@Param("page") Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("streetId") String streetId,@Param("ids") List<Integer> ids); Page<ComplaintVO> selectComplaintPage5(@Param("page") Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("streetId") String streetId,@Param("ids") List<Long> ids); Page<ComplaintVO> selectComplaintPage6(@Param("page") Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("communityId") Long communityId, @Param("ids") List<Integer> ids); springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/dao/SystemUserMapper.java
@@ -48,4 +48,7 @@ * @return */ List<RegionVO> getCommunity(@Param("streetId") String streetId); String getCreateByIdPhone(@Param("createBy") Long createBy); } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/model/dto/ComplaintCompletionDTO.java
@@ -32,4 +32,7 @@ @ApiModelProperty(value = "办理结果其他说明") private String completionOtherDescription; @ApiModelProperty(value = "大屏对应houseid") private Long houseId; } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/model/dto/ComplaintTimeout.java
@@ -7,11 +7,21 @@ @Data public class ComplaintTimeout { private Long complaintId; private String title; // private String title; private Long createBy; private Integer reportType; private Integer superiorId; private Long superiorId; private Date closingTime; private Integer nowLevel; private Integer assignStatus; /** * assignStatus =1 assignPersonId为部门id */ private Integer assignPersonId; private String serialNumber; } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/model/entity/Complaint.java
@@ -260,4 +260,13 @@ @ApiModelProperty("是否重新派单 0否 1是") @TableField("redispatch") private Integer redispatch; @ApiModelProperty("是否发送短信 0否 1是") @TableField("now_level_sms") private Integer nowLevelSms; @TableField("house_id") private Long houseId; } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/model/entity/ComplaintFlow.java
@@ -52,7 +52,7 @@ @TableField("create_time") private Date createTime; @ApiModelProperty(value = "流转类型 0-上报 1-下派") @ApiModelProperty(value = "流转类型 0-上报 1-分派") @TableField("type") private Integer type; springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/model/vo/ComplaintVO.java
@@ -100,6 +100,12 @@ @ApiModelProperty(value = "已上报次数") private Integer reportCount; @ApiModelProperty(value = "提醒状态 0正常 1临期 2超时") private Integer remindStatus=0; @ApiModelProperty(value = "提醒倒计时") private Double remindTime; } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/scheduled/ComplaintTasks.java
@@ -1,6 +1,7 @@ package com.panzhihua.westcommittee.scheduled; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.panzhihua.common.exceptions.ServiceException; import com.panzhihua.common.model.vos.LoginUserInfoVO; import com.panzhihua.common.model.vos.R; @@ -28,14 +29,13 @@ private final ComplaintAuditRecordMapper complaintAuditRecordMapper; private final IWorkOrderItemConfigService workOrderItemConfigService; private final ISystemUserService systemUserService;; private final UserService userService; private final IMessageNotificationService messageNotificationService; private final IDepartmentService departmentService; private final IComplaintCommentService complaintCommentService; /** * 诉求超时处理(每天凌晨两点执行) */ // @Scheduled(cron = "0 0 2 * * ?") @Scheduled(fixedRate = 600000) public void complaintTimeout() { WorkOrderItemConfig config = workOrderItemConfigService.getById(1); @@ -78,7 +78,7 @@ /** * 自动完成诉求评价 */ // @Scheduled(cron = "0 1 0 * * ?") @Scheduled(cron = "0 1 0 * * ?") public void automaticEvaluation() { // 诉求超时提醒 List<Complaint> complaintList = complaintService.getTimeoutAndNotComment(); @@ -111,49 +111,182 @@ // 区县超时 List<ComplaintTimeout> districtTimeOutList = timeOutMap.get(2); if (!CollectionUtils.isEmpty(districtTimeOutList)){ districtTimeOutList.forEach(complaintTimeout -> { // 查询状态正常 是区纪委和管理员 List<SystemUser> districtUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 2) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); List<String> districtPhoneList = districtUserList.stream().map(SystemUser::getPhone).collect(Collectors.toList()); // 没有分配的 需要发给层级管理员和纪委 List<ComplaintTimeout> collect = districtTimeOutList.stream().filter(e -> e.getAssignStatus() == 0).collect(Collectors.toList()); // 查询状态正常 是区纪委和管理员 List<SystemUser> districtUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 2) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); List<String> districtPhoneList = districtUserList.stream().filter(e->e.getSystemRoleId()==1).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> districtPhoneList1 = districtUserList.stream().filter(e->e.getSystemRoleId()==2).map(SystemUser::getPhone).collect(Collectors.toList()); collect.forEach(complaintTimeout -> { // 发送短信 AliSmsUtil.sendTimeoutMessage(districtPhoneList,complaintTimeout.getTitle()); if(!districtPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(districtPhoneList,complaintTimeout.getSerialNumber()); } if(!districtPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(districtPhoneList1,complaintTimeout.getSerialNumber()); } }); // 分配了 查询是否有管理员 没有找层级管理员 List<ComplaintTimeout> collect1 = districtTimeOutList.stream().filter(e -> e.getAssignStatus() == 1).collect(Collectors.toList()); if(!collect1.isEmpty()){ // 分配的单位id List<Integer> deptIds = collect1.stream().map(ComplaintTimeout::getAssignPersonId).collect(Collectors.toList()); // 这些单位的管理员 List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().in(SystemUser::getOneDepartmentId, deptIds).in(SystemUser::getSystemRoleId,1,2).eq(SystemUser::getStatus,1)); collect1.forEach(complaintTimeout -> { // 当前单位的管理员 List<SystemUser> systemUsers = list.stream().filter(e -> e.getOneDepartmentId().equals(complaintTimeout.getAssignPersonId())).collect(Collectors.toList()); if(!systemUsers.isEmpty()){ // 找出当前单位的管理员 纪委 List<String> districtPhoneList2 = systemUsers.stream().filter(e->e.getSystemRoleId()==1).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> districtPhoneList3 = systemUsers.stream().filter(e->e.getSystemRoleId()==2).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!districtPhoneList2.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(districtPhoneList2,complaintTimeout.getSerialNumber()); } if(!districtPhoneList3.isEmpty()){ AliSmsUtil.sendTimeoutMessage(districtPhoneList3,complaintTimeout.getSerialNumber()); } }else { // 发送短信 if(!districtPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(districtPhoneList,complaintTimeout.getSerialNumber()); } if(!districtPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(districtPhoneList1,complaintTimeout.getSerialNumber()); } } }); } } // 街道超时 List<ComplaintTimeout> streetTimeOutList = timeOutMap.get(3); if (!CollectionUtils.isEmpty(streetTimeOutList)){ streetTimeOutList.forEach(complaintTimeout -> { List<SystemUser> streetUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 3) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); List<String> streetPhoneList = streetUserList.stream().map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 AliSmsUtil.sendTimeoutMessage(streetPhoneList,complaintTimeout.getTitle()); // 没有分配的 需要发给层级管理员和纪委 List<ComplaintTimeout> collect = streetTimeOutList.stream().filter(e -> e.getAssignStatus() == 0).collect(Collectors.toList()); List<SystemUser> streetUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 3) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); collect.forEach(complaintTimeout -> { List<String> streetPhoneList = streetUserList.stream().filter(e->e.getSystemRoleId()==1 && e.getStreetId().equals(complaintTimeout.getSuperiorId().toString())).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> streetPhoneList1 = streetUserList.stream().filter(e->e.getSystemRoleId()==2 && e.getStreetId().equals(complaintTimeout.getSuperiorId().toString())).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!streetPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(streetPhoneList,complaintTimeout.getSerialNumber()); } if(!streetPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(streetPhoneList1,complaintTimeout.getSerialNumber()); } }); // 分配了 List<ComplaintTimeout> collect1 = streetTimeOutList.stream().filter(e -> e.getAssignStatus() == 1).collect(Collectors.toList()); if(!collect1.isEmpty()){ List<Integer> deptIds = collect1.stream().map(ComplaintTimeout::getAssignPersonId).collect(Collectors.toList()); List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().in(SystemUser::getOneDepartmentId, deptIds).in(SystemUser::getSystemRoleId,1,2).eq(SystemUser::getStatus,1)); collect1.forEach(complaintTimeout -> { List<SystemUser> systemUsers = list.stream().filter(e -> e.getOneDepartmentId().equals(complaintTimeout.getAssignPersonId())).collect(Collectors.toList()); if(!systemUsers.isEmpty()){ List<String> streetPhoneList2 = systemUsers.stream().filter(e->e.getSystemRoleId()==1).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> streetPhoneList3 = systemUsers.stream().filter(e->e.getSystemRoleId()==2).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!streetPhoneList2.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(streetPhoneList2,complaintTimeout.getSerialNumber()); } if(!streetPhoneList3.isEmpty()){ AliSmsUtil.sendTimeoutMessage(streetPhoneList3,complaintTimeout.getSerialNumber()); } }else { List<String> streetPhoneList = streetUserList.stream().filter(e->e.getSystemRoleId()==1 && e.getStreetId().equals(complaintTimeout.getSuperiorId().toString())).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> streetPhoneList1 = streetUserList.stream().filter(e->e.getSystemRoleId()==2 && e.getStreetId().equals(complaintTimeout.getSuperiorId().toString())).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!streetPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(streetPhoneList,complaintTimeout.getSerialNumber()); } if(!streetPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(streetPhoneList1,complaintTimeout.getSerialNumber()); } } }); } } // 社区超时 List<ComplaintTimeout> communityTimeOutList = timeOutMap.get(4); if (!CollectionUtils.isEmpty(communityTimeOutList)){ communityTimeOutList.forEach(complaintTimeout -> { List<SystemUser> communityUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 4) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); List<String> communityPhoneList = communityUserList.stream().map(SystemUser::getPhone).collect(Collectors.toList()); List<ComplaintTimeout> collect = communityTimeOutList.stream().filter(e -> e.getAssignStatus() == 0).collect(Collectors.toList()); List<SystemUser> communityUserList = systemUserService.list(new LambdaQueryWrapper<SystemUser>() .eq(SystemUser::getAccountLevel, 4) .in(SystemUser::getSystemRoleId,1,2) .eq(SystemUser::getStatus, 1)); collect.forEach(complaintTimeout -> { List<String> communityPhoneList = communityUserList.stream().filter(e->e.getSystemRoleId()==1 && e.getCommunityId().equals(complaintTimeout.getSuperiorId())).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> communityPhoneList1 = communityUserList.stream().filter(e->e.getSystemRoleId()==2 && e.getCommunityId().equals(complaintTimeout.getSuperiorId())).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 AliSmsUtil.sendTimeoutMessage(communityPhoneList,complaintTimeout.getTitle()); if(!communityPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(communityPhoneList, complaintTimeout.getSerialNumber()); } if(!communityPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(communityPhoneList1,complaintTimeout.getSerialNumber()); } }); // 分配了 List<ComplaintTimeout> collect1 = communityTimeOutList.stream().filter(e -> e.getAssignStatus() == 1).collect(Collectors.toList()); if(!collect1.isEmpty()){ List<Integer> deptIds = collect1.stream().map(ComplaintTimeout::getAssignPersonId).collect(Collectors.toList()); List<SystemUser> list = systemUserService.list(new LambdaQueryWrapper<SystemUser>().in(SystemUser::getOneDepartmentId, deptIds).in(SystemUser::getSystemRoleId,1,2).eq(SystemUser::getStatus,1)); collect1.forEach(complaintTimeout -> { List<SystemUser> systemUsers = list.stream().filter(e -> e.getOneDepartmentId().equals(complaintTimeout.getAssignPersonId())).collect(Collectors.toList()); if(!systemUsers.isEmpty()){ List<String> communityPhoneList2 = systemUsers.stream().filter(e->e.getSystemRoleId()==1).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> communityPhoneList3 = systemUsers.stream().filter(e->e.getSystemRoleId()==2).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!communityPhoneList2.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(communityPhoneList2, complaintTimeout.getSerialNumber()); } if(!communityPhoneList3.isEmpty()){ AliSmsUtil.sendTimeoutMessage(communityPhoneList3,complaintTimeout.getSerialNumber()); } }else { List<String> communityPhoneList = communityUserList.stream().filter(e->e.getSystemRoleId()==1 && e.getCommunityId().equals(complaintTimeout.getSuperiorId())).map(SystemUser::getPhone).collect(Collectors.toList()); List<String> communityPhoneList1 = communityUserList.stream().filter(e->e.getSystemRoleId()==2 && e.getCommunityId().equals(complaintTimeout.getSuperiorId())).map(SystemUser::getPhone).collect(Collectors.toList()); // 发送短信 if(!communityPhoneList.isEmpty()){ AliSmsUtil.sendTimeoutMessageAdmin(communityPhoneList, complaintTimeout.getSerialNumber()); } if(!communityPhoneList1.isEmpty()){ AliSmsUtil.sendTimeoutMessage(communityPhoneList1,complaintTimeout.getSerialNumber()); } } }); } } if(!complaintTimeoutList.isEmpty()) { // 短信发送完成 当前不在发送 complaintService.update(new LambdaUpdateWrapper<Complaint>().in(Complaint::getId, complaintTimeoutList.stream().map(ComplaintTimeout::getComplaintId).collect(Collectors.toList())).set(Complaint::getNowLevelSms, 1)); } } } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/ISystemUserService.java
@@ -66,4 +66,6 @@ */ List<RegionVO> getRegionTree(SystemUserVo loginUserInfo); String getCreateByIdPhone(Long createBy); } 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){ springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/IdentityInformationServiceImpl.java
@@ -209,19 +209,15 @@ if (isFrozen) { throw new ServiceException("您的账号已被冻结,请联系管理员"); } List<PermissionsVO> permissions = identityInformation.getPermissions(); if (CollectionUtil.isEmpty(permissions) || Objects.isNull(identityInformation.getIdentity())){ throw new ServiceException("请先完成认证"); } SystemUser systemUser = identityInformation.getSystemUser(); if (identityInformation.getIdentity() == 2 && Objects.isNull(systemUser)) { throw new ServiceException("管理员信息不存在"); } PartyMember partyMember = identityInformation.getPartyMember(); if (identityInformation.getIdentity() == 1 && Objects.isNull(partyMember)) { throw new ServiceException("党员信息不存在"); } // PartyMember partyMember = identityInformation.getPartyMember(); // if (identityInformation.getIdentity() == 1 && Objects.isNull(partyMember)) { // throw new ServiceException("党员信息不存在"); // } return identityInformation; } } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/SystemMenuServiceImpl.java
@@ -20,7 +20,7 @@ @Override public List<SystemMenu> getSystemMenuList() { List<SystemMenu> list = this.list(); List<SystemMenu> collect = list.stream().filter(s->s.getParentId() == 0 && s.getId()==1).collect(Collectors.toList()); List<SystemMenu> collect = list.stream().filter(s->s.getParentId() == 0 && (s.getId()==1 || s.getId()==2)).collect(Collectors.toList()); for (SystemMenu systemMenu : collect) { build(systemMenu, list); } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/service/impl/SystemUserServiceImpl.java
@@ -116,7 +116,7 @@ * @return */ @Override public List<RegionVO> getRegionTree(SystemUserVo loginUserInfo) { public List<RegionVO> getRegionTree(SystemUserVo loginUserInfo) { log.info("getRegionTree入参:{}",JSONObject.toJSONString(loginUserInfo)); SystemUser systemUser = getById(loginUserInfo.getId()); Integer accountLevel = systemUser.getAccountLevel(); @@ -170,4 +170,9 @@ return regionTree; } @Override public String getCreateByIdPhone(Long createBy) { return this.baseMapper.getCreateByIdPhone(createBy); } } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/java/com/panzhihua/westcommittee/utils/AliSmsUtil.java
@@ -11,19 +11,28 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; @Slf4j public class AliSmsUtil { private static final String ACCESS_KEY_ID = "LTAI5t8EwfjWRWs7tJGimAQG"; private static final String ACCESS_KEY_SECRET = "UjuTDcXO14dSQ7STg8Pf3idjLqwx1M"; private static final String SIGN_NAME = "花城e十"; private static final String TIME_OUT_TEMPLATE_CODE = "SMS_479120493"; private static final String SIGN_NAME = "攀枝花市西区玉泉街道"; // 管理员模板 private static final String TIME_OUT_TEMPLATE_CODE_ADMIN = "SMS_488715181"; // 纪委模板 private static final String TIME_OUT_TEMPLATE_CODE = "SMS_488700190"; // 分派模板 private static final String ASSIGN_TEMPLATE_CODE = "SMS_488670038"; // 办结模板 private static final String SUCCESS_TEMPLATE_CODE = "SMS_488650016"; private static final String EXPIRE_TEMPLATE_CODE = "SMS_479510160"; /** * 发送诉求超时提醒短信 @@ -33,8 +42,19 @@ public static void sendTimeoutMessage(List<String> phoneList, String title) { Map<String, String> param = new HashMap<>(3); param.put("title", title); param.put("nomber", title); sendBatchSms(phoneList, SIGN_NAME, TIME_OUT_TEMPLATE_CODE, param); } public static void sendTimeoutMessageAdmin(List<String> phoneList, String title) { Map<String, String> param = new HashMap<>(3); param.put("nomber", title); sendBatchSms(phoneList, SIGN_NAME, TIME_OUT_TEMPLATE_CODE_ADMIN, param); } public static void sendAssignMessageAdmin(List<String> phoneList, String title) { Map<String, String> param = new HashMap<>(3); sendBatchSms(phoneList, SIGN_NAME, ASSIGN_TEMPLATE_CODE, param); } /** @@ -51,7 +71,16 @@ param.put("times", String.valueOf(days)); sendBatchSms(phoneList, SIGN_NAME, EXPIRE_TEMPLATE_CODE, param); } public static void sendSuccessMessage(String phone) { Map<String, String> param = new HashMap<>(3); sendSms(phone,SIGN_NAME,SUCCESS_TEMPLATE_CODE,param); } public static void main(String[] args) { sendSuccessMessage("19915944902"); } /** * 阿里发送短信 * @@ -61,7 +90,7 @@ * @param param * @return */ private boolean sendSms(String phone, String signName, String templateCode, Map<String, String> param) { private static boolean sendSms(String phone, String signName, String templateCode, Map<String, String> param) { // 可自助调整超时时间 System.setProperty("sun.net.client.defaultConnectTimeout", "30000"); System.setProperty("sun.net.client.defaultReadTimeout", "30000"); @@ -84,6 +113,7 @@ SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest); // hint 此处可能会抛出异常,注意catch if (StringUtils.equalsIgnoreCase("ok", sendSmsResponse.getBody().getCode())) { log.info("{}短信发送成功:{}", phone, sendSmsResponse.getBody().getMessage()); return true; } else { log.error("{}短信发送失败:{}", phone, sendSmsResponse.getBody().getMessage()); @@ -140,4 +170,5 @@ return new Client(config); } } springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/resources/mapper/ComplaintAuditRecordMapper.xml
@@ -6,12 +6,15 @@ SELECT id complaintId, description_title title, serial_number serialNumber, create_by, create_time, now_level AS nowLevel now_level AS nowLevel, assign_status AS assignStatus, assign_person_id AS assignPersonId FROM west_complaint WHERE NOW() > now_level_time + INTERVAL WHERE now_level_sms = 0 and NOW() > now_level_time + INTERVAL CASE now_level WHEN 2 THEN ${districtDay} WHEN 3 THEN ${streetDay} springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/resources/mapper/ComplaintMapper.xml
@@ -215,6 +215,7 @@ sc.superior_id, sc.last_superior_id, sc.now_level, sc.now_level_time, sc.last_level, sc.assign_status, sc.first_status as firstStatus, @@ -819,9 +820,9 @@ sc.images, sc.videos, CASE WHEN sc.first_status = 1 and sc.status != 3 and sc.status != 8 and sc.first_status=1 THEN 0 WHEN sc.first_status = 1 and sc.status != 3 and sc.status != 8 THEN 0 WHEN sc.first_status = 1 and sc.status = 8 THEN 3 WHEN sc.first_status = 0 and sc.assign_status = 0 THEN -2 WHEN sc.first_status = 0 and sc.assign_status = 0 THEN 5 WHEN sc.assign_status = 0 and sc.first_status = 1 THEN -1 ELSE sc.status END AS status, @@ -848,6 +849,8 @@ sc.latitude, sc.longitude, sc.redispatch, sc.now_level, sc.now_level_time, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -916,6 +919,8 @@ sc.latitude, sc.longitude, sc.redispatch, sc.now_level, sc.now_level_time, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -934,6 +939,9 @@ ) as t1 where 1=1 <if test="query.status !=null"> and t1.status = #{query.status} </if> <if test="query.status ==null"> and t1.status >-1 </if> ORDER BY t1.create_time DESC </select> @@ -984,6 +992,8 @@ sc.latitude, sc.longitude, sc.redispatch, sc.now_level, sc.now_level_time, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -1001,10 +1011,15 @@ LEFT JOIN west_complaint_audit_record scar ON scar.complaint_id = sc.id and scar.latest_flag = 1 where (sc.superior_id =#{streetId} and 3 =sc.now_level) or (sc.last_superior_id = #{streetId} and 3 =sc.last_level) or (4 =sc.now_level) or (4 =sc.now_level and sc.superior_id in <foreach collection="ids" item="item" separator="," open="(" close=")">#{item}</foreach>) or (sc.community_id in <foreach collection="ids" item="item" separator="," open="(" close=")">#{item}</foreach>) or (sc.street_id =#{streetId}) ) as t1 where 1=1 <if test="query.status !=null"> and t1.status = #{query.status} </if> <if test="query.status ==null"> and t1.status >-1 </if> ORDER BY t1.create_time DESC </select> @@ -1052,6 +1067,8 @@ sc.latitude, sc.longitude, sc.redispatch, sc.now_level, sc.now_level_time, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -1122,6 +1139,8 @@ sc.latitude, sc.longitude, sc.redispatch, sc.now_level, sc.now_level_time, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -1139,9 +1158,13 @@ LEFT JOIN west_complaint_audit_record scar ON scar.complaint_id = sc.id and scar.latest_flag = 1 where (sc.superior_id =#{communityId} and sc.now_level=4) or (sc.last_superior_id = #{communityId} and sc.last_level=4) or (sc.community_id = #{communityId}) ) as t1 where 1=1 <if test="query.status !=null"> and t1.status = #{query.status} </if> <if test="query.status ==null"> and t1.status >-1 </if> ORDER BY t1.create_time DESC </select> @@ -1163,7 +1186,7 @@ CASE WHEN sc.first_status = 1 and sc.status != 3 and sc.status != 8 and sc.first_status=1 THEN 0 WHEN sc.first_status = 1 and sc.status = 8 THEN 3 WHEN sc.first_status = 0 and sc.assign_status = 0 THEN -2 WHEN sc.first_status = 0 and sc.assign_status = 0 THEN 5 WHEN sc.assign_status = 0 and sc.first_status = 1 THEN -1 ELSE sc.status END AS status, @@ -1189,6 +1212,7 @@ sc.over_time_days, sc.latitude, sc.longitude, sc.first_status, scar.audit_type, scar.audit_status, scar.reporter_level, @@ -1203,9 +1227,9 @@ scar.department_id FROM west_complaint sc LEFT JOIN west_complaint_audit_record scar ON scar.complaint_id = sc.id and scar.latest_flag = 1 WHERE sc.detailed_address =#{query.address} WHERE sc.house_id =#{query.houseId} ) as t1 where 1=1 <if test="query.problemType !=null"> <if test="query.problemType !=null and query.problemType !=''"> and t1.problem_type = #{query.problemType} </if> ORDER BY t1.create_time DESC @@ -1218,6 +1242,6 @@ </if> </select> <select id="getHouseAddressFromId" resultType="java.lang.String"> select address from com_mng_population_house where id=#{id} select address from com_mng_population_house where id=#{houseId} </select> </mapper> springcloud_k8s_panzhihuazhihuishequ/service_westcommittee/src/main/resources/mapper/SystemUserMapper.xml
@@ -50,5 +50,9 @@ <select id="getCommunity" resultType="com.panzhihua.westcommittee.model.vo.RegionVO"> select CAST(community_id AS CHAR) as id, name as name from com_act where street_id = #{streetId} </select> <select id="getCreateByIdPhone" resultType="java.lang.String"> select phone from sys_user where id = #{createBy} </select> </mapper>