内部工作组树查询逻辑更改
This commit is contained in:
+8
-4
@@ -43,10 +43,14 @@ public class LawsWorkingGroupController extends JeroController<LawsWorkingGroup,
|
|||||||
@AutoLog(value = "内部工作组-列表查询")
|
@AutoLog(value = "内部工作组-列表查询")
|
||||||
@ApiOperation(value="内部工作组-列表查询", notes="内部工作组-列表查询")
|
@ApiOperation(value="内部工作组-列表查询", notes="内部工作组-列表查询")
|
||||||
@GetMapping(value = "/list")
|
@GetMapping(value = "/list")
|
||||||
public Result<List<LawsWorkingGroup>> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) {
|
public Result<List<LawsWorkingGroup>> queryList(LawsWorkingGroup lawsWorkingGroup) {
|
||||||
lawsWorkingGroup.setDelFlag("0");
|
List<LawsWorkingGroup> list = lawsWorkingGroupService.queryList();
|
||||||
List<LawsWorkingGroup> list = lawsWorkingGroupService.queryList(lawsWorkingGroup, req);
|
List<LawsWorkingGroup> toTree = new ArrayList<>();
|
||||||
List<LawsWorkingGroup> toTree = lawsWorkingGroupService.convertToTree(list);
|
if (StringUtils.isBlank(lawsWorkingGroup.getName())){
|
||||||
|
toTree = lawsWorkingGroupService.convertToTree(list);
|
||||||
|
}else {
|
||||||
|
toTree = lawsWorkingGroupService.convertToTree(list, lawsWorkingGroup.getName());
|
||||||
|
}
|
||||||
return Result.OK(toTree);
|
return Result.OK(toTree);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -16,12 +16,8 @@ public interface ILawsWorkingGroupService extends IService<LawsWorkingGroup> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询
|
* 列表查询
|
||||||
*
|
|
||||||
* @param lawsWorkingGroup
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
List<LawsWorkingGroup> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req);
|
List<LawsWorkingGroup> queryList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@@ -72,6 +68,7 @@ public interface ILawsWorkingGroupService extends IService<LawsWorkingGroup> {
|
|||||||
* 对列表数据转树结构列表(pid为空当作开始节点)
|
* 对列表数据转树结构列表(pid为空当作开始节点)
|
||||||
*/
|
*/
|
||||||
List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list);
|
List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list);
|
||||||
|
List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对列表数据转树结构列表(指定开始节点)
|
* 对列表数据转树结构列表(指定开始节点)
|
||||||
|
|||||||
+41
-11
@@ -9,14 +9,10 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.jero.common.system.query.QueryGenerator;
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -31,14 +27,12 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表查询
|
* 列表查询
|
||||||
*
|
|
||||||
* @param lawsWorkingGroup
|
|
||||||
* @param req
|
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<LawsWorkingGroup> queryList(LawsWorkingGroup lawsWorkingGroup, HttpServletRequest req) {
|
public List<LawsWorkingGroup> queryList() {
|
||||||
return list(QueryGenerator.initQueryWrapper(lawsWorkingGroup, req.getParameterMap()));
|
LambdaQueryWrapper<LawsWorkingGroup> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(LawsWorkingGroup::getDelFlag, "0");
|
||||||
|
return list(wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,6 +106,42 @@ public class LawsWorkingGroupServiceImpl extends ServiceImpl<LawsWorkingGroupMap
|
|||||||
/**
|
/**
|
||||||
* 对列表数据转树结构列表(pid为空当作开始节点)
|
* 对列表数据转树结构列表(pid为空当作开始节点)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
|
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list, String name) {
|
||||||
|
List<LawsWorkingGroup> matchedNodes = list.stream().filter(node -> node.getName().contains(name)).collect(Collectors.toList());
|
||||||
|
if (matchedNodes.isEmpty()) {
|
||||||
|
return Collections.singletonList(list.get(0));
|
||||||
|
}
|
||||||
|
Set<LawsWorkingGroup> nodesSet = new HashSet<>();
|
||||||
|
for (LawsWorkingGroup matchedNode : matchedNodes) {
|
||||||
|
nodesSet.addAll(findPathToRoot(list, matchedNode));
|
||||||
|
nodesSet.addAll(findAllChildren(list, matchedNode));
|
||||||
|
}
|
||||||
|
List<LawsWorkingGroup> LawsWorkingGroups = new ArrayList<>(nodesSet);
|
||||||
|
return this.convertToTree(LawsWorkingGroups);
|
||||||
|
}
|
||||||
|
private Set<LawsWorkingGroup> findPathToRoot(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||||
|
Set<LawsWorkingGroup> pathNodes = new HashSet<>();
|
||||||
|
LawsWorkingGroup currentHolder = node;
|
||||||
|
while (currentHolder != null) {
|
||||||
|
pathNodes.add(currentHolder);
|
||||||
|
LawsWorkingGroup finalCurrentHolder = currentHolder;
|
||||||
|
currentHolder = list.stream()
|
||||||
|
.filter(n -> n.getId().equals(finalCurrentHolder.getPid()))
|
||||||
|
.findFirst().orElse(null);
|
||||||
|
}
|
||||||
|
return pathNodes;
|
||||||
|
}
|
||||||
|
private Set<LawsWorkingGroup> findAllChildren(List<LawsWorkingGroup> list, LawsWorkingGroup node) {
|
||||||
|
Set<LawsWorkingGroup> childrenSet = new HashSet<>();
|
||||||
|
List<LawsWorkingGroup> directChildren = list.stream().filter(n -> n.getPid().equals(node.getId())).collect(Collectors.toList());
|
||||||
|
for (LawsWorkingGroup child : directChildren) {
|
||||||
|
childrenSet.add(child);
|
||||||
|
childrenSet.addAll(findAllChildren(list, child));
|
||||||
|
}
|
||||||
|
return childrenSet;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
public List<LawsWorkingGroup> convertToTree(List<LawsWorkingGroup> list) {
|
||||||
if (list == null || list.size() == 0){
|
if (list == null || list.size() == 0){
|
||||||
|
|||||||
Reference in New Issue
Block a user