|
@@ -1,6 +1,10 @@
|
|
|
package com.ctsi.SysOrg.service.impl;
|
|
package com.ctsi.SysOrg.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
+import com.baomidou.mybatisplus.annotation.OrderBy;
|
|
|
|
|
+import com.ctsi.SysOrg.entity.SysOrgSearchPO;
|
|
|
|
|
+import com.github.yulichang.query.MPJQueryWrapper;
|
|
|
|
|
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
@@ -10,7 +14,10 @@ import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWra
|
|
|
import com.ctsi.SysOrg.entity.SysOrg;
|
|
import com.ctsi.SysOrg.entity.SysOrg;
|
|
|
import com.ctsi.SysOrg.mapper.SysOrgMapper;
|
|
import com.ctsi.SysOrg.mapper.SysOrgMapper;
|
|
|
import com.ctsi.SysOrg.service.SysOrgService;
|
|
import com.ctsi.SysOrg.service.SysOrgService;
|
|
|
- /**
|
|
|
|
|
|
|
+
|
|
|
|
|
+import java.util.*;
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
* 部门信息表;(sys_org)表服务实现类
|
|
* 部门信息表;(sys_org)表服务实现类
|
|
|
* @author : machaoyi
|
|
* @author : machaoyi
|
|
|
* @date : 2024-1-10
|
|
* @date : 2024-1-10
|
|
@@ -38,18 +45,21 @@ public class SysOrgServiceImpl implements SysOrgService{
|
|
|
* @param size 每页大小
|
|
* @param size 每页大小
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- public Page<SysOrg> paginQuery(SysOrg sysOrg, long current, long size){
|
|
|
|
|
|
|
+ public Page<SysOrgSearchPO> paginQuery(SysOrg sysOrg, long current, long size){
|
|
|
//1. 构建动态查询条件
|
|
//1. 构建动态查询条件
|
|
|
- LambdaQueryWrapper<SysOrg> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
|
|
+ MPJLambdaWrapper<SysOrg> queryWrapper = new MPJLambdaWrapper<>();
|
|
|
if(StrUtil.isNotBlank(sysOrg.getOrgName())){
|
|
if(StrUtil.isNotBlank(sysOrg.getOrgName())){
|
|
|
queryWrapper.eq(SysOrg::getOrgName, sysOrg.getOrgName());
|
|
queryWrapper.eq(SysOrg::getOrgName, sysOrg.getOrgName());
|
|
|
}
|
|
}
|
|
|
if(StrUtil.isNotBlank(sysOrg.getDescription())){
|
|
if(StrUtil.isNotBlank(sysOrg.getDescription())){
|
|
|
queryWrapper.eq(SysOrg::getDescription, sysOrg.getDescription());
|
|
queryWrapper.eq(SysOrg::getDescription, sysOrg.getDescription());
|
|
|
}
|
|
}
|
|
|
|
|
+ queryWrapper.selectAll(SysOrg.class);
|
|
|
|
|
+ queryWrapper.orderByAsc("ORDER_BY");
|
|
|
//2. 执行分页查询
|
|
//2. 执行分页查询
|
|
|
- Page<SysOrg> pagin = new Page<>(current , size , true);
|
|
|
|
|
- IPage<SysOrg> selectResult = sysOrgMapper.selectPage(pagin , queryWrapper);
|
|
|
|
|
|
|
+ Page<SysOrgSearchPO> pagin = new Page<>(current , size , true);
|
|
|
|
|
+ IPage<SysOrgSearchPO> selectResult = sysOrgMapper.selectJoinPage(pagin , SysOrgSearchPO.class, queryWrapper);
|
|
|
|
|
+ selectResult.setRecords(buildTree(selectResult.getRecords()));
|
|
|
pagin.setPages(selectResult.getPages());
|
|
pagin.setPages(selectResult.getPages());
|
|
|
pagin.setTotal(selectResult.getTotal());
|
|
pagin.setTotal(selectResult.getTotal());
|
|
|
pagin.setRecords(selectResult.getRecords());
|
|
pagin.setRecords(selectResult.getRecords());
|
|
@@ -104,4 +114,48 @@ public class SysOrgServiceImpl implements SysOrgService{
|
|
|
int total = sysOrgMapper.deleteById(id);
|
|
int total = sysOrgMapper.deleteById(id);
|
|
|
return total > 0;
|
|
return total > 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ public static List<SysOrgSearchPO> buildTree(List<SysOrgSearchPO> nodeList) {
|
|
|
|
|
+ Map<Long, SysOrgSearchPO> nodeMap = new LinkedHashMap<>();
|
|
|
|
|
+
|
|
|
|
|
+ // 将节点放入 Map 中,方便通过 id 查找
|
|
|
|
|
+ for (SysOrgSearchPO node : nodeList) {
|
|
|
|
|
+ nodeMap.put(node.getId(), node);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ List<SysOrgSearchPO> tree = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ // 逐个节点构建树
|
|
|
|
|
+ for (SysOrgSearchPO node : nodeList) {
|
|
|
|
|
+ if (node.getParentId() == 0) {
|
|
|
|
|
+ // 根节点
|
|
|
|
|
+ tree.add(buildTreeRecursively(node, nodeMap, node.getId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return tree;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private static SysOrgSearchPO buildTreeRecursively(SysOrgSearchPO parentNode, Map<Long, SysOrgSearchPO> nodeMap, Long parentId) {
|
|
|
|
|
+ List<SysOrgSearchPO> children = new ArrayList<>();
|
|
|
|
|
+
|
|
|
|
|
+ // 查找当前节点的子节点
|
|
|
|
|
+ nodeMap.forEach((id, node) -> {
|
|
|
|
|
+ if (Objects.equals(node.getParentId(), parentId)) {
|
|
|
|
|
+ children.add(buildTreeRecursively(node, nodeMap, node.getId()));
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+// for (SysOrgSearchPO node : nodeMap.values()) {
|
|
|
|
|
+// if (Objects.equals(node.getParentId(), parentId)) {
|
|
|
|
|
+// // 递归构建子节点
|
|
|
|
|
+// children.add(buildTreeRecursively(node, nodeMap, node.getId()));
|
|
|
|
|
+// }
|
|
|
|
|
+// }
|
|
|
|
|
+
|
|
|
|
|
+ // 将子节点设置到父节点
|
|
|
|
|
+ parentNode.setChildren(children);
|
|
|
|
|
+
|
|
|
|
|
+ return parentNode;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|