Browse Source

议题转项目、项目流转添加消息发送

master
sunyuchao 5 years ago
parent
commit
ace5528b2f
  1. 6
      epmet-module/gov-issue/gov-issue-client/pom.xml
  2. 5
      epmet-module/gov-issue/gov-issue-client/src/main/java/com/epmet/dto/form/ShiftProjectFormDTO.java
  3. 8
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/constant/UserMessageConstant.java
  4. 77
      epmet-module/gov-issue/gov-issue-server/src/main/java/com/epmet/service/impl/IssueServiceImpl.java
  5. 2
      epmet-module/gov-project/gov-project-client/src/main/java/com/epmet/dto/form/TickStaffFormDTO.java
  6. 8
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java
  7. 42
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectProcessServiceImpl.java
  8. 24
      epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/service/impl/ProjectServiceImpl.java

6
epmet-module/gov-issue/gov-issue-client/pom.xml

@ -17,5 +17,11 @@
<artifactId>epmet-commons-tools</artifactId> <artifactId>epmet-commons-tools</artifactId>
<version>2.0.0</version> <version>2.0.0</version>
</dependency> </dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>resi-group-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
</project> </project>

5
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; package com.epmet.dto.form;
import com.epmet.dto.IssueDTO; import com.epmet.dto.IssueDTO;
import com.epmet.resi.group.dto.topic.ResiTopicDTO;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;
@ -38,6 +39,10 @@ public class ShiftProjectFormDTO implements Serializable {
* token中工作人员Id * token中工作人员Id
*/ */
private String staffId; private String staffId;
/**
* 话题对象信息
*/
private ResiTopicDTO topicDTO ;
} }

8
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 ISSUE_TITLE = "您有一条议题消息";
/**
* 项目跟踪-消息标题
*/
String PROJECT_TITLE = "您有一条项目消息";
/** /**
* 议题关闭时选择已解决 * 议题关闭时选择已解决
@ -26,5 +30,9 @@ public interface UserMessageConstant {
*/ */
String ISSUE_SHIFT_PROJECT_MSG = "您好,您发表的话题\"%s\"的问题,已由%s部门处理,请查看。"; String ISSUE_SHIFT_PROJECT_MSG = "您好,您发表的话题\"%s\"的问题,已由%s部门处理,请查看。";
/**
* 议题转项目消息模板
*/
String PROJECT_RESLOVED_MSG = "您好。您收到一条【%s】的新信息,请您尽快处理。";
} }

