|
|
@@ -18,7 +18,9 @@ import org.springframework.util.Assert;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* iscs驾驶舱页面和组件关联 Service 实现类
|
|
|
@@ -94,14 +96,50 @@ public class PageUiComponentServiceImpl extends ServiceImpl<PageUiComponentMappe
|
|
|
}
|
|
|
// 开始查询sys_page_ui_component
|
|
|
List<Long> pageIds = rolePageDOList.stream().map(RolePageDO::getId).toList();
|
|
|
- return list(new MPJLambdaWrapperX<PageUiComponentDO>()
|
|
|
+ List<PageUiComponentDO> list = list(new MPJLambdaWrapperX<PageUiComponentDO>()
|
|
|
.leftJoin(UiComponentDO.class, UiComponentDO::getId, PageUiComponentDO::getComponentId)
|
|
|
.in(PageUiComponentDO::getPageId, pageIds)
|
|
|
.selectAll(PageUiComponentDO.class)
|
|
|
.selectAs(UiComponentDO::getComponentName, "componentName")
|
|
|
.selectAs(UiComponentDO::getComponentCategory, "componentCategory")
|
|
|
.selectAs(UiComponentDO::getComponentThumbnail, "componentThumbnail")
|
|
|
- .selectAs(UiComponentDO::getComponentFilePath, "componentFilePath"));
|
|
|
+ .selectAs(UiComponentDO::getComponentFilePath, "componentFilePath")
|
|
|
+ .orderByAsc(PageUiComponentDO::getComponentRow));
|
|
|
+ // 开始过滤删除,考虑到不同的page可能有重复的UiComponent,需要把低等级的UiComponent去除,防止重复显示
|
|
|
+ List<PageUiComponentDO> result = filterMinComponentRowByComponentId(list);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public static List<PageUiComponentDO> filterMinComponentRowByComponentId(List<PageUiComponentDO> list) {
|
|
|
+ if (list == null || list.isEmpty()) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 LinkedHashMap 保持插入顺序(可选)
|
|
|
+ Map<Long, PageUiComponentDO> map = new HashMap<>();
|
|
|
+
|
|
|
+ for (PageUiComponentDO item : list) {
|
|
|
+ Long componentId = item.getComponentId(); // 假设有 getter 方法
|
|
|
+ String componentRow = item.getComponentRow(); // 同上
|
|
|
+
|
|
|
+ // 如果 Map 中不存在该 componentId,直接放入
|
|
|
+ if (!map.containsKey(componentId)) {
|
|
|
+ map.put(componentId, item);
|
|
|
+ } else {
|
|
|
+ // 获取已存在的条目
|
|
|
+ PageUiComponentDO existingItem = map.get(componentId);
|
|
|
+ String existingRow = existingItem.getComponentRow();
|
|
|
+
|
|
|
+ // 比较 componentRow 的字典序,取较小者
|
|
|
+ if (componentRow.compareTo(existingRow) < 0) {
|
|
|
+ map.put(componentId, item); // 替换为当前更小的条目
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 将 Map 的值转为 List
|
|
|
+ return new ArrayList<>(map.values());
|
|
|
}
|
|
|
|
|
|
@Override
|