提交 fe9d8a2d authored 作者: wangjiahao's avatar wangjiahao

feat:仪表盘

上级 f4691239
package io.dataease.base.mapper.ext;
import io.dataease.controller.request.panel.PanelGroupRequest;
import io.dataease.dto.panel.PanelGroupDTO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface ExtPanelGroupMapper {
List<PanelGroupDTO> panelGroupList(PanelGroupRequest request);
//会级联删除pid 下的所有数据
int deleteCircle(@Param("pid") String pid);
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.dataease.base.mapper.ext.ExtPanelGroupMapper">
<resultMap id="BaseResultMapDTO" type="io.dataease.dto.panel.PanelGroupDTO" extends="io.dataease.base.mapper.PanelGroupMapper.BaseResultMap">
<result column="label" jdbcType="VARCHAR" property="label"/>
</resultMap>
<select id="panelGroupList" resultMap="BaseResultMapDTO">
select panel_group.*,panel_group.name as label from panel_group
<where>
<if test="name != null">
and panel_group.name like CONCAT('%', #{name},'%')
</if>
<if test="nodeType != null">
and panel_group.node_type = #{nodeType}
</if>
<if test="panelType != null">
and panel_group.panel_type = #{panelType}
</if>
<if test="id != null">
and panel_group.id = #{id}
</if>
<if test="pid != null">
and panel_group.pid = #{pid}
</if>
<if test="level != null">
and panel_group.level = #{level}
</if>
</where>
<if test="sort != null">
order by ${sort}
</if>
</select>
<delete id="deleteCircle">
delete from panel_group where FIND_IN_SET(panel_group.id,GET_PANEL_GROUP_WITH_CHILDREN(#{pid}))
</delete>
</mapper>
\ No newline at end of file
package io.dataease.controller.panel; package io.dataease.controller.panel;
import io.dataease.base.domain.DatasetGroup;
import io.dataease.controller.request.dataset.DataSetGroupRequest;
import io.dataease.controller.request.panel.PanelGroupRequest;
import io.dataease.dto.dataset.DataSetGroupDTO;
import io.dataease.dto.panel.PanelGroupDTO;
import io.dataease.service.panel.PanelGroupService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
/** /**
* Author: wangjiahao * Author: wangjiahao
* Date: 2021-03-05 * Date: 2021-03-05
* Description: * Description:
*/ */
@RestController
@RequestMapping("panel/group")
public class PanelGroupController { public class PanelGroupController {
@Resource
private PanelGroupService panelGroupService;
@PostMapping("/tree")
public List<PanelGroupDTO> tree(@RequestBody PanelGroupRequest request) {
request.setLevel(0);
return panelGroupService.tree(request);
}
@PostMapping("/defaultTree")
public List<PanelGroupDTO> defaultTree(@RequestBody PanelGroupRequest request) {
return panelGroupService.getDefaultTree(request);
}
@PostMapping("/save")
public PanelGroupDTO save(@RequestBody PanelGroupRequest request) {
return panelGroupService.save(request);
}
@PostMapping("/deleteCircle/{id}")
public void deleteCircle(@PathVariable String id) {
panelGroupService.deleteCircle(id);
}
} }
package io.dataease.controller.request.panel;
import io.dataease.base.domain.PanelGroup;
import lombok.Data;
/**
* Author: wangjiahao
* Date: 2021-03-05
* Description:
*/
@Data
public class PanelGroupRequest extends PanelGroup {
private String sort;
public PanelGroupRequest() {
}
public PanelGroupRequest(String pid) {
super.setPid(pid);
}
}
...@@ -2,6 +2,7 @@ package io.dataease.dto.panel; ...@@ -2,6 +2,7 @@ package io.dataease.dto.panel;
import io.dataease.base.domain.PanelGroup; import io.dataease.base.domain.PanelGroup;
import io.dataease.dto.dataset.DataSetGroupDTO; import io.dataease.dto.dataset.DataSetGroupDTO;
import lombok.Data;
import java.util.List; import java.util.List;
...@@ -10,25 +11,10 @@ import java.util.List; ...@@ -10,25 +11,10 @@ import java.util.List;
* Date: 2021-03-05 * Date: 2021-03-05
* Description: * Description:
*/ */
@Data
public class PanelGroupDTO extends PanelGroup { public class PanelGroupDTO extends PanelGroup {
private String label; private String label;
private List<PanelGroupDTO> children; private List<PanelGroupDTO> children;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public List<PanelGroupDTO> getChildren() {
return children;
}
public void setChildren(List<PanelGroupDTO> children) {
this.children = children;
}
} }
package io.dataease.service.panel; package io.dataease.service.panel;
import io.dataease.base.domain.DatasetGroup;
import io.dataease.base.mapper.PanelGroupMapper; import io.dataease.base.mapper.PanelGroupMapper;
import io.dataease.base.mapper.ext.ExtPanelGroupMapper;
import io.dataease.commons.utils.BeanUtils;
import io.dataease.controller.request.panel.PanelGroupRequest;
import io.dataease.dto.dataset.DataSetGroupDTO;
import io.dataease.dto.panel.PanelGroupDTO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
/** /**
* Author: wangjiahao * Author: wangjiahao
...@@ -15,9 +26,47 @@ public class PanelGroupService { ...@@ -15,9 +26,47 @@ public class PanelGroupService {
@Resource @Resource
private PanelGroupMapper panelGroupMapper; private PanelGroupMapper panelGroupMapper;
@Resource
private ExtPanelGroupMapper extPanelGroupMapper;
public List<PanelGroupDTO> tree(PanelGroupRequest panelGroupRequest) {
List<PanelGroupDTO> panelGroupDTOList = extPanelGroupMapper.panelGroupList(panelGroupRequest);
getTreeChildren(panelGroupDTOList);
return panelGroupDTOList;
}
public void getTreeChildren(List<PanelGroupDTO> parentPanelGroupDTO){
Optional.ofNullable(parentPanelGroupDTO).ifPresent(parent -> parent.forEach(panelGroupDTO -> {
List<PanelGroupDTO> panelGroupDTOChildren = extPanelGroupMapper.panelGroupList(new PanelGroupRequest(panelGroupDTO.getId()));
panelGroupDTO.setChildren(panelGroupDTOChildren);
getTreeChildren(panelGroupDTOChildren);
}));
}
public List<PanelGroupDTO> getDefaultTree(PanelGroupRequest panelGroupRequest){
return extPanelGroupMapper.panelGroupList(panelGroupRequest);
}
public PanelGroupDTO save(PanelGroupRequest request) {
if (StringUtils.isEmpty(request.getId())) {
request.setId(UUID.randomUUID().toString());
request.setCreateTime(System.currentTimeMillis());
panelGroupMapper.insert(request);
} else {
panelGroupMapper.updateByPrimaryKey(request);
}
PanelGroupDTO panelGroupDTO = new PanelGroupDTO();
BeanUtils.copyBean(panelGroupDTO, request);
panelGroupDTO.setLabel(request.getName());
return panelGroupDTO;
}
public void deleteCircle(String id){
Assert.notNull(id, "id cannot be null");
extPanelGroupMapper.deleteCircle(id);
}
} }
...@@ -32,4 +32,31 @@ CREATE TABLE `panel_view` ( ...@@ -32,4 +32,31 @@ CREATE TABLE `panel_view` (
PRIMARY KEY (`id`) PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file
CREATE DEFINER=`root`@`%` FUNCTION `GET_PANEL_CHILDREN_CHILDREN`(parentId varchar(8000)) RETURNS varchar(8000) CHARSET utf8
BEGIN
DECLARE oTemp VARCHAR(8000);
DECLARE oTempChild VARCHAR(8000);
SET oTemp = '';
SET oTempChild = CAST(parentId AS CHAR);
WHILE oTempChild IS NOT NULL
DO
SET oTemp = CONCAT(oTemp,',',oTempChild);
SELECT GROUP_CONCAT(id) INTO oTempChild FROM panel_group WHERE FIND_IN_SET(pid,oTempChild) > 0;
END WHILE;
RETURN oTemp;
END
\ No newline at end of file
import request from '@/utils/request' import request from '@/utils/request'
export function defaultTree(data) {
return request({
url: '/panel/group/defaultTree',
method: 'post',
loading: true,
data
})
}
export function groupTree(data) {
return request({
url: '/panel/group/tree',
method: 'post',
loading: true,
data
})
}
export function loadTable(data) { export function loadTable(data) {
return request({ return request({
url: '/dataset/table/list', url: '/panel/table/list',
method: 'post', method: 'post',
data data
}) })
...@@ -10,14 +28,14 @@ export function loadTable(data) { ...@@ -10,14 +28,14 @@ export function loadTable(data) {
export function getScene(sceneId) { export function getScene(sceneId) {
return request({ return request({
url: '/dataset/group/getScene/' + sceneId, url: '/panel/group/getScene/' + sceneId,
method: 'post' method: 'post'
}) })
} }
export function addGroup(data) { export function addGroup(data) {
return request({ return request({
url: '/dataset/group/save', url: '/panel/group/save',
method: 'post', method: 'post',
data data
}) })
...@@ -25,14 +43,14 @@ export function addGroup(data) { ...@@ -25,14 +43,14 @@ export function addGroup(data) {
export function delGroup(groupId) { export function delGroup(groupId) {
return request({ return request({
url: '/dataset/group/delete/' + groupId, url: '/panel/group/deleteCircle/' + groupId,
method: 'post' method: 'post'
}) })
} }
export function addTable(data) { export function addTable(data) {
return request({ return request({
url: '/dataset/table/update', url: '/panel/table/update',
method: 'post', method: 'post',
data data
}) })
...@@ -40,19 +58,11 @@ export function addTable(data) { ...@@ -40,19 +58,11 @@ export function addTable(data) {
export function delTable(tableId) { export function delTable(tableId) {
return request({ return request({
url: '/dataset/table/delete/' + tableId, url: '/panel/table/delete/' + tableId,
method: 'post' method: 'post'
}) })
} }
export function groupTree(data) {
return request({
url: '/dataset/group/tree',
method: 'post',
data
})
}
export function listDatasource() { export function listDatasource() {
return request({ return request({
url: '/datasource/list', url: '/datasource/list',
...@@ -62,14 +72,14 @@ export function listDatasource() { ...@@ -62,14 +72,14 @@ export function listDatasource() {
export function getTable(id) { export function getTable(id) {
return request({ return request({
url: '/dataset/table/get/' + id, url: '/panel/table/get/' + id,
method: 'post' method: 'post'
}) })
} }
export function getPreviewData(data) { export function getPreviewData(data) {
return request({ return request({
url: '/dataset/table/getPreviewData', url: '/panel/table/getPreviewData',
method: 'post', method: 'post',
data data
}) })
...@@ -77,14 +87,14 @@ export function getPreviewData(data) { ...@@ -77,14 +87,14 @@ export function getPreviewData(data) {
export function fieldList(id) { export function fieldList(id) {
return request({ return request({
url: '/dataset/field/list/' + id, url: '/panel/field/list/' + id,
method: 'post' method: 'post'
}) })
} }
export function batchEdit(data) { export function batchEdit(data) {
return request({ return request({
url: '/dataset/field/batchEdit', url: '/panel/field/batchEdit',
method: 'post', method: 'post',
data data
}) })
...@@ -98,4 +108,4 @@ export function post(url, data) { ...@@ -98,4 +108,4 @@ export function post(url, data) {
}) })
} }
export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree } export default { loadTable, getScene, addGroup, delGroup, addTable, delTable, groupTree,defaultTree }
...@@ -683,10 +683,10 @@ export default { ...@@ -683,10 +683,10 @@ export default {
}, },
panel: { panel: {
datalist: '视图列表', datalist: '视图列表',
add_group: '添加分组', group:'目录',
add_scene: '添加场景', panel:'仪表盘',
group: '分组', groupAdd:'新建目录',
scene: '场景', panelAdd:'新建仪表盘',
delete: '删除', delete: '删除',
move_to: '移动到', move_to: '移动到',
rename: '重命名', rename: '重命名',
...@@ -696,31 +696,7 @@ export default { ...@@ -696,31 +696,7 @@ export default {
confirm: '确认', confirm: '确认',
cancel: '取消', cancel: '取消',
search: '搜索', search: '搜索',
back: '返回', back: '返回'
add_table: '添加表',
process: '进度',
add_chart: '添加视图',
db_data: '数据库表',
sql_data: 'SQL数据集',
excel_data: 'Excel数据集',
custom_data: '自助数据集',
pls_slc_tbl_left: '请从左侧选视图',
add_db_table: '添加数据库表',
pls_slc_data_source: '请选择数据库连接',
table: '表',
edit: '编辑',
create_view: '创建试图',
data_preview: '数据预览',
dimension: '维度',
quota: '指标',
title: '标题',
show: '显示',
chart_type: '图表类型',
shape_attr: '图形属性',
module_style: '组件样式',
result_filter: '结果过滤器',
x_axis: '横轴',
y_axis: '纵轴',
chart: '视图'
} }
} }
...@@ -34,13 +34,13 @@ ...@@ -34,13 +34,13 @@
import MsMainContainer from '@/metersphere/common/components/MsMainContainer' import MsMainContainer from '@/metersphere/common/components/MsMainContainer'
import MsContainer from '@/metersphere/common/components/MsContainer' import MsContainer from '@/metersphere/common/components/MsContainer'
import MsAsideContainer from '@/metersphere/common/components/MsAsideContainer' import MsAsideContainer from '@/metersphere/common/components/MsAsideContainer'
import Group from './group/Group' // import Group from './group/Group'
import PanelList from './list/PanelList' import PanelList from './list/PanelList'
import PanelView from './list/PanelView' import PanelView from './list/PanelView'
export default { export default {
name: 'Panel', name: 'Panel',
components: {MsMainContainer, MsContainer, MsAsideContainer, Group, PanelList,PanelView}, components: {MsMainContainer, MsContainer, MsAsideContainer, PanelList,PanelView},
data() { data() {
return { return {
component: PanelView, component: PanelView,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论