package com.supervision.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.model.*; import com.supervision.service.*; import com.supervision.vo.ask.DiagnosisPrimaryVO; import com.supervision.vo.manage.MedicalRecPageReqVO; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.vo.result.DiagnoseProcessReqVo; import com.supervision.vo.result.DiagnoseProcessResVo; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Service @RequiredArgsConstructor @Slf4j public class DiagnoseHallServiceImpl implements DiagnoseHallService { private final ProcessService processService; private final MedicalRecService medicalRecService; private final DiagnosisPrimaryService diagnosisPrimaryService; @Override public IPage queryDiagnoseProcessPageList(Integer pageNum, Integer pageSize, DiagnoseProcessReqVo diagnoseProcessReqVo) { Assert.notEmpty(diagnoseProcessReqVo.getUserId(),"用户id不允许为空"); // 1.查询诊断列表 diagnoseProcessReqVo.setDeleteFlag(0); Page diagnoseProcessResVoPage = processService.queryUserDiagnoseProcessPageList(new Page<>(pageNum, pageSize), diagnoseProcessReqVo); if (diagnoseProcessResVoPage.getSize()==0){ return diagnoseProcessResVoPage; } List records = diagnoseProcessResVoPage.getRecords(); // 2.根据processIds查询诊断疾病名 List processIds = records.stream().map(DiagnoseProcessResVo::getProcessId).distinct().collect(Collectors.toList()); List diagnosisPrimaryVOS = diagnosisPrimaryService.queryAskPrimaryListByProcessIds(processIds); Map> diagnosisPrimaryVOsMap = diagnosisPrimaryVOS.stream().collect(Collectors.groupingBy(DiagnosisPrimary::getProcessId)); // 3.把疾病名填充到诊断列表中 diagnoseProcessResVoPage.getRecords().forEach(vo->{ List list = diagnosisPrimaryVOsMap.getOrDefault(vo.getProcessId(),new ArrayList<>()); vo.setPrimaryDiseaseNameList(list.stream().map(DiagnosisPrimaryVO::getPrimaryDiseaseName).distinct().collect(Collectors.toList())); }); return diagnoseProcessResVoPage; } @Override public IPage queryMedicalRecPageList(Integer pageNum, Integer pageSize) { MedicalRecPageReqVO medicalRecPageReqVO = new MedicalRecPageReqVO(); medicalRecPageReqVO.setStatus(1);// 设置为已发布的数据 return medicalRecService.queryMedicalRecManagePage(medicalRecPageReqVO, pageNum, pageSize); } }