diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PageElementApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PageElementApi.java index 073ea5c4..c42e63d2 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PageElementApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/PageElementApi.java @@ -70,9 +70,9 @@ public interface PageElementApi { /** 查询页面元素关联关系 **/ @PostMapping("/api/pageElement/getFeatureResourceRelations") - ApiResult getFeatureResourceRelations(@RequestBody @Valid IdReq req); + ApiResult> getFeatureResourceRelations(@RequestBody @Valid IdReq req); /** 查询页面元素关联关系 **/ @PostMapping("/api/pageElement/importData") - ApiResult importData(@RequestBody @Valid PageElementImportDataReq req); + ApiResult importData(@RequestBody @Valid List req); } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/SaveOrUpdatePageElementReq.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/SaveOrUpdatePageElementReq.java index 2b9a38ae..c483477b 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/SaveOrUpdatePageElementReq.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/req/SaveOrUpdatePageElementReq.java @@ -26,7 +26,7 @@ public class SaveOrUpdatePageElementReq { private String itemCode; /** 分组ID **/ - private Long pageId; + private String groupCode; /** 页面元素类型:PAGE/COMPONENT **/ @NotBlank(message = "页面元素类型不能为空") diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/FeatureResourcePageElementRelationViewResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/FeatureResourcePageElementRelationViewResp.java deleted file mode 100644 index d8f2479e..00000000 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/FeatureResourcePageElementRelationViewResp.java +++ /dev/null @@ -1,97 +0,0 @@ -package cn.axzo.tyr.client.model.res; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.List; - -/** - * @author likunpeng - * @version 1.0 - * @date 2024/8/23 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class FeatureResourcePageElementRelationViewResp { - - /** 菜单资源列表 **/ - private List featureResources; - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class FeatureResourceBasicDTO { - - private Long id; - - /** - * 资源编码-权限码 - */ - private String uniCode; - - /** - * 资源名称 - */ - private String featureName; - - /** - * 资源类型1-菜单 2-页面 3-应用入口 4-组件 5-root 6-分组 - */ - private Integer featureType; - - /** 前端元素资源列表 **/ - private PageElementBasicDTO pageElement; - - private List children; - } - - @Data - @Builder - @NoArgsConstructor - @AllArgsConstructor - public static class PageElementBasicDTO { - private Long id; - /** - * 元素的组编码 - */ - private String groupCode; - - /** - * 元素的组编码 - */ - private String groupName; - - /** - * 元素编码 - */ - private String code; - - /** - * 元素名称 - */ - private String name; - - /** - * 元素类型 - */ - private String type; - - /** - * 是否关联 - */ - private Boolean hasRelation; - - /** - * 1:路由页面 - */ - private Integer relationType; - - - private List children; - } -} diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/ListPageElementCategoryResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/ListPageElementCategoryResp.java index 0ccf85bd..7a269fba 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/ListPageElementCategoryResp.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/ListPageElementCategoryResp.java @@ -35,5 +35,7 @@ public class ListPageElementCategoryResp { private String itemCode; /** 项目名称 **/ private String itemName; + /** 端 **/ + private String terminal; } } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PageElementRelationFeatureResourceResp.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PageElementRelationFeatureResourceResp.java new file mode 100644 index 00000000..cf6df342 --- /dev/null +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/res/PageElementRelationFeatureResourceResp.java @@ -0,0 +1,82 @@ +package cn.axzo.tyr.client.model.res; + +import cn.axzo.basics.common.model.IBaseTree; +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** +* @author likunpeng +* @date 2024/8/30 +* @version 1.0 +*/ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageElementRelationFeatureResourceResp implements IBaseTree { + + private Long id; + + /** + * 上级资源ID + */ + private Long parentId; + + /** + * 资源编码-权限码 + */ + private String uniCode; + + /** + * 资源名称 + */ + private String featureName; + + /** + * 资源类型1-菜单 2-页面 3-应用入口 4-组件 5-root 6-分组 + */ + private Integer featureType; + + /** + * 子节点 + */ + private List children; + + /** + * 是否关联 + */ + private Boolean hasRelation; + + /** + * 1:路由页面 + */ + private Integer relationType; + + @JsonIgnore + @Override + public Long getNodeCode() { + return this.getId(); + } + + @JsonIgnore + @Override + public Long getParentNodeCode() { + return this.getParentId(); + } + + @JsonIgnore + @Override + public List getNodeChildren() { + return this.children; + } + + @Override + public void setNodeChildren(List nodeChildren) { + this.children = nodeChildren; + } +} diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/TyrServerDevApplication.java b/tyr-server/src/main/java/cn/axzo/tyr/server/TyrServerDevApplication.java index b15ee22a..e18dedb6 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/TyrServerDevApplication.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/TyrServerDevApplication.java @@ -31,6 +31,7 @@ public class TyrServerDevApplication { System.setProperty("spring.redis.host","172.16.2.23"); System.setProperty("xxl.job.admin.addresses","http://dev-xxl-job.axzo.cn/xxl-job-admin"); System.setProperty("rocketmq.name-server", "172.16.2.82:9876"); + System.setProperty("spring.datasource.url", "jdbc:mysql://172.16.2.171:3306/pudge?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=Asia/Shanghai&useSSL=true&verifyServerCertificate=false&rewriteBatchedStatements=true"); SpringApplication application = new SpringApplication(TyrServerDevApplication.class); ApplicationContext applicationContext = application.run(args); Environment env = applicationContext.getEnvironment(); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PageElementController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PageElementController.java index 8ac431b1..83c37734 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PageElementController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/permission/PageElementController.java @@ -92,12 +92,12 @@ public class PageElementController implements PageElementApi { } @Override - public ApiResult getFeatureResourceRelations(IdReq req) { + public ApiResult> getFeatureResourceRelations(IdReq req) { return ApiResult.ok(saasPageElementService.getFeatureResourceRelations(req.getId())); } @Override - public ApiResult importData(PageElementImportDataReq req) { + public ApiResult importData(List req) { saasPageElementService.importData(req); return ApiResult.ok(); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPageElementService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPageElementService.java index b23f79b9..c7097a19 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPageElementService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasPageElementService.java @@ -82,7 +82,7 @@ public interface SaasPageElementService extends IService { void delete(DeletePageElementReq req); - FeatureResourcePageElementRelationViewResp getFeatureResourceRelations(Long pageElementId); + List getFeatureResourceRelations(Long pageElementId); - void importData(PageElementImportDataReq req); + void importData(List req); } diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementCategoryServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementCategoryServiceImpl.java index 3d4c77d6..09120600 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementCategoryServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementCategoryServiceImpl.java @@ -61,6 +61,7 @@ public class SaasPageElementCategoryServiceImpl implements SaasPageElementCatego .id(c.getId()) .itemCode(c.getItemCode()) .itemName(c.getItemName()) + .terminal(c.getTerminal()) .build()).collect(Collectors.toList())).build()); }); return categoryResps; diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java index 00d8cbc3..9f03e121 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasPageElementServiceImpl.java @@ -4,6 +4,7 @@ import cn.axzo.basics.common.BeanMapper; import cn.axzo.basics.common.constant.enums.DeleteEnum; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.basics.common.util.StopWatchUtil; +import cn.axzo.basics.common.util.TreeUtil; import cn.axzo.basics.profiles.api.UserProfileServiceApi; import cn.axzo.basics.profiles.dto.basic.PersonProfileDto; import cn.axzo.foundation.dao.support.converter.PageConverter; @@ -562,10 +563,10 @@ public class SaasPageElementServiceImpl extends ServiceImpl 0, "页面元素不存在"); + AssertUtil.isTrue(StringUtils.isNotBlank(req.getGroupCode()), "页面元素不存在"); List pageElements = saasPageElementDao.lambdaQuery() .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) - .eq(SaasPageElement::getId, req.getPageId()).list(); + .eq(SaasPageElement::getCode, req.getGroupCode()).list(); AssertUtil.notEmpty(pageElements, "父级元素不存在。"); SaasPageElement pageElement = pageElements.get(0); @@ -622,38 +623,95 @@ public class SaasPageElementServiceImpl extends ServiceImpl getFeatureResourceRelations(Long pageElementId) { SaasPageElement dbPageElement = saasPageElementDao.getById(pageElementId); AssertUtil.notNull(dbPageElement, "页面元素资源不存在"); - List pageElements = saasPageElementDao.listByGroupCodesAndExcludeIds(Lists.newArrayList(dbPageElement.getGroupCode()), null, dbPageElement.getTerminal(), null); - FeatureResourcePageElementRelationViewResp.PageElementBasicDTO elementBasic = getPageElementBasic(pageElements); - if (Objects.isNull(elementBasic)) { - return null; - } List relations = saasPageElementFeatureResourceRelationDao.lambdaQuery() .eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue()) - .in(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElements.stream().map(SaasPageElement::getCode).collect(Collectors.toSet())) + .eq(SaasPageElementFeatureResourceRelation::getPageElementCode, dbPageElement.getCode()) .eq(SaasPageElementFeatureResourceRelation::getTerminal, dbPageElement.getTerminal()) .list(); if (CollectionUtils.isEmpty(relations)) { - return null; - } - List featureResourceBasics = getFeatureResourceBasic(relations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toList()), dbPageElement.getTerminal()); - if (CollectionUtils.isEmpty(featureResourceBasics)) { - return null; + return Collections.emptyList(); } - fillElementToResource(featureResourceBasics, relations, elementBasic); + List pageFeatureResources = saasFeatureResourceDao.lambdaQuery() + .eq(SaasFeatureResource::getTerminal, dbPageElement.getTerminal()) + .in(SaasFeatureResource::getUniCode, relations.stream().map(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode).collect(Collectors.toSet())) + .in(SaasFeatureResource::getFeatureType, Lists.newArrayList(FeatureResourceType.PAGE.getCode(), FeatureResourceType.APP_ENTRY.getCode())) + .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) + .list(); + if (CollectionUtils.isEmpty(pageFeatureResources)) { + return Collections.emptyList(); + } + List pageParentFeatureResources = saasFeatureResourceDao.lambdaQuery() + .eq(SaasFeatureResource::getTerminal, dbPageElement.getTerminal()) + .in(SaasFeatureResource::getId, pageFeatureResources.stream().map(SaasFeatureResource::getParentId).collect(Collectors.toSet())) + .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) + .list(); + List pageChildrenFeatureResources = saasFeatureResourceDao.lambdaQuery() + .eq(BaseEntity::getIsDelete,0) + .and(i -> pageFeatureResources.forEach(f -> i.or().likeRight(SaasFeatureResource::getPath, f.getPath()))) + .list(); + List allFeatureResources = Lists.newArrayList(pageFeatureResources); + if (CollectionUtils.isNotEmpty(pageParentFeatureResources)) { + allFeatureResources.addAll(pageParentFeatureResources); + } + if (CollectionUtils.isNotEmpty(pageChildrenFeatureResources)) { + allFeatureResources.addAll(pageChildrenFeatureResources); + } - return FeatureResourcePageElementRelationViewResp.builder().featureResources(featureResourceBasics).build(); + Map uniCodeRelationMap = relations.stream() + .collect(Collectors.toMap(SaasPageElementFeatureResourceRelation::getFeatureResourceUniCode, Function.identity(), (v1, v2) -> v1)); + List reps = allFeatureResources.stream().map(e -> PageElementRelationFeatureResourceResp.builder() + .id(e.getId()) + .parentId(e.getParentId()) + .uniCode(e.getUniCode()) + .featureName(e.getFeatureName()) + .featureType(e.getFeatureType()) + .hasRelation(uniCodeRelationMap.containsKey(e.getUniCode())) + .relationType(Optional.ofNullable(uniCodeRelationMap.get(e.getUniCode())).map(SaasPageElementFeatureResourceRelation::getType).orElse(null)) + .build()).distinct().collect(Collectors.toList()); + + return TreeUtil.buildTree(reps); } @Override - public void importData(PageElementImportDataReq req) { - saasPageElementDao.lambdaQuery() + public void importData(List req) { + Integer codeCount = saasPageElementDao.lambdaQuery() .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) + .in(SaasPageElement::getCode, req.stream().map(PageElementImportDataReq::getCode).collect(Collectors.toList())) .count(); + AssertUtil.isTrue(codeCount <= 0, "导入的资源编码已存在。"); + + Set itemCodes = req.stream().map(PageElementImportDataReq::getItemCode).collect(Collectors.toSet()); + List categories = saasPageElementCategoryDao.lambdaQuery() + .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) + .in(SaasPageElementCategory::getItemCode, itemCodes) + .list(); + AssertUtil.isTrue(itemCodes.size() == categories.size(), "元素分类编码系统中有未存在的。"); + Map categoryMap = categories.stream().collect(Collectors.toMap(SaasPageElementCategory::getItemCode, Function.identity(), (v1, v2) -> v1)); + + List elements = req.stream().map(e -> { + SaasPageElementCategory category = categoryMap.get(e.getItemCode()); + AssertUtil.notNull(category, e.getItemCode() + "不存在。"); + return SaasPageElement.builder() + .version(e.getVersion()) + .groupCode(e.getGroupCode()) + .code(e.getCode()) + .name(e.getName()) + .type(e.getType()) + .linkUrl(e.getLinkUrl()) + .terminal(e.getTerminal()) + .appType(e.getAppType()) + .itemCode(e.getItemCode()) + .itemName(category.getItemName()) + .createName(Optional.ofNullable(e.getOperatorId()).map(Objects::toString).orElse(StringUtils.EMPTY)) + .appId(e.getAppId()) + .build(); + }).collect(Collectors.toList()); + Lists.partition(elements,500).forEach(saasPageElementDao::saveBatch); } private PageElementResp from(SaasPageElement saasPageElement, @@ -767,134 +825,6 @@ public class SaasPageElementServiceImpl extends ServiceImpl pageElements) { - SaasPageElement pageTypeElement = pageElements.stream().filter(e -> PageElementTypeEnum.PAGE.getCode().equals(e.getType())).findFirst().orElse(null); - if (Objects.isNull(pageTypeElement)) { - return null; - } - - return FeatureResourcePageElementRelationViewResp.PageElementBasicDTO.builder() - .id(pageTypeElement.getId()) - .groupCode(pageTypeElement.getGroupCode()) - .groupName(pageTypeElement.getName()) - .code(pageTypeElement.getCode()) - .name(pageTypeElement.getName()) - .type(pageTypeElement.getType()) - .children(pageElements.stream().filter(e -> PageElementTypeEnum.COMPONENT.getCode().equals(e.getType())).map(e -> FeatureResourcePageElementRelationViewResp.PageElementBasicDTO.builder() - .id(e.getId()) - .groupCode(pageTypeElement.getGroupCode()) - .groupName(pageTypeElement.getName()) - .code(e.getCode()) - .name(e.getName()) - .type(e.getType()).build()).collect(Collectors.toList())) - .build(); - } - - private List getFeatureResourceBasic(List uniCodes, String terminal) { - List featureResources = saasFeatureResourceDao.lambdaQuery() - .eq(SaasFeatureResource::getTerminal, terminal) - .in(SaasFeatureResource::getUniCode, uniCodes) - .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) - .list(); - - List parentFrs = featureResources.stream().filter(e -> { - if (Objects.isNull(e.getFeatureType())) { - return false; - } - return FeatureResourceType.PAGE.getCode().equals(e.getFeatureType()); - }).collect(Collectors.toList()); - List componentAndAppEntityParentIds = featureResources.stream().filter(e -> { - if (Objects.isNull(e.getFeatureType())) { - return false; - } - return FeatureResourceType.COMPONENT.getCode().equals(e.getFeatureType()) || FeatureResourceType.APP_ENTRY.getCode().equals(e.getFeatureType()); - }).map(SaasFeatureResource::getParentId).collect(Collectors.toList()); - - if (CollectionUtils.isNotEmpty(componentAndAppEntityParentIds)) { - List parentResources = saasFeatureResourceDao.lambdaQuery() - .eq(SaasFeatureResource::getTerminal, terminal) - .in(SaasFeatureResource::getId, componentAndAppEntityParentIds) - .eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue()) - .list(); - if (CollectionUtils.isNotEmpty(parentResources)) { - parentFrs.addAll(parentResources); - } - } - parentFrs = parentFrs.stream().distinct().collect(Collectors.toList()); - - Map> childrenMap = featureResources.stream().filter(e -> FeatureResourceType.COMPONENT.getCode().equals(e.getFeatureType()) - || FeatureResourceType.APP_ENTRY.getCode().equals(e.getFeatureType())).collect(Collectors.groupingBy(SaasFeatureResource::getParentId)); - List allParents = parentFrs.stream().map(e -> FeatureResourcePageElementRelationViewResp.FeatureResourceBasicDTO.builder() - .id(e.getId()) - .uniCode(e.getUniCode()) - .featureName(e.getFeatureName()) - .featureType(e.getFeatureType()) - .children(Lists.newArrayList()) - .build()).distinct().collect(Collectors.toList()); - - if (CollectionUtils.isEmpty(allParents)) { - return null; - } - for (FeatureResourcePageElementRelationViewResp.FeatureResourceBasicDTO basic : allParents) { - List children = childrenMap.get(basic.getId()); - if (CollectionUtils.isEmpty(children)) { - continue; - } - basic.setChildren(children.stream().map(e -> FeatureResourcePageElementRelationViewResp.FeatureResourceBasicDTO.builder() - .id(e.getId()) - .uniCode(e.getUniCode()) - .featureName(e.getFeatureName()) - .featureType(e.getFeatureType()) - .build()).collect(Collectors.toList())); - } - - return allParents; - } - - private void fillElementToResource(List resources, List relations, - FeatureResourcePageElementRelationViewResp.PageElementBasicDTO elementBasic) { - Map relationMap = relations.stream().collect(Collectors.toMap(r -> r.getFeatureResourceUniCode() + "_" + r.getPageElementCode(), Function.identity(), (v1, v2) -> v1)); - for (FeatureResourcePageElementRelationViewResp.FeatureResourceBasicDTO resource : resources) { - recursiveSetElementToResource(resource, relationMap, elementBasic); - } - } - - private void recursiveSetElementToResource(FeatureResourcePageElementRelationViewResp.FeatureResourceBasicDTO resource, Map relationMap, - FeatureResourcePageElementRelationViewResp.PageElementBasicDTO elementBasic) { - if (Objects.isNull(resource)) { - return; - } - if (!FeatureResourceType.GROUP.getCode().equals(resource.getFeatureType())) { - FeatureResourcePageElementRelationViewResp.PageElementBasicDTO newPageElementBasic = FeatureResourcePageElementRelationViewResp.PageElementBasicDTO.builder() - .id(elementBasic.getId()) - .groupCode(elementBasic.getGroupCode()) - .groupName(elementBasic.getGroupName()) - .code(elementBasic.getCode()) - .name(elementBasic.getName()) - .type(elementBasic.getType()) - .hasRelation(Optional.ofNullable(relationMap.get(resource.getUniCode() + "_" + elementBasic.getCode())).isPresent()) - .relationType(Optional.ofNullable(relationMap.get(resource.getUniCode() + "_" + elementBasic.getCode())).map(SaasPageElementFeatureResourceRelation::getType).orElse(0)) - .build(); - if (CollectionUtils.isNotEmpty(elementBasic.getChildren())) { - newPageElementBasic.setChildren(elementBasic.getChildren().stream().map(e -> FeatureResourcePageElementRelationViewResp.PageElementBasicDTO.builder() - .id(e.getId()) - .groupCode(e.getGroupCode()) - .groupName(e.getGroupName()) - .code(e.getCode()) - .name(e.getName()) - .type(e.getType()) - .hasRelation(Optional.ofNullable(relationMap.get(resource.getUniCode() + "_" + e.getCode())).isPresent()) - .relationType(Optional.ofNullable(relationMap.get(resource.getUniCode() + "_" + e.getCode())).map(SaasPageElementFeatureResourceRelation::getType).orElse(0)) - .build()).collect(Collectors.toList())); - } - resource.setPageElement(newPageElementBasic); - } - - if (CollectionUtils.isNotEmpty(resource.getChildren())) { - resource.getChildren().forEach(e -> recursiveSetElementToResource(e, relationMap, elementBasic)); - } - } - private List changeElementWithCategories(List list) { List resps = Lists.newArrayList(); if (CollectionUtils.isEmpty(list)) {