ソースを参照

fix 绑定消息显示问题

18339543638 3 年 前
コミット
8cf2789a28

+ 4 - 0
nb-im/pom.xml

@@ -12,6 +12,10 @@
     <artifactId>nb-im</artifactId>
 
     <dependencies>
+        <dependency>
+            <groupId>com.tuoren</groupId>
+            <artifactId>app-assistant-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.tuoren</groupId>
             <artifactId>delay-queue-common</artifactId>

+ 30 - 1
nb-im/src/main/java/com/nb/im/service/LocalImRoomService.java

@@ -1,8 +1,12 @@
 package com.nb.im.service;
 
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
+import com.nb.app.assistant.api.event.UpdateBindPatientEvent;
+import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
 import com.nb.app.msg.enums.MsgEnum;
 import com.nb.common.crud.BaseService;
 import com.nb.common.queue.delay.manager.DelayMessageManager;
@@ -22,6 +26,7 @@ import com.nb.im.ws.PubMsgInfo;
 import com.nb.web.api.feign.IPatientClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.context.event.EventListener;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -61,6 +66,29 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
     @Lazy
     private DelayMessageManager delayMessageManager;
 
+
+    @EventListener
+    @Transactional(rollbackFor = Exception.class)
+    public  void updateRoomInfo(UpdateBindPatientEvent event){
+        String assistId = event.getAssistId();
+        String doctorId = event.getDoctorId();
+        String oldPatientId = event.getOldPatientId();
+        UpdateBindPatientParam param = event.getParam();
+        this.update(new UpdateWrapper<ImRoomEntity>()
+                .lambda()
+                .eq(ImRoomEntity::getAssistId,assistId)
+                .eq(ImRoomEntity::getDoctorId,doctorId)
+                .eq(ImRoomEntity::getPatientId,oldPatientId)
+                .in(ImRoomEntity::getStatus,ImStatusEnum.WAITING,ImStatusEnum.SUCCESS)
+                .set(StrUtil.isNotEmpty(param.getPatientId()), ImRoomEntity::getPatientId, param.getPatientId())
+                .set(StrUtil.isNotEmpty(param.getPatientAge()), ImRoomEntity::getPatientAge, param.getPatientAge())
+                .set(StrUtil.isNotEmpty(param.getPatientCode()), ImRoomEntity::getPatientCode, param.getPatientCode())
+                .set(StrUtil.isNotEmpty(param.getPatientName()), ImRoomEntity::getPatientName, param.getPatientName())
+                .set(ObjectUtil.isNotNull(param.getPatientSex()), ImRoomEntity::getPatientSex, param.getPatientSex())
+        );
+    }
+
+
     @Override
     public void validateBeforeSave(ImRoomEntity entity) {
         if(entity.getManageType()==null&& StrUtil.isNotEmpty(entity.getPatientId())){
@@ -84,7 +112,8 @@ public class LocalImRoomService extends BaseService<ImRoomMapper, ImRoomEntity,S
     @Override
     public void postUpdate(ImRoomEntity entity) {
         if(ImStatusEnum.SUCCESS.equals(entity.getStatus())){
-            autoFinishRoom(entity.getId());        }
+            autoFinishRoom(entity.getId());
+        }
     }
 
     @Override

+ 30 - 0
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/event/UpdateBindPatientEvent.java

@@ -0,0 +1,30 @@
+package com.nb.app.assistant.api.event;
+
+import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
+import lombok.Getter;
+import org.springframework.context.ApplicationEvent;
+
+import java.time.Clock;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName UpdateBindPatientEvent.java
+ * @Description 绑定关系中的病人信息发生变化
+ * @createTime 2022年09月21日 17:07:00
+ */
+@Getter
+public class UpdateBindPatientEvent  extends ApplicationEvent {
+    private UpdateBindPatientParam param;
+    private String assistId;
+    private String doctorId;
+    private String oldPatientId;
+
+    public UpdateBindPatientEvent(Object source, UpdateBindPatientParam param, String assistId, String doctorId,String oldPatientId) {
+        super(source);
+        this.param = param;
+        this.assistId = assistId;
+        this.doctorId = doctorId;
+        this.oldPatientId=oldPatientId;
+    }
+}

+ 3 - 0
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/IAssistantUserBindClient.java

@@ -3,6 +3,7 @@ package com.nb.app.assistant.api.feign;
 import com.nb.app.assistant.api.bean.HandleBindResult;
 import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
 import com.nb.app.assistant.api.feign.result.ContactQuery;
+import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
 
 import java.util.*;
 /**
@@ -64,4 +65,6 @@ public interface IAssistantUserBindClient {
      * @return boolean
      */
     boolean haveBindByPatientId(String patientId, String tenantId);
+
+    boolean updateBindPatient(UpdateBindPatientParam patientParam);
 }

+ 31 - 0
nb-service-api/app-assistant-api/src/main/java/com/nb/app/assistant/api/feign/result/UpdateBindPatientParam.java

