diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java index 44a42fb9..353d87e8 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseaseTreatmentPlanManageServiceImpl.java @@ -3,11 +3,17 @@ package com.supervision.manage.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Pair; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.supervision.manage.service.ConfigTreatmentPlanManageService; import com.supervision.manage.service.DiseaseTreatmentPlanManageService; +import com.supervision.model.CommonDic; +import com.supervision.model.ConfigDrug; import com.supervision.model.DiseaseTreatmentPlan; import com.supervision.model.DiseaseTreatmentPlanDrug; +import com.supervision.service.CommonDicService; +import com.supervision.service.ConfigDrugService; import com.supervision.service.DiseaseTreatmentPlanDrugService; import com.supervision.service.DiseaseTreatmentPlanService; import com.supervision.vo.manage.DiseaseTreatmentPlanReqVo; @@ -18,6 +24,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; @@ -31,7 +38,11 @@ public class DiseaseTreatmentPlanManageServiceImpl implements DiseaseTreatmentPl private final ConfigTreatmentPlanManageService configTreatmentPlanManageService; - private final DiseaseTreatmentPlanDrugService diseaseTreatmentPlanDrugService;; + private final DiseaseTreatmentPlanDrugService diseaseTreatmentPlanDrugService; + + private final ConfigDrugService configDrugService; + + private final CommonDicService commonDicService; @Override public List queryListByDiseaseId(String diseaseId) { @@ -50,11 +61,40 @@ public class DiseaseTreatmentPlanManageServiceImpl implements DiseaseTreatmentPl .in(DiseaseTreatmentPlanDrug::getTreatmentPlanId, treatmentPlanIdList) .eq(DiseaseTreatmentPlanDrug::getDiseaseId, diseaseId).list(); + + // 翻译处置计划 **处置计划对应于药物中的剂型** + List drugIds = diseaseTreatmentPlanDrugList.stream() + .map(DiseaseTreatmentPlanDrug::getDrugId).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); + Map> drugIdMapDose = new HashMap<>(); + if (CollUtil.isNotEmpty(drugIds)){ + List configDrugs = configDrugService.listByIds(drugIds); + if (CollUtil.isNotEmpty(configDrugs)){ + Map doseDic = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "DOSE").list() + .stream().collect(Collectors.toMap(CommonDic::getCode, CommonDic::getNameZh)); + // 组合药物id与剂型之间的映射关系 + drugIdMapDose = configDrugs.stream().collect(Collectors.toMap(ConfigDrug::getId, drug -> { + if (StrUtil.isNotEmpty(drug.getDosageForm())) { + return Pair.of(drug.getDosageForm(),doseDic.getOrDefault(drug.getDosageForm(),StrUtil.EMPTY)); + } + return Pair.of(StrUtil.EMPTY,StrUtil.EMPTY); + })); + } + } Map> group = diseaseTreatmentPlanDrugList.stream().collect(Collectors.groupingBy(DiseaseTreatmentPlanDrug::getTreatmentPlanId)); - diseaseTreatmentPlanResVos.forEach(item->item.setDrugIds( - group.getOrDefault(item.getTreatmentPlanId(), CollUtil.newArrayList()) - .stream().map(DiseaseTreatmentPlanDrug::getDrugId).collect(Collectors.toList()))); + for (DiseaseTreatmentPlanResVo item : diseaseTreatmentPlanResVos) { + // 设置处置药物id集合 + item.setDrugIds( + group.getOrDefault(item.getTreatmentPlanId(), CollUtil.newArrayList()) + .stream().map(DiseaseTreatmentPlanDrug::getDrugId).collect(Collectors.toList())); + // 设置处置药物剂型与剂型的翻译数据 + String drugId = CollUtil.getFirst(item.getDrugIds()); + String fistMeasuresId = StrUtil.isNotEmpty(drugId) ? drugIdMapDose.getOrDefault(drugId, + Pair.of(StrUtil.EMPTY,StrUtil.EMPTY)).getKey() : StrUtil.EMPTY; + String fistMeasures = StrUtil.isNotEmpty(drugId) ? drugIdMapDose.getOrDefault(drugId, Pair.of(StrUtil.EMPTY, StrUtil.EMPTY)).getValue() : StrUtil.EMPTY; + item.setFirstMeasuresId(fistMeasuresId); + item.setFirstMeasures(fistMeasures); + } return diseaseTreatmentPlanResVos; }