diff --git a/epmet-module/gov-issue/gov-issue-client/pom.xml b/epmet-module/gov-issue/gov-issue-client/pom.xml
index 6b630e83b6..3cc3330134 100644
--- a/epmet-module/gov-issue/gov-issue-client/pom.xml
+++ b/epmet-module/gov-issue/gov-issue-client/pom.xml
@@ -17,5 +17,11 @@
epmet-commons-tools
2.0.0
+
+ com.epmet
+ resi-group-client
+ 2.0.0
+ compile
+
\ No newline at end of file
diff --git a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java
index 3ef4e65555..a405cc7fcc 100644
--- a/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java
+++ b/epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java
@@ -1,6 +1,7 @@
package com.epmet.dto.form;
import com.epmet.dto.IssueDTO;
+import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@@ -38,6 +39,10 @@ public class ShiftProjectFormDTO implements Serializable {
* token中工作人员Id
*/
private String staffId;
+ /**
+ * 话题对象信息
+ */
+ private ResiTopicDTO topicDTO ;
}
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
index 26dcf4e53c..3d3fde4b30 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
+++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
@@ -10,6 +10,10 @@ public interface UserMessageConstant {
* 消息标题
*/
String ISSUE_TITLE = "您有一条议题消息";
+ /**
+ * 项目跟踪-消息标题
+ */
+ String PROJECT_TITLE = "您有一条项目消息";
/**
* 议题关闭时,选择已解决
@@ -26,5 +30,9 @@ public interface UserMessageConstant {
*/
String ISSUE_SHIFT_PROJECT_MSG = "您好,您发表的话题\"%s\"的问题,已由%s部门处理,请查看。";
+ /**
+ * 议题转项目消息模板
+ */
+ String PROJECT_RESLOVED_MSG = "您好。您收到一条【%s】的新信息,请您尽快处理。";
}
diff --git a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
index 7eac6655c3..ee5eb6bc52 100644
--- a/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
+++ b/epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
@@ -402,7 +402,7 @@ public class IssueServiceImpl extends BaseServiceImpl imp
}
/**
- * @Description 关闭议题、议题转项目时给话题创建人和议题发起人发送消息
+ * @Description 关闭议题时给话题创建人和议题发起人发送消息
* @author sun
*/
private Result saveUserMessageList(ResiTopicDTO topicDTO, String messageContent, IssueEntity entity) {
@@ -480,20 +480,28 @@ public class IssueServiceImpl extends BaseServiceImpl imp
}
formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class));
- //2:调用gov-project服务,新增项目各业务表初始数据
+ //2:调用resi-group查询话题创建人数据(目前议题来源只有来自话题),为了到项目服务初始数据以及发送消息使用
+ Result resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());
+ if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) {
+ throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION);
+ }
+ ResiTopicDTO topicDTO = resultTopicDTO.getData();
+ formDTO.setTopicDTO(topicDTO);
+
+ //3:调用gov-project服务,新增项目各业务表初始数据
Result resultDTO = govProjectFeignClient.issueShiftProject(formDTO);
if (!resultDTO.success() || null == resultDTO.getData()) {
throw new RenException(IssueConstant.GOV_PRJECT_EXCEPTION);
}
IssueProjectResultDTO issueProjectResultDTO = resultDTO.getData();
- //3:更新议题相关业务表数据
- //3.1:更新议题表数据
+ //4:更新议题相关业务表数据
+ //4.1:更新议题表数据
entity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
entity.setShiftedTime(issueProjectResultDTO.getShiftedTime());
baseDao.updateById(entity);
- //3.2:议题处理进展表新增数据
+ //4.2:议题处理进展表新增数据
IssueProcessEntity processEntity = new IssueProcessEntity();
processEntity.setIssueId(entity.getId());
processEntity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
@@ -502,30 +510,63 @@ public class IssueServiceImpl extends BaseServiceImpl imp
processEntity.setOrgName(issueProjectResultDTO.getOrgName());
issueProcessDao.insert(processEntity);
- //3.3:议题项目关系表新增数据
+ //4.3:议题项目关系表新增数据
IssueProjectRelationEntity relationEntity = new IssueProjectRelationEntity();
relationEntity.setIssueId(entity.getId());
relationEntity.setProjectId(issueProjectResultDTO.getProjectId());
issueProjectRelationDao.insert(relationEntity);
- //4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息
- //4.1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题)
- Result resultTopicDTO = resiGroupFeignClient.getTopicById(entity.getSourceId());
- if (!resultTopicDTO.success() || null == resultTopicDTO.getData()) {
- throw new RenException(IssueConstant.SELECT_TOPIC_EXCEPTION);
- }
- ResiTopicDTO topicDTO = resultTopicDTO.getData();
- //4.2:创建消息模板
- String messageContent = String.format(UserMessageConstant.ISSUE_SHIFT_PROJECT_MSG, topicDTO.getTopicContent(), issueProjectResultDTO.getOrgName());
- //4.3:调用服务,发送消息
- if (!saveUserMessageList(topicDTO, messageContent, entity).success()) {
+ //5:调用epmet-message服务,给居民端话题创建人、议题发起人以及政府端工作人员发送消息
+ if (!shiftProjectMessage(issueProjectResultDTO, formDTO, entity).success()) {
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
}
- //5:缓存中网格下表决中的议题总数减1
+ //6:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
}
+ /**
+ * @Description 议题转项目时给话题创建人、议题发起人、勾选的工作人员分别推送消息
+ * @author sun
+ */
+ private Result shiftProjectMessage(IssueProjectResultDTO issueProjectResultDTO, ShiftProjectFormDTO formDTO, IssueEntity entity) {
+
+ List msgList = new ArrayList<>();
+ //1:创建话题发起人、议题发表人消息对象
+ UserMessageFormDTO msgDTO = new UserMessageFormDTO();
+ msgDTO.setCustomerId(entity.getCustomerId());
+ msgDTO.setGridId(entity.getGridId());
+ msgDTO.setApp(AppClientConstant.APP_RESI);
+ msgDTO.setTitle(UserMessageConstant.ISSUE_TITLE);
+ String topicIssueMessage = String.format(UserMessageConstant.ISSUE_SHIFT_PROJECT_MSG, formDTO.getTopicDTO().getTopicContent(), issueProjectResultDTO.getOrgName());
+ msgDTO.setMessageContent(topicIssueMessage);
+ msgDTO.setReadFlag(ReadFlagConstant.UN_READ);
+ UserMessageFormDTO msgIssue = ConvertUtils.sourceToTarget(msgDTO,UserMessageFormDTO.class);
+ msgDTO.setUserId(formDTO.getTopicDTO().getCreatedBy());
+ msgList.add(msgDTO);
+ msgIssue.setUserId(entity.getCreatedBy());
+ msgList.add(msgIssue);
+ //2:创建项目工作人员消息对象
+ String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESLOVED_MSG, entity.getIssueTitle());
+ //所选人员如果即在部门下又在网格下则只发一条消息
+ Map map = new HashMap<>();
+ formDTO.getStaffList().forEach(staff->{
+ if(!map.containsKey(staff.getStaffId())){
+ UserMessageFormDTO msg = new UserMessageFormDTO();
+ msg.setCustomerId(entity.getCustomerId());
+ msg.setGridId("*");
+ msg.setApp(AppClientConstant.APP_GOV);
+ msg.setTitle(UserMessageConstant.PROJECT_TITLE);
+ msg.setMessageContent(projectStaffMessage);
+ msg.setReadFlag(ReadFlagConstant.UN_READ);
+ msg.setUserId(staff.getStaffId());
+ msgList.add(msg);
+ map.put(staff.getStaffId(),staff.getStaffId());
+ }
+ });
+ return messageFeignClient.saveUserMessageList(msgList);
+ }
+
/**
* @Description
* @param issueListForm
diff --git a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java
index c481b89492..bac2f60c7e 100644
--- a/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java
+++ b/epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java
@@ -29,7 +29,7 @@ public class TickStaffFormDTO implements Serializable {
*/
private String gridId;
- @NotBlank(message = "内部备注不能为空")
+ @NotBlank(message = "工作人员Id不能为空")
private String staffId;
}
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
index ecd82ff5d3..67ececc8f7 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
@@ -93,4 +93,12 @@ public interface ProjectConstant {
* 调用gov-org服务查询数据失败
*/
String UNHANDLED_EXCEPTION = "已转过其他部门,不能再次操作";
+ /**
+ * 调用user-message服务失败
+ */
+ String SAVE_MSG_EXCEPTION = "发送消息失败";
+ /**
+ * 查询项目表数据失败
+ */
+ String SELECT_PROJECT_EXCEPTION = "获取项目数据失败";
}
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
index 9afab22488..8a9392db14 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
@@ -20,6 +20,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
@@ -27,6 +28,8 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ProjectConstant;
+import com.epmet.constant.ReadFlagConstant;
+import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectProcessDao;
import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.CustomerAgencyDTO;
@@ -38,6 +41,7 @@ import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient;
+import com.epmet.feign.MessageFeignClient;
import com.epmet.redis.ProjectProcessRedis;
import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService;
@@ -74,6 +78,8 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl page(Map params) {
@@ -245,6 +251,42 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl msgList = new ArrayList<>();
+ ProjectEntity projectEntity = projectService.selectById(formDTO.getProjectId());
+ if (null == projectEntity) {
+ throw new RenException(ProjectConstant.SELECT_PROJECT_EXCEPTION);
+ }
+ //3:创建项目工作人员消息对象
+ //所选人员如果即在部门下又在网格下则只发一条消息
+ Map map = new HashMap<>();
+ String projectStaffMessage = String.format(UserMessageConstant.PROJECT_RESOLVED_MSG, projectEntity.getTitle());
+ formDTO.getStaffList().forEach(staff->{
+ if(!map.containsKey(staff.getStaffId())){
+ UserMessageFormDTO msg = new UserMessageFormDTO();
+ msg.setCustomerId(projectEntity.getCustomerId());
+ msg.setGridId("*");
+ msg.setApp(AppClientConstant.APP_GOV);
+ msg.setTitle(UserMessageConstant.PROJECT_TITLE);
+ msg.setMessageContent(projectStaffMessage);
+ msg.setReadFlag(ReadFlagConstant.UN_READ);
+ msg.setUserId(staff.getStaffId());
+ msgList.add(msg);
+ map.put(staff.getStaffId(),staff.getStaffId());
+ }
+ });
+ return messageFeignClient.saveUserMessageList(msgList);
}
/**
diff --git a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
index a903e21050..459bf5de8e 100644
--- a/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
+++ b/epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java
@@ -20,6 +20,7 @@ package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
+import com.epmet.commons.tools.constant.AppClientConstant;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@@ -35,15 +36,13 @@ import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity;
+import com.epmet.entity.ProjectRelatedPersonnelEntity;
import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.CommonFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectRedis;
-import com.epmet.service.CustomerProjectParameterService;
-import com.epmet.service.ProjectProcessService;
-import com.epmet.service.ProjectService;
-import com.epmet.service.ProjectStaffService;
+import com.epmet.service.*;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -76,6 +75,8 @@ public class ProjectServiceImpl extends BaseServiceImpl list = new ArrayList<>();
+ ProjectRelatedPersonnelEntity entity1 = new ProjectRelatedPersonnelEntity();
+ entity1.setProjectId(projectEntity.getId());
+ entity1.setApp(AppClientConstant.APP_RESI);
+ entity1.setGridId(issueDTO.getGridId());
+ entity1.setUserId(formDTO.getTopicDTO().getCreatedBy());
+ ProjectRelatedPersonnelEntity entity2 = ConvertUtils.sourceToTarget(entity1,ProjectRelatedPersonnelEntity.class);
+ entity2.setUserId(issueDTO.getCreatedBy());
+ list.add(entity1);
+ list.add(entity2);
+ projectRelatedPersonnelService.insertBatch(list);
+
+ //6:返回接口参数
issueProjectResultDTO.setProjectId(projectEntity.getId());
issueProjectResultDTO.setOrgName(processEntity.getDepartmentName());
issueProjectResultDTO.setShiftedTime(projectEntity.getCreatedTime());