Merge pull request #1969 from dataease/pr@dev@refactor_outer-params

feat: 仪表板支持接收外部参数
This commit is contained in:
王嘉豪
2022-03-26 21:18:55 +08:00
committed by GitHub
20 changed files with 283 additions and 32 deletions

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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());

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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() {
}
}

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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)));
}
}