Merge branch 'v1.8' of github.com:dataease/dataease into v1.8

This commit is contained in:
taojinlong 2022-02-28 11:39:14 +08:00
commit 11088931ea
13 changed files with 71 additions and 51 deletions

View File

@ -15,7 +15,7 @@ public interface ExtPanelGroupMapper {
//会级联删除pid 下的所有数据
int deleteCircle(@Param("pid") String pid);
PanelGroupDTO panelGroup(String id);
PanelGroupDTO findOneWithPrivileges(@Param("panelId") String panelId,@Param("userId") String userId);
void copyPanelView(@Param("pid") String panelId);
@ -24,4 +24,6 @@ public interface ExtPanelGroupMapper {
List<PanelGroupDTO> panelGroupInit();
}

View File

@ -12,8 +12,8 @@
<result column="is_default" property="isDefault"/>
</resultMap>
<select id="panelGroup" resultMap="BaseResultMapDTO">
select panel_group.*,panel_group.name as label from panel_group where id =#{id}
<select id="findOneWithPrivileges" resultMap="BaseResultMapDTO">
select panel_group.*,panel_group.name as label , get_auths(panel_group.id,'panel',#{userId}) as `privileges` from panel_group where id =#{panelId}
</select>
<select id="panelGroupInit" resultMap="BaseResultMapDTO">

View File

@ -1,7 +1,10 @@
package io.dataease.controller.chart;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import io.dataease.auth.annotation.DePermission;
import io.dataease.base.domain.ChartViewWithBLOBs;
import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.controller.request.chart.ChartCalRequest;
import io.dataease.controller.request.chart.ChartExtRequest;
@ -11,10 +14,12 @@ import io.dataease.dto.chart.ChartViewDTO;
import io.dataease.service.chart.ChartViewService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;
import javax.annotation.Resource;
import javax.ws.rs.Path;
import java.util.List;
/**
@ -29,52 +34,65 @@ public class ChartViewController {
@Resource
private ChartViewService chartViewService;
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE)
@ApiOperation("保存")
@PostMapping("/save")
public ChartViewWithBLOBs save(@RequestBody ChartViewWithBLOBs chartViewWithBLOBs) {
@PostMapping("/save/{panelId}")
public ChartViewWithBLOBs save(@PathVariable String panelId, @RequestBody ChartViewWithBLOBs chartViewWithBLOBs) {
return chartViewService.save(chartViewWithBLOBs);
}
@ApiIgnore
@ApiOperation("查询")
@PostMapping("/list")
public List<ChartViewDTO> list(@RequestBody ChartViewRequest chartViewRequest) {
return chartViewService.list(chartViewRequest);
}
@ApiIgnore
@ApiOperation("查询组")
@PostMapping("/listAndGroup")
public List<ChartViewDTO> listAndGroup(@RequestBody ChartViewRequest chartViewRequest) {
return chartViewService.listAndGroup(chartViewRequest);
}
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_VIEW, paramIndex = 1)
@ApiOperation("详细信息")
@PostMapping("/get/{id}")
public ChartViewWithBLOBs get(@PathVariable String id) {
@PostMapping("/get/{id}/{panelId}")
public ChartViewWithBLOBs get(@PathVariable String id, @PathVariable String panelId) {
return chartViewService.get(id);
}
@ApiIgnore
@ApiOperation("删除")
@PostMapping("/delete/{id}")
public void delete(@PathVariable String id) {
chartViewService.delete(id);
}
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_VIEW, paramIndex = 1)
@ApiOperation("数据")
@PostMapping("/getData/{id}")
public ChartViewDTO getData(@PathVariable String id, @RequestBody ChartExtRequest requestList) throws Exception {
@PostMapping("/getData/{id}/{panelId}")
public ChartViewDTO getData(@PathVariable String id, @PathVariable String panelId, @RequestBody ChartExtRequest requestList) throws Exception {
return chartViewService.getData(id, requestList);
}
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_VIEW, paramIndex = 1)
@ApiOperation("视图详情")
@PostMapping("chartDetail/{id}")
public ChartDetail chartDetail(@PathVariable String id) {
@PostMapping("chartDetail/{id}/{panelId}")
public ChartDetail chartDetail(@PathVariable String id, @PathVariable String panelId) {
return chartViewService.getChartDetail(id);
}
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_MANAGE, paramIndex = 1)
@ApiOperation("复制")
@PostMapping("chartCopy/{id}/{panelId}")
public String chartCopy(@PathVariable String id, @PathVariable String panelId) {
return chartViewService.chartCopy(id,panelId);
return chartViewService.chartCopy(id, panelId);
}
@ApiIgnore
@ -83,26 +101,21 @@ public class ChartViewController {
return chartViewService.searchAdviceSceneId(panelId);
}
@ApiOperation("根据权限查详情")
@PostMapping("/getOneWithPermission/{id}")
public ChartViewDTO getOneWithPermission(@PathVariable String id, @RequestBody ChartExtRequest requestList) throws Exception {
//如果能获取用户 则添加对应的权限
ChartViewDTO dto = chartViewService.getData(id, requestList);
return dto;
}
@ApiOperation("搜索")
@PostMapping("search")
public List<ChartViewDTO> search(@RequestBody ChartViewRequest chartViewRequest) {
return chartViewService.search(chartViewRequest);
}
@RequiresPermissions("data:read")
@DePermission(type = DePermissionType.PANEL, level = ResourceAuthLevel.PANNEL_LEVEL_VIEW)
@ApiOperation("计算结果")
@PostMapping("/calcData")
public ChartViewDTO calcData(@RequestBody ChartCalRequest request) throws Exception {
@PostMapping("/calcData/{panelId}")
public ChartViewDTO calcData(@PathVariable String panelId, @RequestBody ChartCalRequest request) throws Exception {
return chartViewService.calcData(request.getView(), request.getRequestList(), false);
}
@ApiIgnore
@ApiOperation("验证视图是否使用相同数据集")
@GetMapping("/checkSameDataSet/{viewIdSource}/{viewIdTarget}")
public String checkSameDataSet(@PathVariable String viewIdSource, @PathVariable String viewIdTarget) throws Exception {

View File

@ -206,9 +206,9 @@ public class PanelGroupService {
public PanelGroupWithBLOBs findOne(String panelId) {
PanelGroupWithBLOBs panelGroupWithBLOBs = panelGroupMapper.selectByPrimaryKey(panelId);
PanelGroupWithBLOBs panelGroupWithBLOBs = extPanelGroupMapper.findOneWithPrivileges(panelId,String.valueOf(AuthUtils.getUser().getUserId()));
if (panelGroupWithBLOBs != null && StringUtils.isNotEmpty(panelGroupWithBLOBs.getSource())) {
return panelGroupMapper.selectByPrimaryKey(panelGroupWithBLOBs.getSource());
return extPanelGroupMapper.findOneWithPrivileges(panelGroupWithBLOBs.getSource(),String.valueOf(AuthUtils.getUser().getUserId()));
}
return panelGroupWithBLOBs;
}

View File

@ -9,16 +9,6 @@ export function post(url, data) {
})
}
export function ajaxGetData(id, data) {
return request({
url: '/chart/view/getOneWithPermission/' + id,
method: 'post',
loading: true,
hideMsg: true,
data
})
}
export function getChartTree(data) {
return request({
url: 'api',
@ -60,9 +50,9 @@ export function checkSameDataSet(viewIdSource, viewIdTarget) {
})
}
export function ajaxGetDataOnly(id, data) {
export function ajaxGetDataOnly(id, panelId, data) {
return request({
url: '/chart/view/getData/' + id,
url: '/chart/view/getData/' + id + '/' + panelId,
method: 'post',
loading: true,
hideMsg: true,

View File

@ -56,9 +56,9 @@ export function groupTree(data, loading = true, timeout = 60000) {
})
}
export function viewData(id, data) {
export function viewData(id, panelId, data) {
return request({
url: '/chart/view/getData/' + id,
url: '/chart/view/getData/' + id + '/' + panelId,
method: 'post',
hideMsg: true,
data
@ -141,7 +141,8 @@ export function initPanelData(panelId, callback) {
// 设置当前仪表板全局信息
store.dispatch('panel/setPanelInfo', {
id: response.data.id,
name: response.data.name
name: response.data.name,
privileges: response.data.privileges
})
// 刷新联动信息
getPanelAllLinkageInfo(panelId).then(rsp => {

View File

@ -433,7 +433,7 @@ export default {
...this.filter,
cache: cache
}
method(id, requestInfo).then(response => {
method(id, this.panelInfo.id, requestInfo).then(response => {
// echart
if (response.success) {
this.chart = response.data

View File

@ -255,7 +255,9 @@ const data = {
for (let index = 0; index < state.componentData.length; index++) {
const element = state.componentData[index]
if (!element.type || element.type !== 'view') continue
const currentFilters = element.linkageFilters || [] // 当前联动filter
// const currentFilters = element.linkageFilters || [] // 当前联动filter
// 联动的视图情况历史条件
const currentFilters = []
data.dimensionList.forEach(dimension => {
const sourceInfo = viewId + '#' + dimension.id

View File

@ -48,7 +48,7 @@ export const buildFilterMap = panelItems => {
}
if (element.type === 'de-tabs') {
element.options.tabList && element.options.tabList.forEach(tab => {
if (tab.content.propValue && tab.content.propValue.viewId) {
if (tab.content && tab.content.propValue && tab.content.propValue.viewId) {
result[tab.content.propValue.viewId] = []
}
})

View File

@ -423,6 +423,9 @@ export default {
computed: {
chartType() {
return this.view.type
},
panelInfo() {
return this.$store.state.panel.panelInfo
}
},
watch: {
@ -545,7 +548,7 @@ export default {
if (valid) {
view.title = view.name
view.sceneId = view.pid
post('/chart/view/save', view).then(response => {
post('/chart/view/save/' + this.panelInfo.id, view).then(response => {
this.closeTable()
this.$message({
message: this.$t('dataset.save_success'),
@ -772,7 +775,7 @@ export default {
view.extBubble = JSON.stringify([])
this.setChartDefaultOptions(view)
const _this = this
post('/chart/view/save', view).then(response => {
post('/chart/view/save/' + this.panelInfo.id, view).then(response => {
this.closeCreateChart()
this.$store.dispatch('chart/setTableId', null)
this.$store.dispatch('chart/setTableId', this.table.id)
@ -905,7 +908,7 @@ export default {
saveMoveDs() {
const newSceneId = this.tDs.id
this.dsForm.sceneId = newSceneId
post('/chart/view/save', this.dsForm).then(res => {
post('/chart/view/save/' + this.panelInfo.id, this.dsForm).then(res => {
this.closeMoveDs()
this.expandedArray.push(newSceneId)
this.treeNode()

View File

@ -1191,6 +1191,9 @@ export default {
computed: {
chartType() {
return this.chart.type
},
panelInfo() {
return this.$store.state.panel.panelInfo
}
},
watch: {
@ -1446,7 +1449,7 @@ export default {
this.hasEdit = true
const view = this.buildParam(getData, trigger, needRefreshGroup, switchType)
if (!view) return
post('/chart/view/calcData', {
post('/chart/view/calcData/' + this.panelInfo.id, {
view: view,
requestList: {
filter: [],
@ -1509,7 +1512,7 @@ export default {
}
const view = this.buildParam(true, 'chart', false, false)
if (!view) return
post('/chart/view/save', view).then(response => {
post('/chart/view/save/' + this.panelInfo.id, view).then(response => {
this.getChart(response.data.id)
this.hasEdit = false
this.refreshGroup(view)
@ -1524,7 +1527,7 @@ export default {
getData(id) {
this.hasEdit = false
if (id) {
ajaxGetDataOnly(id, {
ajaxGetDataOnly(id, this.panelInfo.id, {
filter: [],
drill: this.drillClickDimensionList
}).then(response => {
@ -1571,7 +1574,7 @@ export default {
},
getChart(id) {
if (id) {
post('/chart/view/get/' + id, {}).then(response => {
post('/chart/view/get/' + id + '/' + this.panelInfo.id, {}).then(response => {
this.initTableData(response.data.tableId)
this.view = JSON.parse(JSON.stringify(response.data))
this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : []

View File

@ -122,6 +122,11 @@ export default {
info: {}
}
},
computed: {
panelInfo() {
return this.$store.state.panel.panelInfo
}
},
watch: {
'data': function() {
this.init()
@ -145,7 +150,7 @@ export default {
this.info = JSON.parse(res.data.table.info)
})
} else if (this.type === 'chart') {
post('/chart/view/chartDetail/' + this.data.id, null).then(res => {
post('/chart/view/chartDetail/' + this.data.id + '/' + this.panelInfo.id, null).then(res => {
this.detail = res.data
this.info = JSON.parse(res.data.table.info)
})

View File

@ -39,7 +39,8 @@ export default {
loadResource(this.resourceId).then(res => {
this.$store.dispatch('panel/setPanelInfo', {
id: res.data.id,
name: res.data.name
name: res.data.name,
privileges: res.data.privileges
})
panelInit(JSON.parse(res.data.panelData), JSON.parse(res.data.panelStyle))