List<ComEventTypeTreeVo> result = new ArrayList<ComEventTypeTreeVo>();
//查询出数据
//封装数据
result = generateTree(result);
//因为封装的时候没有去掉对应的非一级节点,所有需要处理一下
Iterator<ComEventTypeTreeVo> iterator = result.iterator();
//去掉一级目录中非公司节点数据
while (iterator.hasNext()){
if(!EventTypeLevelEnum.COMPANY.getCode().equals(iterator.next().getLevel())){
iterator.remove();
}
}
return result;
/**
* 将数据封装为树结构
* @param result
* @return
*/
private List<ComEventTypeTreeVo> generateTree(List<ComEventTypeTreeVo> result) {
Map<String, List<ComEventTypeTreeVo>> map = new HashMap<String, List<ComEventTypeTreeVo>>();
for (ComEventTypeTreeVo resourceTypeTreeVo : result) {
List<ComEventTypeTreeVo> myChilrenList = map.get(resourceTypeTreeVo.getId());
if(myChilrenList == null){
myChilrenList = new ArrayList<ComEventTypeTreeVo>();
map.put(resourceTypeTreeVo.getId(), myChilrenList);
}
resourceTypeTreeVo.setList(myChilrenList);
List<ComEventTypeTreeVo> myParentChildrenList = map.get(resourceTypeTreeVo.getParentId());
if(myParentChildrenList == null){
myParentChildrenList = new ArrayList<ComEventTypeTreeVo>();
map.put(resourceTypeTreeVo.getParentId(), myParentChildrenList);
}
myParentChildrenList.add(resourceTypeTreeVo);
}
return result;
}
ComEventTypeTreeVo类:
@Data
@ApiModel("类型树结构")
public class ComEventTypeTreeVo {
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "级别")
private Integer level;
@ApiModelProperty(value = "父级ID")
private String parentId;
@ApiModelProperty(value = "项目公司级")
private String type;
@ApiModelProperty(value = "是否有效,0无效,1有效",required = false)
private Integer enable;
@ApiModelProperty(value = "子节点")
private List<ComEventTypeTreeVo> list;
}
组装多个树形结构,附上相关代码,便于记忆
@Override
public ComAndEventTypeTree selectEventTypeTree(String token, String organizationId) {
//返回结果
ComAndEventTypeTree result = new ComAndEventTypeTree();
//公司级树
// List<ComEventTypeTreeVo> comList = new ArrayList<>();
//项目级树
List<EventTypeTreeVo> list = new ArrayList<>();
//公司级树
List<EventTypeTreeVo> comlist = new ArrayList<>();
//远程获取用户拥有公司权限
Wrapper<UserAuthOrgTreeVo> userAuthOr = uacOrganizationApi.findOrganizationParentNode(PemConstants.BEARER+token,token, String.valueOf(organizationId),0);
String companyId = userAuthOr.getResult().getId();
//查询对应的公司信息
Wrapper<ReOrganizationVo> wrapperOrganizationFrom = uacOrganizationApi.displayInfo(PemConstants.BEARER+token,token, String.valueOf(companyId));
ReOrganizationVo organizationFrom = wrapperOrganizationFrom.getResult();
//加入一级节点
result.setLevel(EventTypeLevelEnum.COMPANY.getCode());
result.setTitle(organizationFrom.getOrgName());
result.setId(String.valueOf(organizationFrom.getId()));
result.setType("COMPANY");
//查询项目级事件类型
List<String> companyIds = new ArrayList<String>();
companyIds.add(companyId);
List<Integer> levelList = new ArrayList<Integer>();
levelList.add(EventTypeLevelEnum.FIRST.getCode());
levelList.add(EventTypeLevelEnum.SECOND.getCode());
levelList.add(EventTypeLevelEnum.THIRD.getCode());
levelList.add(EventTypeLevelEnum.FOUR.getCode());
levelList.add(EventTypeLevelEnum.FIVE.getCode());
levelList.add(EventTypeLevelEnum.SIX.getCode());
Map<String, Object> param = new HashMap<String, Object>();
param.put("organizationId", organizationId);
param.put("levelList", levelList);
param.put("companyIdList", companyIds);
//param.put("enable",1);
param.put("typeLevel",2);
List<EventTypeVo> resultEvent = eventTypeMapper.selectEventTypeByParams(param);
for (EventTypeVo eventTypeVo : resultEvent) {
EventTypeTreeVo eventTypeTreeVo = new EventTypeTreeVo();
eventTypeTreeVo.setId(eventTypeVo.getId());
eventTypeTreeVo.setTitle(eventTypeVo.getEventName());
eventTypeTreeVo.setParentId(eventTypeVo.getParentId());
eventTypeTreeVo.setEnable(eventTypeVo.getEnable());
eventTypeTreeVo.setType("PROJECT");
eventTypeTreeVo.setLevel(eventTypeVo.getLevel());
list.add(eventTypeTreeVo);
}
list = generateTree(list);
//去掉一级目录中非一级节点数据
Iterator<EventTypeTreeVo> eviterator = list.iterator();
while (eviterator.hasNext()){
if(!EventTypeLevelEnum.FIRST.getCode().equals(eviterator.next().getLevel())){
eviterator.remove();
}
}
//查询公司级事件类型
List<Integer> typeLevels = new ArrayList<>();
param.put("typeLevel",null);
typeLevels.add(1);
typeLevels.add(2);
param.put("typeLevels",typeLevels);
param.put("eventSource",2);
param.put("compEval","1");
List<EventTypeVo> comEventTypes = eventTypeMapper.selectEventTypeByParams(param);
for (EventTypeVo comEventType : comEventTypes) {
EventTypeTreeVo eventTypeTreeVo = new EventTypeTreeVo();
eventTypeTreeVo.setId(comEventType.getId());
eventTypeTreeVo.setTitle(comEventType.getEventName());
eventTypeTreeVo.setParentId(comEventType.getParentId());
eventTypeTreeVo.setLevel(comEventType.getLevel());
eventTypeTreeVo.setEnable(comEventType.getEnable());
if(comEventType.getTypeLevel() == 1){
eventTypeTreeVo.setType("COMPANY");
}else{
eventTypeTreeVo.setType("PROJECT");
}
comlist.add(eventTypeTreeVo);
}
comlist = generateTree(comlist);
//去掉一级目录中非一级节点数据
Iterator<EventTypeTreeVo> iterator = comlist.iterator();
while (iterator.hasNext()){
if(!EventTypeLevelEnum.FIRST.getCode().equals(iterator.next().getLevel())){
iterator.remove();
}
}
list.addAll(comlist);
result.setList(list);
return result;
}