瀏覽代碼

fix ws授权模块

18339543638 3 年之前
父節點
當前提交
c141308ae0

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

@@ -1,10 +1,13 @@
 package com.nb.app.assistant.controller;
 
 import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.nb.app.assistant.controller.vo.InviteCodePatientVo;
 import com.nb.app.assistant.controller.vo.MonitorAddVo;
 import com.nb.app.assistant.entity.AssistantUserBindEntity;
+import com.nb.app.assistant.enums.BindEnum;
 import com.nb.app.assistant.service.LocalAssistantUserBindService;
+import com.nb.auth.utils.SecurityUtil;
 import com.nb.core.exception.CustomException;
 import com.nb.core.result.R;
 import com.nb.web.api.feign.IPatientClient;
@@ -42,8 +45,9 @@ public class PatientOperationController {
     @PostMapping("/save")
     @ApiOperation(value = "发起添加看护人申请")
     public R<Boolean> saveMonitor(@RequestBody MonitorAddVo vo){
+        judgePatient(vo.getPatientId());
+        judgeUser();
         AssistantUserBindEntity resource = BeanUtil.copyProperties(vo, AssistantUserBindEntity.class);
-        //判断是否被绑定 todo
         return R.success(userBindService.save(resource));
     }
 
@@ -54,6 +58,54 @@ public class PatientOperationController {
         if(inviteCodeResult.getResult()==null){
             throw new CustomException("系统繁忙,请稍后重试");
         }
+        judgePatient(inviteCodeResult.getResult().getPatientId());
+        judgeUser();
         return R.success(BeanUtil.copyProperties(inviteCodeResult.getResult(), InviteCodePatientVo.class));
     }
+
+    @PostMapping("/call/{bindId}")
+    @ApiOperation(value = "一键呼叫")
+    public R<Boolean> painCall(@PathVariable("bindId")String bindId){
+        userBindService.painCall(bindId);
+        return R.success();
+    }
+
+
+    /**
+     * 描述: 判断患者是否已被绑定
+     * @author lifang
+     * @date 2022/8/12 14:45
+     * @param patientId
+     * @return void
+     */
+    private void judgePatient(String patientId){
+        AssistantUserBindEntity userBind = userBindService.getOne(new QueryWrapper<AssistantUserBindEntity>()
+                .lambda()
+                .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
+                .eq(AssistantUserBindEntity::getPatientId, patientId)
+        );
+
+        if(userBind!=null){
+            throw new CustomException("该病号已被他人监护");
+        }
+    }
+
+    /**
+     * 描述: 判断当前用户绑定人数是否已超过限制
+     * @author lifang
+     * @date 2022/8/12 14:45
+     * @return void
+     */
+    private void judgeUser(){
+        String id =String.valueOf( SecurityUtil.getId());
+        Long bindCount = userBindService.count(new QueryWrapper<AssistantUserBindEntity>()
+                .lambda()
+                .eq(AssistantUserBindEntity::getStatus, BindEnum.SUCCESS)
+                .eq(AssistantUserBindEntity::getUserId, id)
+        );
+
+        if(bindCount>=6){
+            throw new CustomException("最多同时监护6名患者");
+        }
+    }
 }

+ 23 - 12
nb-service/app-assistant/src/main/java/com/nb/app/assistant/service/LocalAssistantUserBindService.java

@@ -1,5 +1,6 @@
 package com.nb.app.assistant.service;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.nb.app.assistant.entity.AssistantUserBindEntity;
 import com.nb.app.assistant.entity.AssistantUserEntity;
 import com.nb.app.assistant.enums.ApplyEnum;
@@ -7,11 +8,13 @@ import com.nb.app.assistant.enums.BindEnum;
 import com.nb.app.assistant.mapper.AssistantUserBindMapper;
 import com.nb.app.msg.bean.MsgBean;
 import com.nb.app.msg.enums.MsgEnum;
+import com.nb.app.msg.event.SaveMsgEvent;
 import com.nb.auth.utils.SecurityUtil;
 import com.nb.common.crud.BaseService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * @author lifang