77
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<IssueDao, IssueEntity> imp
} }
/** /**
* @Description 关闭议题议题转项目时给话题创建人和议题发起人发送消息 * @Description 关闭议题时给话题创建人和议题发起人发送消息
* @author sun * @author sun
*/ */
private Result saveUserMessageList(ResiTopicDTO topicDTO, String messageContent, IssueEntity entity) { private Result saveUserMessageList(ResiTopicDTO topicDTO, String messageContent, IssueEntity entity) {
@ -480,20 +480,28 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
} }
formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class)); formDTO.setIssueDTO(ConvertUtils.sourceToTarget(entity, IssueDTO.class));
//2:调用gov-project服务,新增项目各业务表初始数据 //2:调用resi-group查询话题创建人数据(目前议题来源只有来自话题),为了到项目服务初始数据以及发送消息使用
Result<ResiTopicDTO> 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<IssueProjectResultDTO> resultDTO = govProjectFeignClient.issueShiftProject(formDTO); Result<IssueProjectResultDTO> resultDTO = govProjectFeignClient.issueShiftProject(formDTO);
if (!resultDTO.success() || null == resultDTO.getData()) { if (!resultDTO.success() || null == resultDTO.getData()) {
throw new RenException(IssueConstant.GOV_PRJECT_EXCEPTION); throw new RenException(IssueConstant.GOV_PRJECT_EXCEPTION);
} }
IssueProjectResultDTO issueProjectResultDTO = resultDTO.getData(); IssueProjectResultDTO issueProjectResultDTO = resultDTO.getData();
//3:更新议题相关业务表数据 //4:更新议题相关业务表数据
//3.1:更新议题表数据 //4.1:更新议题表数据
entity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT); entity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
entity.setShiftedTime(issueProjectResultDTO.getShiftedTime()); entity.setShiftedTime(issueProjectResultDTO.getShiftedTime());
baseDao.updateById(entity); baseDao.updateById(entity);
//3.2:议题处理进展表新增数据 //4.2:议题处理进展表新增数据
IssueProcessEntity processEntity = new IssueProcessEntity(); IssueProcessEntity processEntity = new IssueProcessEntity();
processEntity.setIssueId(entity.getId()); processEntity.setIssueId(entity.getId());
processEntity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT); processEntity.setIssueStatus(IssueConstant.ISSUE_SHIFT_PROJECT);
@ -502,30 +510,63 @@ public class IssueServiceImpl extends BaseServiceImpl<IssueDao, IssueEntity> imp
processEntity.setOrgName(issueProjectResultDTO.getOrgName()); processEntity.setOrgName(issueProjectResultDTO.getOrgName());
issueProcessDao.insert(processEntity); issueProcessDao.insert(processEntity);
//3.3:议题项目关系表新增数据 //4.3:议题项目关系表新增数据
IssueProjectRelationEntity relationEntity = new IssueProjectRelationEntity(); IssueProjectRelationEntity relationEntity = new IssueProjectRelationEntity();
relationEntity.setIssueId(entity.getId()); relationEntity.setIssueId(entity.getId());
relationEntity.setProjectId(issueProjectResultDTO.getProjectId()); relationEntity.setProjectId(issueProjectResultDTO.getProjectId());
issueProjectRelationDao.insert(relationEntity); issueProjectRelationDao.insert(relationEntity);
//4:调用epmet-message服务,给居民端话题创建人和议题发起人发送消息 //5:调用epmet-message服务,给居民端话题创建人、议题发起人以及政府端工作人员发送消息
//4.1:调用resi-group查询话题创建人数据(目前议题来源只有来自话题) if (!shiftProjectMessage(issueProjectResultDTO, formDTO, entity).success()) {
Result<ResiTopicDTO> 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()) {
throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION); throw new RenException(IssueConstant.SAVE_MSG_EXCEPTION);
} }
//5:缓存中网格下表决中的议题总数减1 //6:缓存中网格下表决中的议题总数减1
govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId()); govIssueRedis.subtractWorkGrassrootsIssueRedDotValue(entity.getGridId());
} }
/**
* @Description 议题转项目时给话题创建人议题发起人勾选的工作人员分别推送消息
* @author sun
*/
private Result shiftProjectMessage(IssueProjectResultDTO issueProjectResultDTO, ShiftProjectFormDTO formDTO, IssueEntity entity) {
List<UserMessageFormDTO> 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<String,String> 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 * @Description
* @param issueListForm * @param issueListForm

2
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; private String gridId;
@NotBlank(message = "内部备注不能为空") @NotBlank(message = "工作人员Id不能为空")
private String staffId; private String staffId;
} }

8
epmet-module/gov-project/gov-project-server/src/main/java/com/epmet/constant/ProjectConstant.java

@ -93,4 +93,12 @@ public interface ProjectConstant {
* 调用gov-org服务查询数据失败 * 调用gov-org服务查询数据失败
*/ */
String UNHANDLED_EXCEPTION = "已转过其他部门,不能再次操作"; String UNHANDLED_EXCEPTION = "已转过其他部门,不能再次操作";
/**
* 调用user-message服务失败
*/
String SAVE_MSG_EXCEPTION = "发送消息失败";
/**
* 查询项目表数据失败
*/
String SELECT_PROJECT_EXCEPTION = "获取项目数据失败";
} }

