From 12cb7a6c32d348f385dccb04862e5ee43974f28c Mon Sep 17 00:00:00 2001 From: liu Date: Fri, 24 Nov 2023 15:21:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=97=85=E4=BE=8B=E7=AE=A1=E7=90=86=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MedicalRecManageController.java | 19 ++- .../manage/pojo/vo/MedicalRecCheckResVO.java | 34 +++++ .../manage/pojo/vo/MedicalRecInfoVO.java | 28 +++++ .../manage/pojo/vo/MedicalRecManageVO.java | 2 +- .../manage/pojo/vo/MedicalRecQaVO.java | 37 ++++++ .../pojo/vo/MedicalRecTreatmentPlanResVO.java | 12 ++ .../service/MedicalRecManageService.java | 5 + .../impl/MedicalRecManageServiceImpl.java | 117 +++++++++++++++--- .../supervision/dto/CommonDictTreeDTO.java | 18 +++ .../model/AskTemplateQuestionLibrary.java | 5 + .../java/com/supervision/model/CommonDic.java | 9 +- .../supervision/service/CommonDicService.java | 9 ++ .../service/impl/CommonDicServiceImpl.java | 49 +++++++- .../AskTemplateQuestionLibraryMapper.xml | 3 +- .../main/resources/mapper/CommonDicMapper.xml | 30 ++--- 15 files changed, 336 insertions(+), 41 deletions(-) create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java create mode 100644 virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java create mode 100644 virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java index 28bb9b77..63adb529 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/MedicalRecManageController.java @@ -1,7 +1,11 @@ package com.supervision.manage.controller; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.dto.CommonDictTreeDTO; +import com.supervision.manage.pojo.vo.MedicalRecCheckResVO; +import com.supervision.manage.pojo.vo.MedicalRecInfoVO; import com.supervision.manage.pojo.vo.MedicalRecManageVO; +import com.supervision.service.CommonDicService; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.manage.service.MedicalRecManageService; import com.supervision.model.Disease; @@ -22,6 +26,8 @@ public class MedicalRecManageController { private final MedicalRecManageService medicalRecManageService; + private final CommonDicService commonDicService; + @ApiOperation("初步诊断下拉列表联想") @GetMapping("queryDiseaseListByKeyWord") public List queryDiseaseListByKeyWord(@NotBlank(message = "关键字不能为空") String keyword) { @@ -51,8 +57,19 @@ public class MedicalRecManageController { @ApiOperation("查询病例详细信息") @GetMapping("queryMedicalRecInfo") - public void queryMedicalRecInfo(String id) { + public MedicalRecInfoVO queryMedicalRecInfo(String id) { + return medicalRecManageService.queryMedicalRecInfo(id); + } + + @ApiOperation("删除病历") + @GetMapping("deleteMedicalRec") + public void deleteMedicalRec(String id){ + medicalRecManageService.deleteMedicalRec(id); + } + @GetMapping("test") + public List test(){ + return commonDicService.queryCommonDictTree("AQT"); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java new file mode 100644 index 00000000..27b31272 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecCheckResVO.java @@ -0,0 +1,34 @@ +package com.supervision.manage.pojo.vo; + +import lombok.Data; + +/** + * 病历检查项 + */ +@Data +public class MedicalRecCheckResVO { + + private String name; + + private String location; + + /** + * 是否初步诊断依据(0否1是) + */ + private Integer isPrimarilyDiagnosisCriteria; + + /** + * 是否必查-初步诊断依据(0否1是) + */ + private Integer requireCheck; + + /** + * 是否是正式诊断依据(0否1是) + */ + private Integer basisConfirm; + + /** + * 是否是鉴别依据(0否1是) + */ + private Integer basisIdentification; +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java new file mode 100644 index 00000000..34fab493 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecInfoVO.java @@ -0,0 +1,28 @@ +package com.supervision.manage.pojo.vo; + +import com.supervision.model.AskPatientAnswer; +import com.supervision.model.MedicalRec; +import com.supervision.model.Patient; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.validation.constraints.NotBlank; +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel(value = "病历管理详细信息", parent = MedicalRecManageVO.class) +public class MedicalRecInfoVO extends MedicalRecManageVO { + + @ApiModelProperty("辅助检查") + private List ancillaryList; + + @ApiModelProperty("体格检查") + private List physicalList; + + @ApiModelProperty("处置计划列表") + private List treatmentPlanList; + +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java index fa510a8f..55f24641 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecManageVO.java @@ -24,6 +24,6 @@ public class MedicalRecManageVO extends MedicalRec { private String diseaseId; @ApiModelProperty("step:4 应答策略") - private List qaList; + private List qaList; } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java new file mode 100644 index 00000000..1d858473 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecQaVO.java @@ -0,0 +1,37 @@ +package com.supervision.manage.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class MedicalRecQaVO { + + @ApiModelProperty("本条问答ID,对应vp_ask_patient_answer表ID,更新必填") + private String id; + + /** + * 问题库问题ID + */ + @ApiModelProperty(" 问题库问题ID,新增更新时必填") + private String libraryQuestionId; + + @ApiModelProperty("问题,新增更新时不需要") + private List questionList; + + @ApiModelProperty("字典ID,新增更新时不需要") + private Long dictId; + + @ApiModelProperty("问题类目,新增更新时不需要") + private String dictName; + + @ApiModelProperty("默认回答,新增更新时不需要") + private String defaultAnswer; + + @ApiModelProperty("针对病例的特定回答,新增更新时必填") + private String medicalRecAnswer; + + + +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java new file mode 100644 index 00000000..86ba0fd7 --- /dev/null +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/pojo/vo/MedicalRecTreatmentPlanResVO.java @@ -0,0 +1,12 @@ +package com.supervision.manage.pojo.vo; + +import lombok.Data; + +/** + * 处置计划项 + */ +@Data +public class MedicalRecTreatmentPlanResVO { + + +} diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java index d9b05b76..efa34c37 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/MedicalRecManageService.java @@ -1,6 +1,7 @@ package com.supervision.manage.service; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.supervision.manage.pojo.vo.MedicalRecInfoVO; import com.supervision.manage.pojo.vo.MedicalRecManageVO; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.model.Disease; @@ -17,4 +18,8 @@ public interface MedicalRecManageService { void createMedicalRec(MedicalRecManageVO reqVO); void modifyMedicalRec(MedicalRecManageVO reqVO); + + MedicalRecInfoVO queryMedicalRecInfo(String id); + + void deleteMedicalRec(String id); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java index 33a80e3e..eb440f10 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/MedicalRecManageServiceImpl.java @@ -2,26 +2,24 @@ package com.supervision.manage.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.supervision.exception.BusinessException; +import com.supervision.manage.pojo.vo.MedicalRecInfoVO; import com.supervision.manage.pojo.vo.MedicalRecManageVO; +import com.supervision.manage.pojo.vo.MedicalRecQaVO; import com.supervision.model.*; -import com.supervision.service.AskPatientAnswerService; +import com.supervision.service.*; import com.supervision.vo.manage.MedicalRecPageResVO; import com.supervision.manage.service.MedicalRecManageService; -import com.supervision.service.DiseaseService; -import com.supervision.service.MedicalRecService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; @@ -36,6 +34,12 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService { private final AskPatientAnswerService askPatientAnswerService; + private final PatientService patientService; + + private final AskTemplateQuestionLibraryService askTemplateQuestionLibraryService; + + private final CommonDicService commonDicService; + public List queryDiseaseListByKeyWord(String keyword) { // 注意,这里不支持查询复杂疾病,如果需要支持复杂疾病,这里需要单独进行改造 return diseaseService.lambdaQuery().eq(Disease::getDiseaseType, 0).like(Disease::getDiseaseName, keyword).list(); @@ -61,16 +65,19 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService { medicalRec.insert(); // 这里生成一个新的编号(首先去数据库里面查询编号,然后用最大的编号+1)(可能存在并发修改导致编码重复问题,不是重点,等有问题再说) medicalRecService.updateMedicalRecNo("QL", "男".equals(patient.getGender()) ? "M" : "F", medicalRec.getId()); - // 然后保存病历编码 - List qaList = reqVO.getQaList(); - for (AskPatientAnswer askPatientAnswer : qaList) { - if (StrUtil.isBlank(askPatientAnswer.getLibraryQuestionId())) { + // 然后保存病历对应的问题 + List qaList = reqVO.getQaList(); + for (MedicalRecQaVO medicalRecQaVO : qaList) { + if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) { throw new BusinessException("问题ID不能为空"); } + AskPatientAnswer askPatientAnswer = new AskPatientAnswer(); + askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId()); + askPatientAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer())); askPatientAnswer.setMedicalId(medicalRec.getId()); askPatientAnswer.setPatientId(patient.getId()); + askPatientAnswer.insert(); } - askPatientAnswerService.saveBatch(qaList); } @Override @@ -88,16 +95,92 @@ public class MedicalRecManageServiceImpl implements MedicalRecManageService { // 首先找到数据库中的问答 List existQAList = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRec.getId()).list(); Map existQAMap = existQAList.stream().collect(Collectors.toMap(AskPatientAnswer::getId, Function.identity())); - for (AskPatientAnswer askPatientAnswer : reqVO.getQaList()) { - if (StrUtil.isNotBlank(askPatientAnswer.getId())) { - // 存在的移除掉 - existQAMap.remove(askPatientAnswer.getId()); - askPatientAnswer.updateById(); + + for (MedicalRecQaVO medicalRecQaVO : reqVO.getQaList()) { + if (StrUtil.isBlank(medicalRecQaVO.getLibraryQuestionId())) { + throw new BusinessException("问题ID不能为空"); + } + if (StrUtil.isNotBlank(medicalRecQaVO.getId())) { + // 存在的从Map中移除掉 + AskPatientAnswer existAnswer = existQAMap.remove(medicalRecQaVO.getId()); + // 然后进行更新 + existAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer())); + existAnswer.updateById(); } else { + AskPatientAnswer askPatientAnswer = new AskPatientAnswer(); + askPatientAnswer.setLibraryQuestionId(medicalRecQaVO.getLibraryQuestionId()); + askPatientAnswer.setAnswer(CollUtil.newArrayList(medicalRecQaVO.getMedicalRecAnswer())); + askPatientAnswer.setMedicalId(medicalRec.getId()); + askPatientAnswer.setPatientId(patient.getId()); askPatientAnswer.insert(); } } // 将删除的移除 askPatientAnswerService.removeByIds(existQAMap.values().stream().map(AskPatientAnswer::getId).collect(Collectors.toSet())); } + + @Override + public MedicalRecInfoVO queryMedicalRecInfo(String id) { + MedicalRec medicalRec = medicalRecService.getById(id); + MedicalRecInfoVO medicalRecInfoVO = BeanUtil.toBean(medicalRec, MedicalRecInfoVO.class); + // 病人基本信息 + medicalRecInfoVO.setPatient(patientService.getById(medicalRec.getPatientId())); + // 辅助检查 +// medicalRecInfoVO.setAncillaryList(); + // 体格检查 +// medicalRecInfoVO.setPhysicalList(); + // 处置计划 +// medicalRecInfoVO.setTreatmentPlanList(); + // 问答策略 + medicalRecInfoVO.setQaList(queryMedicalRecQaInfo(id)); + return medicalRecInfoVO; + } + + /** + * 查询病例已经配置的的问答信息 + */ + private List queryMedicalRecQaInfo(String medicalRecId) { + List list = askPatientAnswerService.lambdaQuery().eq(AskPatientAnswer::getMedicalId, medicalRecId).list(); + List medicalRecQaList = list.stream().map(e -> { + MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO(); + medicalRecQaVO.setId(e.getId()); + medicalRecQaVO.setLibraryQuestionId(e.getLibraryQuestionId()); + + // 病历的回答 + medicalRecQaVO.setMedicalRecAnswer(CollUtil.getFirst(e.getAnswer())); + return medicalRecQaVO; + }).collect(Collectors.toList()); + // 开始构建问题 + if (CollUtil.isNotEmpty(medicalRecQaList)) { + // 获取问题 + Set libraryQuestionIdSet = medicalRecQaList.stream().map(MedicalRecQaVO::getLibraryQuestionId).collect(Collectors.toSet()); + List askTemplateQuestionLibraryList = askTemplateQuestionLibraryService.listByIds(libraryQuestionIdSet); + Map askQuestionMap = askTemplateQuestionLibraryList.stream().collect(Collectors.toMap(AskTemplateQuestionLibrary::getId, Function.identity())); + // 获取字典 + Set dictIdSet = askTemplateQuestionLibraryList.stream().map(AskTemplateQuestionLibrary::getDictId).collect(Collectors.toSet()); + Map dictMap = commonDicService.listByIds(dictIdSet).stream().collect(Collectors.toMap(CommonDic::getId, Function.identity())); + + for (MedicalRecQaVO medicalRecQaVO : medicalRecQaList) { + AskTemplateQuestionLibrary questionLibrary = askQuestionMap.get(medicalRecQaVO.getLibraryQuestionId()); + if (ObjectUtil.isNotEmpty(questionLibrary)) { + // 问题 + medicalRecQaVO.setQuestionList(questionLibrary.getQuestion()); + // 类目 + medicalRecQaVO.setDictId(questionLibrary.getDictId()); + // 类目名称 + medicalRecQaVO.setDictName(dictMap.getOrDefault(questionLibrary.getDictId(), new CommonDic()).getNameZhPath()); + // 默认回答 + medicalRecQaVO.setDefaultAnswer(CollUtil.getFirst(questionLibrary.getDefaultAnswer())); + } + } + } + return medicalRecQaList; + + } + + @Override + public void deleteMedicalRec(String id) { + medicalRecService.removeById(id); + // 删除病历时,如果是复合疾病,需要将疾病也删除,现在没有做复合疾病,所以先不管 + } } diff --git a/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java b/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java new file mode 100644 index 00000000..89fb534a --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/dto/CommonDictTreeDTO.java @@ -0,0 +1,18 @@ +package com.supervision.dto; + +import com.supervision.model.CommonDic; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class CommonDictTreeDTO extends CommonDic { + + /** + * 该节点下的子节点 + */ + private List childDictTreeList; + +} diff --git a/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java b/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java index 0b7f7277..c8f81267 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/AskTemplateQuestionLibrary.java @@ -24,6 +24,11 @@ public class AskTemplateQuestionLibrary implements Serializable { @TableId private String id; + /** + * 字典值ID(关联common_dict表ID) + */ + private Long dictId; + /** * 编码 */ diff --git a/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java b/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java index e7f2aba0..6c639b66 100644 --- a/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java +++ b/virtual-patient-model/src/main/java/com/supervision/model/CommonDic.java @@ -31,7 +31,7 @@ public class CommonDic extends Model implements Serializable { /** * 中文名 */ - private String nameCh; + private String nameZh; /** * 英文名 @@ -46,13 +46,18 @@ public class CommonDic extends Model implements Serializable { /** * 父级id */ - private String parentId; + private Long parentId; /** * 优先级,用来做排序等操作 */ private Integer priority; + /** + * 中文路径 + */ + private String nameZhPath; + /** * 说明 */ diff --git a/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java b/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java index 84a26925..c941b28b 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/CommonDicService.java @@ -1,8 +1,11 @@ package com.supervision.service; +import com.supervision.dto.CommonDictTreeDTO; import com.supervision.model.CommonDic; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @author Administrator * @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service @@ -10,4 +13,10 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface CommonDicService extends IService { + /** + * 根据group_code构建对应的字典树 + * @param groupCode 分组ID + */ + List queryCommonDictTree(String groupCode); + } diff --git a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java index c3624f12..a10aee86 100644 --- a/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java +++ b/virtual-patient-model/src/main/java/com/supervision/service/impl/CommonDicServiceImpl.java @@ -1,19 +1,58 @@ package com.supervision.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.supervision.dto.CommonDictTreeDTO; import com.supervision.model.CommonDic; import com.supervision.service.CommonDicService; import com.supervision.mapper.CommonDicMapper; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + /** -* @author Administrator -* @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service实现 -* @createDate 2023-11-23 10:52:22 -*/ + * @author Administrator + * @description 针对表【vp_common_dic(通用字典表)】的数据库操作Service实现 + * @createDate 2023-11-23 10:52:22 + */ @Service public class CommonDicServiceImpl extends ServiceImpl - implements CommonDicService{ + implements CommonDicService { + + @Override + public List queryCommonDictTree(String groupCode) { + List list = super.lambdaQuery().eq(CommonDic::getGroupCode, groupCode).list(); + Map> commonDicParentIdMap = list.stream().filter(e -> ObjectUtil.isNotNull(e.getParentId())) + .collect(Collectors.groupingBy(CommonDic::getParentId)); + // 首先构建第一层节点 + List topList = list.stream().filter(e -> ObjectUtil.isNull(e.getParentId())) + .map(node -> BeanUtil.toBean(node, CommonDictTreeDTO.class)).collect(Collectors.toList()); + // 递归构建树 + recursionBuildTree(commonDicParentIdMap, topList); + return topList; + } + + private void recursionBuildTree(Map> commonDicParentIdMap, List sourceList) { + for (CommonDictTreeDTO parentNode : sourceList) { + List commonDicList = commonDicParentIdMap.getOrDefault(parentNode.getId(), new ArrayList<>()); + List childNodeList = new ArrayList<>(); + + for (CommonDic commonDic : commonDicList) { + CommonDictTreeDTO childNode = BeanUtil.toBean(commonDic, CommonDictTreeDTO.class); + childNodeList.add(childNode); + } + parentNode.setChildDictTreeList(childNodeList); + // 继续迭代生成子集 + recursionBuildTree(commonDicParentIdMap, childNodeList); + } + } } diff --git a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml index ca9fd436..90804806 100644 --- a/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/AskTemplateQuestionLibraryMapper.xml @@ -6,6 +6,7 @@ + id - ,code,description, + ,dict_id,code,description, question,default_answer,create_user_id, create_time,update_user_id,update_time diff --git a/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml b/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml index fa89bf5a..63810666 100644 --- a/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml +++ b/virtual-patient-model/src/main/resources/mapper/CommonDicMapper.xml @@ -5,23 +5,25 @@ - - - - - - - - - - - - + + + + + + + + + + + + + - id,code,name_ch, - name_en,group_code,parent_id, + id + ,code,name_ch, + name_en,group_code,parent_id,name_zh_path, priority,description,create_user_id, create_time,update_user_id,update_time