1
This commit is contained in:
parent
74ee7e5eb9
commit
d82fe6407c
@ -75,17 +75,91 @@ public class BusiCategoryServiceImpl extends ServiceImpl<BusiCategoryMapper, Bus
|
||||
item.setProdsJunior(idToProdsJunior.get(item.getId()));
|
||||
}
|
||||
});
|
||||
List<BusiCategory> saveResult = computeProdsAll(categoryList);
|
||||
updateBatchById(saveResult);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 统计每个节点的递归产品数,并返回更新后的列表
|
||||
*
|
||||
* @param categoryList List<BusiCategory>
|
||||
* @return java.util.List<com.ruoyi.busi.domain.BusiCategory>
|
||||
* @author PQZ
|
||||
* @date 15:07 2025/6/30
|
||||
**/
|
||||
private List<BusiCategory> computeProdsAll(List<BusiCategory> categoryList) {
|
||||
if (categoryList == null || categoryList.isEmpty()) {
|
||||
return categoryList;
|
||||
}
|
||||
// 构建id到节点的映射,便于查找
|
||||
Map<String, BusiCategory> idToCategory = new HashMap<>();
|
||||
for (BusiCategory category : categoryList) {
|
||||
idToCategory.put(category.getId(), category);
|
||||
}
|
||||
|
||||
// 构建树结构(找出根节点)
|
||||
BusiCategory root = null;
|
||||
for (BusiCategory category : categoryList) {
|
||||
if (category.getParentId() == null) {
|
||||
root = category;
|
||||
}
|
||||
}
|
||||
// 递归统计
|
||||
calculateProdsAll(root, categoryList);
|
||||
return categoryList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归计算子节点数据
|
||||
*
|
||||
* @param node 根节点
|
||||
* @param categories 全部数据
|
||||
* @return java.lang.Integer
|
||||
* @author PQZ
|
||||
* @date 15:24 2025/6/30
|
||||
**/
|
||||
private static Integer calculateProdsAll(BusiCategory node, List<BusiCategory> categories) {
|
||||
if (node == null) {
|
||||
return 0;
|
||||
}
|
||||
Integer sum = 0;
|
||||
for (BusiCategory child : getChildren(node, categories)) {
|
||||
sum += calculateProdsAll(child, categories);
|
||||
}
|
||||
Integer currentProdsJunior = (node.getProdsJunior() != null) ? node.getProdsJunior() : 0;
|
||||
node.setProdsAll(sum + currentProdsJunior);
|
||||
;
|
||||
return node.getProdsAll();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取某节点的子节点
|
||||
*
|
||||
* @param parent 父节点
|
||||
* @param categories 所有栏目
|
||||
* @return java.util.List<com.ruoyi.busi.domain.BusiCategory>
|
||||
* @author PQZ
|
||||
* @date 15:24 2025/6/30
|
||||
**/
|
||||
private static List<BusiCategory> getChildren(BusiCategory parent, List<BusiCategory> categories) {
|
||||
List<BusiCategory> children = new ArrayList<>();
|
||||
for (BusiCategory cat : categories) {
|
||||
if (parent.getId().equals(cat.getParentId())) {
|
||||
children.add(cat);
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成树结构
|
||||
* @author PQZ
|
||||
* @date 14:11 2025/6/23
|
||||
*
|
||||
* @param list 网站栏目列表
|
||||
* @return java.util.List<com.ruoyi.busi.vo.BusiCategoryVO>
|
||||
* @author PQZ
|
||||
* @date 14:11 2025/6/23
|
||||
**/
|
||||
private List<BusiCategoryVO> buildCategoryTree(List<BusiCategory> list) {
|
||||
// Map存放id到VO的映射
|
||||
|
Loading…
Reference in New Issue
Block a user