修改标签管理字段配置

This commit is contained in:
梁琦涛
2024-08-19 10:07:03 +08:00
parent b698fd68e9
commit 6e27867cbb
3 changed files with 117 additions and 52 deletions
@@ -76,13 +76,71 @@ public class SysDictItemController {
Result<IPage<SysDictItem>> result = new Result<>();
QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
queryWrapper.orderByAsc("sort_order");
Page<SysDictItem> page = new Page<>(pageNo, pageSize);
IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
List<SysDictItem> listSysDictItem = sysDictItemService.list(queryWrapper);
// 树形查询手动封装分页
if(!CollectionUtils.isEmpty(listSysDictItem) && listSysDictItem.stream().anyMatch(o -> Objects.equals(o.getParentId(), "0"))){
List<SysDictItem> listRes = getDictItem(listSysDictItem, "0");
IPage<SysDictItem> pageList = new Page<>(pageNo, pageSize);
pageList.setRecords(getPageItems(listRes,pageNo,pageSize));
pageList.setTotal(Long.parseLong(String.valueOf(listRes.size())));
result.setResult(pageList);
}else{
Page<SysDictItem> page = new Page<>(pageNo, pageSize);
IPage<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
result.setResult(pageList);
}
result.setSuccess(true);
result.setResult(pageList);
return result;
}
public static List<SysDictItem> getPageItems(List<SysDictItem> itemList, int currentPage, int pageSize) {
// 计算起始索引
int startIndex = (currentPage - 1) * pageSize;
// 确保起始索引不超过列表的最大索引
if (startIndex > itemList.size()) {
return new ArrayList<>(); // 返回空列表
}
// 计算结束索引
int endIndex = Math.min(startIndex + pageSize, itemList.size());
// 截取子列表
return itemList.subList(startIndex, endIndex);
}
private List<SysDictItem> getDictItem(List<SysDictItem> listSysDictItem, String parentId) {
List<SysDictItem> listAll = new ArrayList<>();
List<SysDictItem> listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),parentId)).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listSysDictItemParent)){
listSysDictItemParent = listSysDictItemParent.stream().sorted(Comparator.comparing(SysDictItem::getSortOrder)).collect(Collectors.toList());
for (SysDictItem sysDictItem : listSysDictItemParent) {
listAll.add(sysDictItem);
List<SysDictItem> listSub = getDictItem(listSysDictItem, sysDictItem.getId());
if(!CollectionUtils.isEmpty(listSub)){
listAll.addAll(listSub);
}
}
}
return listAll;
}
private List<SysDictItem> getDictItemTree(List<SysDictItem> listSysDictItem, String parentId) {
List<SysDictItem> listAll = new ArrayList<>();
List<SysDictItem> listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),parentId)).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listSysDictItemParent)){
listSysDictItemParent = listSysDictItemParent.stream().sorted(Comparator.comparing(SysDictItem::getSortOrder)).collect(Collectors.toList());
for (SysDictItem sysDictItem : listSysDictItemParent) {
List<SysDictItem> listSub = getDictItem(listSysDictItem, sysDictItem.getId());
if(!CollectionUtils.isEmpty(listSub)){
sysDictItem.setChildren(listSub);
}
listAll.add(sysDictItem);
}
}
return listAll;
}
/**
* @功能:查询字典数据树形列表
* @param sysDictItem
@@ -92,61 +150,60 @@ public class SysDictItemController {
@ApiOperationSupport(order = 2)
@ApiOperation(value = "查询字典内容树形列表")
@GetMapping("/treeList")
public Result<Page<Tree<String>>> queryTreeList(SysDictItem sysDictItem,
public Result<Page<SysDictItem>> queryTreeList(SysDictItem sysDictItem,
HttpServletRequest req,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
Page<SysDictItem> page = new Page<>(pageNo, pageSize);
QueryWrapper<SysDictItem> queryWrapper = QueryGenerator.initQueryWrapper(sysDictItem, req.getParameterMap());
Page<SysDictItem> pageList = sysDictItemService.page(page, queryWrapper);
List<SysDictItem> sysDictItems = pageList.getRecords();
List<String> rootIds = sysDictItems.stream().map(SysDictItem::getId).collect(Collectors.toList());
// 递归查询子节点
queryChildrenNode(sysDictItems, rootIds);
// 重新获取ids
List<String> idList = sysDictItems.stream().map(SysDictItem::getId).collect(Collectors.toList());
//当查询结果中有数据的父级不存在时,赋值父级id为"0"
idList.add("0");
//赋值pId
sysDictItems.forEach(i ->{
String parentId = i.getParentId();
if (idList.contains(parentId)) {
i.setPId(parentId);
}else {
i.setPId("0");
}
});
//配置
TreeNodeConfig treeNodeConfig = new TreeNodeConfig();
// 自定义属性名 都要默认值的
treeNodeConfig.setWeightKey("sortOrder");
treeNodeConfig.setIdKey("id");
treeNodeConfig.setParentIdKey("pId");
// 最大递归深度
treeNodeConfig.setDeep(-1);
//转换器
List<Tree<String>> treeNodes = TreeUtil.build(sysDictItems, "0", treeNodeConfig,
(treeNode, tree) -> {
String id = treeNode.getId();
tree.setId(id);
tree.setParentId(treeNode.getPId());
tree.setWeight(treeNode.getSortOrder());
tree.setName(treeNode.getItemText());
// 扩展属性 ...
Map<String, Object> map = BeanUtil.beanToMap(treeNode,"dictId","parentId","itemText","itemValue","enName","description","sortOrder","status","isReadOnly");
for (String s : map.keySet()) {
tree.putExtra(s, map.get(s));
List<SysDictItem> listSysDictItem = sysDictItemService.list(queryWrapper);
List<SysDictItem> listAll = new ArrayList<>();
// 树形查询手动封装分页
if(!CollectionUtils.isEmpty(listSysDictItem)){
if(!StringUtils.isBlank(sysDictItem.getItemText())){
List<SysDictItem> listSelectAll = new ArrayList<>();
for (SysDictItem dictItem : listSysDictItem) {
listSelectAll.add(dictItem);
List<SysDictItem> sub = getParentData(dictItem.getParentId());
if(!CollectionUtils.isEmpty(sub)){
listSelectAll.addAll(sub);
}
});
Page<Tree<String>> treePage = new Page<>(pageNo, pageSize);
if (treeNodes == null){
treeNodes = new ArrayList<>();
}
if(!CollectionUtils.isEmpty(listSelectAll)){
listSysDictItem = listSelectAll.stream().distinct().collect(Collectors.toList());
}
}
List<SysDictItem> listSysDictItemParent = listSysDictItem.stream().filter(o->Objects.equals(o.getParentId(),"0")).collect(Collectors.toList());
for (SysDictItem dictItem : listSysDictItemParent) {
List<SysDictItem> listRes = getDictItemTree(listSysDictItem, dictItem.getId());
if(!CollectionUtils.isEmpty(listRes)){
dictItem.setChildren(listRes);
}
listAll.add(dictItem);
}
}
treePage.setRecords(treeNodes);
treePage.setTotal(pageList.getTotal());
Page<SysDictItem> treePage = new Page<>(pageNo, pageSize);
treePage.setRecords(listAll);
treePage.setTotal(listAll.size());
return Result.OK(treePage);
}
private List<SysDictItem> getParentData(String parentId){
List<SysDictItem> listSelectAll = new ArrayList<>();
SysDictItem dictItemChildren = sysDictItemService.getById(parentId);
if(!Objects.isNull(dictItemChildren)){
listSelectAll.add(dictItemChildren);
if(!StringUtils.isBlank(dictItemChildren.getParentId())
&& !Objects.equals(dictItemChildren.getParentId(),"0")){
List<SysDictItem> sub = getParentData(dictItemChildren.getParentId());
if(!CollectionUtils.isEmpty(sub)){
listSelectAll.addAll(sub);
}
}
}
return listSelectAll;
}
/**
* @Author: liao
* @Date: 2023/11/2 14:04
@@ -203,4 +203,12 @@ public class SysDictItem implements TreeNode {
public String obtainTreeNodeParentId() {
return parentId;
}
/**
* 层级
*/
@TableField(exist = false)
private List<SysDictItem> children;
}