|
|
@@ -1,10 +1,33 @@
|
|
|
package com.nb.app.doctor.controller;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import com.nb.app.assistant.api.entity.AssistantUserBindEntity;
|
|
|
+import com.nb.app.assistant.api.feign.IAssistantUserBindClient;
|
|
|
+import com.nb.app.assistant.api.feign.IAssistantUserClient;
|
|
|
+import com.nb.app.assistant.api.feign.result.AssistantUserResult;
|
|
|
+import com.nb.app.doctor.controller.vo.ContactDetailVo;
|
|
|
+import com.nb.app.doctor.service.dto.ContactDetailResult;
|
|
|
+import com.nb.app.doctor.service.dto.ContactResult;
|
|
|
+import com.nb.core.exception.CustomException;
|
|
|
+import com.nb.web.api.entity.BusClinicEntity;
|
|
|
+import com.nb.web.api.feign.query.ContactQuery;
|
|
|
+import com.nb.auth.utils.SecurityUtil;
|
|
|
+import com.nb.core.result.R;
|
|
|
+import com.nb.web.api.feign.IPatientClient;
|
|
|
+import com.nb.web.api.feign.result.ContactPatientResult;
|
|
|
+import com.nb.web.api.feign.result.PatientMonitorDetailResult;
|
|
|
import io.swagger.annotations.Api;
|
|
|
+import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
-import org.springframework.web.bind.annotation.RestController;
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
+import org.springframework.web.bind.annotation.*;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author lifang
|
|
|
@@ -19,7 +42,59 @@ import org.springframework.web.bind.annotation.RestController;
|
|
|
@Api(tags = "通讯录")
|
|
|
@Slf4j
|
|
|
public class ContactsController {
|
|
|
+ private final IAssistantUserBindClient userBindClient;
|
|
|
+ private final IPatientClient patientClient;
|
|
|
+ private final IAssistantUserClient userClient;
|
|
|
+ /**
|
|
|
+ * 描述: 获取当前医生所绑定的病人列表,医生看到的病人信息与his保持一致
|
|
|
+ * 病人看到的信息与自己所填写的保持一致。
|
|
|
+ * @author lifang
|
|
|
+ * @date 2022/8/13 8:43
|
|
|
+ * @param query
|
|
|
+ * @return R<List<ContactResult>>
|
|
|
+ */
|
|
|
+ @PostMapping("/no_page")
|
|
|
+ @ApiOperation("获取通讯录列表")
|
|
|
+ public R<List<ContactResult>> list(@RequestBody ContactQuery query){
|
|
|
+ List<ContactResult> result =new ArrayList<>();
|
|
|
+ List<AssistantUserBindEntity> userBindList = userBindClient.list(String.valueOf(SecurityUtil.getId()));
|
|
|
+ if(CollectionUtil.isEmpty(userBindList)){
|
|
|
+ return R.success(result);
|
|
|
+ }
|
|
|
+ Map<String, List<AssistantUserBindEntity>> userBindByPatientId = userBindList.stream().collect(Collectors.groupingBy(AssistantUserBindEntity::getPatientId));
|
|
|
+
|
|
|
+ query.setPatientIds(userBindList.stream().map(AssistantUserBindEntity::getPatientId).collect(Collectors.toList()));
|
|
|
+ List<ContactPatientResult> contactPatientResults = patientClient.contactList(query);
|
|
|
+ result = BeanUtil.copyToList(contactPatientResults, ContactResult.class);
|
|
|
+
|
|
|
+ for (ContactResult vo : result) {
|
|
|
+ AssistantUserBindEntity userBind = userBindByPatientId.get(vo.getPatientId())
|
|
|
+ .get(0);
|
|
|
+ vo.setAssistNickname(userBind.getAssistNickname());
|
|
|
+ vo.setBindId(userBind.getId());
|
|
|
+ vo.setAssistId(userBind.getAssistId());
|
|
|
+ }
|
|
|
+ return R.success(result);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("/detail")
|
|
|
+ @ApiOperation("查看通讯录信息详情")
|
|
|
+ public R<ContactDetailResult> list(@RequestBody@Validated ContactDetailVo param){
|
|
|
+ String assistId = param.getAssistId();
|
|
|
+ String patientId = param.getPatientId();
|
|
|
|
|
|
+ PatientMonitorDetailResult patientInfo = patientClient.lookPatientDetail(patientId);
|
|
|
|
|
|
+ if(patientInfo==null||patientInfo.getClinic()==null){
|
|
|
+ throw new CustomException("该病人信息不存在,请刷新后重试");
|
|
|
+ }
|
|
|
+ AssistantUserResult assistInfo = userClient.getById(assistId);
|
|
|
+ BusClinicEntity clinic = patientInfo.getClinic();
|
|
|
|
|
|
+ return R.success(ContactDetailResult.of(
|
|
|
+ ContactDetailResult.PatientInfo.of(clinic.getPatientCode(),clinic.getWard(),clinic.getBedNo(),clinic.getManageType()),
|
|
|
+ ContactDetailResult.AssistInfo.of(assistInfo.getPhone(),assistInfo.getNickname(),assistInfo.getAvatar())
|
|
|
+ ));
|
|
|
+ }
|
|
|
}
|