后台-退料申请与审核

This commit is contained in:
bns_han 2023-12-22 15:57:59 +08:00
parent 5275483a0e
commit b71ca1e957
2 changed files with 108 additions and 0 deletions

View File

@ -0,0 +1,29 @@
package com.bonus.sgzb.material.domain;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 下拉树-实体类
*/
@Data
public class TypeTreeNode {
private long typeId;
private long parentId;
private String num;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String level;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private String typeName;
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<TypeTreeNode> children = new ArrayList<>();
}

View File

@ -0,0 +1,79 @@
package com.bonus.sgzb.material.vo;
import com.bonus.sgzb.material.domain.TypeTreeNode;
import java.util.ArrayList;
import java.util.List;
/**
* BuildTree 构建树形结构
* @author 10488
*/
public class TypeTreeBuild {
public List<TypeTreeNode> nodeList = new ArrayList<>();
/**
* 构造方法
* @param nodeList 将数据集合赋值给nodeList即所有数据作为所有节点
*/
public TypeTreeBuild(List<TypeTreeNode> nodeList){
this.nodeList = nodeList;
}
/**
* 获取需构建的所有根节点顶级节点 "0"
* @return 所有根节点List集合
*/
public List<TypeTreeNode> getRootNode(){
// 保存所有根节点所有根节点的数据
List<TypeTreeNode> rootNodeList = new ArrayList<>();
// treeNode查询出的每一条数据节点
for (TypeTreeNode treeNode : nodeList){
// 判断当前节点是否为根节点此处注意若parentId类型是String则要采用equals()方法判断
if (0 == treeNode.getParentId()) {
// 添加
rootNodeList.add(treeNode);
}
}
return rootNodeList;
}
/**
* 根据每一个顶级节点根节点进行构建树形结构
* @return 构建整棵树
*/
public List<TypeTreeNode> buildTree(){
// treeNodes保存一个顶级节点所构建出来的完整树形
List<TypeTreeNode> treeNodes = new ArrayList<TypeTreeNode>();
// getRootNode()获取所有的根节点
for (TypeTreeNode treeRootNode : getRootNode()) {
// 将顶级节点进行构建子树
treeRootNode = buildChildTree(treeRootNode);
// 完成一个顶级节点所构建的树形增加进来
treeNodes.add(treeRootNode);
}
return treeNodes;
}
/**
* 递归-----构建子树形结构
* @param pNode 根节点顶级节点
* @return 整棵树
*/
public TypeTreeNode buildChildTree(TypeTreeNode pNode){
List<TypeTreeNode> childTree = new ArrayList<TypeTreeNode>();
// nodeList所有节点集合所有数据
for (TypeTreeNode treeNode : nodeList) {
// 判断当前节点的父节点ID是否等于根节点的ID即当前节点为其下的子节点
if (treeNode.getParentId() == pNode.getTypeId()) {
// 再递归进行判断当前节点的情况调用自身方法
childTree.add(buildChildTree(treeNode));
}
}
// for循环结束即节点下没有任何节点树形构建结束设置树结果
pNode.setChildren(childTree);
return pNode;
}
}