Browse Source

Merge branch 'dev-cy/end250630'

chenying2100 3 months ago
parent
commit
0f04a76a20

+ 21 - 6
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysFoodCategoryServiceImpl.java

@@ -23,6 +23,8 @@ import org.dromara.system.service.ISysFoodCategoryService;
 import java.util.List;
 import java.util.Map;
 import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * 食材分类Service业务层处理
@@ -43,12 +45,25 @@ public class SysFoodCategoryServiceImpl implements ISysFoodCategoryService {
         if (StrUtil.isNotBlank(bo.getName())) {
             foodCategoryList = baseMapper.selectList(Wrappers.lambdaQuery(SysFoodCategory.class)
                 .like(SysFoodCategory::getName, bo.getName()));
-            List<SysFoodCategory> parentList = CollUtil.newArrayList();
-            for (int i = foodCategoryList.size() - 1; i >= 0; i--) {
-                SysFoodCategory category = foodCategoryList.get(i);
-//                if () {
-//
-//                }
+            if (CollUtil.isEmpty(foodCategoryList)) {
+                return TableDataInfo.build();
+            }
+
+            Set<Long> parentIdSet = foodCategoryList.stream()
+                .filter(v -> ObjUtil.isNotNull(v.getParentId()) && v.getParentId() > 0)
+                .map(SysFoodCategory::getParentId).collect(Collectors.toSet());
+
+            if (CollUtil.isNotEmpty(parentIdSet)) {
+                Map<Long, SysFoodCategory> parentMap = baseMapper
+                    .selectList(Wrappers.lambdaQuery(SysFoodCategory.class)
+                        .in(SysFoodCategory::getFoodCategoryId, parentIdSet))
+                    .stream().collect(Collectors.toMap(k1 -> k1.getFoodCategoryId(), k2 -> k2, (k1, k2) -> k1));
+
+                foodCategoryList.forEach(v -> {
+                    parentMap.remove(v.getFoodCategoryId());
+                });
+                foodCategoryList.addAll(parentMap.values());
+                foodCategoryList.sort((o1, o2) -> o1.getParentId().compareTo(o2.getParentId()));
             }
         } else {
             foodCategoryList = baseMapper.selectList();