42
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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException; 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.ConvertUtils;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.ProjectConstant; import com.epmet.constant.ProjectConstant;
import com.epmet.constant.ReadFlagConstant;
import com.epmet.constant.UserMessageConstant;
import com.epmet.dao.ProjectProcessDao; import com.epmet.dao.ProjectProcessDao;
import com.epmet.dao.ProjectStaffDao; import com.epmet.dao.ProjectStaffDao;
import com.epmet.dto.CustomerAgencyDTO; import com.epmet.dto.CustomerAgencyDTO;
@ -38,6 +41,7 @@ import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectStaffEntity; import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
import com.epmet.feign.MessageFeignClient;
import com.epmet.redis.ProjectProcessRedis; import com.epmet.redis.ProjectProcessRedis;
import com.epmet.service.ProjectProcessService; import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService; import com.epmet.service.ProjectService;
@ -74,6 +78,8 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
private ProjectProcessDao projectProcessDao; private ProjectProcessDao projectProcessDao;
@Autowired @Autowired
private ProjectStaffService projectStaffService; private ProjectStaffService projectStaffService;
@Autowired
private com.epmet.feign.MessageFeignClient messageFeignClient;
@Override @Override
public PageData<ProjectProcessDTO> page(Map<String, Object> params) { public PageData<ProjectProcessDTO> page(Map<String, Object> params) {
@ -245,6 +251,42 @@ public class ProjectProcessServiceImpl extends BaseServiceImpl<ProjectProcessDao
entityList.add(entity); entityList.add(entity);
}); });
projectStaffService.insertBatch(entityList); projectStaffService.insertBatch(entityList);
//4:调用epmet-message服务,给项目流转过程中的工作人员发送消息
if (!transferMessage(formDTO).success()) {
throw new RenException(ProjectConstant.SAVE_MSG_EXCEPTION);
}
}
/**
* @Description 项目流转给流转工作人员推送消息
* @author sun
*/
private Result transferMessage(TransferFormDTO formDTO) {
List<UserMessageFormDTO> msgList = new ArrayList<>();
ProjectEntity projectEntity = projectService.selectById(formDTO.getProjectId());
if (null == projectEntity) {
throw new RenException(ProjectConstant.SELECT_PROJECT_EXCEPTION);
}
//3:创建项目工作人员消息对象
//所选人员如果即在部门下又在网格下则只发一条消息
Map<String,String> 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);
} }
/** /**

24
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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; 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.FieldConstant;
import com.epmet.commons.tools.constant.NumConstant; import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -35,15 +36,13 @@ import com.epmet.dto.form.*;
import com.epmet.dto.result.*; import com.epmet.dto.result.*;
import com.epmet.entity.ProjectEntity; import com.epmet.entity.ProjectEntity;
import com.epmet.entity.ProjectProcessEntity; import com.epmet.entity.ProjectProcessEntity;
import com.epmet.entity.ProjectRelatedPersonnelEntity;
import com.epmet.entity.ProjectStaffEntity; import com.epmet.entity.ProjectStaffEntity;
import com.epmet.feign.CommonFeignClient; import com.epmet.feign.CommonFeignClient;
import com.epmet.feign.EpmetUserFeignClient; import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient; import com.epmet.feign.GovOrgFeignClient;
import com.epmet.redis.ProjectRedis; import com.epmet.redis.ProjectRedis;
import com.epmet.service.CustomerProjectParameterService; import com.epmet.service.*;
import com.epmet.service.ProjectProcessService;
import com.epmet.service.ProjectService;
import com.epmet.service.ProjectStaffService;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -76,6 +75,8 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
private EpmetUserFeignClient epmetUserFeignClient; private EpmetUserFeignClient epmetUserFeignClient;
@Autowired @Autowired
private GovOrgFeignClient govOrgFeignClient; private GovOrgFeignClient govOrgFeignClient;
@Autowired
private ProjectRelatedPersonnelService projectRelatedPersonnelService;
private final static String ONE_DAY = "<1"; private final static String ONE_DAY = "<1";
@ -502,7 +503,20 @@ public class ProjectServiceImpl extends BaseServiceImpl<ProjectDao, ProjectEntit
}); });
projectStaffService.insertBatch(entityList); projectStaffService.insertBatch(entityList);
//5:返回接口参数 //5:项目相关人员表初始数据
List<ProjectRelatedPersonnelEntity> 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.setProjectId(projectEntity.getId());
issueProjectResultDTO.setOrgName(processEntity.getDepartmentName()); issueProjectResultDTO.setOrgName(processEntity.getDepartmentName());
issueProjectResultDTO.setShiftedTime(projectEntity.getCreatedTime()); issueProjectResultDTO.setShiftedTime(projectEntity.getCreatedTime());

Loading…
Cancel
Save