Merge branch 'main' of github.com:dataease/dataease into main

This commit is contained in:
taojinlong
2021-04-29 14:05:49 +08:00
18 changed files with 769 additions and 166 deletions

View File

@@ -7,6 +7,7 @@ import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.sys.request.MenuCreateRequest;
import io.dataease.controller.sys.request.MenuDeleteRequest;
import io.dataease.controller.sys.response.MenuNodeResponse;
import io.dataease.controller.sys.response.MenuTreeNode;
import io.dataease.service.sys.MenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -62,6 +63,12 @@ public class SysMenuController {
sets.add(pid);
return sets;
}
@PostMapping("/nodesByMenuId/{menuId}")
public List<MenuTreeNode> nodesByMenuId(@PathVariable("menuId") Long menuId) {
return menuService.searchTree(menuId);
}
}

View File

@@ -0,0 +1,26 @@
package io.dataease.controller.sys.response;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MenuTreeNode implements Serializable {
private Long id;
private String label;
private Boolean hasChildren;
private List<MenuTreeNode> children;
public List<MenuTreeNode> toList(){
List<MenuTreeNode> lists = new ArrayList<>();
lists.add(this);
return lists;
}
}

View File

@@ -81,7 +81,15 @@ public class DataSetTableService {
saveTableField(datasetTable);
}
} else {
datasetTableMapper.updateByPrimaryKeySelective(datasetTable);
int update = datasetTableMapper.updateByPrimaryKeySelective(datasetTable);
// sql 更新
if (update == 1) {
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), "sql")) {
// 删除所有字段,重新抽象
dataSetTableFieldsService.deleteByTableId(datasetTable.getId());
saveTableField(datasetTable);
}
}
}
return datasetTable;
}
@@ -262,7 +270,7 @@ public class DataSetTableService {
DatasourceRequest datasourceRequest = new DatasourceRequest();
datasourceRequest.setDatasource(ds);
String sql = new Gson().fromJson(dataSetTableRequest.getInfo(), DataTableInfoDTO.class).getSql();
datasourceRequest.setQuery(sql);
datasourceRequest.setQuery("SELECT * FROM (" + sql + ") AS tmp LIMIT 0,1000");
Map<String, List> result = datasourceProvider.fetchResultAndField(datasourceRequest);
List<String[]> data = result.get("dataList");
List<TableFiled> fields = result.get("fieldList");

View File

@@ -1,5 +1,6 @@
package io.dataease.service.sys;
import io.dataease.base.domain.SysDept;
import io.dataease.base.domain.SysMenu;
import io.dataease.base.domain.SysMenuExample;
import io.dataease.base.mapper.SysMenuMapper;
@@ -7,8 +8,10 @@ import io.dataease.base.mapper.ext.ExtMenuMapper;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.sys.request.MenuCreateRequest;
import io.dataease.controller.sys.request.MenuDeleteRequest;
import io.dataease.controller.sys.response.DeptTreeNode;
import io.dataease.controller.sys.response.MenuNodeResponse;
import io.dataease.controller.sys.response.MenuTreeNode;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Service;
@@ -16,6 +19,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.HashSet;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
@@ -121,6 +125,24 @@ public class MenuService {
return responses;
}
public List<MenuTreeNode> searchTree(Long menuId) {
List<SysMenu> roots = nodesByPid(0L);
if (menuId == MENU_ROOT_PID) return roots.stream().map(this::format).collect(Collectors.toList());
SysMenu sysMenu = sysMenuMapper.selectByPrimaryKey(menuId);
if (roots.stream().anyMatch(node -> node.getMenuId() == menuId)) return roots.stream().map(this::format).collect(Collectors.toList());
SysMenu current = sysMenu;
MenuTreeNode currentNode = format(sysMenu);
while (current.getPid() != MENU_ROOT_PID){
SysMenu parent = sysMenuMapper.selectByPrimaryKey(current.getPid()); //pid上有索引 所以效率不会太差
MenuTreeNode parentNode = format(parent);
parentNode.setChildren(currentNode.toList());
current = parent;
currentNode = parentNode;
}
MenuTreeNode targetRootNode = currentNode;
return roots.stream().map(node -> node.getMenuId() == targetRootNode.getId() ? targetRootNode : format(node)).collect(Collectors.toList());
}
private Set<SysMenu> getChilds(List<SysMenu> lists, Set<SysMenu> sets){
lists.forEach(menu -> {
sets.add(menu);
@@ -132,6 +154,15 @@ public class MenuService {
return sets;
}
private MenuTreeNode format(SysMenu sysMenu) {
MenuTreeNode menuTreeNode = new MenuTreeNode();
menuTreeNode.setId(sysMenu.getMenuId());
menuTreeNode.setLabel(sysMenu.getName());
menuTreeNode.setHasChildren(false);
Optional.ofNullable(sysMenu.getMenuSort()).ifPresent(num -> menuTreeNode.setHasChildren(num > 0));
return menuTreeNode;
}
public List<MenuNodeResponse> convert(List<SysMenu> menus){
return menus.stream().map(node -> {
MenuNodeResponse menuNodeResponse = BeanUtils.copyBean(new MenuNodeResponse(), node);