mirror of
https://github.com/dataease/dataease.git
synced 2026-05-22 21:38:32 +08:00
Merge pull request #1969 from dataease/pr@dev@refactor_outer-params
feat: 仪表板支持接收外部参数
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package io.dataease.base.mapper.ext;
|
||||
|
||||
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsDTO;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsInfoDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ExtPanelOuterParamsMapper {
|
||||
|
||||
PanelOuterParamsDTO queryWithPanelId(@Param("panelId") String panelId);
|
||||
@@ -14,4 +16,6 @@ public interface ExtPanelOuterParamsMapper {
|
||||
|
||||
void deleteOuterParamsWithPanelId(@Param("panelId") String panelId);
|
||||
|
||||
List<PanelOuterParamsInfoDTO> getPanelOuterParamsInfo(@Param("panelId") String panelId);
|
||||
|
||||
}
|
||||
|
||||
@@ -17,6 +17,13 @@
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="AllOuterParamsMap" type="io.dataease.dto.panel.outerParams.PanelOuterParamsInfoDTO">
|
||||
<result column="sourceInfo" jdbcType="VARCHAR" property="sourceInfo"/>
|
||||
<collection property="targetInfoList" ofType="String">
|
||||
<result column="targetInfo" jdbcType="VARCHAR"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<select id="getOuterParamsInfo" resultMap="OuterParamsInfoMap">
|
||||
SELECT
|
||||
pop.panel_id,
|
||||
@@ -76,6 +83,17 @@
|
||||
pop.panel_id = #{panelId}
|
||||
</delete>
|
||||
|
||||
<select id="getPanelOuterParamsInfo" resultMap="AllOuterParamsMap">
|
||||
SELECT DISTINCT
|
||||
param_name AS sourceInfo,
|
||||
CONCAT( poptvi.target_view_id, '#', poptvi.target_field_id ) AS targetInfo
|
||||
FROM
|
||||
panel_outer_params pop
|
||||
LEFT JOIN panel_outer_params_info popi ON pop.params_id = popi.params_id
|
||||
LEFT JOIN panel_outer_params_target_view_info poptvi ON popi.params_info_id = poptvi.params_info_id
|
||||
WHERE
|
||||
pop.panel_id = #{panelId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -7,12 +7,15 @@ import io.dataease.commons.utils.CodingUtil;
|
||||
import io.dataease.commons.utils.LogUtil;
|
||||
import io.dataease.commons.utils.ServletUtils;
|
||||
import io.dataease.service.panel.PanelLinkService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.http.HttpRequest;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.Cookie;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -59,6 +62,12 @@ public class IndexController {
|
||||
}
|
||||
HttpServletResponse response = ServletUtils.response();
|
||||
try {
|
||||
// TODO 增加仪表板外部参数
|
||||
HttpServletRequest request = ServletUtils.request();
|
||||
String attachParams = request.getParameter("attachParams");
|
||||
if(StringUtils.isNotEmpty(attachParams)){
|
||||
url = url+"&attachParams="+attachParams;
|
||||
}
|
||||
response.sendRedirect(url);
|
||||
} catch (IOException e) {
|
||||
LogUtil.error(e.getMessage());
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.dataease.controller.panel;
|
||||
|
||||
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsBaseResponse;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsDTO;
|
||||
import io.dataease.service.panel.PanelOuterParamsService;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -34,4 +35,10 @@ public class PanelOuterParamsController {
|
||||
public void updateOuterParamsSet(@RequestBody PanelOuterParamsDTO OuterParamsDTO) {
|
||||
panelOuterParamsService.updateOuterParamsSet(OuterParamsDTO);
|
||||
}
|
||||
|
||||
@ApiOperation("仪表板外部参数映射关系")
|
||||
@GetMapping("/getOuterParamsInfo/{panelId}")
|
||||
public PanelOuterParamsBaseResponse getOuterParamsInfo(@PathVariable("panelId") String panelId){
|
||||
return panelOuterParamsService.getOuterParamsInfo(panelId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,10 +18,12 @@ public class ChartExtRequest {
|
||||
@ApiModelProperty("视图额外过滤条件集合")
|
||||
private List<ChartExtFilterRequest> filter;
|
||||
|
||||
// 联动过滤条件
|
||||
@ApiModelProperty("联动过滤条件集合")
|
||||
private List<ChartExtFilterRequest> linkageFilters;
|
||||
|
||||
@ApiModelProperty("外部参数过滤条件集合")
|
||||
private List<ChartExtFilterRequest> outerParamsFilters;
|
||||
|
||||
@ApiModelProperty("下钻维度集合")
|
||||
private List<ChartDrillRequest> drill;
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package io.dataease.dto.panel.outerParams;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Author: wangjiahao
|
||||
* Date: 2022/3/25
|
||||
* Description:
|
||||
*/
|
||||
@Data
|
||||
public class PanelOuterParamsBaseResponse {
|
||||
|
||||
// 获取仪表板外部参数映射信息
|
||||
private Map<String, List<String>> outerParamsInfoMap;
|
||||
|
||||
public PanelOuterParamsBaseResponse(Map<String, List<String>> outerParamsInfoMap) {
|
||||
this.outerParamsInfoMap = outerParamsInfoMap;
|
||||
}
|
||||
|
||||
public PanelOuterParamsBaseResponse() {
|
||||
}
|
||||
}
|
||||
@@ -18,4 +18,10 @@ public class PanelOuterParamsInfoDTO extends PanelOuterParamsInfo {
|
||||
private String panelId;
|
||||
|
||||
private List<PanelOuterParamsTargetViewInfo> targetViewInfoList=new ArrayList<>();
|
||||
|
||||
//仪表板外部参数信息 panelId#paramName
|
||||
private String sourceInfo;
|
||||
|
||||
//目标联动参数 targetViewId#targetFieldId
|
||||
private List<String> targetInfoList;
|
||||
}
|
||||
|
||||
@@ -426,9 +426,20 @@ public class ChartViewService {
|
||||
}
|
||||
}
|
||||
|
||||
//联动过滤条件联动条件全部加上
|
||||
if (ObjectUtils.isNotEmpty(requestList.getLinkageFilters())) {
|
||||
for (ChartExtFilterRequest request : requestList.getLinkageFilters()) {
|
||||
List<ChartExtFilterRequest> filters = new ArrayList<>();
|
||||
// 联动条件
|
||||
if(ObjectUtils.isNotEmpty(requestList.getLinkageFilters())){
|
||||
filters.addAll(requestList.getLinkageFilters());
|
||||
}
|
||||
|
||||
// 外部参数条件
|
||||
if(ObjectUtils.isNotEmpty(requestList.getOuterParamsFilters())){
|
||||
filters.addAll(requestList.getOuterParamsFilters());
|
||||
}
|
||||
|
||||
//联动过滤条件和外部参数过滤条件全部加上
|
||||
if (ObjectUtils.isNotEmpty(filters)) {
|
||||
for (ChartExtFilterRequest request : filters) {
|
||||
DatasetTableField datasetTableField = dataSetTableFieldsService.get(request.getFieldId());
|
||||
if (!desensitizationList.contains(datasetTableField.getDataeaseName()) && dataeaseNames.contains(datasetTableField.getDataeaseName())) {
|
||||
request.setDatasetTableField(datasetTableField);
|
||||
|
||||
@@ -5,15 +5,19 @@ import io.dataease.base.mapper.PanelOuterParamsMapper;
|
||||
import io.dataease.base.mapper.PanelOuterParamsTargetViewInfoMapper;
|
||||
import io.dataease.base.mapper.ext.ExtPanelOuterParamsMapper;
|
||||
import io.dataease.dto.panel.linkJump.PanelLinkJumpDTO;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsBaseResponse;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsDTO;
|
||||
import io.dataease.dto.panel.outerParams.PanelOuterParamsInfoDTO;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.Assert;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Author: wangjiahao
|
||||
@@ -67,4 +71,9 @@ public class PanelOuterParamsService {
|
||||
});
|
||||
}
|
||||
|
||||
public PanelOuterParamsBaseResponse getOuterParamsInfo(String panelId){
|
||||
List<PanelOuterParamsInfoDTO> result = extPanelOuterParamsMapper.getPanelOuterParamsInfo(panelId);
|
||||
return new PanelOuterParamsBaseResponse(Optional.ofNullable(result).orElse(new ArrayList<>()).stream().collect(Collectors.toMap(PanelOuterParamsInfoDTO::getSourceInfo, PanelOuterParamsInfoDTO::getTargetInfoList)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user