feat(路段分组控制层获取树形数据):
This commit is contained in:
parent
3606c978bf
commit
2269d92c6b
|
@ -86,4 +86,13 @@ public class RoadGroupController extends BaseController {
|
||||||
public AjaxResult remove(@PathVariable List<Long> ids) {
|
public AjaxResult remove(@PathVariable List<Long> ids) {
|
||||||
return toAjax(roadGroupService.removeByIds(ids));
|
return toAjax(roadGroupService.removeByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取路段分组树列表
|
||||||
|
*/
|
||||||
|
@PreAuthorize("@ss.hasPermi('road:group:list')")
|
||||||
|
@GetMapping("/roadTree")
|
||||||
|
public AjaxResult deptTree(RoadGroup roadGroup) {
|
||||||
|
return success(roadGroupService.listRoadTree(roadGroup));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.baomidou.mybatisplus.annotation.TableName;
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 路段分组
|
* 路段分组
|
||||||
*/
|
*/
|
||||||
|
@ -13,7 +16,7 @@ import lombok.Data;
|
||||||
@TableName(value = "pub_road_group")
|
@TableName(value = "pub_road_group")
|
||||||
public class RoadGroup {
|
public class RoadGroup {
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
@TableId(value = "id", type = IdType.AUTO)
|
||||||
private Integer id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 路段名称
|
* 路段名称
|
||||||
|
@ -25,5 +28,8 @@ public class RoadGroup {
|
||||||
* 路段父id
|
* 路段父id
|
||||||
*/
|
*/
|
||||||
@TableField(value = "parent_id")
|
@TableField(value = "parent_id")
|
||||||
private Integer parentId;
|
private Long parentId;
|
||||||
|
|
||||||
|
@TableField(select = false)
|
||||||
|
private List<RoadGroup> children = new ArrayList<>();
|
||||||
}
|
}
|
|
@ -7,6 +7,5 @@ import com.ruoyi.common.core.domain.TreeSelect;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public interface IPlanTypeService extends MPJBaseService<PlanType>{
|
public interface IPlanTypeService extends MPJBaseService<PlanType>{
|
||||||
|
|
||||||
List<TreeSelect> listPlanTree(PlanType planType);
|
List<TreeSelect> listPlanTree(PlanType planType);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,10 @@ package com.ruoyi.board.service;
|
||||||
|
|
||||||
import com.github.yulichang.base.MPJBaseService;
|
import com.github.yulichang.base.MPJBaseService;
|
||||||
import com.ruoyi.board.domain.RoadGroup;
|
import com.ruoyi.board.domain.RoadGroup;
|
||||||
|
import com.ruoyi.common.core.domain.TreeSelect;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public interface IRoadGroupService extends MPJBaseService<RoadGroup> {
|
public interface IRoadGroupService extends MPJBaseService<RoadGroup> {
|
||||||
|
List<TreeSelect> listRoadTree(RoadGroup roadGroup);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,82 @@ import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||||
import com.ruoyi.board.domain.RoadGroup;
|
import com.ruoyi.board.domain.RoadGroup;
|
||||||
import com.ruoyi.board.mapper.RoadGroupMapper;
|
import com.ruoyi.board.mapper.RoadGroupMapper;
|
||||||
import com.ruoyi.board.service.IRoadGroupService;
|
import com.ruoyi.board.service.IRoadGroupService;
|
||||||
|
import com.ruoyi.common.core.domain.TreeSelect;
|
||||||
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class RoadGroupServiceImpl extends MPJBaseServiceImpl<RoadGroupMapper, RoadGroup> implements IRoadGroupService {
|
public class RoadGroupServiceImpl extends MPJBaseServiceImpl<RoadGroupMapper, RoadGroup> implements IRoadGroupService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<TreeSelect> listRoadTree(RoadGroup roadGroup) {
|
||||||
|
List<RoadGroup> list = list();
|
||||||
|
List<RoadGroup> roadGroups = buildRoadTree(list);
|
||||||
|
return roadGroups.stream().map(this::buildTreeSelect).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private TreeSelect buildTreeSelect(RoadGroup roadGroup) {
|
||||||
|
List<TreeSelect> childTreeSelectList = roadGroup.getChildren().stream().map(this::buildTreeSelect).collect(Collectors.toList());
|
||||||
|
TreeSelect treeSelect = new TreeSelect();
|
||||||
|
treeSelect.setId(roadGroup.getId());
|
||||||
|
treeSelect.setLabel(roadGroup.getRoadName());
|
||||||
|
treeSelect.setChildren(childTreeSelectList);
|
||||||
|
return treeSelect;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<RoadGroup> buildRoadTree(List<RoadGroup> list) {
|
||||||
|
List<RoadGroup> returnList = new ArrayList<>();
|
||||||
|
List<Long> tempList = list.stream().map(RoadGroup::getId).collect(Collectors.toList());
|
||||||
|
for (RoadGroup roadGroup : list) {
|
||||||
|
// 如果是顶级节点, 遍历该父节点的所有子节点
|
||||||
|
if (!tempList.contains(roadGroup.getParentId())) {
|
||||||
|
recursionFn(list, roadGroup);
|
||||||
|
returnList.add(roadGroup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (returnList.isEmpty()) {
|
||||||
|
returnList = list;
|
||||||
|
}
|
||||||
|
return returnList;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归列表
|
||||||
|
*/
|
||||||
|
private void recursionFn(List<RoadGroup> list, RoadGroup t) {
|
||||||
|
// 得到子节点列表
|
||||||
|
List<RoadGroup> childList = getChildList(list, t);
|
||||||
|
t.setChildren(childList);
|
||||||
|
for (RoadGroup tChild : childList) {
|
||||||
|
if (hasChild(list, tChild)) {
|
||||||
|
recursionFn(list, tChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到子节点列表
|
||||||
|
*/
|
||||||
|
private List<RoadGroup> getChildList(List<RoadGroup> list, RoadGroup t) {
|
||||||
|
List<RoadGroup> tlist = new ArrayList<>();
|
||||||
|
for (RoadGroup n : list) {
|
||||||
|
if (StringUtils.isNotNull(n.getParentId()) && n.getParentId().longValue() == t.getId().longValue()) {
|
||||||
|
tlist.add(n);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return tlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否有子节点
|
||||||
|
*/
|
||||||
|
private boolean hasChild(List<RoadGroup> list, RoadGroup t) {
|
||||||
|
return !getChildList(list, t).isEmpty();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue