forked from github/dataease
Merge pull request #3388 from dataease/pr@dev@feat_report_task_view_data_range
feat(定时报告): 视图数据选项
This commit is contained in:
commit
84a22b5dec
@ -198,10 +198,12 @@ public class EmailTaskHandler extends TaskHandler implements Job {
|
||||
List<File> files = null;
|
||||
String viewIds = emailTemplateDTO.getViewIds();
|
||||
if (StringUtils.isNotBlank(viewIds)) {
|
||||
String viewDataRange = emailTemplateDTO.getViewDataRange();
|
||||
Boolean justExportView = StringUtils.isBlank(viewDataRange) || StringUtils.equals("view", viewDataRange);
|
||||
List<String> viewIdList = Arrays.asList(viewIds.split(",")).stream().filter(StringUtils::isNotBlank).map(s -> (s.trim())).collect(Collectors.toList());
|
||||
PermissionProxy proxy = new PermissionProxy();
|
||||
proxy.setUserId(user.getUserId());
|
||||
files = viewExportExcel.export(panelId, viewIdList, proxy);
|
||||
files = viewExportExcel.export(panelId, viewIdList, proxy, justExportView);
|
||||
}
|
||||
|
||||
List<String> channels = null;
|
||||
|
@ -14,12 +14,12 @@ public abstract class FilterBuildTemplate {
|
||||
|
||||
protected abstract FilterParamTO buildParam(Map<String, Object> component);
|
||||
|
||||
public Map<String, List<ChartExtFilterRequest>> buildFilters(List<Map<String, Object>> components) {
|
||||
public static Map<String, List<ChartExtFilterRequest>> buildFilters(List<Map<String, Object>> components) {
|
||||
Map<String, Object> searchButton = components.stream().filter(item -> {
|
||||
if (ObjectUtils.isEmpty(item.get("type"))) return false;
|
||||
if (ObjectUtils.isEmpty(item.get("serviceName"))) return false;
|
||||
return StringUtils.equals("custom-button", item.get("type").toString()) && StringUtils.equals("buttonSureWidget", item.get("serviceName").toString());
|
||||
}).findFirst().orElseGet(null);
|
||||
}).findFirst().orElse(null);
|
||||
|
||||
List<Map<String, Object>> filters = componentsFilter(components, "custom", null, null);
|
||||
|
||||
@ -45,9 +45,11 @@ public abstract class FilterBuildTemplate {
|
||||
return emptyResult;
|
||||
}
|
||||
|
||||
private Map<String, List<ChartExtFilterRequest>> fillFilters(Map<String, List<ChartExtFilterRequest>> emptyResult, List<Map<String, Object>> filters) {
|
||||
private static Map<String, List<ChartExtFilterRequest>> fillFilters(Map<String, List<ChartExtFilterRequest>> emptyResult, List<Map<String, Object>> filters) {
|
||||
filters.forEach(element -> {
|
||||
FilterParamTO filterParamTO = buildParam(element);
|
||||
String serviceName = element.get("serviceName").toString();
|
||||
FilterBuildTemplate template = getInstance(serviceName);
|
||||
FilterParamTO filterParamTO = template.buildParam(element);
|
||||
ChartExtFilterRequest condition = formatCondition(filterParamTO);
|
||||
Boolean vValid = valueValid(condition);
|
||||
String filterComponentId = condition.getComponentId();
|
||||
@ -71,15 +73,15 @@ public abstract class FilterBuildTemplate {
|
||||
return emptyResult;
|
||||
}
|
||||
|
||||
private Boolean valueValid(ChartExtFilterRequest condition) {
|
||||
private static Boolean valueValid(ChartExtFilterRequest condition) {
|
||||
return ObjectUtils.isNotEmpty(condition) && CollectionUtils.isNotEmpty(condition.getValue()) && StringUtils.isNotBlank(condition.getValue().get(0));
|
||||
}
|
||||
|
||||
private Boolean viewIdMatch(List<String> viewIds, String viewId) {
|
||||
private static Boolean viewIdMatch(List<String> viewIds, String viewId) {
|
||||
return CollectionUtils.isEmpty(viewIds) || viewIds.contains(viewId);
|
||||
}
|
||||
|
||||
private ChartExtFilterRequest formatCondition(FilterParamTO filterParamTO) {
|
||||
private static ChartExtFilterRequest formatCondition(FilterParamTO filterParamTO) {
|
||||
|
||||
Boolean isTree = filterParamTO.getIsTree();
|
||||
List<String> value = filterParamTO.getValue();
|
||||
@ -111,14 +113,14 @@ public abstract class FilterBuildTemplate {
|
||||
return condition;
|
||||
}
|
||||
|
||||
private Map<String, List<ChartExtFilterRequest>> buildEmpty(List<Map<String, Object>> components) {
|
||||
private static Map<String, List<ChartExtFilterRequest>> buildEmpty(List<Map<String, Object>> components) {
|
||||
Map<String, List<ChartExtFilterRequest>> result = new HashMap<>();
|
||||
components.forEach(element -> {
|
||||
if (StringUtils.equals(element.get("type").toString(), "'view'")) {
|
||||
if (StringUtils.equals(element.get("type").toString(), "view")) {
|
||||
String viewId = ((Map<String, Object>) element.get("propValue")).get("viewId").toString();
|
||||
result.put(viewId, new ArrayList<>());
|
||||
}
|
||||
if (StringUtils.equals(element.get("type").toString(), "'de-tabs'")) {
|
||||
if (StringUtils.equals(element.get("type").toString(), "de-tabs")) {
|
||||
List<Map<String, Object>> tabs = (List<Map<String, Object>>) ((Map<String, Object>) element.get("options")).get("tabList");
|
||||
if (CollectionUtils.isNotEmpty(tabs)) {
|
||||
tabs.forEach(tab -> {
|
||||
@ -179,7 +181,7 @@ public abstract class FilterBuildTemplate {
|
||||
beanMapping.put("textSelectTreeWidget", "textSelectTreeWidget");
|
||||
beanMapping.put("textInputWidget", "textInputWidget");
|
||||
String beanName = beanMapping.get(serviceName);
|
||||
if (StringUtils.isBlank(beanName) && StringUtils.contains(serviceName, "select")) {
|
||||
if (StringUtils.isBlank(beanName) && StringUtils.containsIgnoreCase(serviceName, "select")) {
|
||||
beanName = "selectWidget";
|
||||
}
|
||||
return (FilterBuildTemplate)CommonBeanFactory.getBean(beanName);
|
||||
|
@ -23,10 +23,7 @@ import io.dataease.service.panel.PanelGroupService;
|
||||
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
@ -42,7 +39,7 @@ public class ViewExportExcel {
|
||||
}.getType();
|
||||
|
||||
@DePermissionProxy(paramIndex = 2)
|
||||
public List<File> export(String panelId, List<String> viewIds, PermissionProxy proxy) throws Exception {
|
||||
public List<File> export(String panelId, List<String> viewIds, PermissionProxy proxy, Boolean justView) throws Exception {
|
||||
if (CollectionUtils.isEmpty(viewIds)) {
|
||||
return null;
|
||||
}
|
||||
@ -51,28 +48,32 @@ public class ViewExportExcel {
|
||||
PanelGroupDTO panelDto = panelGroupService.findOne(panelId);
|
||||
String componentsJson = panelDto.getPanelData();
|
||||
List<Map<String, Object>> components = gson.fromJson(componentsJson, tokenType);
|
||||
ChartExtRequest chartExtRequest = buildViewRequest(FilterBuildTemplate.componentsFilter(components, "custom", null, null));
|
||||
|
||||
ChartExtRequest chartExtRequest = new ChartExtRequest();
|
||||
chartExtRequest.setQueryFrom("panel");
|
||||
chartExtRequest.setFilter(new ArrayList<>());
|
||||
|
||||
|
||||
Map<String, ChartExtRequest> stringChartExtRequestMap = buildViewRequest(components);
|
||||
List<File> results = new ArrayList<>();
|
||||
List<ExcelSheetModel> sheets = viewIds.stream().map(viewId -> viewFiles(viewId, chartExtRequest)).collect(Collectors.toList());
|
||||
List<ExcelSheetModel> sheets = viewIds.stream().map(viewId -> viewFiles(viewId, justView ? stringChartExtRequestMap.get(viewId) : chartExtRequest)).collect(Collectors.toList());
|
||||
File excelFile = ExcelUtils.exportExcel(sheets, panelDto.getName());
|
||||
results.add(excelFile);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private ChartExtRequest buildViewRequest(List<Map<String, Object>> filters) {
|
||||
ChartExtRequest chartExtRequest = new ChartExtRequest();
|
||||
filters = Optional.ofNullable(filters).orElse(new ArrayList<>());
|
||||
|
||||
List<ChartExtFilterRequest> panelFilters = filters.stream().map(item -> {
|
||||
ChartExtFilterRequest curentFilter = new ChartExtFilterRequest();
|
||||
return curentFilter;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
chartExtRequest.setQueryFrom("panel");
|
||||
chartExtRequest.setFilter(panelFilters);
|
||||
return chartExtRequest;
|
||||
private Map<String, ChartExtRequest> buildViewRequest(List<Map<String, Object>> component) {
|
||||
Map<String, ChartExtRequest> result = new HashMap<>();
|
||||
Map<String, List<ChartExtFilterRequest>> panelFilters = FilterBuildTemplate.buildFilters(component);
|
||||
for (Map.Entry<String, List<ChartExtFilterRequest>> entry : panelFilters.entrySet()) {
|
||||
List<ChartExtFilterRequest> chartExtFilterRequests = entry.getValue();
|
||||
ChartExtRequest chartExtRequest = new ChartExtRequest();
|
||||
chartExtRequest.setQueryFrom("panel");
|
||||
chartExtRequest.setFilter(chartExtFilterRequests);
|
||||
result.put(entry.getKey(), chartExtRequest);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private List<ChartExtFilterRequest> initFilters(List<Map<String, Object>> components) {
|
||||
|
@ -2485,18 +2485,19 @@ export default {
|
||||
exec_time: '执行时间',
|
||||
start_time: '开始时间',
|
||||
end_time: '结束时间',
|
||||
|
||||
chart_data: '视图数据',
|
||||
preview: '预览',
|
||||
emial_preview: '邮件预览',
|
||||
|
||||
chart_data_range: '视图数据范围',
|
||||
simple_repeat: '简单重复',
|
||||
once_a_day: '每天一次',
|
||||
once_a_week: '每周一次',
|
||||
once_a_month: '每月一次',
|
||||
complex_repeat: '复杂重复',
|
||||
pixel_tip: '可直接输入自定义分辨率(例如:2560 * 1600)或选择',
|
||||
task_type: '任务类型'
|
||||
|
||||
task_type: '任务类型',
|
||||
range_view: '展示数据',
|
||||
range_all: '全部数据'
|
||||
},
|
||||
dynamic_time: {
|
||||
set_default: '设置默认值',
|
||||
|
Loading…
Reference in New Issue
Block a user