Browse Source

20210830交付物发送消息

tall3
zy_Java 4 years ago
parent
commit
a4651b0e74
  1. 52
      common/src/main/java/com/ccsens/common/bean/message/DeliverMessageWithChecker.java
  2. 4
      common/src/main/java/com/ccsens/common/bean/message/DeliverMessageWithUpload.java
  3. 19
      common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java
  4. 16
      common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java
  5. 7
      common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java
  6. 90
      common/src/main/java/com/ccsens/common/service/DeliverService.java
  7. 4
      common/src/main/java/com/ccsens/common/service/IDeliverService.java
  8. 26
      common/src/main/resources/mapper_dao/ProMemberDao.xml
  9. 9
      common/src/main/resources/mapper_dao/ProRoleDao.xml

52
common/src/main/java/com/ccsens/common/bean/message/DeliverMessageWithChecker.java

@ -0,0 +1,52 @@
package com.ccsens.common.bean.message;
import com.ccsens.common.util.Constant;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/**
* @author
*/
@Data
public class DeliverMessageWithChecker {
private String type = Constant.MessageType.CHECKER_DELIVER;
private String event;
public DeliverMessageWithChecker() {
}
private Data data;
@Setter
@Getter
public static class Data{
//任务分解id
Long taskId;
//任务详情id
Long taskDetailId;
//交付物id
Long deliverId;
//角色id(上传的任务所属的角色id)
Long roleId;
//检查人id(memberId)
Long memberId;
//检查人名字(成员名)
String memberName;
}
public DeliverMessageWithChecker(Long taskId, Long taskDetailId, Long deliverId, Long roleId, Long memberId, String memberName){
this();
Data d = new Data();
d.setTaskId(taskId);
d.setTaskDetailId(taskDetailId);
d.setDeliverId(deliverId);
d.setRoleId(roleId);
d.setMemberId(memberId);
d.setMemberName(memberName);
setData(d);
}
}

4
common/src/main/java/com/ccsens/common/bean/message/DeliverMessageWithUpload.java

@ -30,9 +30,9 @@ public class DeliverMessageWithUpload {
Long deliverId;
//角色id(上传的任务所属的角色id)
Long roleId;
//上传者id(memberId)
//上传者/检查者 id(memberId)
Long memberId;
//上传者名字(成员名)
//上传者/检查者 名字(成员名)
String memberName;
}

19
common/src/main/java/com/ccsens/common/bean/vo/CMemberVo.java

@ -0,0 +1,19 @@
package com.ccsens.common.bean.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class CMemberVo {
@Data
@ApiModel("查看定期任务返回值")
public static class MemberIdAndName{
@ApiModelProperty("成员id")
private Long id;
@ApiModelProperty("成员名")
private String name;
}
}

16
common/src/main/java/com/ccsens/common/persist/dao/ProMemberDao.java

@ -1,6 +1,7 @@
package com.ccsens.common.persist.dao;
import com.ccsens.common.bean.vo.CDeliverVo;
import com.ccsens.common.bean.vo.CMemberVo;
import com.ccsens.common.persist.mapper.ProMemberMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -34,4 +35,19 @@ public interface ProMemberDao extends ProMemberMapper {
* @return 检查人列表
*/
List<CDeliverVo.Checker> queryChecker(@Param("projectId") Long projectId);
/**
* 通过项目id和userId查找成员id和成员名
* @param projectId 项目id
* @param userId userId
* @return 返回成员id和成员名
*/
CMemberVo.MemberIdAndName getByUserIdAndProjectId(@Param("projectId")Long projectId, @Param("userId")Long userId);
/**
* 通过成员id批量查询userId
* @param memberIdList 成员id数组
* @return 返回所有成员的userId
*/
List<String> queryUserIdByMemberId(@Param("memberIdList")List<Long> memberIdList);
}

7
common/src/main/java/com/ccsens/common/persist/dao/ProRoleDao.java

@ -110,4 +110,11 @@ public interface ProRoleDao extends ProRoleMapper {
* @return 可见角色列表
*/
List<CRoleVo.AllRoleOfProject> queryRoleByLevel(@Param("projectId") Long projectId,@Param("level") Integer level);
/**
* 通过任务详情id获取角色id
* @param taskDetailId 任务详情id
* @return 角色id
*/
Long getRoleIdByTaskDetailId(@Param("taskDetailId") Long taskDetailId);
}