@@ -0,0 +1,31 @@
+package com.nb.app.assistant.api.feign.result;
+
+import com.nb.core.enums.SexEnum;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName UpdateBindPatientDto.java
+ * @Description TODO
+ * @createTime 2022年09月21日 16:58:00
+ */
+@Data
+public class UpdateBindPatientParam {
+    private String patientId;
+
+    private String patientCode;
+
+    private String patientName;
+
+    private SexEnum patientSex;
+
+    private String patientAge;
+
+    @ApiModelProperty("绑定关系id")
+    @NotNull(message = "绑定关系id不能为空")
+    private String bindId;
+}

+ 29 - 0
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java

@@ -1,6 +1,7 @@
 package com.nb.app.assistant.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.json.JSONUtil;
@@ -9,11 +10,13 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.nb.app.assistant.api.bean.HandleBindResult;
 import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
+import com.nb.app.assistant.api.event.UpdateBindPatientEvent;
 import com.nb.app.assistant.api.feign.IAssistantUserBindClient;
 import com.nb.app.assistant.api.feign.result.AssistantUserResult;
 import com.nb.app.assistant.api.enums.ApplyEnum;
 import com.nb.app.assistant.api.enums.BindEnum;
 import com.nb.app.assistant.api.feign.result.ContactQuery;
+import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
 import com.nb.app.assistant.constant.UnEvalConstant;
 import com.nb.app.assistant.delay.UnEvalNotifyConfig;
 import com.nb.app.assistant.mapper.AssistantUserBindMapper;
@@ -300,6 +303,32 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
                 .last("limit 1"))!=null;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean updateBindPatient(UpdateBindPatientParam param) {
+        if(StrUtil.isEmpty(param.getBindId())){
+            return true;
+        }
+        AssistantUserBindEntity userBind = this.getById(param.getBindId());
+        if(userBind==null){
+            return true;
+        }
+        boolean result = this.update(new UpdateWrapper<AssistantUserBindEntity>()
+                .lambda()
+                .eq(AssistantUserBindEntity::getId, param.getBindId())
+                .set(StrUtil.isNotEmpty(param.getPatientId()), AssistantUserBindEntity::getPatientId, param.getPatientId())
+                .set(StrUtil.isNotEmpty(param.getPatientAge()), AssistantUserBindEntity::getPatientAge, param.getPatientAge())
+                .set(StrUtil.isNotEmpty(param.getPatientCode()), AssistantUserBindEntity::getPatientCode, param.getPatientCode())
+                .set(StrUtil.isNotEmpty(param.getPatientName()), AssistantUserBindEntity::getPatientName, param.getPatientName())
+                .set(ObjectUtil.isNotNull(param.getPatientSex()), AssistantUserBindEntity::getPatientSex, param.getPatientSex())
+        );
+        if(result){
+            //更新最新的聊天室信息
+            SpringUtil.publishEvent(new UpdateBindPatientEvent(this,param,userBind.getAssistId(),userBind.getDoctorId(),userBind.getPatientId()));
+        }
+        return result;
+    }
+
     /**
      * 描述:查询当前用户所看护的所有病人信息
      * @author lifang

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

@@ -2,12 +2,15 @@ package com.nb.app.doctor.controller;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import com.nb.app.assistant.api.bean.HandleBindResult;
 import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
 import com.nb.app.assistant.api.feign.IAssistantUserBindClient;
 import com.nb.app.assistant.api.feign.result.ContactQuery;
+import com.nb.app.assistant.api.feign.result.UpdateBindPatientParam;
 import com.nb.app.doctor.controller.vo.InviteCodeVo;
+import com.nb.app.doctor.controller.vo.UpdateBindPatientVo;
 import com.nb.app.doctor.service.dto.PatientMonitorConsultResult;
 import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.websocket.WebSocketSessionLifeCycleManage;
@@ -112,6 +115,12 @@ public class PatientMonitorController {
         return R.success(userBindClient.handleBindResult(source));
     }
 
+    @PostMapping("/update/bind")
+    @ApiOperation("更新看护关系中的病人信息")
+    public R<Boolean> updateBind(@RequestBody @Validated UpdateBindPatientVo vo){
+        return R.success(userBindClient.updateBindPatient(BeanUtil.copyProperties(vo, UpdateBindPatientParam.class)));
+    }
+
 
     @PostMapping("/lift/{bindId}")
     @ApiOperation(value = "与病人解除绑定")

+ 41 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/vo/UpdateBindPatientVo.java

@@ -0,0 +1,41 @@
+package com.nb.app.doctor.controller.vo;
+
+import com.nb.core.enums.SexEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName UpdateBindPatientVo.java
+ * @Description TODO
+ * @createTime 2022年09月21日 16:49:00
+ */
+@Data
+@ApiModel("更新绑定关系中的病人信息")
+public class UpdateBindPatientVo {
+
+    @ApiModelProperty("更新后的病人id")
+    @NotNull(message = "病人id不能为空")
+    private String patientId;
+
+    @ApiModelProperty("住院号")
+    private String patientCode;
+
+    @ApiModelProperty("病人名称")
+    private String patientName;
+
+    @ApiModelProperty("病人性别")
+    private SexEnum patientSex;
+
+    @ApiModelProperty("病人年龄")
+    private String patientAge;
+
+    @ApiModelProperty("绑定关系id")
+    @NotNull(message = "绑定关系id不能为空")
+    private String bindId;
+}