Преглед изворни кода

fix 24小时未评提醒问题
add 看护人绑定新增备注病人姓名字段

18339543638 пре 3 година
родитељ
комит
e5d942b60e
15 измењених фајлова са 53 додато и 9 уклоњено
  1. 1 0
      nb-common/ws-common/src/main/java/com/nb/common/websocket/DefaultWebSocketMsgHandler.java
  2. 3 0
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/entity/AssistantUserBindEntity.java
  3. 1 1
      nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/IAssistantEvalClient.java
  4. 2 0
      nb-service-api/app-doctor-api/src/main/java/com/nb/app/doctor/api/feign/IAppDoctorUserClient.java
  5. 1 0
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/controller/PatientOperationController.java
  6. 3 2
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/delay/UnEvalNotifyDelayMessageHandler.java
  7. 1 1
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/listener/AssistPatientInfoListener.java
  8. 3 2
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantEvalService.java
  9. 14 1
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java
  10. 3 0
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/AssistPatientResult.java
  11. 1 1
      nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/EditAssistBindDto.java
  12. 1 1
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/EvalController.java
  13. 1 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/PatientMonitorController.java
  14. 4 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/entity/AppUserConsultConfigEntity.java
  15. 14 0
      nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalAppDoctorUserService.java

+ 1 - 0
nb-common/ws-common/src/main/java/com/nb/common/websocket/DefaultWebSocketMsgHandler.java

