|
|
@@ -5,10 +5,15 @@ import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.nb.app.assistant.api.entity.AssistantEvalEntity;
|
|
|
+import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
|
|
|
import com.nb.app.assistant.api.feign.IAssistantEvalClient;
|
|
|
+import com.nb.app.assistant.api.feign.IAssistantUserBindClient;
|
|
|
import com.nb.app.doctor.controller.vo.InviteCodeVo;
|
|
|
import com.nb.app.doctor.controller.vo.MonitorEvalVo;
|
|
|
import com.nb.app.doctor.enums.EvalEnum;
|
|
|
+import com.nb.app.doctor.service.dto.PatientMonitorConsultResult;
|
|
|
+import com.nb.auth.utils.SecurityUtil;
|
|
|
+import com.nb.common.websocket.WebSocketSessionLifeCycleManage;
|
|
|
import com.nb.core.entity.GenericEntity;
|
|
|
import com.nb.core.result.R;
|
|
|
import com.nb.web.api.entity.BusDeviceAlarmEntity;
|
|
|
@@ -20,7 +25,6 @@ import com.nb.web.api.feign.query.AlarmQuery;
|
|
|
import com.nb.web.api.feign.query.PatientMonitorQuery;
|
|
|
import com.nb.web.api.feign.result.InviteCodeResult;
|
|
|
import com.nb.web.api.feign.result.PatientMonitorDetailResult;
|
|
|
-import com.nb.web.api.feign.result.PatientMonitorResult;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import io.swagger.annotations.ApiParam;
|
|
|
@@ -30,6 +34,7 @@ import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -48,12 +53,37 @@ public class PatientMonitorController {
|
|
|
private final IDeviceAlarmClient deviceAlarmClient;
|
|
|
private final IClinicEvalClient clinicEvalClient;
|
|
|
private final IAssistantEvalClient assistantEvalClient;
|
|
|
+ //判断是否在线
|
|
|
+ private final WebSocketSessionLifeCycleManage lifeCycleManage;
|
|
|
+ private final IAssistantUserBindClient userBindClient;
|
|
|
|
|
|
- @PostMapping("/monitor/no_page")
|
|
|
+ @PostMapping("/monitor/{consult}/no_page")
|
|
|
@ApiOperation(value = "输注监控列表")
|
|
|
- public R<List<PatientMonitorResult>> selectPagePatient(@RequestBody PatientMonitorQuery query) {
|
|
|
+ public R<List<PatientMonitorConsultResult>> selectPagePatient(@PathVariable("consult")@ApiParam("是否为咨询模式") boolean consult,@RequestBody PatientMonitorQuery query) {
|
|
|
log.info("医生查看输注监控列表,【{}】", JSONUtil.toJsonStr(query));
|
|
|
- return R.success(patientClient.selectAll(query));
|
|
|
+ List<PatientMonitorConsultResult> results = BeanUtil.copyToList(patientClient.selectAll(query), PatientMonitorConsultResult.class);
|
|
|
+ if(consult){
|
|
|
+ if (CollectionUtil.isNotEmpty(results)) {
|
|
|
+ Map<String, List<PatientMonitorConsultResult>> resultGroupByPatientId = results.stream().collect(Collectors.groupingBy(PatientMonitorConsultResult::getPatientId));
|
|
|
+ //获取该与该医生有绑定的所有绑定关系
|
|
|
+ List<AssistantUserBindEntity> userBinds = userBindClient.list(String.valueOf(SecurityUtil.getId()));
|
|
|
+ if(CollectionUtil.isNotEmpty(userBinds)){
|
|
|
+ userBinds.parallelStream()
|
|
|
+ .forEach(bind->{
|
|
|
+ String patientId = bind.getPatientId();
|
|
|
+ String assistId = bind.getAssistId();
|
|
|
+ if (lifeCycleManage.isOnline(assistId)) {
|
|
|
+ resultGroupByPatientId.get(patientId)
|
|
|
+ .forEach(consultResult->{
|
|
|
+ consultResult.setAssistId(assistId);
|
|
|
+ consultResult.setOnline(true);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return R.success(results);
|
|
|
}
|
|
|
|
|
|
@PostMapping("/monitor/{patientId}")
|