From 7527e64c39d9bfd0943565b040b97c62f0e0f642 Mon Sep 17 00:00:00 2001 From: liuchuang Date: Wed, 30 Oct 2019 16:01:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=9A=E7=BE=A4=E8=AE=AE=E4=BA=8B=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=B6=88=E6=81=AF=E6=95=B0=E6=8D=AE=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=20init?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epdc/controller/SysUserController.java | 15 +++++ .../com/elink/esua/epdc/dao/SysUserDao.java | 11 +++ .../esua/epdc/service/SysUserService.java | 11 +++ .../epdc/service/impl/SysUserServiceImpl.java | 5 ++ .../src/main/resources/mapper/SysUserDao.xml | 11 +++ .../tools/constant/ServiceConstant.java | 4 ++ .../epdc-events/epdc-events-client/pom.xml | 5 ++ .../elink/esua/epdc/dto/MenuNoticeDTO.java | 32 +++++++++ .../esua/epdc/modules/async/NewsTask.java | 39 +++++++++++ .../controller/EpdcEventsController.java | 15 +++++ .../modules/events/dao/EpdcEventsDao.java | 11 +++ .../events/service/EpdcEventsService.java | 11 +++ .../service/impl/EpdcEventsServiceImpl.java | 67 +++++++++++++++++-- .../epdc/modules/feign/AdminFeignClient.java | 24 +++++++ .../modules/feign/WebsocketFeignClient.java | 30 +++++++++ .../fallback/AdminFeignClientFallback.java | 11 +++ .../WebsocketFeignClientFallback.java | 20 ++++++ .../esua/epdc/modules/issue/dao/IssueDao.java | 11 +++ .../modules/issue/service/IssueService.java | 11 +++ .../issue/service/impl/IssueServiceImpl.java | 19 ++++++ .../esua/epdc/modules/item/dao/ItemDao.java | 22 ++++++ .../epdc/modules/item/dao/ItemDeptDao.java | 11 +++ .../modules/item/service/ItemDeptService.java | 11 +++ .../modules/item/service/ItemService.java | 22 ++++++ .../service/impl/ItemDeptServiceImpl.java | 5 ++ .../item/service/impl/ItemServiceImpl.java | 52 ++++++++++++++ .../resources/mapper/events/EpdcEventsDao.xml | 4 ++ .../main/resources/mapper/issue/IssueDao.xml | 12 ++++ .../main/resources/mapper/item/ItemDao.xml | 58 ++++++++++++++++ .../resources/mapper/item/ItemDeptDao.xml | 4 ++ .../esua/epdc/constants/MenuCodeConstant.java | 26 +++++++ 31 files changed, 586 insertions(+), 4 deletions(-) create mode 100644 esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java create mode 100644 esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java create mode 100644 esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java create mode 100644 esua-epdc/epdc-module/epdc-websocket/epdc-websocket-server/src/main/java/com/elink/esua/epdc/constants/MenuCodeConstant.java 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 56964c900..78dc1448c 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 @@ -224,4 +224,19 @@ public class SysUserController { return sysUserService.listGridWhileLeaderRegister(mobile); } + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author liuchuang + * @since 2019/10/29 17:31 + */ + @GetMapping("ids/{deptId}") + public Result> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId) { + List data = sysUserService.listOfUserIdsByDeptId(deptId); + return new Result>().ok(data); + } + } 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 5858e1e31..b889a1032 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 @@ -48,4 +48,15 @@ public interface SysUserDao extends BaseDao { * @date 2019/10/22 16:27 */ List selectListLeaderGridId(@Param("mobile") String mobile); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/29 16:18 + */ + List selectListOfUserIdsByDeptId(@Param("deptId") 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 9105d13ad..55cf6ca13 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 @@ -62,4 +62,15 @@ public interface SysUserService extends BaseService { * @date 2019/10/22 16:19 */ Result listGridWhileLeaderRegister(String mobile); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/29 16:14 + */ + List listOfUserIdsByDeptId(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 d2e970d3f..50274d6c2 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 @@ -195,4 +195,9 @@ public class SysUserServiceImpl extends BaseServiceImpl().ok(result); } + + @Override + public List listOfUserIdsByDeptId(Long deptId) { + return baseDao.selectListOfUserIdsByDeptId(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 bd6e9f3dc..8a3d50bff 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 @@ -77,4 +77,15 @@ d.create_date DESC + + diff --git a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java index fb585d6cf..c35f7343b 100644 --- a/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java +++ b/esua-epdc/epdc-commons/epdc-commons-tools/src/main/java/com/elink/esua/epdc/commons/tools/constant/ServiceConstant.java @@ -71,4 +71,8 @@ public interface ServiceConstant { * DEMO服务 */ String EPDC_DEMO_SERVER = "epdc-demo-server"; + /** + * websocket服务 + */ + String EPDC_WEBSOCKET_SERVER = "epdc-websocket-server"; } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml index 1edcaa275..68ec32a66 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/pom.xml @@ -28,6 +28,11 @@ epdc-news-client 1.0.0 + + com.esua.epdc + epdc-websocket-server + 1.0.0 + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java new file mode 100644 index 000000000..12afd25c8 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-client/src/main/java/com/elink/esua/epdc/dto/MenuNoticeDTO.java @@ -0,0 +1,32 @@ +package com.elink.esua.epdc.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * + * 菜单通知DTO + * + * @Author:liuchuang + * @Date:2019/10/29 17:03 + */ +@Data +public class MenuNoticeDTO implements Serializable { + private static final long serialVersionUID = -9183650682608160248L; + + /** + * 菜单编码 + */ + private String menuCode; + + /** + * 通知部门 + */ + private Long deptId; + + /** + * 消息数量 + */ + private Integer num; +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java index 8a43096a0..3fbf6b6d3 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/async/NewsTask.java @@ -1,11 +1,18 @@ package com.elink.esua.epdc.modules.async; +import com.elink.esua.epdc.commons.tools.utils.Result; +import com.elink.esua.epdc.dto.EventMenuNoticeDto; +import com.elink.esua.epdc.dto.MenuNoticeDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; +import com.elink.esua.epdc.modules.feign.AdminFeignClient; import com.elink.esua.epdc.modules.feign.NewsFeignClient; +import com.elink.esua.epdc.modules.feign.WebsocketFeignClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.util.List; + /** * 新闻通知消息模块 线程任务 * @@ -18,6 +25,12 @@ public class NewsTask { @Autowired private NewsFeignClient newsFeignClient; + @Autowired + private WebsocketFeignClient websocketFeignClient; + + @Autowired + private AdminFeignClient adminFeignClient; + /** * 给用户发送消息 * @@ -30,4 +43,30 @@ public class NewsTask { public void insertUserInformation(EpdcInformationFormDTO informationDto) { newsFeignClient.saveInformation(informationDto); } + + /** + * + * 党群议事-菜单消息 + * + * @params [dto] + * @return void + * @author liuchuang + * @since 2019/10/29 15:26 + */ + @Async + public void eventMenuNotice(MenuNoticeDTO menuNoticeDTO) { + // 获取部门下所有用户ID + Result> listResult = adminFeignClient.getUserIdsByDeptIds(menuNoticeDTO.getDeptId()); + EventMenuNoticeDto eventMenuNoticeDto = new EventMenuNoticeDto(); + eventMenuNoticeDto.setMenuCode(menuNoticeDTO.getMenuCode()); + eventMenuNoticeDto.setNum(menuNoticeDTO.getNum()); + if (listResult.success()) { + for (Long userId: + listResult.getData()) { + eventMenuNoticeDto.setUserId(userId.toString()); + // 给用户发送菜单消息 + websocketFeignClient.eventMenuNotice(eventMenuNoticeDto); + } + } + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java index eb1681cd1..602383c9a 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/controller/EpdcEventsController.java @@ -145,4 +145,19 @@ public class EpdcEventsController { return new Result().ok(data); } + /** + * + * 初始化党群议事菜单消息 + * + * @params [] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/30 13:43 + */ + @GetMapping("initMenuNotice") + public Result initMenuNotice() { + epdcEventsService.initMenuNotice(); + return new Result(); + } + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java index c50228021..acf532d2c 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/dao/EpdcEventsDao.java @@ -113,4 +113,15 @@ public interface EpdcEventsDao extends BaseDao { * @Date: 2019/9/17 17:44 */ EventAppDetailResultDTO selectOneOfEventDetail(String eventId); + + /** + * + * 根据网格ID 状态获取事件数量 + * + * @params [deptId, state] + * @return int + * @author liuchuang + * @since 2019/10/30 12:36 + */ + int selectCountOfDeptNotice(Long deptId, int state); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java index f1b28c38a..9239dd7c8 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/events/service/EpdcEventsService.java @@ -156,4 +156,15 @@ public interface EpdcEventsService extends BaseService { * @Date: 2019/9/17 17:36 */ Result getEventDetail(String eventId); + + /** + * + * 初始化党群议事菜单消息 + * + * @params [] + * @return void + * @author liuchuang + * @since 2019/10/30 13:43 + */ + void initMenuNotice(); } 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 e50fa8c82..27cb666c1 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 @@ -20,8 +20,8 @@ package com.elink.esua.epdc.modules.events.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; -import com.elink.esua.epdc.commons.tools.constant.Constant; import com.elink.esua.epdc.commons.tools.constant.FieldConstant; +import com.elink.esua.epdc.commons.tools.constant.OrganizationTypeConstant; import com.elink.esua.epdc.commons.tools.page.PageData; import com.elink.esua.epdc.commons.tools.security.user.SecurityUser; import com.elink.esua.epdc.commons.tools.security.user.UserDetail; @@ -30,6 +30,9 @@ import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.constant.EventIssueItemState; import com.elink.esua.epdc.constant.EventsNoticeConstant; import com.elink.esua.epdc.constant.ImageConstant; +import com.elink.esua.epdc.constants.MenuCodeConstant; +import com.elink.esua.epdc.dto.MenuNoticeDTO; +import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.events.*; import com.elink.esua.epdc.dto.events.form.EpdcEventSubmitFormDTO; @@ -40,18 +43,18 @@ import com.elink.esua.epdc.modules.events.dao.EpdcEventsDao; import com.elink.esua.epdc.modules.events.entity.EpdcEventsEntity; import com.elink.esua.epdc.modules.events.service.EpdcEventsService; import com.elink.esua.epdc.modules.events.service.ImgService; +import com.elink.esua.epdc.modules.feign.AdminFeignClient; import com.elink.esua.epdc.modules.issue.entity.IssueEntity; import com.elink.esua.epdc.modules.issue.entity.IssueHandleEntity; import com.elink.esua.epdc.modules.issue.service.IssueHandleService; import com.elink.esua.epdc.modules.issue.service.IssueService; +import com.elink.esua.epdc.modules.item.service.ItemService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 事件表 事件表 @@ -74,6 +77,12 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl listOfPendingReviewEvents(Map params) { IPage page = getPage(params); @@ -119,6 +128,9 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl().ok(data); } + @Override + public void initMenuNotice() { + Long deptId = SecurityUser.getDeptId(); + // 获取部门信息 + Result dtoResult = adminFeignClient.getSysDeptInfo(deptId); + if (dtoResult.success()) { + // 网格用户 + if (OrganizationTypeConstant.ORG_TYPE_GRID_PARTY.equals(dtoResult.getData().getTypeKey())) { + // 议题-待回应 + this.sendMenuNoticeOfEventRespond(deptId); + // 议题-待处理 + issueService.sendIssueHandleMenuNotice(deptId); + // 项目-待处理项目-网格用户 + itemService.sendItemHandleMenuNotice(deptId); + } else { + // 项目-待处理项目-吹哨部门用户 + itemService.sendWhistlingDeptItemHandleMenuNotice(Collections.singletonList(deptId)); + } + } + } + /** * 初始化议题 * @Params: [entity] @@ -283,4 +322,24 @@ public class EpdcEventsServiceImpl extends BaseServiceImpl> listOfItemCirculationDept(@PathVariable("deptId") Long deptId); + + /** + * + * 获取部门下的所有用户ID + * + * @params [deptIds] + * @return com.elink.esua.epdc.commons.tools.utils.Result> + * @author liuchuang + * @since 2019/10/29 16:22 + */ + @GetMapping("sys/user/ids/{deptId}") + Result> getUserIdsByDeptIds(@PathVariable("deptId") Long deptId); + + /** + * + * 获取部门信息 + * + * @params [id] + * @return com.elink.esua.epdc.commons.tools.utils.Result + * @author liuchuang + * @since 2019/10/30 14:11 + */ + @GetMapping("sys/dept/{id}") + Result getSysDeptInfo(@PathVariable("id") Long id); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java new file mode 100644 index 000000000..1da771922 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/WebsocketFeignClient.java @@ -0,0 +1,30 @@ +package com.elink.esua.epdc.modules.feign; + +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.dto.EventMenuNoticeDto; +import com.elink.esua.epdc.modules.feign.fallback.WebsocketFeignClientFallback; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +/** + * + * websocket模块调用 + * + * @Author:liuchuang + * @Date:2019/10/29 15:02 + */ +@FeignClient(name = ServiceConstant.EPDC_WEBSOCKET_SERVER, fallback = WebsocketFeignClientFallback.class, url = "http://127.0.0.1:9988") +public interface WebsocketFeignClient { + + /** + * + * 党群议事模块-消息通知 + * + * @params [message] + * @return java.lang.String + * @author liuchuang + * @since 2019/10/29 15:17 + */ + @GetMapping("ws/eventMenu/notice") + String eventMenuNotice(EventMenuNoticeDto dto); +} 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 5cf20f510..c18e3da90 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 @@ -7,6 +7,7 @@ import com.elink.esua.epdc.dto.CompleteDeptDTO; import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.modules.feign.AdminFeignClient; import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.PathVariable; import java.util.List; @@ -27,4 +28,14 @@ public class AdminFeignClientFallback implements AdminFeignClient { public Result> listOfItemCirculationDept(Long deptId) { return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "listOfItemCirculationDept", deptId); } + + @Override + public Result> getUserIdsByDeptIds(Long deptId) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getUserIdsByDeptIds", deptId); + } + + @Override + public Result getSysDeptInfo(@PathVariable("id") Long id) { + return ModuleUtils.feignConError(ServiceConstant.EPDC_ADMIN_SERVER, "getSysDeptInfo", id); + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java new file mode 100644 index 000000000..b1ef241b3 --- /dev/null +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/feign/fallback/WebsocketFeignClientFallback.java @@ -0,0 +1,20 @@ +package com.elink.esua.epdc.modules.feign.fallback; + +import com.alibaba.fastjson.JSON; +import com.elink.esua.epdc.commons.tools.constant.ServiceConstant; +import com.elink.esua.epdc.dto.EventMenuNoticeDto; +import com.elink.esua.epdc.modules.feign.WebsocketFeignClient; +import org.springframework.stereotype.Component; + +/** + * @Author:liuchuang + * @Date:2019/10/29 15:02 + */ +@Component +public class WebsocketFeignClientFallback implements WebsocketFeignClient { + + @Override + public String eventMenuNotice(EventMenuNoticeDto dto) { + return "系统内部异常:{name="+ServiceConstant.EPDC_WEBSOCKET_SERVER+",method=eventMenuNotice,formDto="+ JSON.toJSONString(dto)+"}"; + } +} diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java index be01bf519..8ea7d5b0b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/dao/IssueDao.java @@ -130,4 +130,15 @@ public interface IssueDao extends BaseDao { */ List selectListOfIssuesAndEventsOfMine(IssuesAndEventsOfMineFormDTO formDTO); + /** + * + * 根据网格ID 状态获取议题 + * + * @params [deptId, state] + * @return int + * @author liuchuang + * @since 2019/10/30 12:42 + */ + int selectCountOfDeptNotice(Long deptId, int state); + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java index f6c3de858..39876a429 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/IssueService.java @@ -201,4 +201,15 @@ public interface IssueService extends BaseService { * @Date: 2019/9/17 17:36 */ Result getEventDetail(String eventId); + + /** + * + * 发送菜单消息-议题待处理 + * + * @params [deptId] + * @return void + * @author liuchuang + * @since 2019/10/29 18:13 + */ + void sendIssueHandleMenuNotice(Long deptId); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java index 836d618a1..a265ed66d 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/issue/service/impl/IssueServiceImpl.java @@ -31,6 +31,8 @@ import com.elink.esua.epdc.commons.tools.utils.DateUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.constant.EventIssueItemState; import com.elink.esua.epdc.constant.EventsNoticeConstant; +import com.elink.esua.epdc.constants.MenuCodeConstant; +import com.elink.esua.epdc.dto.MenuNoticeDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO; import com.elink.esua.epdc.dto.events.result.EventAppDetailResultDTO; @@ -205,11 +207,16 @@ public class IssueServiceImpl extends BaseServiceImpl imp itemDeptService.insert(itemDeptEntity); informationFormDTO.setBusinessId(itemEntity.getId()); + + // 发送菜单消息-待处理项目 + itemService.sendItemHandleMenuNotice(itemEntity.getGridId()); } } // 发送消息 newsTask.insertUserInformation(informationFormDTO); + // 发送菜单消息-议题待处理 + this.sendIssueHandleMenuNotice(entity.getGridId()); return new Result(); } @@ -304,6 +311,18 @@ public class IssueServiceImpl extends BaseServiceImpl imp return epdcEventsService.getEventDetail(eventId); } + @Override + public void sendIssueHandleMenuNotice(Long deptId) { + // 获取部门待处理事件数量 + int num = baseDao.selectCountOfDeptNotice(deptId, EventIssueItemState.ISSUE_REVIEW_PASS); + MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO(); + menuNoticeDTO.setDeptId(deptId); + menuNoticeDTO.setNum(num); + menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ISSUE_HANDLE); + // 发送菜单消息通知 + newsTask.eventMenuNotice(menuNoticeDTO); + } + /** * 初始化项目 * @Params: [issueEntity] 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 dd543da0f..7420b29d8 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 @@ -112,4 +112,26 @@ public interface ItemDao extends BaseDao { */ ItemContentForPCEndResultDTO selectItemContentForPCEnd(String itemId); + /** + * + * 项目处理发送菜单消息 + * + * @params [deptId, state] + * @return int + * @author liuchuang + * @since 2019/10/30 13:28 + */ + int selectCountOfItemDeptNotice(Long deptId, int state); + + /** + * + * 根据吹哨部门ID统计吹哨部门待处理项目数量 + * + * @params [deptId] + * @return int + * @author liuchuang + * @since 2019/10/30 13:33 + */ + int selectCountOfItemWhistlingDeptNotice(Long deptId); + } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java index 2c11f9c10..f06d93adf 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/dao/ItemDeptDao.java @@ -42,6 +42,17 @@ public interface ItemDeptDao extends BaseDao { */ List getItemDept(String itemId, Long createdDeptId); + /** + * + * 获取已流转部门ID + * + * @params [itemId, createdDeptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/30 11:17 + */ + List selectListWhistlingDeptIds(String itemId, Long createdDeptId); + /** * 删除已流转协助部门 * @Params: [createdDeptId] diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java index 625875e43..c3cee906b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemDeptService.java @@ -52,6 +52,17 @@ public interface ItemDeptService extends BaseService { */ List listOfItemDept(String itemId, Long createdDeptId); + /** + * + * 获取已流转部门ID + * + * @params [itemId, createdDeptId] + * @return java.util.List + * @author liuchuang + * @since 2019/10/30 11:16 + */ + List listOfWhistlingDeptIds(String itemId, Long createdDeptId); + /** * 删除已流转协助部门 * @Params: [createdDeptId] diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java index a0cef6373..aa9e30b02 100755 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/ItemService.java @@ -208,4 +208,26 @@ public interface ItemService extends BaseService { * @Date: 2019/9/17 13:37 */ Result> listItemsOfMine(ItemOfMineFormDTO formDTO); + + /** + * + * 项目处理发送菜单消息 + * + * @params [deptId] + * @return void + * @author liuchuang + * @since 2019/10/30 9:12 + */ + void sendItemHandleMenuNotice(Long deptId); + + /** + * + * 项目处理发送菜单消息-吹哨部门 + * + * @params [deptIds] + * @return void + * @author liuchuang + * @since 2019/10/30 12:26 + */ + void sendWhistlingDeptItemHandleMenuNotice(List deptIds); } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java index 7deeb67ea..930e0a17e 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/java/com/elink/esua/epdc/modules/item/service/impl/ItemDeptServiceImpl.java @@ -53,6 +53,11 @@ public class ItemDeptServiceImpl extends BaseServiceImpl listOfWhistlingDeptIds(String itemId, Long createdDeptId) { + return baseDao.selectListWhistlingDeptIds(itemId, createdDeptId); + } + @Override @Transactional(rollbackFor = Exception.class) public void modifyItemDepts(Long createdDeptId, String itemId) { 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 0e0476737..c0ab900b9 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 @@ -32,7 +32,9 @@ import com.elink.esua.epdc.commons.tools.utils.DateUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.constant.EventIssueItemState; import com.elink.esua.epdc.constant.EventsNoticeConstant; +import com.elink.esua.epdc.constants.MenuCodeConstant; import com.elink.esua.epdc.dto.CompleteDeptDTO; +import com.elink.esua.epdc.dto.MenuNoticeDTO; import com.elink.esua.epdc.dto.SysDeptDTO; import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO; import com.elink.esua.epdc.dto.events.EpdcEventsCommentsDTO; @@ -419,6 +421,8 @@ public class ItemServiceImpl extends BaseServiceImpl implem } handleProcessEntity.setState(EventIssueItemState.ITEM_HANDLING); + // 获取已流转部门信息 + List oldDeptIds = itemDeptService.listOfWhistlingDeptIds(dto.getId(), SecurityUser.getDeptId()); // 删除已流转协助部门 itemDeptService.modifyItemDepts(SecurityUser.getDeptId(), dto.getId()); // 记录处理记录 @@ -429,6 +433,18 @@ public class ItemServiceImpl extends BaseServiceImpl implem itemHandleProcessService.insert(handleProcessEntity); // 新增流转协助部门 itemDeptService.saveItemDepts(SecurityUser.getDeptId(), dto, handleProcessEntity.getId()); + List circulationDeptResultDTOS = dto.getDeptResultDTOS(); + List newDeptIds = new ArrayList<>(); + for (ItemCirculationDeptResultDTO circulationDto: + circulationDeptResultDTOS) { + newDeptIds.add(circulationDto.getDeptId()); + } + TreeSet longTreeSet = new TreeSet<>(); + longTreeSet.addAll(oldDeptIds); + longTreeSet.addAll(newDeptIds); + List deptIds = new ArrayList<>(longTreeSet); + // 发送菜单消息-待处理项目-吹哨部门 + this.sendWhistlingDeptItemHandleMenuNotice(deptIds); } else { handleProcessEntity.setState(dto.getHandleCategory()); // 更新项目状态 @@ -462,6 +478,15 @@ public class ItemServiceImpl extends BaseServiceImpl implem // 发送消息 newsTask.insertUserInformation(informationFormDTO); + + // 发送菜单消息-待处理项目 + if (entity.getGridId().equals(user.getDeptId())) { + // 网格长操作-发送菜单消息 + this.sendItemHandleMenuNotice(entity.getGridId()); + } else { + // 吹哨部门操作-发送菜单消息 + this.sendWhistlingDeptItemHandleMenuNotice(Collections.singletonList(user.getDeptId())); + } } catch (Exception e) { e.printStackTrace(); } @@ -550,4 +575,31 @@ public class ItemServiceImpl extends BaseServiceImpl implem List data = baseDao.selectListOfItems(formDto, states); return new Result>().ok(data); } + + @Override + public void sendItemHandleMenuNotice(Long deptId) { + // 获取部门待处理项目数量 + int num = baseDao.selectCountOfItemDeptNotice(deptId, EventIssueItemState.ITEM_HANDLING); + MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO(); + menuNoticeDTO.setDeptId(deptId); + menuNoticeDTO.setNum(num); + menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ITEM_HANDLE); + // 发送菜单消息通知 + newsTask.eventMenuNotice(menuNoticeDTO); + } + + @Override + public void sendWhistlingDeptItemHandleMenuNotice(List deptIds) { + MenuNoticeDTO menuNoticeDTO = new MenuNoticeDTO(); + menuNoticeDTO.setMenuCode(MenuCodeConstant.PARTY_GROUP_DISCUSSION_ITEM_HANDLE); + for (Long deptId: + deptIds) { + // 获取吹哨部门待处理项目数量 + int num = baseDao.selectCountOfItemWhistlingDeptNotice(deptId); + menuNoticeDTO.setDeptId(deptId); + menuNoticeDTO.setNum(num); + // 发送菜单消息通知 + newsTask.eventMenuNotice(menuNoticeDTO); + } + } } diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml index 9e1dc3317..bbe12d26b 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/events/EpdcEventsDao.xml @@ -245,4 +245,8 @@ AND eve.ID = #{eventId} + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml index be9fa4f98..ca6d2fa46 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/issue/IssueDao.xml @@ -438,4 +438,16 @@ distributeTime DESC + + 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 529afaaa0..b44920af3 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 @@ -431,4 +431,62 @@ AND item.ID = #{itemId} ORDER BY img.CREATED_TIME + + + + diff --git a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml index 5eee2ec33..97938a5b7 100644 --- a/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml +++ b/esua-epdc/epdc-module/epdc-events/epdc-events-server/src/main/resources/mapper/item/ItemDeptDao.xml @@ -7,6 +7,10 @@ SELECT * FROM epdc_item_dept WHERE DEL_FLAG = '0' AND ITEM_ID = #{itemId} AND CREATED_DEPT_ID = #{createdDeptId} AND DEPT_ID != #{createdDeptId} + + UPDATE epdc_item_dept SET DEL_FLAG = '1' WHERE CREATED_DEPT_ID = #{createdDeptId} AND ITEM_ID = #{itemId} AND DEPT_ID != #{createdDeptId} diff --git a/esua-epdc/epdc-module/epdc-websocket/epdc-websocket-server/src/main/java/com/elink/esua/epdc/constants/MenuCodeConstant.java b/esua-epdc/epdc-module/epdc-websocket/epdc-websocket-server/src/main/java/com/elink/esua/epdc/constants/MenuCodeConstant.java new file mode 100644 index 000000000..0048f11db --- /dev/null +++ b/esua-epdc/epdc-module/epdc-websocket/epdc-websocket-server/src/main/java/com/elink/esua/epdc/constants/MenuCodeConstant.java @@ -0,0 +1,26 @@ +package com.elink.esua.epdc.constants; + +/** + * + * 菜单编码 + * + * @Author:liuchuang + * @Date:2019/10/29 17:16 + */ +public interface MenuCodeConstant { + + /** + * 党群议事-议题管理-待回应 + */ + String PARTY_GROUP_DISCUSSION_EVENT_RESPOND = "event-respond"; + + /** + * 党群议事-议题管理-待处理 + */ + String PARTY_GROUP_DISCUSSION_ISSUE_HANDLE = "issue-handle"; + + /** + * 党群议事-项目管理-待处理项目 + */ + String PARTY_GROUP_DISCUSSION_ITEM_HANDLE = "item-handle"; +}