Commit a7160ef96c86aad0e7e7f7267d89b67c7de61e58
1 parent
4a1a8777
feat(dept): 添加部门子节点查询功能并优化园林模块数据权限配置
Showing
5 changed files
with
35 additions
and
90 deletions
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/framework/datapermission/config/TreeDataPermissionConfiguration.java
urbanops-module-garden/src/main/java/com/zteits/urbanops/module/garden/service/tree/TreeServiceImpl.java
| ... | ... | @@ -11,6 +11,7 @@ import com.zteits.urbanops.module.garden.dal.mysql.treechangelog.TreeChangeLogMa |
| 11 | 11 | import com.zteits.urbanops.module.garden.service.road.RoadService; |
| 12 | 12 | import com.zteits.urbanops.module.system.dal.dataobject.dept.DeptDO; |
| 13 | 13 | import com.zteits.urbanops.module.system.dal.mysql.dept.DeptMapper; |
| 14 | +import com.zteits.urbanops.module.system.service.dept.DeptService; | |
| 14 | 15 | import org.springframework.beans.factory.annotation.Autowired; |
| 15 | 16 | import org.springframework.data.redis.core.RedisTemplate; |
| 16 | 17 | import org.springframework.data.redis.core.StringRedisTemplate; |
| ... | ... | @@ -61,7 +62,7 @@ public class TreeServiceImpl implements TreeService { |
| 61 | 62 | private RedisTemplate redisTemplate; |
| 62 | 63 | |
| 63 | 64 | @Resource |
| 64 | - private DeptMapper deptMapper; | |
| 65 | + private DeptService deptService; | |
| 65 | 66 | |
| 66 | 67 | public static final String CACHE_REPEAT_KEY = "gardenTree:repeat:"; |
| 67 | 68 | |
| ... | ... | @@ -178,80 +179,28 @@ public class TreeServiceImpl implements TreeService { |
| 178 | 179 | |
| 179 | 180 | @Override |
| 180 | 181 | public List<CompanyDeptRoadVO> getCompanyDeptRoadTreeData(TreeVO tree) { |
| 181 | -// List<DeptDO> sysDepts = deptMapper.selectList(); | |
| 182 | + List<DeptDO> companies = deptService.getSubDeptListAll(); | |
| 183 | + | |
| 182 | 184 | |
| 183 | 185 | List<CompanyDeptRoadVO> companyDeptRoadVOS = treeMapper.selectCompanyDeptRoadTreeData(tree); |
| 184 | 186 | |
| 187 | + if (!CollectionUtils.isEmpty(companyDeptRoadVOS) && !CollectionUtils.isEmpty(companies)) { | |
| 188 | + Map<Long, String> companyNameMap = companies.stream() | |
| 189 | + .collect(Collectors.toMap(DeptDO::getId, DeptDO::getName, (a, b) -> a)); | |
| 190 | + companyDeptRoadVOS.stream() | |
| 191 | + .filter(Objects::nonNull) | |
| 192 | + .forEach(vo -> { | |
| 193 | + Long cid = vo.getCompanyId(); | |
| 194 | + if (cid == null) { | |
| 195 | + return; | |
| 196 | + } | |
| 197 | + String name = companyNameMap.get(cid); | |
| 198 | + if (StringUtils.hasText(name)) { | |
| 199 | + vo.setCompanyName(name); | |
| 200 | + } | |
| 201 | + }); | |
| 202 | + } | |
| 185 | 203 | |
| 186 | -// // 按公司分组所有部门 | |
| 187 | -// Map<Long, List<DeptDO>> companyDeptsMap = sysDepts.stream() | |
| 188 | -// .filter(d -> d.getParentId() != null) | |
| 189 | -// .collect(Collectors.groupingBy(DeptDO::getParentId)); | |
| 190 | -// | |
| 191 | -// // 过滤出叶子部门(没有子部门的部门) | |
| 192 | -// Map<Long, List<DeptDO>> companyLeafDeptsMap = new HashMap<>(); | |
| 193 | -// for (Map.Entry<Long, List<DeptDO>> entry : companyDeptsMap.entrySet()) { | |
| 194 | -// Long companyId = entry.getKey(); | |
| 195 | -// List<DeptDO> depts = entry.getValue(); | |
| 196 | -// | |
| 197 | -// // 构建部门ID到部门的映射 | |
| 198 | -// Map<Long, DeptDO> deptMap = depts.stream() | |
| 199 | -// .collect(Collectors.toMap(DeptDO::getId, d -> d)); | |
| 200 | -// | |
| 201 | -// // 找出叶子部门(其parentId不在deptMap中的部门,或者其parentId为0的部门) | |
| 202 | -// List<DeptDO> leafDepts = depts.stream() | |
| 203 | -// .filter(d -> d.getParentId() == 0 || !deptMap.containsKey(d.getParentId())) | |
| 204 | -// .collect(Collectors.toList()); | |
| 205 | -// | |
| 206 | -// companyLeafDeptsMap.put(companyId, leafDepts); | |
| 207 | -// } | |
| 208 | -// | |
| 209 | -// // 建立现有结果的映射: 公司ID -> CompanyDeptRoadVO | |
| 210 | -// Map<Long, CompanyDeptRoadVO> existingCompanyMap = companyDeptRoadVOS.stream() | |
| 211 | -// .collect(Collectors.toMap( | |
| 212 | -// CompanyDeptRoadVO::getCompanyId, | |
| 213 | -// vo -> vo, | |
| 214 | -// (existing, replacement) -> existing | |
| 215 | -// )); | |
| 216 | -// | |
| 217 | -// // 遍历所有公司,补充缺失的公司和部门 | |
| 218 | -// for (Map.Entry<Long, List<DeptDO>> entry : companyLeafDeptsMap.entrySet()) { | |
| 219 | -// Long companyId = entry.getKey(); | |
| 220 | -// List<DeptDO> depts = entry.getValue(); | |
| 221 | -// | |
| 222 | -// CompanyDeptRoadVO companyVO; | |
| 223 | -// if (!existingCompanyMap.containsKey(companyId)) { | |
| 224 | -// // 如果公司不存在,创建新的公司对象 | |
| 225 | -// companyVO = new CompanyDeptRoadVO(); | |
| 226 | -// companyVO.setCompanyId(companyId); | |
| 227 | -// companyVO.setCompanyName(DictFrameworkUtils.parseDictDataValue("belongCompanyId", companyId + "")); | |
| 228 | -// companyVO.setDepts(new ArrayList<>()); | |
| 229 | -// companyDeptRoadVOS.add(companyVO); | |
| 230 | -// } else { | |
| 231 | -// companyVO = existingCompanyMap.get(companyId); | |
| 232 | -// } | |
| 233 | -// | |
| 234 | -// // 建立该公司下已存在的部门映射: 部门ID -> DeptVO | |
| 235 | -// Map<Long, CompanyDeptRoadVO.DeptVO> existingDeptMap = companyVO.getDepts().stream() | |
| 236 | -// .collect(Collectors.toMap( | |
| 237 | -// deptVO -> Long.valueOf(deptVO.getDeptId()), | |
| 238 | -// deptVO -> deptVO, | |
| 239 | -// (existing, replacement) -> existing | |
| 240 | -// )); | |
| 241 | -// | |
| 242 | -// // 补充缺失的部门(仅叶子部门) | |
| 243 | -// for (DeptDO sysDept : depts) { | |
| 244 | -// Long deptId = sysDept.getId(); | |
| 245 | -// if (!existingDeptMap.containsKey(deptId)) { | |
| 246 | -// // 创建缺失的部门对象 | |
| 247 | -// CompanyDeptRoadVO.DeptVO missingDept = new CompanyDeptRoadVO.DeptVO(); | |
| 248 | -// missingDept.setDeptId(deptId); | |
| 249 | -// missingDept.setDeptName(sysDept.getName()); | |
| 250 | -// missingDept.setRoads(new ArrayList<>()); | |
| 251 | -// companyVO.getDepts().add(missingDept); | |
| 252 | -// } | |
| 253 | -// } | |
| 254 | -// } | |
| 255 | 204 | return companyDeptRoadVOS; |
| 256 | 205 | } |
| 257 | 206 | |
| ... | ... | @@ -269,4 +218,4 @@ public class TreeServiceImpl implements TreeService { |
| 269 | 218 | return new PageResult<>(roadTreeVOS, treePage.getTotal()); |
| 270 | 219 | } |
| 271 | 220 | |
| 272 | -} | |
| 273 | 221 | \ No newline at end of file |
| 222 | +} | ... | ... |
urbanops-module-garden/src/main/resources/mapper/tree/TreeMapper.xml
| ... | ... | @@ -27,9 +27,7 @@ |
| 27 | 27 | </resultMap> |
| 28 | 28 | |
| 29 | 29 | <select id="selectCompanyDeptRoadTreeData" resultMap="CompanyDeptRoadMap"> |
| 30 | - SELECT | |
| 31 | - c.id AS companyId, | |
| 32 | - c.name AS companyName, | |
| 30 | + SELECT r.company_id AS companyId, | |
| 33 | 31 | d.id AS deptId, |
| 34 | 32 | d.name AS deptName, |
| 35 | 33 | r.id AS roadId, |
| ... | ... | @@ -38,23 +36,14 @@ |
| 38 | 36 | r.end_remark AS endRemark, |
| 39 | 37 | COALESCE(r.tree_area, 0) AS treeCount, |
| 40 | 38 | COUNT(t.id) AS recordedCount |
| 41 | - FROM system_dept c | |
| 42 | - JOIN system_dept d ON d.parent_id = c.id AND d.status = 0 | |
| 43 | - LEFT JOIN garden_road r ON d.id = r.dept_id | |
| 44 | - LEFT JOIN garden_tree t ON r.id = t.road AND t.deleted = 0 | |
| 45 | - WHERE | |
| 46 | - c.status = 0 and c.parent_id = 100 | |
| 47 | - <if test="belongCompanyId != null"> | |
| 48 | - AND d.parent_id = #{belongCompanyId} | |
| 49 | - </if> | |
| 39 | + FROM garden_tree t | |
| 40 | + LEFT JOIN garden_road r ON t.road = r.id | |
| 41 | + LEFT JOIN system_dept d ON r.dept_id = d.id AND d.status = 0 | |
| 42 | + WHERE r.company_id = #{belongCompanyId} | |
| 50 | 43 | <if test="roadName != null and roadName != ''"> |
| 51 | 44 | AND r.road_name LIKE CONCAT('%', #{roadName}, '%') |
| 52 | 45 | </if> |
| 53 | - <if test="deptId != null"> | |
| 54 | - AND d.id = #{deptId} | |
| 55 | - </if> | |
| 56 | - GROUP BY c.id, c.name, d.id, d.name, | |
| 57 | - r.id, r.road_name, r.starting_remark, r.end_remark, r.tree_area | |
| 46 | + GROUP BY r.company_id, d.id, d.name, r.id, r.road_name, r.starting_remark, r.end_remark, r.tree_area | |
| 58 | 47 | ORDER BY treeCount DESC, recordedCount DESC |
| 59 | 48 | </select> |
| 60 | 49 | </mapper> |
| 61 | 50 | \ No newline at end of file | ... | ... |
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptService.java
urbanops-module-system/src/main/java/com/zteits/urbanops/module/system/service/dept/DeptServiceImpl.java
| ... | ... | @@ -206,6 +206,12 @@ public class DeptServiceImpl implements DeptService { |
| 206 | 206 | } |
| 207 | 207 | |
| 208 | 208 | @Override |
| 209 | + @DataPermission(enable = false) | |
| 210 | + public List<DeptDO> getSubDeptListAll() { | |
| 211 | + return deptMapper.selectList(DeptDO::getParentId, 100); | |
| 212 | + } | |
| 213 | + | |
| 214 | + @Override | |
| 209 | 215 | public List<DeptDO> getDeptList(DeptListReqVO reqVO) { |
| 210 | 216 | List<DeptDO> list = deptMapper.selectList(reqVO); |
| 211 | 217 | list.sort(Comparator.comparing(DeptDO::getSort)); | ... | ... |