@@ -50,18 +53,22 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
         boolean result = this.baseMapper.insert(entity) == 1;
 
         if(result){
-            MsgBean.builder()
-                    .msgType(ApplyEnum.INVITE_CODE.equals(entity.getApplyType())?
-                            MsgEnum.CODE_BIND_NOTIFY:MsgEnum.MANUAL_BIND_NOTIFY)
-                    .payload(entity.getId())
-                    .sender(entity.getUserId())
-                    .senderName(currentUser.getNickName())
-                    .patientId(entity.getPatientId())
-//                    .patientCode()
-//                    .patientName()
-                    .receiver(entity.getDoctorId())
-//                    .receiverName()
-                    .sys(false);
+            SpringUtil.publishEvent(new SaveMsgEvent(
+                    this,
+                    MsgBean.builder()
+                            .msgType(ApplyEnum.INVITE_CODE.equals(entity.getApplyType())?
+                                    MsgEnum.CODE_BIND_NOTIFY:MsgEnum.MANUAL_BIND_NOTIFY)
+                            .payload(entity.getId())
+                            .sender(entity.getUserId())
+                            .senderName(currentUser.getNickName())
+                            .patientId(entity.getPatientId())
+                            .patientCode(entity.getPatientCode())
+                            .patientName(entity.getPatientName())
+                            .receiver(entity.getDoctorId())
+                            .receiverName(entity.getDoctorName())
+                            .sys(false)
+                            .build()
+            ));
         }
 
         return result;
@@ -72,5 +79,9 @@ public class LocalAssistantUserBindService extends BaseService<AssistantUserBind
 
 
 
+    }
+    @Transactional(readOnly = true)
+    public void painCall(String bindId) {
+        AssistantUserBindEntity byId = this.getById(bindId);
     }
 }

+ 25 - 0
nb-service/app-doctor/src/main/java/com/nb/app/doctor/controller/ContactsController.java

@@ -0,0 +1,25 @@
+package com.nb.app.doctor.controller;
+
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author lifang
+ * @version 1.0.0
+ * @ClassName ContactsController.java
+ * @Description TODO
+ * @createTime 2022年08月12日 14:57:00
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/app/contacts")
+@Api(tags = "通讯录")
+@Slf4j
+public class ContactsController {
+
+
+
+}

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

@@ -101,8 +101,6 @@ public class PatientMonitorController {
         return R.success(assistantEvalClient.getLastEval(clinicId));
     }
 
-
-
     @PostMapping("/invite/code")
     @ApiOperation(value = "患者看护邀请码")
     public R<InviteCodeResult> inviteCode(@RequestAttribute("tenantId")@ApiParam(hidden = true) String tenantId, @RequestBody InviteCodeVo resource) {

+ 6 - 1
nb-service/web-service/src/main/java/com/nb/web/service/bus/controller/BusClinicController.java

@@ -53,7 +53,12 @@ public class BusClinicController {
     @PostMapping("/stats")
     @ApiOperation(value = "临床过程中的数据记录",notes = "权限【无】")
     public R<ClinicStatsReturnResult> stats(@RequestBody@Validated ClinicStatsVo statsVo) {
-        if (!(statsVo.isAppendDose()||statsVo.isContinueDose()||statsVo.isInputDose()||statsVo.isInValidCount()||statsVo.isValidCount())){
+        if (!(statsVo.isAppendDose()
+                ||statsVo.isContinueDose()
+                ||statsVo.isInputDose()
+                ||statsVo.isInValidCount()
+                ||statsVo.isValidCount()
+                ||statsVo.isElectricQuantity())){
             return R.success(new ClinicStatsReturnResult());
         }
         if(statsVo.isStatsByModify()&&CollUtil.isEmpty(statsVo.getInfusionModifyIds())){

+ 1 - 1
nb-service/web-service/src/main/java/com/nb/web/service/bus/service/dto/ClinicStatsReturnResult.java

@@ -90,7 +90,7 @@ public class ClinicStatsReturnResult implements Serializable {
             List<BigDecimal> inputDoses = Optional.ofNullable(result.getInputDose()).orElse(new ArrayList<>());
             List<Integer> validCounts = Optional.ofNullable(result.getValidCount()).orElse(new ArrayList<>());
             List<Integer> inValidCounts = Optional.ofNullable(result.getInValidCount()).orElse(new ArrayList<>());
-            List<Integer> electricQuantities = Optional.ofNullable(result.getInValidCount()).orElse(new ArrayList<>());
+            List<Integer> electricQuantities = Optional.ofNullable(result.getElectricQuantity()).orElse(new ArrayList<>());
             List<String> uploadTimes = Optional.ofNullable(result.getUploadTimes()).orElse(new ArrayList<>());
             List<BigDecimal> singleAppendDoses = Optional.ofNullable(result.getSingleAppendDose()).orElse(new ArrayList<>());