Browse Source

20210603抽出切换项目的消息

pt
zy_Java 4 years ago
parent
commit
9c48fe6338
  1. 38
      recovery/src/main/java/com/ccsens/recovery/service/PatientService.java
  2. 66
      util/src/main/java/com/ccsens/util/message/BaseMessageDto.java
  3. 35
      util/src/main/java/com/ccsens/util/message/RecoveryWithStartRecipe.java
  4. 40
      util/src/main/java/com/ccsens/util/message/SwitchoverProjectUtil.java

38
recovery/src/main/java/com/ccsens/recovery/service/PatientService.java

@ -19,6 +19,7 @@ import com.ccsens.util.bean.message.common.InMessage;
import com.ccsens.util.bean.message.common.MessageConstant;
import com.ccsens.util.bean.message.common.MessageRule;
import com.ccsens.util.config.RabbitMQConfig;
import com.ccsens.util.message.SwitchoverProjectUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
@ -111,23 +112,10 @@ public class PatientService implements IPatientService{
//获取接收者id
Set<String> userIdSet = new HashSet<>();
userIdSet.add(robot.getUserid().toString());
//生成消息
RecoveryWithStartRecipe recoveryWithStartRecipe = new RecoveryWithStartRecipe(patient.getProjectId());
//封装成inMessage
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User);
messageRule.setAckRule(MessageRule.AckRule.NONE);
messageRule.setOfflineDiscard((byte) 1);
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userIdSet);
inMessage.setData(JacksonUtil.beanToJson(recoveryWithStartRecipe));
inMessage.setRule(messageRule);
log.info("开启康复流程消息:{}",inMessage);
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
SwitchoverProjectUtil.switchoverProject(userIdSet,patient.getProjectId());
}
@Override
public PatientVo.RecipeRecordId startDrill(PatientDto.StartDrill param, Long userId) throws Exception {
//存储一条训练记录
@ -241,8 +229,7 @@ public class PatientService implements IPatientService{
//TODO 将处方项目关联的任务设为完成
//发送消息,让机器人切回康复中心的项目
Set<String> userIdSet = new HashSet<>();
RecoveryWithStartRecipe recoveryWithStartRecipe = null;
Long projectId = null;
Patient patient = patientDao.selectByPrimaryKey(param.getPatientId());
if(ObjectUtil.isNotNull(patient)){
//查询患者当前关联的机器人
@ -251,22 +238,11 @@ public class PatientService implements IPatientService{
//查询患者所属的康复中心关联的项目
RecoveryCentre recoveryCentre = recoveryCentreMapper.selectByPrimaryKey(patient.getCentreId());
if(ObjectUtil.isNotNull(recoveryCentre)){
recoveryWithStartRecipe = new RecoveryWithStartRecipe(patient.getProjectId());
projectId = patient.getProjectId();
}
}
//消息规则
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User);
messageRule.setAckRule(MessageRule.AckRule.NONE);
messageRule.setOfflineDiscard((byte) 1);
//封装成inMessage
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userIdSet);
inMessage.setData(JacksonUtil.beanToJson(recoveryWithStartRecipe));
inMessage.setRule(messageRule);
log.info("开启康复流程消息:{}",inMessage);
rabbitTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
SwitchoverProjectUtil.switchoverProject(userIdSet,projectId);
}
@Override

66
util/src/main/java/com/ccsens/util/message/BaseMessageDto.java

@ -0,0 +1,66 @@
package com.ccsens.util.message;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.util.bean.message.common.InMessage;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@Data
public class BaseMessageDto {
@Data
public static class MessageUser {
private Long id;
private Long userId; //本质上是authId //20190507 本质上是userId
private String nickname;
private String avatarUrl;
private boolean hasRead;
public MessageUser(){
hasRead = false;
}
public MessageUser(Long userId){
hasRead = false;
this.userId = userId;
}
public MessageUser(Long id,Long userId,String nickname,String avatarUrl){
this();
this.id = id;
this.userId = userId;
this.nickname = nickname;
this.avatarUrl = avatarUrl;
}
public static List<MessageUser> userIdToUsers(List<Long> userIds) {
List<MessageUser> users = new ArrayList<>();
userIds.forEach(userId ->{
users.add(new MessageUser(userId));
});
return users;
}
}
private Long time;
private String type;
private String event;
private Long projectId;
private MessageUser sender;
private List<MessageUser> receivers;
// private Object data;
public Set<String> receiversTransTos() {
Set<String> tos = new HashSet<>();
if (CollectionUtil.isEmpty(receivers)) {
return tos;
}
receivers.forEach(receiver -> {
InMessage.To to = new InMessage.To(receiver.getUserId());
tos.add(JSONObject.toJSONString(to));
});
return tos;
}
}

35
util/src/main/java/com/ccsens/util/message/RecoveryWithStartRecipe.java

@ -0,0 +1,35 @@
package com.ccsens.util.message;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class RecoveryWithStartRecipe extends BaseMessageDto{
/**切换项目*/
public static final String SWITCHOVER_PROJECT = "switchoverProject";
@lombok.Data
public static class Data{
private Long projectId;
}
private Data data;
public RecoveryWithStartRecipe(){
setType(SWITCHOVER_PROJECT);
setEvent(SWITCHOVER_PROJECT);
setTime(System.currentTimeMillis());
}
public RecoveryWithStartRecipe(Long projectId){
this();
Data d = new Data();
d.setProjectId(projectId);
setData(d);
}
}

40
util/src/main/java/com/ccsens/util/message/SwitchoverProjectUtil.java

@ -0,0 +1,40 @@
package com.ccsens.util.message;
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.bean.message.common.MessageRule;
import com.ccsens.util.config.RabbitMQConfig;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import java.util.Set;
/**
* @author
*/
@Slf4j
public class SwitchoverProjectUtil {
public static void switchoverProject(Set<String> userIdSet,Long projectId) throws JsonProcessingException {
AmqpTemplate amqpTemplate = new RabbitTemplate();
log.info("切换项目:{}--{}",projectId,userIdSet);
//设定发送规则
MessageRule messageRule = MessageRule.defaultRule(MessageConstant.DomainType.User);
messageRule.setAckRule(MessageRule.AckRule.NONE);
messageRule.setOfflineDiscard((byte) 1);
//生成消息
RecoveryWithStartRecipe recoveryWithStartRecipe = new RecoveryWithStartRecipe(projectId);
//封装成inMessage
InMessage inMessage = new InMessage();
inMessage.setToDomain(MessageConstant.DomainType.User);
inMessage.setTos(userIdSet);
inMessage.setData(JacksonUtil.beanToJson(recoveryWithStartRecipe));
inMessage.setRule(messageRule);
log.info("发送切换项目信息:{}",inMessage);
amqpTemplate.convertAndSend(RabbitMQConfig.MESSAGE_QUEUE_NAME,
JacksonUtil.beanToJson(inMessage));
}
}
Loading…
Cancel
Save