package com.ruoyi.system.utils;
|
|
import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.system.domain.TbBasicDataField;
|
import com.ruoyi.system.domain.TbField;
|
import com.ruoyi.system.vo.FieldsTreeVO;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author mitao
|
* @date 2024/4/3
|
*/
|
public class FieldBuildUtil {
|
/**
|
* 构建基础数据字段树形层级
|
*
|
* @param basicDataFields 基础数据字段
|
* @param fieldMap 字段Map
|
* @param roots 返回的vo
|
*/
|
public static void buildTreeStructure(List<TbBasicDataField> basicDataFields, Map<Long, TbField> fieldMap, List<FieldsTreeVO> roots) {
|
Map<String, FieldsTreeVO> levelTwoMap = new HashMap<>();
|
Map<String, FieldsTreeVO> levelThreeMap = new HashMap<>();
|
|
for (TbBasicDataField item : basicDataFields) {
|
TbField tbField = fieldMap.get(item.getFieldId());
|
if (tbField != null) {
|
String levelOneCategory = tbField.getLevelOneCategory();
|
String levelTwoCategory = tbField.getLevelTwoCategory();
|
String levelThreeCategory = tbField.getLevelThreeCategory();
|
Long id = tbField.getId();
|
String fieldName = tbField.getFieldName();
|
String fieldValue = item.getFieldValue();
|
FieldsTreeVO field = new FieldsTreeVO();
|
field.setId(id);
|
field.setName(fieldName);
|
field.setValue(fieldValue);
|
field.setCategory(Boolean.FALSE);
|
FieldsTreeVO levelOneField = null;
|
for (FieldsTreeVO root : roots) {
|
if (root.getName().equals(levelOneCategory)) {
|
levelOneField = root;
|
break;
|
}
|
}
|
if (levelOneField == null) {
|
levelOneField = new FieldsTreeVO();
|
levelOneField.setName(levelOneCategory);
|
roots.add(levelOneField);
|
}
|
|
if (StringUtils.isNotBlank(levelTwoCategory)) {
|
FieldsTreeVO levelTwoField = levelTwoMap.getOrDefault(levelTwoCategory, null);
|
if (levelTwoField == null) {
|
levelTwoField = new FieldsTreeVO();
|
levelTwoField.setName(levelTwoCategory);
|
levelTwoMap.put(levelTwoCategory, levelTwoField);
|
levelOneField.getChildren().add(levelTwoField);
|
}
|
|
if (StringUtils.isNotBlank(levelThreeCategory)) {
|
FieldsTreeVO levelThreeField = levelThreeMap.getOrDefault(levelThreeCategory, null);
|
if (levelThreeField == null) {
|
levelThreeField = new FieldsTreeVO();
|
levelThreeField.setName(levelThreeCategory);
|
levelThreeMap.put(levelThreeCategory, levelThreeField);
|
levelTwoField.getChildren().add(levelThreeField);
|
}
|
levelThreeField.getChildren().add(field);
|
} else {
|
levelTwoField.getChildren().add(field);
|
}
|
} else {
|
levelOneField.getChildren().add(field);
|
}
|
}
|
}
|
}
|
|
/**
|
* 构建字段树形层级
|
*
|
* @param tbFieldList 字段列表
|
*/
|
public static void buildTreeFromTbFieldList(List<TbField> tbFieldList, List<FieldsTreeVO> roots) {
|
Map<String, FieldsTreeVO> levelOneMap = new HashMap<>();
|
Map<String, FieldsTreeVO> levelTwoMap = new HashMap<>();
|
|
for (TbField tbField : tbFieldList) {
|
String levelOneCategory = tbField.getLevelOneCategory();
|
String levelTwoCategory = tbField.getLevelTwoCategory();
|
String levelThreeCategory = tbField.getLevelThreeCategory();
|
String fieldName = tbField.getFieldName();
|
Long id = tbField.getId();
|
FieldsTreeVO field = new FieldsTreeVO();
|
field.setId(id);
|
field.setName(fieldName);
|
field.setCategory(Boolean.FALSE);
|
FieldsTreeVO levelOneField = null;
|
for (FieldsTreeVO root : roots) {
|
if (root.getName().equals(levelOneCategory)) {
|
levelOneField = root;
|
break;
|
}
|
}
|
if (levelOneField == null) {
|
levelOneField = new FieldsTreeVO();
|
levelOneField.setName(levelOneCategory);
|
roots.add(levelOneField);
|
}
|
|
if (StringUtils.isNotBlank(levelTwoCategory)) {
|
FieldsTreeVO levelTwoField = levelTwoMap.getOrDefault(levelTwoCategory, null);
|
if (levelTwoField == null) {
|
levelTwoField = new FieldsTreeVO();
|
levelTwoField.setName(levelTwoCategory);
|
levelOneField.getChildren().add(levelTwoField);
|
levelTwoMap.put(levelTwoCategory, levelTwoField);
|
}
|
|
if (StringUtils.isNotBlank(levelThreeCategory)) {
|
FieldsTreeVO levelThreeField = new FieldsTreeVO();
|
levelThreeField.setName(levelThreeCategory);
|
levelTwoField.getChildren().add(levelThreeField);
|
levelThreeField.getChildren().add(field);
|
} else {
|
levelTwoField.getChildren().add(field);
|
}
|
} else {
|
levelOneField.getChildren().add(field);
|
}
|
}
|
}
|
}
|