获取字典树
This commit is contained in:
parent
15b43ee0a8
commit
ab091ebb63
@ -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);
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -16,6 +16,8 @@ public class BasicDictTreeResp {
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long parentId;
|
||||
|
||||
/**
|
||||
* 字典名称
|
||||
*/
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user