@@ -62,6 +62,7 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
             Object loginUser = channelContext.get(LOGIN_USER_KEY);
             if(loginUser!=null&&loginUser instanceof LoginUser){
                 SpringUtil.publishEvent(new ConnectedEvent(this, (LoginUser) loginUser,channelContext));
+                Tio.bindUser(channelContext,String.valueOf(((LoginUser) loginUser).getId()));
             }
             Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.success("连接成功")),WsPacket.CHARSET_NAME));
         }else {

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

@@ -34,6 +34,9 @@ public class AssistantUserBindEntity extends GenericEntity<String> {
     @ApiModelProperty(value = "用户昵称",required = true)
     private String assistNickname;
 
+    @ApiModelProperty("看护人设置的病人名称备注")
+    private String patientNamePs;
+
     @ApiModelProperty(value = "病人id,当手动填写数据时,为空;当邀请码填充时,不为空")
     private String patientId;
 

+ 1 - 1
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/IAssistantEvalClient.java

@@ -19,5 +19,5 @@ public interface IAssistantEvalClient {
      * @param clinicId
      * @return AssistantEvalEntity
      */
-    AssistantEvalEntity getLastEval(String clinicId);
+    AssistantEvalEntity getLastEval(String clinicId,String evaluatorId);
 }

+ 2 - 0
nb-service-api/app-doctor-api/src/main/java/com/nb/app/doctor/api/feign/IAppDoctorUserClient.java

@@ -80,4 +80,6 @@ public interface IAppDoctorUserClient {
      * @return boolean
      */
      boolean removeById(Serializable id) ;
+
+    boolean isOnline(String doctorId);
 }

+ 1 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/controller/PatientOperationController.java

@@ -85,6 +85,7 @@ public class PatientOperationController {
     @PostMapping("/edit")
     @ApiOperation("修改绑定关系")
     public R edit(@RequestBody@Validated EditAssistBindDto source){
+        log.info("看护人修改绑定关系,{}",JSONUtil.toJsonStr(source));
         return R.success(userBindService.update(source));
     }
 

+ 3 - 2
nb-service/app-assistant/src/main/java/com/nb/app/assistant/delay/UnEvalNotifyDelayMessageHandler.java

@@ -60,7 +60,7 @@ public class UnEvalNotifyDelayMessageHandler implements DelayMessageHandler {
                 .last("limit 1"));
         //24小时未评提醒
         if(Boolean.TRUE.equals(assistantUser.getUnEvalNotify())){
-            AssistantEvalEntity lastEval = evalService.getLastEval(unEvalNotify.getClinicId());
+            AssistantEvalEntity lastEval = evalService.getLastEval(unEvalNotify.getClinicId(),unEvalNotify.getAssistId());
             if(lastEval==null){
                 log.info("尚未评价此次临床,发送24小时未评消息");
                 //发送消息
@@ -84,7 +84,7 @@ public class UnEvalNotifyDelayMessageHandler implements DelayMessageHandler {
                 .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
                 .last("limit 1"));
         if(userBind==null){
-            log.info("看护人{}与病人未形成成功的看护绑定关系,发送24小时未评消息失败",assistId,patientId);
+            log.info("看护人{}与病人{}未形成成功的看护绑定关系,发送24小时未评消息失败",assistId,patientId);
             return;
         }
         SpringUtil.publishEvent(new SaveMsgEvent(this,
@@ -95,6 +95,7 @@ public class UnEvalNotifyDelayMessageHandler implements DelayMessageHandler {
                         .patientCode(userBind.getPatientCode())
                         .patientName(userBind.getPatientName())
                         .patientSex(userBind.getPatientSex())
+                        .extend("24小时")
                         .sys(true)
                         .receiverId(assistId).build()
         ));

+ 1 - 1
nb-service/app-assistant/src/main/java/com/nb/app/assistant/listener/AssistPatientInfoListener.java

@@ -25,7 +25,7 @@ public class AssistPatientInfoListener {
     private final LocalAssistantUserBindService userBindService;
 
     @EventListener
-    @Async
+//    @Async
     public void patientInfoAssist(PatientInfoEvent patientInfoEvent){
         String patientId = patientInfoEvent.getPatientId();
         userBindService.update(new UpdateWrapper<AssistantUserBindEntity>()

+ 3 - 2
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantEvalService.java

@@ -68,10 +68,11 @@ public class LocalAssistantEvalService extends BaseService<AssistantEvalMapper,
     }
 
     @Override
-    public AssistantEvalEntity getLastEval(String clinicId) {
+    public AssistantEvalEntity getLastEval(String clinicId,String evaluatorId) {
         return this.getOne(new QueryWrapper<AssistantEvalEntity>()
                 .lambda()
-                .eq(AssistantEvalEntity::getClinicId,clinicId)
+                .eq(StrUtil.isNotEmpty(clinicId),AssistantEvalEntity::getClinicId,clinicId)
+                .eq(StrUtil.isNotEmpty(evaluatorId),AssistantEvalEntity::getEvaluator,evaluatorId)
                 .orderByDesc(AssistantEvalEntity::getEvaluateTime)
                 .last("limit 1"));
     }

+ 14 - 1
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java

@@ -77,6 +77,10 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
     @Override
     public void validateBeforeSave(AssistantUserBindEntity entity) {
         entity.setExistIm(false);
+        if(StrUtil.isEmpty(entity.getPatientNamePs())){
+            //备注名称默认与病人名称相同
+            entity.setPatientNamePs(entity.getPatientName());
+        }
     }
 
     @Override
@@ -117,6 +121,9 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
                 .eq(AssistantUserBindEntity::getDefault_,true)
                 .last("limit 1"));
         entity.setDefault_(defaultBind==null);
+        if(StrUtil.isEmpty(entity.getPatientNamePs())){
+            entity.setPatientNamePs(entity.getPatientName());
+        }
         boolean result = this.baseMapper.insert(entity) == 1;
 
         if(result){
@@ -175,6 +182,9 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
                         .sys(false)
                         .build()
         ));
+        if(!doctorUserClient.isOnline(userBind.getDoctorId())){
+            //医生不在线,发送短信通知
+        }
     }
 
 
@@ -409,6 +419,9 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
         AssistantUserResult assistantUser = userService.getById(userBind.getAssistId());
         if(BindEnum.WAITING.equals(userBind.getStatus())){
             AssistantUserBindEntity userBindEntity = BeanUtil.toBean(source, AssistantUserBindEntity.class);
+            String patientNameHis = userBindEntity.getPatientName();
+            userBindEntity.setPatientNamePs(patientNameHis);
+            userBindEntity.setPatientName(null);
             boolean result = this.updateById(userBindEntity);
             if(result){
                 SpringUtil.publishEvent(new SaveMsgEvent(
@@ -422,7 +435,7 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
                                 .senderAvatar(assistantUser.getAvatar())
                                 .patientId(source.getPatientId())
                                 .patientCode(source.getPatientCode())
-                                .patientName(source.getPatientName())
+                                .patientName(patientNameHis)
                                 .patientAge(source.getPatientAge())
                                 .patientSex(source.getPatientSex())
                                 .receiverId(source.getDoctorId())

+ 3 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/AssistPatientResult.java

@@ -27,6 +27,9 @@ public class AssistPatientResult {
     @ApiModelProperty(value = "住院号",required = true)
     private String patientCode;
 
+    @ApiModelProperty(value = "病人姓名备注")
+    private String patientNamePs;
+
     @ApiModelProperty(value = "病人姓名")
     private String patientName;
 

+ 1 - 1
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/dto/EditAssistBindDto.java

@@ -29,7 +29,7 @@ public class EditAssistBindDto {
     @NotNull(message = "住院号不能为空")
     private String patientCode;
 
-    @ApiModelProperty(value = "病人姓名")
+    @ApiModelProperty(value = "病人姓名",notes = "此处为看护人病人备注,不影响his数据,对应的实际字段patient_name_ps")
     private String patientName;
 
     @ApiModelProperty(value = "病人性别")

+ 1 - 1
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/EvalController.java

@@ -72,7 +72,7 @@ public class EvalController {
     @PostMapping("/assist/{clinicId}")
     @ApiOperation(value = "根据临床id查询 疼痛小助手 最新的自评记录")
     public R<AssistantEvalEntity> add(@PathVariable("clinicId") String  clinicId) {
-        return R.success(assistantEvalClient.getLastEval(clinicId));
+        return R.success(assistantEvalClient.getLastEval(clinicId,null));
     }
 
     @PostMapping("/config/{tenantId}")

+ 1 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/PatientMonitorController.java

@@ -132,6 +132,7 @@ public class PatientMonitorController {
     @PostMapping("/update/bind")
     @ApiOperation("更新看护关系中的病人信息")
     public R<Boolean> updateBind(@RequestBody @Validated UpdateBindPatientVo vo){
+        log.info("医生修改绑定关系,{}",JSONUtil.toJsonStr(vo));
         return R.success(userBindClient.updateBindPatient(BeanUtil.copyProperties(vo, UpdateBindPatientParam.class)));
     }
 

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

@@ -56,6 +56,9 @@ public class AppUserConsultConfigEntity extends GenericEntity<String> {
     @Length(message = "勿扰自动回复设置不得超过255个字符",groups = Update.class)
     private String noDisturbReply;
 
+    @ApiModelProperty(value = "是否开启短信推送模式",notes = "当存在一键呼叫且医生不在线时,会发送短信提醒,默认关闭")
+    private Boolean msgPush;
+
     @ApiModelProperty(value = "快捷回复,长度限制2048")
     @TableField(typeHandler = StringListTypeHandler.class)
     private List<String> fastReply;
@@ -67,6 +70,7 @@ public class AppUserConsultConfigEntity extends GenericEntity<String> {
         result.setConsult(true);
         result.setAutoFinishConsult(true);
         result.setUserId(userId);
+        result.setMsgPush(false);
         result.setNoDisturb(false);
         result.setConsultReply("您好,我已经收到您的咨询申请,请稍等");
         result.setFastReply(Arrays.asList("你好","你有什么问题吗?","了解了,请稍等我过去"));

+ 14 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/service/LocalAppDoctorUserService.java

@@ -36,6 +36,10 @@ import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.tio.core.ChannelContext;
+import org.tio.core.Tio;
+import org.tio.server.ServerTioConfig;
+import org.tio.utils.lock.SetWithLock;
+import org.tio.websocket.starter.TioWebSocketServerBootstrap;
 
 import java.io.Serializable;
 import java.util.*;
@@ -66,6 +70,10 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
     @Autowired
     @Lazy
     private ImUtils imUtils;
+
+    @Autowired
+    TioWebSocketServerBootstrap serverBootstrap;
+
     @Override
     public void validateBeforeSave(AppDoctorUserEntity entity) {
         if(StrUtil.isEmpty(entity.getUsername())){
@@ -195,6 +203,12 @@ public class LocalAppDoctorUserService extends BaseService<AppDoctorUserMapper,
         return user==null?null:BeanUtil.copyProperties(this.getById(id),AppDoctorUserResult.class);
     }
 
+    @Override
+    public boolean isOnline(String doctorId) {
+        SetWithLock<ChannelContext> user = Tio.getByUserid(serverBootstrap.getServerTioConfig(),doctorId);
+        return user!=null&&user.size()!=0;
+    }
+
     @EventListener
     public void disConnect(DisConnectedEvent event){
         ChannelContext channelContext = event.getChannelContext();