From 9ca1188c5a951ea2f4b94876098798c8cd64784c Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 03 一月 2025 18:02:16 +0800 Subject: [PATCH] 1.bug修改 --- medicalWaste-system/src/main/java/com/sinata/system/service/impl/SysDepartmentServiceImpl.java | 128 +++++++++++++++++++++++++++++++++--------- 1 files changed, 100 insertions(+), 28 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 a1a5eed..860f7d8 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 @@ -29,6 +29,7 @@ import com.sinata.system.service.SysUserDepartmentService; import lombok.RequiredArgsConstructor; import org.jetbrains.annotations.NotNull; +import org.springframework.context.annotation.Lazy; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -52,7 +53,7 @@ * @since 2024-12-02 */ @Service -@RequiredArgsConstructor +@RequiredArgsConstructor(onConstructor_ = {@Lazy}) public class SysDepartmentServiceImpl extends ServiceImpl<SysDepartmentMapper, SysDepartment> implements SysDepartmentService { private final SysUserDepartmentService sysUserDepartmentService; private final RedisTemplate<Object, Object> redisTemplate; @@ -89,8 +90,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(); + } + } } /** @@ -222,7 +254,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); } @@ -257,7 +289,7 @@ SysDepartment sysDepartment = getById(dto.getId()); if (!dto.getParentId().equals(sysDepartment.getParentId())) { //获取部门树编码 - department.setTreeCode(getTreeCode(dto.getParentId())); + department.setTreeCode(generateTreeCode(dto.getParentId())); } updateById(department); } @@ -269,7 +301,7 @@ * @return */ @Override - public String getTreeCode(Long parentId) { + public String generateTreeCode(Long parentId) { String treeId; String preTreeCode = ""; @@ -362,14 +394,22 @@ */ @Override public PageDTO<MedicalInstitutionVO> pageMedicalList(DepartmentQuery query) { - String treeCode = ""; + String treeCode; if (Objects.isNull(query.getDepartmentId())) { - SysDepartment myDepartment = getMyDepartment(); - if (Objects.nonNull(myDepartment)) { - treeCode = myDepartment.getTreeCode(); + 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(); } - Page<MedicalInstitutionVO> page = baseMapper.pageMedicalList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); + } + Page<MedicalInstitutionVO> page = baseMapper.pageMedicalList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); return PageDTO.of(page); } @@ -399,7 +439,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()); //查询父级完整区域 @@ -411,6 +451,12 @@ sysDepartmentInfoService.save(sysDepartmentInfo); } + /** + * 根据父级区域id查询处置单位列表 + * + * @param id + * @return + */ @Override public List<DisposalUnitVO> getDisposalUnitListByParentId(Long id) { List<DisposalUnitVO> disposalUnitList = null; @@ -423,7 +469,7 @@ } /** - * 获取完成区域 + * 获取完整区域 * * @param department * @return @@ -473,7 +519,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); @@ -522,12 +568,9 @@ */ @Override public PageDTO<DisposalUnitVO> pageDisposalUnitList(DepartmentQuery query) { - String treeCode = ""; - if (Objects.isNull(query.getDepartmentId())) { - SysDepartment myDepartment = getMyDepartment(); - if (Objects.nonNull(myDepartment)) { - treeCode = myDepartment.getTreeCode(); - } + String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } Page<DisposalUnitVO> page = baseMapper.pageRegulatoryUnitList(new Page<>(query.getPageCurr(), query.getPageSize()), query.getDepartmentId(), query.getDepartmentName(), query.getContactPerson(), query.getContactPhone(), treeCode); return PageDTO.of(page); @@ -559,7 +602,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()); //查询父级完整区域 @@ -606,7 +649,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); @@ -647,18 +690,16 @@ */ @Override public PageDTO<RegulatoryUnitVO> pageRegulatoryUnitList(DepartmentQuery query) { - String treeCode = ""; - if (Objects.isNull(query.getDepartmentId())) { - SysDepartment myDepartment = getMyDepartment(); - if (Objects.nonNull(myDepartment)) { - treeCode = myDepartment.getTreeCode(); - } + String treeCode = getTreeCodeByDepartmentId(query.getDepartmentId()); + if (StringUtils.isBlank(treeCode)) { + return PageDTO.empty(0L, 0L); } Page<SysDepartment> page = this.lambdaQuery().eq(Objects.nonNull(query.getDepartmentId()), SysDepartment::getParentId, query.getDepartmentId()) .likeRight(StringUtils.isNotBlank(treeCode), SysDepartment::getTreeCode, treeCode) .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); } @@ -688,7 +729,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()); //查询父级完整区域 @@ -732,7 +773,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); @@ -768,4 +809,35 @@ } removeById(id); } + + /** + * 根据部门id获取树编码,如果为空则获取当前登录用户所在区域树编码 + * + * @param departmentId + * @return + */ + @Override + public String getTreeCodeByDepartmentId(Long departmentId) { + SysDepartment department; + if (Objects.isNull(departmentId)) { + department = getMyDepartment(); + } else { + department = getById(departmentId); + } + if (Objects.nonNull(department)) { + return department.getTreeCode(); + } + return null; + } + + /** + * 路线关联医院列表 + * + * @param id + * @return + */ + @Override + public List<MedicalInstitutionVO> getHospitalListByRouteId(Long id) { + return baseMapper.getHospitalListByRouteId(id); + } } -- Gitblit v1.7.1