diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java index 4b7659e23..ca5a5be2e 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysUserController.java @@ -322,4 +322,28 @@ public class SysUserController { return new Result(); } + /** + * @Description: 根据部门id,查询部门下的所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + @GetMapping("getUserPhoneByListDeptId") + public Result> getUserPhoneByListDeptId(@RequestBody List deptId){ + return sysUserService.getUserPhoneByListDeptId(deptId); + } + + /** + * @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + @GetMapping("getSysGridLeaderPhone/{deptId}") + public Result> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId){ + return sysUserService.getSysGridLeaderPhone(deptId); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java index 193360ec2..d7902e7d9 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/SysUserDao.java @@ -87,4 +87,22 @@ public interface SysUserDao extends BaseDao { * 退出登录 */ void updateUserOpenId(@Param("userId") Long userId); + + /** + * @Description: 根据部门id,查询部门下的所有用户手机号 + * @Param: [map] + * @return: java.util.List + * @Author: zy + * @Date: 2020-01-09 + */ + List getUserPhoneByListDeptId(Map deptId); + + /** + * @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 + * @Param: [deptId] + * @return: java.util.List + * @Author: zy + * @Date: 2020-01-09 + */ + List getSysGridLeaderPhone(Long deptId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java index ee21a30dc..1a3635e2f 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/SysUserService.java @@ -100,4 +100,22 @@ public interface SysUserService extends BaseService { * @return */ void updateUserOpenId(Long userId); + + /** + * @Description: 根据部门id,查询部门下的所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + Result> getUserPhoneByListDeptId(List deptId); + + /** + * @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + Result> getSysGridLeaderPhone(Long deptId); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java index a0920b77b..6ed383e10 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysUserServiceImpl.java @@ -38,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -246,5 +247,18 @@ public class SysUserServiceImpl extends BaseServiceImpl> getUserPhoneByListDeptId(List deptId) { + Map map = new HashMap<>(); + map.put("deptId",deptId); + List list = baseDao.getUserPhoneByListDeptId(map); + return new Result>().ok(list); + } + + @Override + public Result> getSysGridLeaderPhone(Long deptId) { + return new Result>().ok(baseDao.getSysGridLeaderPhone(deptId)); + } + } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml index 8aaa0643e..7397a93fb 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/SysUserDao.xml @@ -107,4 +107,39 @@ UPDATE sys_user SET open_id = '' WHERE id = #{userId} AND del_flag = 0 + + + + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java index eaca70753..28ac2f56e 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/IssueOverseeResultsTask.java @@ -1,11 +1,23 @@ package com.elink.esua.epdc.modules.async; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.constant.EventIssueItemState; +import com.elink.esua.epdc.constant.SysSmsTemplateConstant; +import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO; +import com.elink.esua.epdc.dto.events.form.EpdcEventsReviewFormDTO; import com.elink.esua.epdc.dto.form.SmsNoticeFormDTO; +import com.elink.esua.epdc.dto.item.form.ItemHandleSubmitFormDTO; +import com.elink.esua.epdc.enums.ItemHandleCategoryEnum; +import com.elink.esua.epdc.modules.feign.AdminFeignClient; import com.elink.esua.epdc.modules.feign.MessageFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.AsyncResult; import org.springframework.stereotype.Component; +import java.util.List; +import java.util.concurrent.Future; + /** * * 议题审核结果 - 发送短信 @@ -18,8 +30,11 @@ public class IssueOverseeResultsTask { @Autowired private MessageFeignClient messageFeignClient; + @Autowired + private AdminFeignClient adminFeignClient; + /** - * 议题:待回应事件 审核结果短信通知 议题发起人 + * 短信通知 关联人 * * @param smsNoticeFormDTO * @return void @@ -30,4 +45,76 @@ public class IssueOverseeResultsTask { public void sendSmsNotice(SmsNoticeFormDTO smsNoticeFormDTO) { messageFeignClient.sendSmsNotice(smsNoticeFormDTO); } + + /** + * @Description: 根据部门id,异步查询部门下的所有用户手机号 + * @Description: 根据手机号进行短信推送 + * @Param: [dto, deptId] + * @return: void + * @Author: zy + * @Date: 2020-01-09 + */ + @Async + public void getUserPhoneByListDeptId(ItemHandleSubmitFormDTO dto, List deptId){ + Result> data = adminFeignClient.getUserPhoneByListDeptId(deptId); + if (data.success() && data.getData() != null && data.getData().size() > 0) { + this.projectSmsNotification(dto, data.getData());//向部门下的,所有人员发送短信 + } + } + + /** + * @Description: 根据议题网格ID 异步查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 + * @Description: 根据手机号进行短信推送 + * @Param: [deptId] + * @return: void + * @Author: zy + * @Date: 2020-01-09 + */ + @Async + public void getSysGridLeaderPhone(Long deptId){ + Result> data = adminFeignClient.getSysGridLeaderPhone(deptId); + if (data.success() && data.getData() != null && data.getData().size() > 0) { + this.issueSmsNotification(data.getData());//短信通知 所有有菜单权限的议题审核员 + } + } + + /** + * @Description: 工作端:项目处理,发送短信 + * @Param: [dto] + * @Param: userId 用户手机号 + * @return: void + * @Author: zy + * @Date: 2020-01-08 + */ + public void projectSmsNotification(ItemHandleSubmitFormDTO dto, List userMobiles){ + // 审核操作发送短信 + SmsNoticeFormDTO sms = new SmsNoticeFormDTO(); + sms.setMobiles(userMobiles); + + if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory()){ + sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_CLOSED);// 关闭 + }else if(ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){ + sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_SETTLE);// 结案 + }else if(ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue() == dto.getHandleCategory()){ + sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_WHISTLE);// 被吹哨 + }else if(ItemHandleCategoryEnum.HANDLE_I_HANDLE.getValue() == dto.getHandleCategory()){ + sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ITEM_WHISTLE_FEEDBACK);// 回应:吹哨反馈 + } + this.sendSmsNotice(sms); + } + + /** + * @Description: 工作端:议题:议题发布短信通知 当前网格下的网格长 + * @Param: [userMobiles] 手机号列表 + * @return: void + * @Author: zy + * @Date: 2020-01-08 + */ + private void issueSmsNotification(List userMobiles){ + // 审核操作发送短信 + SmsNoticeFormDTO sms = new SmsNoticeFormDTO(); + sms.setMobiles(userMobiles); + sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_WORK_ISSUE_WAIT_REVIEW);//议题发布,状态为待审核 + this.sendSmsNotice(sms); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java index ec81bfad6..b955a02ce 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/impl/EpdcEventsServiceImpl.java @@ -106,7 +106,7 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl listOfPendingReviewEvents(Map params) { IPage page = getPage(params); @@ -156,6 +156,8 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl list = new ArrayList<>(); + list.add(eventsEntity.getMobile()); + this.issueSmsNotification(dto, list); return new Result(); } @@ -520,18 +524,17 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl list = new ArrayList<>(); - list.add(userMobiles); + private void issueSmsNotification(EpdcEventsReviewFormDTO dto, List userMobiles){ // 审核操作发送短信 SmsNoticeFormDTO sms = new SmsNoticeFormDTO(); - sms.setMobiles(list); + sms.setMobiles(userMobiles); if (EventIssueItemState.EVENT_REVIEW_PASS == dto.getEventState()) { // 审核通过 sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ISSUE_PASSED); }else { diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java index ab8c2d2c4..7ca4195e9 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/AdminFeignClient.java @@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.DeptGridPlatformDTO; import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.modules.feign.fallback.AdminFeignClientFallback; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -70,4 +71,23 @@ public interface AdminFeignClient { @GetMapping("sys/deptgridplatform/selectByDeptId/{deptId}") Result getDeptGridPlatformDTO(@PathVariable("deptId") String deptId); + /** + * @Description: 根据部门id,查询部门下的所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + @GetMapping(value ="sys/user/getUserPhoneByListDeptId", consumes = MediaType.APPLICATION_JSON_VALUE) + Result> getUserPhoneByListDeptId(List deptId); + + /** + * @Description: 根据议题网格ID查询拥有这个网格数据权限且是网格长的角色,再根据角色查出所有用户手机号 + * @Param: [deptId] + * @return: com.elink.esua.epdc.commons.tools.utils.Result> + * @Author: zy + * @Date: 2020-01-09 + */ + @GetMapping("sys/user/getSysGridLeaderPhone/{deptId}") + Result> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java index f6d9a06ef..3d260100f 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/AdminFeignClientFallback.java @@ -44,4 +44,14 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result getDeptGridPlatformDTO(String deptId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "selectByDeptId", deptId); } + + @Override + public Result> getUserPhoneByListDeptId(List deptId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserPhoneByListDeptId", deptId); + } + + @Override + public Result> getSysGridLeaderPhone(@PathVariable("deptId") Long deptId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getSysGridLeaderPhone", deptId); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java index 6c09497b7..7c773061b 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDao.java @@ -206,4 +206,13 @@ public interface ItemDao extends BaseDao { */ void deleteBatchItemHandleIds(List ids); + /** + * @Description: 根据项目id,查询当前登录人所在部门,以外的该项目关联的所有部门id + * @Param: [itemId] 项目id + * @Param: [deptId] 部门id + * @return: java.util.List + * @Author: zy + * @Date: 2020-01-09 + */ + List queryDeptIdList(String itemId, Long deptId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java index c3212bba0..4931deb04 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemServiceImpl.java @@ -85,6 +85,9 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; /** * 项目表 项目表 @@ -752,11 +755,15 @@ public class ItemServiceImpl extends BaseServiceImpl implem if(dto.getHandleImages()!= null && dto.getHandleImages().size()>0){ imgService.saveImages(dto.getHandleImages(),handleProcessEntity.getId(), ImageConstant.TYPE_IMAGE_ITEM_HANDLE); } - //项目关闭、结案-短信通知 + //居民端项目关闭、结案-短信通知 if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory() || ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){ - this.projectSmsNotification(dto,entity.getMobile()); + List list = new ArrayList<>(); + list.add(entity.getMobile()); + this.projectSmsNotification(dto,list); } + //工作端 根据不同的处理方式,进行短信通知 + this.workProjectHandle(dto); } catch (Exception e) { e.printStackTrace(); } @@ -1179,21 +1186,50 @@ public class ItemServiceImpl extends BaseServiceImpl implem } /** - * @Description: 待处理项目 关闭、结案 短信通知 项目发起人 - * @Param: [dto, userId] + * @Description: 工作端 根据项目的不同处理方式进行短信发放 + * @Param: [dto] + * @return: void + * @Author: zy + * @Date: 2020-01-09 + */ + private void workProjectHandle(ItemHandleSubmitFormDTO dto){ + UserDetail user = SecurityUser.getUser(); //获取当前登录人信息 + List deptId = new ArrayList<>(); + if(ItemHandleCategoryEnum.HANDLE_CIRCULATION_ASSISTANCE.getValue() == dto.getHandleCategory()){ + List deptList = dto.getDeptResultDTOS(); + for (int i =0; i < deptList.size(); i++) { + ItemCirculationDeptResultDTO indexDto = (ItemCirculationDeptResultDTO)deptList.get(i); + deptId.add(indexDto.getDeptId()); + } + issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//吹哨处理 向部门下的,所有人员发送短信 + } else if(ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory() || + ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){ + deptId = baseDao.queryDeptIdList(dto.getId(),user.getDeptId()); + issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//关闭/结案 当前项目的所有部门ID,下的人员发送短信,且不等于当前部门ID + } else if(ItemHandleCategoryEnum.HANDLE_I_HANDLE.getValue() == dto.getHandleCategory()){ + if (user.getTypeKey() != OrganizationTypeConstant.ORG_TYPE_GRID_PARTY){//回应 + deptId = baseDao.queryDeptIdList(dto.getId(),0L); + issueOverseeResultsTask.getUserPhoneByListDeptId(dto, deptId);//当前登录人不是网格, 做回应处理,查询当前项目下的所有部门id,做去重处理,向部门下的所有人员发送短信 + } + } + + } + + /** + * @Description: 居民端:项目处理,发送短信 + * @Param: [dto] + * @Param: userId 用户手机号 * @return: void * @Author: zy * @Date: 2020-01-08 */ - private void projectSmsNotification(ItemHandleSubmitFormDTO dto, String userMobiles){ - List list = new ArrayList<>(); - list.add(userMobiles); + public void projectSmsNotification(ItemHandleSubmitFormDTO dto, List userMobiles){ // 审核操作发送短信 SmsNoticeFormDTO sms = new SmsNoticeFormDTO(); - sms.setMobiles(list); + sms.setMobiles(userMobiles); if (ItemHandleCategoryEnum.HANDLE_CLOSE.getValue() == dto.getHandleCategory()) { // 关闭 sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ITEM_CLOSED); - }else { + }else if (ItemHandleCategoryEnum.HANDLE_CLOSING_CASE.getValue() == dto.getHandleCategory()){ //结案 sms.setSmsTemplateType(SysSmsTemplateConstant.SMS_TEMPLATE_RESIDENTS_ITEM_SETTLE); } issueOverseeResultsTask.sendSmsNotice(sms); diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml index 85c9ce825..4a390104d 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDao.xml @@ -857,4 +857,20 @@ #{id} + +