From 861d0de9a80cfc5fe8edf0eb0d62e1eb7e85b427 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期日, 26 一月 2025 18:03:12 +0800 Subject: [PATCH] 1.bug修改 --- medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 147 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 136 insertions(+), 11 deletions(-) diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java index d5eb7ec..aac9f1f 100644 --- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java +++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java @@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.sinata.common.constant.CacheConstants; +import com.sinata.common.core.domain.entity.SysUser; import com.sinata.common.entity.PageDTO; import com.sinata.common.exception.ServiceException; import com.sinata.common.utils.BeanUtils; import com.sinata.common.utils.CollUtils; import com.sinata.common.utils.SecurityUtils; import com.sinata.common.utils.StringUtils; +import com.sinata.system.domain.MwApplication; import com.sinata.system.domain.SysDepartment; import com.sinata.system.domain.SysDepartmentInfo; import com.sinata.system.domain.SysUserDepartment; @@ -90,8 +92,39 @@ childrenMap = getChildrenDepartmentByOrgType(myDepartment, null); } SysDepartmentVO sysDepartmentVO = fillChildrenTreeModel(myDepartment, childrenMap); + switch (type) { + case 2: + case 3: + case 4: + filterEmptyChildren(sysDepartmentVO.getChildren()); + break; + } root.add(sysDepartmentVO); return root; + } + + /** + * 移除子节点为空的区域 + * + * @param departments + */ + private void filterEmptyChildren(List<SysDepartmentVO> departments) { + if (departments == null) { + return; + } + + Iterator<SysDepartmentVO> iterator = departments.iterator(); + while (iterator.hasNext()) { + SysDepartmentVO department = iterator.next(); + + // 递归过滤子节点 + filterEmptyChildren(department.getChildren()); + + // 如果 orgType == 1 且 children 为空,则移除当前节点 + if (department.getOrgType() == 1 && department.getChildren().isEmpty()) { + iterator.remove(); + } + } } /** @@ -124,6 +157,45 @@ public List<SysDepartmentVO> getRegionTree(String keyword) { List<SysDepartmentVO> root = new ArrayList<>(); SysDepartment currentDepartment = getMyDepartment(); + if (Objects.isNull(currentDepartment)) { + return root; + } + if (!currentDepartment.getOrgType().equals(DepartmentEnum.REGION.getCode())) { + return root; + } + Map<Long, List<SysDepartment>> childrenMap = getChildrenDepartmentByOrgType(currentDepartment, Collections.singletonList(DepartmentEnum.REGION.getCode())); + SysDepartmentVO sysDepartmentVO = fillChildrenTreeModel(currentDepartment, childrenMap); + root.add(sysDepartmentVO); + if (StringUtils.isNotBlank(keyword)) { + treeMatch(root, keyword); + } + return root; + } + @Override + public List<SysDepartmentVO> getRegionTree1(String keyword) { + SysUser sysUser = SecurityUtils.getLoginUser().getUser(); + + List<SysDepartmentVO> root = new ArrayList<>(); + SysDepartment sysDepartment = this.baseMapper.selectById(sysUser.getDepartmentId()); + SysDepartment currentDepartment = this.baseMapper.selectById(sysDepartment.getParentId()); + if (Objects.isNull(currentDepartment)) { + return root; + } + if (!currentDepartment.getOrgType().equals(DepartmentEnum.REGION.getCode())) { + return root; + } + Map<Long, List<SysDepartment>> childrenMap = getChildrenDepartmentByOrgType(currentDepartment, Collections.singletonList(DepartmentEnum.REGION.getCode())); + SysDepartmentVO sysDepartmentVO = fillChildrenTreeModel(currentDepartment, childrenMap); + root.add(sysDepartmentVO); + if (StringUtils.isNotBlank(keyword)) { + treeMatch(root, keyword); + } + return root; + } + public List<SysDepartmentVO> getRegionTree2(String keyword) { + + List<SysDepartmentVO> root = new ArrayList<>(); + SysDepartment currentDepartment = this.baseMapper.selectById(-1); if (Objects.isNull(currentDepartment)) { return root; } @@ -223,7 +295,7 @@ SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); //获取部门树编码 department.setOrgType(DepartmentEnum.REGION.getCode()); - department.setTreeCode(getTreeCode(dto.getParentId())); + department.setTreeCode(generateTreeCode(dto.getParentId())); department.setOrgCode(getOrgCode(dto.getParentId(), DepartmentEnum.REGION.getCode())); save(department); } @@ -258,7 +330,7 @@ SysDepartment sysDepartment = getById(dto.getId()); if (!dto.getParentId().equals(sysDepartment.getParentId())) { //获取部门树编码 - department.setTreeCode(getTreeCode(dto.getParentId())); + department.setTreeCode(generateTreeCode(dto.getParentId())); } updateById(department); } @@ -270,7 +342,7 @@ * @return */ @Override - public String getTreeCode(Long parentId) { + public String generateTreeCode(Long parentId) { String treeId; String preTreeCode = ""; @@ -363,7 +435,18 @@ */ @Override public PageDTO<MedicalInstitutionVO> pageMedicalList(DepartmentQuery query) { - String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + String treeCode; + if (Objects.isNull(query.getDepartmentId())) { + SysDepartment department = getMyDepartment(); + treeCode = department.getTreeCode(); + } else { + SysDepartment department = getById(query.getDepartmentId()); + //如果是处置单位,则获取父级部门 + if (department.getOrgType().equals(DepartmentEnum.DISPOSAL_UNIT.getCode())) { + department = getDepartmentByParentId(department.getParentId()); + } + treeCode = department.getTreeCode(); + } if (StringUtils.isBlank(treeCode)) { return PageDTO.empty(0L, 0L); } @@ -397,7 +480,7 @@ throw new ServiceException("医疗机构已存在"); } SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.MEDICAL_INSTITUTION.getCode())); department.setOrgType(DepartmentEnum.MEDICAL_INSTITUTION.getCode()); //查询父级完整区域 @@ -409,6 +492,12 @@ sysDepartmentInfoService.save(sysDepartmentInfo); } + /** + * 根据父级区域id查询处置单位列表 + * + * @param id + * @return + */ @Override public List<DisposalUnitVO> getDisposalUnitListByParentId(Long id) { List<DisposalUnitVO> disposalUnitList = null; @@ -421,7 +510,7 @@ } /** - * 获取完成区域 + * 获取完整区域 * * @param department * @return @@ -471,7 +560,7 @@ } SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); if (!department.getParentId().equals(sysDepartment.getParentId())) { - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); //查询父级完整区域 String region = getRegionName(parent); department.setRegion(region); @@ -554,7 +643,7 @@ throw new ServiceException("处置单位已存在"); } SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.DISPOSAL_UNIT.getCode())); department.setOrgType(DepartmentEnum.DISPOSAL_UNIT.getCode()); //查询父级完整区域 @@ -601,7 +690,7 @@ SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); if (!department.getParentId().equals(sysDepartment.getParentId())) { - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); //查询父级完整区域 String region = getRegionName(parent); department.setRegion(region); @@ -651,6 +740,7 @@ .like(StringUtils.isNotEmpty(query.getDepartmentName()), SysDepartment::getDepartmentName, query.getDepartmentName()) .like(StringUtils.isNotBlank(query.getContactPerson()), SysDepartment::getContactPerson, query.getContactPerson()) .like(StringUtils.isNotBlank(query.getContactPhone()), SysDepartment::getContactPhone, query.getContactPhone()) + .eq(SysDepartment::getOrgType, DepartmentEnum.REGULATORY_UNIT.getCode()) .page(new Page<>(query.getPageCurr(), query.getPageSize())); return PageDTO.of(page, RegulatoryUnitVO.class); } @@ -680,7 +770,7 @@ throw new ServiceException("监管单位已存在"); } SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); department.setOrgCode(getOrgCode(parent.getId(), DepartmentEnum.REGULATORY_UNIT.getCode())); department.setOrgType(DepartmentEnum.REGULATORY_UNIT.getCode()); //查询父级完整区域 @@ -724,7 +814,7 @@ SysDepartment department = BeanUtils.copyBean(dto, SysDepartment.class); if (!department.getParentId().equals(sysDepartment.getParentId())) { - department.setTreeCode(getTreeCode(parent.getId())); + department.setTreeCode(generateTreeCode(parent.getId())); //查询父级完整区域 String region = getRegionName(parent); department.setRegion(region); @@ -780,4 +870,39 @@ } return null; } + + /** + * 路线关联医院列表 + * + * @param id + * @return + */ + @Override + public List<MedicalInstitutionVO> getHospitalListByRouteId(Long id) { + return baseMapper.getHospitalListByRouteId(id); + } + + /** + * 创建机构 + * + * @param mwApplication + */ + @Override + public void createDepartment(MwApplication mwApplication) { + SysDepartment parent = this.getById(mwApplication.getDepartmentId()); + if (Objects.isNull(parent)) { + throw new ServiceException("找不到对应父级组织"); + } + SysDepartment department = new SysDepartment(); + department.setParentId(mwApplication.getDepartmentId()); + department.setDepartmentName(mwApplication.getUnitName()); + department.setContactPerson(mwApplication.getConcat()); + department.setContactPhone(mwApplication.getPhone()); + department.setOrgType(mwApplication.getUnitType().equals(1) ? DepartmentEnum.MEDICAL_INSTITUTION.getCode() : DepartmentEnum.DISPOSAL_UNIT.getCode()); + department.setRegion(mwApplication.getRegion()); + department.setRelation(mwApplication.getRelation()); + department.setTreeCode(generateTreeCode(parent.getId())); + department.setOrgCode(getOrgCode(parent.getId(), department.getOrgType())); + save(department); + } } -- Gitblit v1.7.1