SysAreaServiceImpl.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. package com.ruoyi.system.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.stream.Collectors;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import com.ruoyi.system.mapper.SysAreaMapper;
  10. import com.ruoyi.system.domain.SysArea;
  11. import com.ruoyi.system.service.ISysAreaService;
  12. /**
  13. * 区域-省市区县Service业务层处理
  14. *
  15. * @author ruoyi
  16. * @date 2025-09-29
  17. */
  18. @Service
  19. public class SysAreaServiceImpl implements ISysAreaService
  20. {
  21. @Autowired
  22. private SysAreaMapper sysAreaMapper;
  23. /**
  24. * 查询区域-省市区县
  25. *
  26. * @param areaId 区域-省市区县主键
  27. * @return 区域-省市区县
  28. */
  29. @Override
  30. public SysArea selectSysAreaByAreaId(Long areaId)
  31. {
  32. return sysAreaMapper.selectSysAreaByAreaId(areaId);
  33. }
  34. /**
  35. * 查询区域-省市区县列表
  36. *
  37. * @param sysArea 区域-省市区县
  38. * @return 区域-省市区县
  39. */
  40. @Override
  41. public List<SysArea> selectSysAreaList(SysArea sysArea)
  42. {
  43. return sysAreaMapper.selectSysAreaList(sysArea);
  44. }
  45. @Override
  46. public List<SysArea> selectSysAreaListByIds(List<Long> ids)
  47. {
  48. return sysAreaMapper.selectSysAreaListByIds(ids);
  49. }
  50. @Override
  51. public List<SysArea> listTree(SysArea criteria) {
  52. List<SysArea> list = selectSysAreaList(criteria);
  53. Map<Long, SysArea> cache = list.stream().collect(Collectors.toMap(SysArea::getAreaId, v -> v));
  54. List<SysArea> res = new ArrayList<>(6);
  55. for (SysArea row : list) {
  56. Long parentId = row.getParentId();
  57. if (null == parentId || parentId == 0l || !cache.containsKey(parentId)) {
  58. res.add(row);
  59. } else {
  60. cache.get(parentId).addChildren(row);
  61. }
  62. }
  63. return res;
  64. // Map<Long, SysArea> cache = new HashMap<>();
  65. // List<SysArea> res = new ArrayList<>();
  66. // // 先将所有节点放入缓存
  67. // for (SysArea area : list) {
  68. // cache.put(area.getAreaId(), area);
  69. // // 初始化children列表
  70. // if (area.getChildren() == null) {
  71. // area.setChildren(new ArrayList<>());
  72. // }
  73. // }
  74. //
  75. // // 建立父子关系
  76. // for (SysArea area : list) {
  77. // Long parentId = area.getParentId();
  78. // if (parentId != null && parentId != 0L && cache.containsKey(parentId)) {
  79. // SysArea parent = cache.get(parentId);
  80. // if (parent.getChildren() == null) {
  81. // parent.setChildren(new ArrayList<>());
  82. // }
  83. // parent.getChildren().add(area);
  84. // }
  85. // }
  86. //
  87. // // 只返回根节点
  88. // for (SysArea area : list) {
  89. // Long parentId = area.getParentId();
  90. // if (parentId == null || parentId == 0L || !cache.containsKey(parentId)) {
  91. // res.add(area);
  92. // }
  93. // }
  94. // return res;
  95. }
  96. /**
  97. * 新增区域-省市区县
  98. *
  99. * @param sysArea 区域-省市区县
  100. * @return 结果
  101. */
  102. @Override
  103. public int insertSysArea(SysArea sysArea)
  104. {
  105. return sysAreaMapper.insertSysArea(sysArea);
  106. }
  107. /**
  108. * 修改区域-省市区县
  109. *
  110. * @param sysArea 区域-省市区县
  111. * @return 结果
  112. */
  113. @Override
  114. public int updateSysArea(SysArea sysArea)
  115. {
  116. return sysAreaMapper.updateSysArea(sysArea);
  117. }
  118. /**
  119. * 批量删除区域-省市区县
  120. *
  121. * @param areaIds 需要删除的区域-省市区县主键
  122. * @return 结果
  123. */
  124. @Override
  125. public int deleteSysAreaByAreaIds(Long[] areaIds)
  126. {
  127. return sysAreaMapper.deleteSysAreaByAreaIds(areaIds);
  128. }
  129. /**
  130. * 删除区域-省市区县信息
  131. *
  132. * @param areaId 区域-省市区县主键
  133. * @return 结果
  134. */
  135. @Override
  136. public int deleteSysAreaByAreaId(Long areaId)
  137. {
  138. return sysAreaMapper.deleteSysAreaByAreaId(areaId);
  139. }
  140. }