90
common/src/main/java/com/ccsens/common/service/DeliverService.java

@ -4,23 +4,34 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil;
import com.ccsens.common.bean.dto.CDeliverDto;
import com.ccsens.common.bean.message.DeliverMessageWithChecker;
import com.ccsens.common.bean.message.DeliverMessageWithUpload;
import com.ccsens.common.bean.po.ProDeliver;
import com.ccsens.common.bean.po.ProDeliverChecker;
import com.ccsens.common.bean.po.ProMember;
import com.ccsens.common.bean.po.ProTaskSub;
import com.ccsens.common.bean.vo.CDeliverVo;
import com.ccsens.common.bean.vo.CMemberVo;
import com.ccsens.common.bean.vo.CProjectVo;
import com.ccsens.common.persist.dao.*;
import com.ccsens.common.util.CommonCodeError;
import com.ccsens.util.JacksonUtil;
import com.ccsens.util.bean.message.common.InMessage;
import com.ccsens.util.bean.message.common.MessageConstant;
import com.ccsens.util.config.RabbitMQConfig;
import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* @author AUSU
@ -48,6 +59,8 @@ public class DeliverService implements IDeliverService{
private ProRoleMemberDao roleMemberDao;
@Resource
private Snowflake snowflake;
@Resource
private AmqpTemplate rabbitTemplate;
@Override
public List<CDeliverVo.Checker> queryChecker(CDeliverDto.QueryChecker params, Long userId) {
@ -56,7 +69,7 @@ public class DeliverService implements IDeliverService{
@Override
public void saveDeliver(CDeliverDto.SaveDeliver params, Long userId) {
public void saveDeliver(CDeliverDto.SaveDeliver params, Long userId) throws Exception {
if (CollectionUtil.isEmpty(params.getCheckerList())) {
throw new BaseException(CommonCodeError.CHECKER_DONT_NULL);
}
@ -100,6 +113,37 @@ public class DeliverService implements IDeliverService{
deliverCheckerDao.insertSelective(deliverChecker);
}
//TODO 发送消息
sendToDeliverUploadMessage(params, userId, taskSub.getTaskDetailId(), proDeliver.getId());
}
public void sendToDeliverUploadMessage(CDeliverDto.SaveDeliver params, Long userId, Long taskDetailId, Long deliverId) throws Exception {
//获取任务所属的角色id
Long roleId = roleDao.getRoleIdByTaskDetailId(taskDetailId);
//获取成员id和成员名
CMemberVo.MemberIdAndName memberIdAndName = memberDao.getByUserIdAndProjectId(params.getProjectId(), userId);
Long memberId = null;
String memberName = null;
if(ObjectUtil.isNotNull(memberIdAndName)){
memberId = memberIdAndName.getId();
memberName = memberIdAndName.getName();
}
//发送的消息内容
DeliverMessageWithUpload message = new DeliverMessageWithUpload(params.getTaskSubId(),
taskDetailId,deliverId,roleId,memberId,memberName);
//通过成员id批量获取userId
List<String> userIdList = memberDao.queryUserIdByMemberId(params.getCheckerList());
if(CollectionUtil.isNotEmpty(userIdList)){
//获取接受者的userId
Set<String> userIdSet = new HashSet<>(userIdList);
//封装成inMessage
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userIdSet);
inMessage.setData(JacksonUtil.beanToJson(message));
log.info("发送消息--上传交付物--:{}",inMessage);
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
}
}
@ -129,7 +173,7 @@ public class DeliverService implements IDeliverService{
@Override
public void checkDeliver(CDeliverDto.CheckDeliver params, Long userId) {
public void checkDeliver(CDeliverDto.CheckDeliver params, Long userId) throws Exception {
Long userOfMemberId = memberDao.findUserOfMemberId(params.getProjectId(), userId);
ProDeliverChecker deliverChecker = deliverCheckerDao.selectByPrimaryKey(params.getCheckId());
if (!userOfMemberId.equals(deliverChecker.getMemberId())) {
@ -142,6 +186,48 @@ public class DeliverService implements IDeliverService{
deliverCheck.setScore(params.getScore());
deliverCheckerDao.updateByPrimaryKeySelective(deliverCheck);
//TODO 发送消息
sendToDeliverCheckerMessage(deliverChecker.getDeliverId(),params.getProjectId(),userId);
}
private void sendToDeliverCheckerMessage(Long deliverId, Long projectId, Long userId) throws Exception {
Long subTaskId = null;
Long taskDetailId = null;
Long roleId = null;
Long memberId = null;
String memberName = null;
//获取任务信息
ProDeliver deliver = deliverDao.selectByPrimaryKey(deliverId);
if(ObjectUtil.isNotNull(deliver)){
subTaskId = deliver.getTaskSubId();
ProTaskSub taskSub = taskSubDao.selectByPrimaryKey(deliver.getTaskSubId());
if(ObjectUtil.isNotNull(taskSub)){
taskDetailId = taskSub.getTaskDetailId();
//获取任务所属的角色id
roleId = roleDao.getRoleIdByTaskDetailId(taskDetailId);
}
}
//获取成员id和成员名
CMemberVo.MemberIdAndName memberIdAndName = memberDao.getByUserIdAndProjectId(projectId, userId);
if(ObjectUtil.isNotNull(memberIdAndName)){
memberId = memberIdAndName.getId();
memberName = memberIdAndName.getName();
}
//发送的消息内容
DeliverMessageWithChecker checkerMessage = new DeliverMessageWithChecker(subTaskId,taskDetailId,deliverId,roleId,memberId,memberName);
//获取上传者的userId(消息接收者)
ProMember uploadMember = memberDao.selectByPrimaryKey(deliver.getMemberId());
if(ObjectUtil.isNotNull(uploadMember)){
Set<String> userIdSet = new HashSet<>();
userIdSet.add(uploadMember.getUserId().toString());
//封装成inMessage
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userIdSet);
inMessage.setData(JacksonUtil.beanToJson(checkerMessage));
log.info("发送消息--检查交付物--:{}",inMessage);
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
}
}

4
common/src/main/java/com/ccsens/common/service/IDeliverService.java

@ -24,7 +24,7 @@ public interface IDeliverService {
* @param params 项目id
* @param userId 用户id
*/
void saveDeliver(CDeliverDto.SaveDeliver params, Long userId);
void saveDeliver(CDeliverDto.SaveDeliver params, Long userId) throws Exception;
/**
* 查询任务的交付物历史记录
@ -39,7 +39,7 @@ public interface IDeliverService {
* @param params 检查记录id
* @param userId 当前登录用户
*/
void checkDeliver(CDeliverDto.CheckDeliver params, Long userId);
void checkDeliver(CDeliverDto.CheckDeliver params, Long userId) throws Exception;
/**
* 查询项目的交付物历史记录

26
common/src/main/resources/mapper_dao/ProMemberDao.xml

@ -33,5 +33,29 @@
rec_status = 0
AND project_id = #{projectId}
</select>
<select id="getByUserIdAndProjectId" resultType="com.ccsens.common.bean.vo.CMemberVo$MemberIdAndName">
SELECT
id,
`name`
FROM
t_pro_member
WHERE
rec_status = 0
AND project_id = #{projectId}
AND user_id = #{userId}
</select>
<select id="queryUserIdByMemberId" resultType="java.lang.String">
SELECT
user_id
FROM
t_pro_member
WHERE
rec_status = 0
<if test="memberIdList != null and memberIdList.size() > 0" >
AND id IN
<foreach collection="memberIdList" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</select>
</mapper>

9
common/src/main/resources/mapper_dao/ProRoleDao.xml

@ -219,5 +219,14 @@
AND project_id = #{projectId}
AND l.`level` &lt;= #{level}
</select>
<select id="getRoleIdByTaskDetailId" resultType="java.lang.Long">
SELECT
role_id
FROM
t_pro_role_task
WHERE
rec_status = 0
AND task_id = #{taskDetailId}
</select>
</mapper>
Loading…
Cancel
Save