From 41dd81ac3f7f5921e339c6a509e5422651cbd0ae Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Wed, 29 Nov 2023 17:42:53 +0800 Subject: [PATCH] =?UTF-8?q?manage=EF=BC=9A=E6=B7=BB=E5=8A=A0=20=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=96=BE=E7=97=85=E8=BA=AB=E4=BD=93=E9=83=A8=E4=BD=8D?= =?UTF-8?q?=E6=A0=91=20=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DiseasePhysicalManageController.java | 10 ++++ .../service/DiseasePhysicalManageService.java | 4 ++ .../DiseasePhysicalManageServiceImpl.java | 46 +++++++++++++++++++ .../PhysicalLocationManageServiceImpl.java | 2 +- .../manage/DiseasePhysicalLocationNodeVo.java | 44 ++++++++++++++++++ .../vo/manage/PhysicalLocationNode.java | 2 +- 6 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseasePhysicalLocationNodeVo.java diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseasePhysicalManageController.java b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseasePhysicalManageController.java index 7556581c..229e981c 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseasePhysicalManageController.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/controller/diseasemanage/DiseasePhysicalManageController.java @@ -2,8 +2,10 @@ package com.supervision.manage.controller.diseasemanage; import com.supervision.manage.service.DiseasePhysicalManageService; +import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo; import com.supervision.vo.manage.DiseasePhysicalResVo; import com.supervision.model.DiseasePhysical; +import com.supervision.vo.manage.PhysicalLocationNode; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -52,4 +54,12 @@ public class DiseasePhysicalManageController { } + @ApiOperation("查询疾病身体部位树") + @GetMapping("/queryTree") + public List queryTree(@RequestParam String diseaseId) { + + return diseasePhysicalManageService.queryTree(diseaseId); + + } + } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseasePhysicalManageService.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseasePhysicalManageService.java index 765d5250..68001cc8 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseasePhysicalManageService.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/DiseasePhysicalManageService.java @@ -1,7 +1,9 @@ package com.supervision.manage.service; import com.supervision.model.DiseasePhysical; +import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo; import com.supervision.vo.manage.DiseasePhysicalResVo; +import com.supervision.vo.manage.PhysicalLocationNode; import java.util.List; @@ -16,4 +18,6 @@ public interface DiseasePhysicalManageService { boolean updatePhysical(DiseasePhysical diseasePhysical); boolean deleteByDiseaseId(String diseaseId); + + List queryTree(String diseaseId); } diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseasePhysicalManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseasePhysicalManageServiceImpl.java index d17703fc..f0dbba07 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseasePhysicalManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/DiseasePhysicalManageServiceImpl.java @@ -1,22 +1,34 @@ package com.supervision.manage.service.impl; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; import com.supervision.manage.service.DiseasePhysicalManageService; +import com.supervision.manage.service.PhysicalLocationManageService; +import com.supervision.manage.service.PhysicalToolManageService; +import com.supervision.model.ConfigPhysicalLocation; import com.supervision.model.DiseaseAncillary; import com.supervision.model.DiseasePhysical; +import com.supervision.service.ConfigPhysicalLocationService; import com.supervision.service.DiseasePhysicalService; +import com.supervision.vo.manage.DiseasePhysicalLocationNodeVo; import com.supervision.vo.manage.DiseasePhysicalResVo; +import com.supervision.vo.manage.PhysicalLocationNode; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; + @Service @RequiredArgsConstructor public class DiseasePhysicalManageServiceImpl implements DiseasePhysicalManageService { private final DiseasePhysicalService diseasePhysicalService; + private final PhysicalLocationManageService physicalToolManageService; + @Override public List queryListByDiseaseId(String diseaseId) { @@ -57,6 +69,40 @@ public class DiseasePhysicalManageServiceImpl implements DiseasePhysicalManageSe return diseasePhysicalService.lambdaUpdate().eq(DiseasePhysical::getDiseaseId,diseaseId).remove(); } + @Override + public List queryTree(String diseaseId) { + + List physicalLocationNodes = physicalToolManageService.queryTree(); + if (CollectionUtil.isEmpty(physicalLocationNodes)){ + return CollectionUtil.newArrayList(); + } + + PhysicalLocationNode physicalLocationNode = new PhysicalLocationNode(); + physicalLocationNode.setChild(physicalLocationNodes); + DiseasePhysicalLocationNodeVo bean = BeanUtil.toBean(physicalLocationNode, DiseasePhysicalLocationNodeVo.class); + + List diseasePhysicalResVos = diseasePhysicalService.queryListByDiseaseId(diseaseId); + if (CollectionUtil.isEmpty(diseasePhysicalResVos)){ + return bean.getChild(); + } + + List toolIds = diseasePhysicalResVos.stream().map(DiseasePhysical::getToolId).distinct().collect(Collectors.toList()); + + populateDiseasePhysicalLocationNodeFlag(bean,toolIds); + return bean.getChild(); + } + + + private void populateDiseasePhysicalLocationNodeFlag(DiseasePhysicalLocationNodeVo node,List toolIds) { + if (StrUtil.isNotEmpty(node.getId())){ + node.setFlag(toolIds.stream().anyMatch(id->node.getId().equals(id))); + } + if (CollectionUtil.isNotEmpty(node.getChild())){ + for (DiseasePhysicalLocationNodeVo childNode : node.getChild()) { + populateDiseasePhysicalLocationNodeFlag(childNode,toolIds); + } + } + } private void assertDiseasePhysical(DiseasePhysical diseasePhysical){ diff --git a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/PhysicalLocationManageServiceImpl.java b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/PhysicalLocationManageServiceImpl.java index e4ff5433..e719cc52 100644 --- a/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/PhysicalLocationManageServiceImpl.java +++ b/virtual-patient-manage/src/main/java/com/supervision/manage/service/impl/PhysicalLocationManageServiceImpl.java @@ -36,7 +36,7 @@ public class PhysicalLocationManageServiceImpl implements PhysicalLocationManage if (StrUtil.isNotEmpty(value.getParentId())) { PhysicalLocationNode physicalLocationNode = map.get(value.getParentId()); if (!Objects.isNull(physicalLocationNode)) { - List child = physicalLocationNode.getChild(); + List child = physicalLocationNode.getChild(); if (null == child) { child = new ArrayList<>(); physicalLocationNode.setChild(child); diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseasePhysicalLocationNodeVo.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseasePhysicalLocationNodeVo.java new file mode 100644 index 00000000..c8de7930 --- /dev/null +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/DiseasePhysicalLocationNodeVo.java @@ -0,0 +1,44 @@ +package com.supervision.vo.manage; + +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +public class DiseasePhysicalLocationNodeVo { + + @TableId + private String id; + + /** + * 编码 + */ + @ApiModelProperty("编码") + private String code; + + /** + * 位置分类 + */ + @ApiModelProperty("位置分类") + private String locationClass; + + /** + * 位置名称 + */ + @ApiModelProperty("位置名称") + private String locationName; + + + @ApiModelProperty("部位层级") + private String level; + + @ApiModelProperty("父级Id") + private String parentId; + + @ApiModelProperty("标识 true:已选择 false:未选择") + private boolean flag; + + private List child; +} diff --git a/virtual-patient-model/src/main/java/com/supervision/vo/manage/PhysicalLocationNode.java b/virtual-patient-model/src/main/java/com/supervision/vo/manage/PhysicalLocationNode.java index 4e489942..2b9d64eb 100644 --- a/virtual-patient-model/src/main/java/com/supervision/vo/manage/PhysicalLocationNode.java +++ b/virtual-patient-model/src/main/java/com/supervision/vo/manage/PhysicalLocationNode.java @@ -10,6 +10,6 @@ import java.util.List; @EqualsAndHashCode(callSuper = true) public class PhysicalLocationNode extends ConfigPhysicalLocation{ - private List child; + private List child; }