소스 검색

add 医生咨询设置

18339543638 3 년 전
부모
커밋
3e79eeec25
18개의 변경된 파일168개의 추가작업 그리고 171개의 파일을 삭제
  1. 6 7
      nb-im/src/main/java/com/nb/im/entity/ImMsgEntity.java
  2. 1 1
      nb-im/src/main/java/com/nb/im/entity/ImRoomEntity.java
  3. 22 0
      nb-im/src/main/java/com/nb/im/event/ImMsgEvent.java
  4. 4 22
      nb-im/src/main/java/com/nb/im/service/LocalImMsgService.java
  5. 1 1
      nb-im/src/main/java/com/nb/im/service/dto/ImRoomDto.java
  6. 2 5
      nb-im/src/main/java/com/nb/im/ws/PubMsgInfo.java
  7. 0 1
      nb-im/src/main/java/com/nb/im/ws/filter/MsgFormatFilter.java
  8. 1 1
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/entity/AssistantUserBindEntity.java
  9. 1 1
      nb-service-api/app-msg-api/src/main/java/com/nb/app/msg/bean/MsgBean.java
  10. 5 1
      nb-service-api/web-service-api/src/main/java/com/nb/web/api/event/PatientInfoEvent.java
  11. 5 0
      nb-service/app-doctor/pom.xml
  12. 0 17
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/UserController.java
  13. 18 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserConsultConfigEntity.java
  14. 0 59
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserReplyEntity.java
  15. 0 16
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserReplyMapper.java
  16. 73 7
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalAppDoctorUserService.java
  17. 0 32
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserReplyService.java
  18. 29 0
      nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusClinicService.java

+ 6 - 7
nb-im/src/main/java/com/nb/im/entity/ImMsgEntity.java

@@ -4,7 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.nb.app.msg.bean.MsgBean;
 import com.nb.app.msg.enums.MsgEnum;
-import com.nb.auth.enums.StpTypeEnum;
 import com.nb.core.entity.GenericEntity;
 import com.nb.im.enums.ImMsgType;
 import com.nb.im.enums.SponsorEnum;
@@ -43,10 +42,10 @@ public class ImMsgEntity extends GenericEntity<String> {
     private Long sort;
 
     @ApiModelProperty(value = "消息内容类型",required = true)
-    private ImMsgType contentType;
+    private ImMsgType msgType;
 
-    @ApiModelProperty(value = "消息类型",required = true)
-    private MsgEnum msgType;
+    @ApiModelProperty(value = "操作类型",required = true)
+    private MsgEnum operationType;
 
     @ApiModelProperty(value = "发送人id",readOnly = true)
     private String senderId;
@@ -74,7 +73,7 @@ public class ImMsgEntity extends GenericEntity<String> {
         ImMsgEntity result = new ImMsgEntity();
         result.setImRoomId(source.getId());
         result.setPayload(msg.getPayload());
-        result.setContentType(ImMsgType.hyperlinks);
+        result.setMsgType(ImMsgType.hyperlinks);
         result.setSenderId(msg.getSenderId());
         result.setSenderAvatar(msg.getSenderAvatar());
         result.setSenderNickname(msg.getSenderNickname());
@@ -83,8 +82,8 @@ public class ImMsgEntity extends GenericEntity<String> {
         }else if(MsgEnum.PAIN_CALL.equals(msg.getMsgType())){
             result.setExtend(false);
         }
-        result.setMsgType(msg.getMsgType());
-        result.setMsgType(MsgEnum.NORMAL);
+        result.setOperationType(msg.getMsgType());
+        result.setOperationType(MsgEnum.NORMAL);
         return result;
     }
 }

+ 1 - 1
nb-im/src/main/java/com/nb/im/entity/ImRoomEntity.java

