获取字典树

This commit is contained in:
chenwenjian 2023-09-11 14:38:27 +08:00
parent 15b43ee0a8
commit ab091ebb63
8 changed files with 83 additions and 20 deletions

View File

@ -41,7 +41,7 @@ public interface SaasBasicDictApi {
* @return
*/
@PostMapping("api/dict/node-tree")
ApiResult<BasicDictTreeResp> getBasicDictNodeTree(@RequestBody
ApiResult<List<BasicDictTreeResp>> getBasicDictNodeTree(
@EnumValidator(enumClass = DictTypeFiledEnum.class, message = "枚举类型错误")
DictTypeFiledEnum type);

View File

@ -4,6 +4,8 @@ import cn.axzo.tyr.client.common.annotation.EnumValidator;
import cn.axzo.tyr.client.model.DictTypeFiledEnum;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author chenwenjian
* @date 2023/9/6 15:46
@ -17,9 +19,11 @@ public class BasicDictNodeReq {
/**
* 类型
*/
@NotNull(message = "type不能为空")
@EnumValidator(enumClass = DictTypeFiledEnum.class, message = "枚举类型错误")
private DictTypeFiledEnum type;
@NotNull(message = "code不能为空")
private String code;
}

View File

@ -3,7 +3,10 @@ package cn.axzo.tyr.client.model.dict.request;
import cn.axzo.tyr.client.common.annotation.EnumValidator;
import cn.axzo.tyr.client.model.DictTypeFiledEnum;
import cn.axzo.tyr.client.model.DictWorkSpaceTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author chenwenjian
@ -13,6 +16,9 @@ import lombok.Data;
* @version: 1.0
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class BasicDictQueryReq {
private Long parentId;

View File

@ -16,6 +16,8 @@ public class BasicDictTreeResp {
private Long id;
private Long parentId;
/**
* 字典名称
*/

View File

@ -33,7 +33,7 @@ public class SaasBasicDictController implements SaasBasicDictApi {
}
@Override
public ApiResult<BasicDictTreeResp> getBasicDictNodeTree(DictTypeFiledEnum type) {
public ApiResult<List<BasicDictTreeResp>> getBasicDictNodeTree(DictTypeFiledEnum type) {
return saasBasicDictService.getBasicDictNodeTree(type);
}

View File

@ -1,6 +1,7 @@
package cn.axzo.tyr.server.repository;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.tyr.client.model.dict.request.BasicDictNodeReq;
import cn.axzo.tyr.client.model.dict.request.BasicDictQueryReq;
import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp;
import cn.axzo.tyr.server.repository.entity.SaasBasicDict;
@ -35,4 +36,11 @@ public class SaasBasicDictDao extends ServiceImpl<SaasBasicDictMapper, SaasBasic
List<SaasBasicDict> basicDictList = queryChainWrapper.orderByDesc(SaasBasicDict::getSort).list();
return BeanMapper.copyList(basicDictList, BasicDictNodeResp.class, (s, b) -> b.setStatus(s.getStatus() == 1));
}
public BasicDictNodeResp getBasicDictNode(BasicDictNodeReq req) {
SaasBasicDict saasBasicDict = lambdaQuery().eq(Objects.nonNull(req.getType()), SaasBasicDict::getType, req.getType().getValue())
.eq(Objects.nonNull(req.getCode()), SaasBasicDict::getCode, req.getCode())
.one();
return BeanMapper.copyBean(saasBasicDict, BasicDictNodeResp.class, (s, b) -> b.setStatus(s.getStatus() == 1));
}
}

View File

@ -7,7 +7,6 @@ import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp;
import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp;
import java.util.List;
import cn.axzo.tyr.client.model.dict.request.*;
/**
* @author chenwenjian
@ -19,7 +18,7 @@ import cn.axzo.tyr.client.model.dict.request.*;
public interface SaasBasicDictService {
ApiResult<List<BasicDictNodeResp>> getBasicDictNodeList(BasicDictQueryReq req);
ApiResult<BasicDictTreeResp> getBasicDictNodeTree(DictTypeFiledEnum type);
ApiResult<List<BasicDictTreeResp>> getBasicDictNodeTree(DictTypeFiledEnum type);
ApiResult<BasicDictNodeResp> getById(Long id);
ApiResult<BasicDictNodeResp> getBasicDictNode(BasicDictNodeReq req);

View File

@ -8,11 +8,16 @@ import cn.axzo.tyr.client.model.dict.response.BasicDictNodeResp;
import cn.axzo.tyr.client.model.dict.response.BasicDictTreeResp;
import cn.axzo.tyr.server.repository.SaasBasicDictDao;
import cn.axzo.tyr.server.service.SaasBasicDictService;
import cn.hutool.core.collection.CollectionUtil;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
* @author chenwenjian
@ -33,29 +38,67 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService {
return ApiResult.ok(saasBasicDictDao.getBasicDictNodeList(req));
}
/**
* 获取节点树
* @param type
* @return
*/
@Override
public ApiResult<BasicDictTreeResp> getBasicDictNodeTree(DictTypeFiledEnum type) {
// // 获取所有节点
// List<BasicDictNodeResp> basicDictNodeList = saasBasicDictDao.getBasicDictNodeList(null);
// // 单侧树
// if (Objects.nonNull(type)){
// basicDictNodeList.stream().filter(new Predicate<BasicDictNodeResp>() {
// @Override
// public boolean test(BasicDictNodeResp b) {
// return b.getType().equals(type.getValue());
// }
// });
// }
return null;
public ApiResult<List<BasicDictTreeResp>> getBasicDictNodeTree(DictTypeFiledEnum type) {
// 获取所有节点
List<BasicDictNodeResp> basicDictNodeList = saasBasicDictDao.getBasicDictNodeList(null);
// 单侧树
if (Objects.nonNull(type)){
List<BasicDictNodeResp> unilateralTreeNodeList = basicDictNodeList.stream()
.filter(b -> b.getType().equals(type.getValue()) || b.getType().equals(DictTypeFiledEnum.WORKSPACE.getValue()))
.collect(Collectors.toList());
return ApiResult.ok(constructDictTree(unilateralTreeNodeList));
}
return ApiResult.ok(constructDictTree(basicDictNodeList));
}
public BasicDictTreeResp constructDictTree(List<BasicDictNodeResp> nodeList){
return null;
/**
* 根据节点列表构建节点树
* @param nodeList 节点列表
* @return 节点树
*/
public List<BasicDictTreeResp> constructDictTree(List<BasicDictNodeResp> nodeList) {
if (CollectionUtil.isEmpty(nodeList)) {
return null;
}
ArrayList<BasicDictTreeResp> root = new ArrayList<>();
LinkedHashMap<Long, BasicDictTreeResp> map = new LinkedHashMap<>();
nodeList.forEach(node -> {
BasicDictTreeResp treeNode = BeanMapper.copyBean(node, BasicDictTreeResp.class);
map.put(node.getId(), treeNode);
if (node.getParentId() == 0){
root.add(treeNode);
}
});
map.values().forEach(treeNode -> {
BasicDictTreeResp parent = map.get(treeNode.getParentId());
if (Objects.nonNull(parent)){
if (Objects.isNull(parent.getChildren())){
parent.setChildren(new ArrayList<>());
}
parent.getChildren().add(treeNode);
}
});
return root;
}
/**
* 获取节点详情
*
* @param req type和code
* @return 一个字典节点
*/
@Override
public ApiResult<BasicDictNodeResp> getBasicDictNode(BasicDictNodeReq req) {
return null;
return ApiResult.ok(saasBasicDictDao.getBasicDictNode(req));
}
@Override
@ -72,6 +115,7 @@ public class SaasBasicDictServiceImpl implements SaasBasicDictService {
public ApiResult<Boolean> updateStauts(BasicDictUpdateStatusReq req) {
return null;
}
@Override
public ApiResult<BasicDictNodeResp> getById(Long id) {
return ApiResult.ok(BeanMapper.copyBean(saasBasicDictDao.getById(id), BasicDictNodeResp.class));