diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasBasicDictApi.java b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasBasicDictApi.java index 92096d56..221174f4 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasBasicDictApi.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/feign/SaasBasicDictApi.java @@ -1,8 +1,6 @@ package cn.axzo.tyr.client.feign; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.tyr.client.common.annotation.EnumValidator; -import cn.axzo.tyr.client.model.DictTypeFiledEnum; import cn.axzo.tyr.client.model.dict.request.*; import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp; import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp; @@ -37,13 +35,11 @@ public interface SaasBasicDictApi { /** * 获取字典树,需要单侧树时才传type * - * @param type + * @param req * @return */ @PostMapping("api/dict/node-tree") - ApiResult> getBasicDictNodeTree( - @EnumValidator(enumClass = DictTypeFiledEnum.class, message = "枚举类型错误") - DictTypeFiledEnum type); + ApiResult> getBasicDictNodeTree(@RequestBody @Validated BasicDictQueryReq req); /** * 通过type和code获取字典节点详情 diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/dict/SaasBasicDictController.java b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/dict/SaasBasicDictController.java index 977009ab..40fb173f 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/controller/dict/SaasBasicDictController.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/controller/dict/SaasBasicDictController.java @@ -2,7 +2,6 @@ package cn.axzo.tyr.server.controller.dict; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.tyr.client.feign.SaasBasicDictApi; -import cn.axzo.tyr.client.model.DictTypeFiledEnum; import cn.axzo.tyr.client.model.dict.request.*; import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp; import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp; @@ -33,8 +32,8 @@ public class SaasBasicDictController implements SaasBasicDictApi { } @Override - public ApiResult> getBasicDictNodeTree(DictTypeFiledEnum type) { - return saasBasicDictService.getBasicDictNodeTree(type); + public ApiResult> getBasicDictNodeTree(BasicDictQueryReq req) { + return saasBasicDictService.getBasicDictNodeTree(req); } @Override diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasBasicDictService.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasBasicDictService.java index 5b481ec3..0335dc8c 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasBasicDictService.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/SaasBasicDictService.java @@ -1,7 +1,6 @@ package cn.axzo.tyr.server.service; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.tyr.client.model.DictTypeFiledEnum; import cn.axzo.tyr.client.model.dict.request.*; import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp; import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp; @@ -18,7 +17,7 @@ import java.util.List; public interface SaasBasicDictService { ApiResult> getBasicDictNodeList(BasicDictQueryReq req); - ApiResult> getBasicDictNodeTree(DictTypeFiledEnum type); + ApiResult> getBasicDictNodeTree(BasicDictQueryReq req); ApiResult getById(Long id); ApiResult getBasicDictNode(BasicDictNodeReq req); diff --git a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasBasicDictServiceImpl.java b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasBasicDictServiceImpl.java index dd0d4490..2fde94c3 100644 --- a/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasBasicDictServiceImpl.java +++ b/tyr-server/src/main/java/cn/axzo/tyr/server/service/impl/SaasBasicDictServiceImpl.java @@ -3,7 +3,6 @@ package cn.axzo.tyr.server.service.impl; import cn.axzo.basics.common.BeanMapper; import cn.axzo.framework.domain.ServiceException; import cn.axzo.framework.domain.web.result.ApiResult; -import cn.axzo.tyr.client.model.DictTypeFiledEnum; import cn.axzo.tyr.client.model.dict.request.*; import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp; import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp; @@ -45,20 +44,13 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService { /** * 获取节点树 * - * @param type + * @param req * @return */ @Override - public ApiResult> getBasicDictNodeTree(DictTypeFiledEnum type) { + public ApiResult> getBasicDictNodeTree(BasicDictQueryReq req) { // 获取所有节点 - List basicDictNodeList = saasBasicDictDao.getBasicDictNodeList(null); - // 单侧树 - if (Objects.nonNull(type)) { - List unilateralTreeNodeList = basicDictNodeList.stream() - .filter(b -> b.getType().equals(type.getValue()) || b.getType().equals(DictTypeFiledEnum.WORKSPACE.getValue())) - .collect(Collectors.toList()); - return ApiResult.ok(constructDictTree(unilateralTreeNodeList)); - } + List basicDictNodeList = saasBasicDictDao.getBasicDictNodeList(req); return ApiResult.ok(constructDictTree(basicDictNodeList)); } @@ -83,6 +75,18 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService { root.add(treeNode); } }); + + // 若没有顶级节点(即一级节点),则需要查询一级节点 + if (CollectionUtil.isEmpty(root)) { + List parentIds = nodeList.stream().map(BasicDictNodeResp::getParentId).distinct().collect(Collectors.toList()); + List parentDicts = saasBasicDictDao.listByIds(parentIds); + parentDicts.forEach(s -> { + BasicDictTreeResp parentTreeNode = BeanMapper.copyBean(s, BasicDictTreeResp.class, (s1, b) -> b.setStatus(s1.getStatus() == 1)); + root.add(parentTreeNode); + map.put(parentTreeNode.getId(), parentTreeNode); + }); + } + map.values().forEach(treeNode -> { BasicDictTreeResp parent = map.get(treeNode.getParentId()); if (Objects.nonNull(parent)) { @@ -109,6 +113,7 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService { /** * 创建字典节点 + * * @param req * @return */ @@ -140,12 +145,12 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService { s.setWorkspaceType(parent.getWorkspaceType()); s.setType(b.getType().getValue()); s.setUniqueCode(uniqueCode); - s.setLevel(parent.getLevel()+1); - s.setPath(String.join(",",parent.getPath(),uniqueCode)); + s.setLevel(parent.getLevel() + 1); + s.setPath(String.join(",", parent.getPath(), uniqueCode)); }); - try{ + try { boolean save = saasBasicDictDao.save(saasBasicDict); - }catch (MybatisPlusException e){ + } catch (MybatisPlusException e) { // if () } }