@@ -41,7 +41,7 @@ public class ImRoomEntity extends GenericEntity<String> {
     private String patientName;
 
     @ApiModelProperty("病人年龄")
-    private String patientAge;
+    private Integer patientAge;
 
     @ApiModelProperty("病人性别")
     private SexEnum patientSex;

+ 22 - 0
nb-im/src/main/java/com/nb/im/event/ImMsgEvent.java

@@ -0,0 +1,22 @@
+package com.nb.im.event;
+
+import com.nb.im.entity.ImMsgEntity;
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName ImMsgEvent.java
+ * @Description TODO
+ * @createTime 2022年08月23日 09:05:00
+ */
+@Getter
+public class ImMsgEvent extends ApplicationEvent {
+    private ImMsgEntity msg;
+
+    public ImMsgEvent(Object source, ImMsgEntity msg) {
+        super(source);
+        this.msg = msg;
+    }
+}

+ 4 - 22
nb-im/src/main/java/com/nb/im/service/LocalImMsgService.java

@@ -1,11 +1,13 @@
 package com.nb.im.service;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.nb.app.msg.enums.MsgEnum;
 import com.nb.auth.enums.StpTypeEnum;
 import com.nb.common.crud.BaseService;
 import com.nb.im.entity.ImMsgEntity;
 import com.nb.im.enums.ImMsgType;
 import com.nb.im.enums.SponsorEnum;
+import com.nb.im.event.ImMsgEvent;
 import com.nb.im.mapper.ImRoomMsgMapper;
 import com.nb.im.utils.ImUtils;
 import com.nb.im.ws.PubMsgInfo;
@@ -22,9 +24,7 @@ import org.springframework.stereotype.Service;
  */
 @Service
 public class LocalImMsgService extends BaseService<ImRoomMsgMapper, ImMsgEntity,String> {
-    @Autowired
-    @Lazy
-    private ImUtils imUtils;
+
 
     @Override
     public void validateBeforeSave(ImMsgEntity entity) {
@@ -39,25 +39,7 @@ public class LocalImMsgService extends BaseService<ImRoomMsgMapper, ImMsgEntity,
 
     @Override
     public void postSave(ImMsgEntity entity) {
-        //判断是否处于勿扰模式
-
-        //判断当前发送人是否为患者,若为患者发送,则判断是否存在自动回复
-        if(SponsorEnum.assist.equals(entity.getSponsor())){
-            if(MsgEnum.CONSUL.equals(entity.getMsgType())){
-                //
-                PubMsgInfo pubMsgInfo = PubMsgInfo
-                        .builder()
-                        .roomId(entity.getImRoomId())
-                        .payload("")
-                        .senderType(entity.getSponsor())
-                        .senderId(entity.getSenderId())
-                        .senderNickname(entity.getSenderNickname())
-                        .senderAvatar(entity.getSenderAvatar())
-                        .contentType(ImMsgType.txt)
-                        .build();
-                imUtils.send(entity.getImRoomId(),pubMsgInfo);
-            }
-        }
+        SpringUtil.publishEvent(new ImMsgEvent(this,entity));
     }
 
     @Override

+ 1 - 1
nb-im/src/main/java/com/nb/im/service/dto/ImRoomDto.java

@@ -42,7 +42,7 @@ public class ImRoomDto {
     private String patientName;
 
     @ApiModelProperty("病人年龄")
-    private String patientAge;
+    private Integer patientAge;
 
     @ApiModelProperty("病人性别")
     private SexEnum patientSex;

+ 2 - 5
nb-im/src/main/java/com/nb/im/ws/PubMsgInfo.java

@@ -6,11 +6,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.nb.im.enums.ImMsgType;
 import com.nb.im.enums.SponsorEnum;
 import io.swagger.annotations.ApiModelProperty;
-import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
-import lombok.NoArgsConstructor;
-import lombok.experimental.Accessors;
 import org.springframework.validation.annotation.Validated;
 
 import java.io.Serializable;
@@ -48,7 +45,7 @@ public class PubMsgInfo implements Serializable {
     private String senderAvatar;
 
     @ApiModelProperty("消息类型")
-    private ImMsgType contentType;
+    private ImMsgType msgType;
 
     @ApiModelProperty("扩展字段")
     private String extend;
@@ -70,7 +67,7 @@ public class PubMsgInfo implements Serializable {
         if(StrUtil.isEmpty(senderNickname)){
             throw new RuntimeException("发送人昵称不能为空");
         }
-        if(ObjectUtil.isNull(contentType)){
+        if(ObjectUtil.isNull(msgType)){
             throw new RuntimeException("信息类型不能为空");
         }
         if(StrUtil.isEmpty(roomId)){

+ 0 - 1
nb-im/src/main/java/com/nb/im/ws/filter/MsgFormatFilter.java

@@ -36,7 +36,6 @@ public class MsgFormatFilter implements PubMsgFilter {
                 Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(PubResponse.fail(pubMsgInfo.getKey(),e.getMessage())),WsPacket.CHARSET_NAME));
                 return false;
             }
-            //todo
         }
         return true;
     }

+ 1 - 1
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/entity/AssistantUserBindEntity.java

@@ -50,7 +50,7 @@ public class AssistantUserBindEntity extends GenericEntity<String> {
     private SexEnum patientSex;
 
     @ApiModelProperty(value = "病人年龄")
-    private String patientAge;
+    private Integer patientAge;
 
     @ApiModelProperty(value = "医生id",required = true)
     private String doctorId;

+ 1 - 1
nb-service-api/app-msg-api/src/main/java/com/nb/app/msg/bean/MsgBean.java

@@ -40,7 +40,7 @@ public class MsgBean implements Serializable {
     private String patientName;
 
     @ApiModelProperty("病人年龄")
-    private String patientAge;
+    private Integer patientAge;
 
     @ApiModelProperty("病人性别")
     private SexEnum patientSex;

+ 5 - 1
nb-service-api/web-service-api/src/main/java/com/nb/web/api/event/PatientInfoEvent.java

@@ -2,6 +2,7 @@ package com.nb.web.api.event;
 
 import com.nb.core.enums.SexEnum;
 import lombok.Getter;
+import lombok.Setter;
 import lombok.experimental.Accessors;
 import org.springframework.context.ApplicationEvent;
 
@@ -28,17 +29,20 @@ public class PatientInfoEvent extends ApplicationEvent {
     /*
      * 病人姓名
      */
+    @Setter
     private String patientName;
 
     /*
      * 病人性别
      */
+    @Setter
     private SexEnum patientSex;
 
     /*
      * 病人年龄
      */
-    private String patientAge;
+    @Setter
+    private Integer patientAge;
 
     public PatientInfoEvent(Object source,String patientId, String patientCode) {
         super(source);

+ 5 - 0
nb-service/app-doctor/pom.xml

@@ -13,6 +13,11 @@
 
 
     <dependencies>
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>nb-im</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>com.tuoren</groupId>
             <artifactId>app-assistant-api</artifactId>

+ 0 - 17
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/UserController.java

@@ -2,9 +2,7 @@ package com.nb.app.doctor.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.nb.app.doctor.entity.AppUserConsultConfigEntity;
-import com.nb.app.doctor.entity.AppUserReplyEntity;
 import com.nb.app.doctor.service.LocalUserConsultConfigService;
-import com.nb.app.doctor.service.LocalUserReplyService;
 import com.nb.core.entity.GenericEntity;
 import com.nb.core.result.R;
 import io.swagger.annotations.Api;
@@ -28,15 +26,6 @@ import org.springframework.web.bind.annotation.*;
 @Slf4j
 public class UserController {
     private final LocalUserConsultConfigService consultConfigService;
-    private final LocalUserReplyService replyService;
-
-
-    @PostMapping("/reply/{userId}")
-    @ApiOperation("查询医生回复设置")
-    public R<AppUserReplyEntity> getReply(@PathVariable("userId") String userId){
-        return R.success(replyService.getOne(new QueryWrapper<AppUserReplyEntity>().lambda()
-                .eq(AppUserReplyEntity::getUserId,userId)));
-    }
 
 
     @PostMapping("/consult/{userId}")
@@ -46,12 +35,6 @@ public class UserController {
                 .eq(AppUserConsultConfigEntity::getUserId,userId)));
     }
 
-    @PostMapping("/reply/edit")
-    @ApiOperation("修改医生回复设置")
-    public R<Boolean> editReply(@RequestBody@Validated(GenericEntity.Update.class)  AppUserReplyEntity source){
-        return R.success(replyService.updateById(source));
-    }
-
     @PostMapping("/consult/edit")
     @ApiOperation("修改医生咨询设置")
     public R<Boolean> editConsult(@RequestBody@Validated(GenericEntity.Update.class) AppUserConsultConfigEntity source){

+ 18 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserConsultConfigEntity.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import com.nb.common.config.mybatisplus.handler.IntegerListTypeHandler;
+import com.nb.common.config.mybatisplus.handler.StringListTypeHandler;
 import com.nb.core.entity.GenericEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,6 +12,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
 import lombok.ToString;
+import org.hibernate.validator.constraints.Length;
 
 import javax.validation.constraints.NotNull;
 import java.util.*;
@@ -46,6 +48,20 @@ public class AppUserConsultConfigEntity extends GenericEntity<String> {
     @TableField(typeHandler = IntegerListTypeHandler.class)
     private List<Integer> noDisturbTime;
 
+    @ApiModelProperty(value = "咨询自动回复,长度限制255")
+    @Length(message = "咨询自动回复设置不得超过255个字符",groups = Update.class)
+    private String consultReply;
+
+    @ApiModelProperty(value = "勿扰自动回复,长度限制255")
+    @Length(message = "勿扰自动回复设置不得超过255个字符",groups = Update.class)
+    private String noDisturbReply;
+
+    @ApiModelProperty(value = "快捷回复,长度限制2048")
+    @TableField(typeHandler = StringListTypeHandler.class)
+    @Length(message = "勿扰自动回复设置不得超过2048个字符",groups = Update.class)
+    private List<String> fastReply;
+
+
 
     public static AppUserConsultConfigEntity createDefault(String userId){
         AppUserConsultConfigEntity result = new AppUserConsultConfigEntity();
@@ -53,6 +69,8 @@ public class AppUserConsultConfigEntity extends GenericEntity<String> {
         result.setAutoFinishConsult(true);
         result.setUserId(userId);
         result.setNoDisturb(false);
+        result.setConsultReply("您好,我已经收到您的咨询申请,请稍等");
+        result.setFastReply(Arrays.asList("你好","你有什么问题吗?","了解了,请稍等我过去"));
         return result;
     }
 }

+ 0 - 59
nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserReplyEntity.java

@@ -1,59 +0,0 @@
-package com.nb.app.doctor.entity;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.nb.common.config.mybatisplus.handler.StringListTypeHandler;
-import com.nb.core.entity.GenericEntity;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.NoArgsConstructor;
-import lombok.ToString;
-import org.hibernate.validator.constraints.Length;
-
-import javax.validation.constraints.NotNull;
-import java.util.*;
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName AppUserReplyEntity.java
- * @Description TODO
- * @createTime 2022年08月22日 11:35:00
- */
-@EqualsAndHashCode(callSuper = true)
-@Data
-@TableName(value = "app_user_reply",autoResultMap = true)
-@ApiModel(value="app医生用户回复配置")
-@ToString
-@NoArgsConstructor
-public class AppUserReplyEntity extends GenericEntity<String> {
-    @ApiModelProperty(value = "用户id",required = true,hidden =true )
-    @NotNull(message = "医生id不能为空",groups = Insert.class)
-    @JsonIgnoreProperties
-    private String userId;
-
-    @ApiModelProperty(value = "咨询自动回复,长度限制255")
-    @Length(message = "咨询自动回复设置不得超过255个字符",groups = Update.class)
-    private String consultReply;
-
-    @ApiModelProperty(value = "勿扰自动回复,长度限制255")
-    @Length(message = "勿扰自动回复设置不得超过255个字符",groups = Update.class)
-    private String noDisturbReply;
-
-    @ApiModelProperty(value = "快捷回复,长度限制2048")
-    @TableField(typeHandler = StringListTypeHandler.class)
-    @Length(message = "勿扰自动回复设置不得超过2048个字符",groups = Update.class)
-    private List<String> fastReply;
-
-
-
-    public static AppUserReplyEntity createDefault(String userId){
-        AppUserReplyEntity result = new AppUserReplyEntity();
-        result.setUserId(userId);
-        result.setConsultReply("您好,我已经收到您的咨询申请,请稍等");
-        result.setFastReply(Arrays.asList("你好","你有什么问题吗?","了解了,请稍等我过去"));
-        return result;
-    }
-}

+ 0 - 16
nb-service/app-doctor/src/main/java/com/nb/app/doctor/mapper/AppUserReplyMapper.java

@@ -1,16 +0,0 @@
-package com.nb.app.doctor.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.nb.app.doctor.entity.AppUserReplyEntity;
-import org.apache.ibatis.annotations.Mapper;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName AppDoctorUserMapper.java
- * @Description TODO
- * @createTime 2022年08月09日 21:24:00
- */
-@Mapper
-public interface AppUserReplyMapper extends BaseMapper<AppUserReplyEntity> {
-}

+ 73 - 7
nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalAppDoctorUserService.java

@@ -2,6 +2,7 @@ package com.nb.app.doctor.service;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -9,16 +10,25 @@ import com.baomidou.mybatisplus.core.enums.SqlMethod;
 import com.nb.app.doctor.api.entity.AppDoctorUserEntity;
 import com.nb.app.doctor.api.feign.IAppDoctorUserClient;
 import com.nb.app.doctor.api.feign.result.AppDoctorUserResult;
-import com.nb.app.doctor.controller.UserController;
 import com.nb.app.doctor.entity.AppUserConsultConfigEntity;
-import com.nb.app.doctor.entity.AppUserReplyEntity;
 import com.nb.app.doctor.mapper.AppDoctorUserMapper;
+import com.nb.app.msg.enums.MsgEnum;
 import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.crud.BaseService;
 import com.nb.core.enums.StatusEnum;
 import com.nb.core.exception.CustomException;
+import com.nb.im.entity.ImMsgEntity;
+import com.nb.im.entity.ImRoomEntity;
+import com.nb.im.enums.ImMsgType;
+import com.nb.im.enums.ImStatusEnum;
+import com.nb.im.enums.SponsorEnum;
+import com.nb.im.event.ImMsgEvent;
+import com.nb.im.service.LocalImRoomService;
+import com.nb.im.utils.ImUtils;
+import com.nb.im.ws.PubMsgInfo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -42,8 +52,11 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
 
     @Autowired
     @Lazy
-    private LocalUserReplyService replyService;
+    private LocalImRoomService roomService;
 
+    @Autowired
+    @Lazy
+    private ImUtils imUtils;
     @Override
     public void validateBeforeSave(AppDoctorUserEntity entity) {
         if(StrUtil.isEmpty(entity.getUsername())){
@@ -80,7 +93,6 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
     @Override
     public void postSave(AppDoctorUserEntity entity) {
         consultConfigService.save( AppUserConsultConfigEntity.createDefault(entity.getId()));
-        replyService.save(AppUserReplyEntity.createDefault(entity.getId()));
     }
 
     @Override
@@ -122,14 +134,11 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
         boolean result = executeBatch(sources, DEFAULT_BATCH_SIZE, (sqlSession, entity) -> sqlSession.insert(sqlStatement, entity));
         if(result){
             ArrayList<AppUserConsultConfigEntity> consultConfigs = new ArrayList<>();
-            ArrayList<AppUserReplyEntity> userReplies = new ArrayList<>();
 
             sources.forEach(userEntity->{
                 consultConfigs.add(AppUserConsultConfigEntity.createDefault(userEntity.getId()));
-                userReplies.add(AppUserReplyEntity.createDefault(userEntity.getId()));
             });
             consultConfigService.saveBatch(consultConfigs);
-            replyService.saveBatch(userReplies);
         }
         return result;
     }
@@ -176,4 +185,61 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
         AppDoctorUserEntity user = this.getById(id);
         return user==null?null:BeanUtil.copyProperties(this.getById(id),AppDoctorUserResult.class);
     }
+
+
+
+
+    @EventListener
+    public void assistListener(ImMsgEvent event){
+        //判断当前发送人是否为患者,若为患者发送,则判断是否存在自动回复
+        ImMsgEntity entity = event.getMsg();
+        String payload=null;
+        if(!SponsorEnum.assist.equals(entity.getSponsor())){
+            return;
+        }
+        //判断是否处于勿扰模式
+        String imRoomId = entity.getImRoomId();
+        ImRoomEntity room = roomService.getById(imRoomId);
+        if(!ImStatusEnum.SUCCESS.equals(room.getStatus())){
+            return;
+        }
+        AppUserConsultConfigEntity consultConfig = consultConfigService.getOne(new QueryWrapper<AppUserConsultConfigEntity>().lambda()
+                .eq(AppUserConsultConfigEntity::getUserId, room.getDoctorId())
+                .last("limit 1"));
+        boolean disturb=false;
+        if(Boolean.TRUE.equals(consultConfig.getNoDisturb())){
+            //开启勿扰模式,判断当前时间是否存在于勿扰时间区间
+            List<Integer> noDisturbTime = consultConfig.getNoDisturbTime();
+            int currentHour = DateUtil.hour(new Date(), true);
+            if(CollectionUtil.size(noDisturbTime)==2){
+                //是否打扰到了医生
+                Integer startTime = noDisturbTime.get(0);
+                Integer endTime = noDisturbTime.get(1);
+                if(startTime<endTime){
+                    disturb=startTime<=currentHour&&currentHour<=endTime;
+                }else {
+                    disturb=startTime<=currentHour||currentHour<=endTime;
+                }
+                if(disturb){
+                    payload=StrUtil.isNotBlank(consultConfig.getNoDisturbReply())?consultConfig.getNoDisturbReply():String.format("您好,当前时间我可能收不到消息,请在 %s - %s 期间向我发起咨询。",endTime+":00",startTime+":00");
+                }
+            }
+        }
+        if(!disturb&&MsgEnum.CONSUL.equals(entity.getOperationType())){
+            payload=StrUtil.isNotBlank(consultConfig.getConsultReply())?consultConfig.getConsultReply():"您好,我已经收到您的咨询,请稍等";
+        }
+        if(StrUtil.isNotEmpty(payload)){
+            PubMsgInfo pubMsgInfo = PubMsgInfo
+                    .builder()
+                    .roomId(entity.getImRoomId())
+                    .payload(payload)
+                    .senderType(entity.getSponsor())
+                    .senderId(entity.getSenderId())
+                    .senderNickname(entity.getSenderNickname())
+                    .senderAvatar(entity.getSenderAvatar())
+                    .msgType(ImMsgType.txt)
+                    .build();
+            imUtils.send(entity.getImRoomId(),pubMsgInfo);
+        }
+    }
 }

+ 0 - 32
nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalUserReplyService.java

@@ -1,32 +0,0 @@
-package com.nb.app.doctor.service;
-
-import com.nb.app.doctor.entity.AppUserReplyEntity;
-import com.nb.app.doctor.mapper.AppUserReplyMapper;
-import com.nb.common.crud.BaseService;
-import org.springframework.stereotype.Component;
-
-/**
- * @author lifang
- * @version 1.0.0
- * @ClassName LocalAppDoctorUserService.java
- * @Description TODO
- * @createTime 2022年08月09日 21:24:00
- */
-@Component
-public class LocalUserReplyService extends BaseService<AppUserReplyMapper, AppUserReplyEntity,String> {
-
-    @Override
-    public void validateBeforeSave(AppUserReplyEntity entity) {
-
-    }
-
-    @Override
-    public void validateBeforeUpdate(AppUserReplyEntity entity) {
-
-    }
-
-    @Override
-    public void validateBeforeDelete(String id) {
-
-    }
-}

+ 29 - 0
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/LocalBusClinicService.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.nb.web.api.enums.ClinicManageEnum;
 import com.nb.web.api.event.ClinicFinishedEvent;
 import com.nb.web.api.event.ClinicRestartEvent;
+import com.nb.web.api.event.PatientInfoEvent;
 import com.nb.web.service.bus.controller.vo.ClinicStatsVo;
 import com.nb.web.api.entity.BusClinicEntity;
 import com.nb.web.api.entity.BusInfusionHistoryEntity;
@@ -22,6 +23,7 @@ import com.nb.web.service.bus.utils.WsPublishUtils;
 import com.nb.common.crud.BaseService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.EmbeddedValueResolverAware;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -76,6 +78,33 @@ public class LocalBusClinicService extends BaseService<BusClinicMapper, BusClini
 
     }
 
+    @Override
+    public void postSave(BusClinicEntity entity) {
+        publishPatientInfo(entity);
+    }
+
+    @Override
+    public void postUpdate(BusClinicEntity entity) {
+        publishPatientInfo(entity);
+    }
+
+    /**
+     * 描述: 推送输注监控病人临床信息
+     * @author lifang
+     * @date 2022/8/23 9:47
+     * @param entity
+     * @return void
+     */
+    private void publishPatientInfo(BusClinicEntity entity){
+        if(entity.getMonitorType()){
+            PatientInfoEvent event = new PatientInfoEvent(this,entity.getPatientId(),entity.getPatientCode());
+            event.setPatientAge(entity.getPatientAge());
+            event.setPatientName(entity.getPatientName());
+            event.setPatientSex(entity.getPatientGender());
+            SpringUtil.publishEvent(event);
+        }
+    }
+
     /**
      * 结束当前医院病号的临床数据
      * @param clinicId 临床id