forked from github/dataease
Merge branch 'dev-v2' into pr@dev@dev-v2@perf_report_view_xlsx
This commit is contained in:
commit
4308ef68de
@ -1,13 +1,11 @@
|
|||||||
package io.dataease.dataset.manage;
|
package io.dataease.dataset.manage;
|
||||||
|
|
||||||
|
import io.dataease.api.chart.dto.ChartExtFilterDTO;
|
||||||
import io.dataease.api.chart.dto.ChartViewDTO;
|
import io.dataease.api.chart.dto.ChartViewDTO;
|
||||||
import io.dataease.api.chart.dto.ColumnPermissionItem;
|
import io.dataease.api.chart.dto.ColumnPermissionItem;
|
||||||
import io.dataease.api.chart.dto.DeSortField;
|
import io.dataease.api.chart.dto.DeSortField;
|
||||||
import io.dataease.api.chart.request.ChartExtRequest;
|
import io.dataease.api.chart.request.ChartExtRequest;
|
||||||
import io.dataease.api.dataset.dto.DatasetTableDTO;
|
import io.dataease.api.dataset.dto.*;
|
||||||
import io.dataease.api.dataset.dto.EnumValueRequest;
|
|
||||||
import io.dataease.api.dataset.dto.PreviewSqlDTO;
|
|
||||||
import io.dataease.api.dataset.dto.SqlLogDTO;
|
|
||||||
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
|
import io.dataease.api.dataset.union.DatasetGroupInfoDTO;
|
||||||
import io.dataease.api.dataset.union.DatasetTableInfoDTO;
|
import io.dataease.api.dataset.union.DatasetTableInfoDTO;
|
||||||
import io.dataease.api.dataset.union.model.SQLMeta;
|
import io.dataease.api.dataset.union.model.SQLMeta;
|
||||||
@ -33,10 +31,7 @@ import io.dataease.engine.constant.ExtFieldConstant;
|
|||||||
import io.dataease.engine.constant.SQLConstants;
|
import io.dataease.engine.constant.SQLConstants;
|
||||||
import io.dataease.engine.constant.SqlPlaceholderConstants;
|
import io.dataease.engine.constant.SqlPlaceholderConstants;
|
||||||
import io.dataease.engine.sql.SQLProvider;
|
import io.dataease.engine.sql.SQLProvider;
|
||||||
import io.dataease.engine.trans.Field2SQLObj;
|
import io.dataease.engine.trans.*;
|
||||||
import io.dataease.engine.trans.Order2SQLObj;
|
|
||||||
import io.dataease.engine.trans.Table2SQLObj;
|
|
||||||
import io.dataease.engine.trans.WhereTree2Str;
|
|
||||||
import io.dataease.engine.utils.SQLUtils;
|
import io.dataease.engine.utils.SQLUtils;
|
||||||
import io.dataease.engine.utils.Utils;
|
import io.dataease.engine.utils.Utils;
|
||||||
import io.dataease.exception.DEException;
|
import io.dataease.exception.DEException;
|
||||||
@ -55,6 +50,8 @@ import org.springframework.util.CollectionUtils;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import static io.dataease.chart.manage.ChartDataManage.START_END_SEPARATOR;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author Junjun
|
* @Author Junjun
|
||||||
*/
|
*/
|
||||||
@ -583,6 +580,87 @@ public class DatasetDataManage {
|
|||||||
rowPermissionsTree = permissionManage.getRowPermissionsTree(datasetGroupInfoDTO.getId(), user.getUserId());
|
rowPermissionsTree = permissionManage.getRowPermissionsTree(datasetGroupInfoDTO.getId(), user.getUserId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//组件过滤条件
|
||||||
|
List<ChartExtFilterDTO> extFilterList = new ArrayList<>();
|
||||||
|
if (ObjectUtils.isNotEmpty(request.getFilter())) {
|
||||||
|
for (ChartExtFilterDTO filterDTO : request.getFilter()) {
|
||||||
|
// 解析多个fieldId,fieldId是一个逗号分隔的字符串
|
||||||
|
String fieldId = filterDTO.getFieldId();
|
||||||
|
if (filterDTO.getIsTree() == null) {
|
||||||
|
filterDTO.setIsTree(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean hasParameters = false;
|
||||||
|
List<SqlVariableDetails> sqlVariables = datasetGroupManage.getSqlParams(Arrays.asList(datasetGroupInfoDTO.getId()));
|
||||||
|
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(sqlVariables)) {
|
||||||
|
for (SqlVariableDetails parameter : Optional.ofNullable(filterDTO.getParameters()).orElse(new ArrayList<>())) {
|
||||||
|
String parameterId = StringUtils.endsWith(parameter.getId(), START_END_SEPARATOR) ? parameter.getId().split(START_END_SEPARATOR)[0] : parameter.getId();
|
||||||
|
if (sqlVariables.stream().map(SqlVariableDetails::getId).collect(Collectors.toList()).contains(parameterId)) {
|
||||||
|
hasParameters = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasParameters) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (StringUtils.isNotEmpty(fieldId)) {
|
||||||
|
List<Long> fieldIds = Arrays.stream(fieldId.split(",")).map(Long::valueOf).collect(Collectors.toList());
|
||||||
|
|
||||||
|
if (filterDTO.getIsTree()) {
|
||||||
|
ChartExtFilterDTO filterRequest = new ChartExtFilterDTO();
|
||||||
|
BeanUtils.copyBean(filterRequest, filterDTO);
|
||||||
|
filterRequest.setDatasetTableFieldList(new ArrayList<>());
|
||||||
|
for (Long fId : fieldIds) {
|
||||||
|
DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId);
|
||||||
|
if (datasetTableField == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (Objects.equals(datasetTableField.getDatasetGroupId(), datasetGroupInfoDTO.getId())) {
|
||||||
|
filterRequest.getDatasetTableFieldList().add(datasetTableField);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ObjectUtils.isNotEmpty(filterRequest.getDatasetTableFieldList())) {
|
||||||
|
extFilterList.add(filterRequest);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (Long fId : fieldIds) {
|
||||||
|
ChartExtFilterDTO filterRequest = new ChartExtFilterDTO();
|
||||||
|
BeanUtils.copyBean(filterRequest, filterDTO);
|
||||||
|
filterRequest.setFieldId(fId + "");
|
||||||
|
|
||||||
|
DatasetTableFieldDTO datasetTableField = datasetTableFieldManage.selectById(fId);
|
||||||
|
if (datasetTableField == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
filterRequest.setDatasetTableField(datasetTableField);
|
||||||
|
if (Objects.equals(datasetTableField.getDatasetGroupId(), datasetGroupInfoDTO.getId())) {
|
||||||
|
extFilterList.add(filterRequest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 搜索备选项
|
||||||
|
if (StringUtils.isNotEmpty(request.getSearchText())) {
|
||||||
|
ChartExtFilterDTO dto = new ChartExtFilterDTO();
|
||||||
|
DatasetTableFieldDTO field = null;
|
||||||
|
if (ids.size() == 1) {
|
||||||
|
field = datasetTableFieldManage.selectById(ids.get(0));
|
||||||
|
} else {
|
||||||
|
field = datasetTableFieldManage.selectById(ids.get(1));
|
||||||
|
}
|
||||||
|
dto.setDatasetTableField(field);
|
||||||
|
dto.setFieldId(field.getId() + "");
|
||||||
|
dto.setIsTree(false);
|
||||||
|
dto.setOperator("like");
|
||||||
|
dto.setValue(List.of(request.getSearchText()));
|
||||||
|
extFilterList.add(dto);
|
||||||
|
}
|
||||||
|
|
||||||
// 排序
|
// 排序
|
||||||
if (ObjectUtils.isNotEmpty(request.getSortId())) {
|
if (ObjectUtils.isNotEmpty(request.getSortId())) {
|
||||||
DatasetTableFieldDTO field = datasetTableFieldManage.selectById(request.getSortId());
|
DatasetTableFieldDTO field = datasetTableFieldManage.selectById(request.getSortId());
|
||||||
@ -596,9 +674,10 @@ public class DatasetDataManage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap);
|
Field2SQLObj.field2sqlObj(sqlMeta, fields, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap);
|
||||||
|
ExtWhere2Str.extWhere2sqlOjb(sqlMeta, extFilterList, datasetGroupInfoDTO.getAllFields(), crossDs, dsMap);
|
||||||
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap);
|
WhereTree2Str.transFilterTrees(sqlMeta, rowPermissionsTree, fields, crossDs, dsMap);
|
||||||
Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap);
|
Order2SQLObj.getOrders(sqlMeta, fields, datasetGroupInfoDTO.getSortFields(), crossDs, dsMap);
|
||||||
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, false, 0, 1000);
|
String querySQL = SQLProvider.createQuerySQLWithLimit(sqlMeta, false, needOrder, ids.size() == 1, 0, 1000);
|
||||||
querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
|
querySQL = SqlUtils.rebuildSQL(querySQL, sqlMeta, crossDs, dsMap);
|
||||||
logger.info("calcite data enum sql: " + querySQL);
|
logger.info("calcite data enum sql: " + querySQL);
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ import io.dataease.api.permissions.dataset.api.ColumnPermissionsApi;
|
|||||||
import io.dataease.api.permissions.dataset.api.RowPermissionsApi;
|
import io.dataease.api.permissions.dataset.api.RowPermissionsApi;
|
||||||
import io.dataease.api.permissions.dataset.dto.*;
|
import io.dataease.api.permissions.dataset.dto.*;
|
||||||
import io.dataease.api.permissions.user.vo.UserFormVO;
|
import io.dataease.api.permissions.user.vo.UserFormVO;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueDto;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueItem;
|
||||||
import io.dataease.constant.ColumnPermissionConstants;
|
import io.dataease.constant.ColumnPermissionConstants;
|
||||||
import io.dataease.dto.dataset.DatasetTableFieldDTO;
|
import io.dataease.dto.dataset.DatasetTableFieldDTO;
|
||||||
import io.dataease.utils.AuthUtils;
|
import io.dataease.utils.AuthUtils;
|
||||||
@ -188,18 +190,27 @@ public class PermissionManage {
|
|||||||
}
|
}
|
||||||
// 替换系统变量
|
// 替换系统变量
|
||||||
if (StringUtils.equalsIgnoreCase(record.getAuthTargetType(), "sysParams")) {
|
if (StringUtils.equalsIgnoreCase(record.getAuthTargetType(), "sysParams")) {
|
||||||
String expressionTree = record.getExpressionTree();
|
DatasetRowPermissionsTreeObj tree = JsonUtil.parseObject(record.getExpressionTree(), DatasetRowPermissionsTreeObj.class);
|
||||||
if (StringUtils.isNotEmpty(userEntity.getAccount())) {
|
List<DatasetRowPermissionsTreeItem> items = new ArrayList<>();
|
||||||
expressionTree = expressionTree.replaceAll("\\$\\{sysParams\\.userId}", userEntity.getAccount());
|
for (DatasetRowPermissionsTreeItem datasetRowPermissionsTreeItem : tree.getItems()) {
|
||||||
|
if (StringUtils.isNotEmpty(userEntity.getAccount()) && datasetRowPermissionsTreeItem.getValue().equalsIgnoreCase("\\$\\{sysParams\\.userId}")) {
|
||||||
|
datasetRowPermissionsTreeItem.setValue(userEntity.getAccount());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(userEntity.getEmail()) && datasetRowPermissionsTreeItem.getValue().equalsIgnoreCase("\\$\\{sysParams\\.userEmail}")) {
|
||||||
|
datasetRowPermissionsTreeItem.setValue(userEntity.getEmail());
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(userEntity.getName()) && datasetRowPermissionsTreeItem.getValue().equalsIgnoreCase("\\$\\{sysParams\\.userName}")) {
|
||||||
|
datasetRowPermissionsTreeItem.setValue(userEntity.getName());
|
||||||
|
}
|
||||||
|
String value = handleSysVariable(userEntity, datasetRowPermissionsTreeItem.getValue());
|
||||||
|
if (value == null) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
datasetRowPermissionsTreeItem.setValue(value);
|
||||||
|
}
|
||||||
|
items.add(datasetRowPermissionsTreeItem);
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotEmpty(userEntity.getEmail())) {
|
tree.setItems(items);
|
||||||
expressionTree = expressionTree.replaceAll("\\$\\{sysParams\\.userEmail}", userEntity.getEmail());
|
|
||||||
}
|
|
||||||
if (StringUtils.isNotEmpty(userEntity.getName())) {
|
|
||||||
expressionTree = expressionTree.replaceAll("\\$\\{sysParams\\.userName}", userEntity.getName());
|
|
||||||
}
|
|
||||||
record.setExpressionTree(expressionTree);
|
|
||||||
DatasetRowPermissionsTreeObj tree = JsonUtil.parseObject(expressionTree, DatasetRowPermissionsTreeObj.class);
|
|
||||||
record.setTree(tree);
|
record.setTree(tree);
|
||||||
}
|
}
|
||||||
result.add(record);
|
result.add(record);
|
||||||
@ -207,6 +218,28 @@ public class PermissionManage {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String handleSysVariable(UserFormVO userEntity, String sysVariable) {
|
||||||
|
String value = null;
|
||||||
|
if (StringUtils.isNotBlank(sysVariable) && sysVariable.startsWith("${") && sysVariable.endsWith("}")) {
|
||||||
|
String variableId = sysVariable.substring(2, sysVariable.length() - 1);
|
||||||
|
for (SysVariableValueItem variable : userEntity.getVariables()) {
|
||||||
|
if (variableId.equalsIgnoreCase(variable.getVariableId())) {
|
||||||
|
if (variable.getSysVariableDto().getType().equalsIgnoreCase("text")) {
|
||||||
|
for (SysVariableValueDto sysVariableValueDto : variable.getValueList()) {
|
||||||
|
if (sysVariableValueDto.getId().toString().equals(variable.getVariableValueId())) {
|
||||||
|
value = sysVariableValueDto.getValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
value = variable.getVariableValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
private List<Long> intersectionForList(List<Long> list1, List<Long> list2) {
|
private List<Long> intersectionForList(List<Long> list1, List<Long> list2) {
|
||||||
List<Long> result = new ArrayList<>();
|
List<Long> result = new ArrayList<>();
|
||||||
for (Long id : list1) {
|
for (Long id : list1) {
|
||||||
|
@ -45,9 +45,11 @@ public class SQLProvider {
|
|||||||
if (ObjectUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
|
if (ObjectUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
|
||||||
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
|
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
|
||||||
String customWheres = sqlMeta.getCustomWheres();
|
String customWheres = sqlMeta.getCustomWheres();
|
||||||
|
String extWheres = sqlMeta.getExtWheres();
|
||||||
String whereTrees = sqlMeta.getWhereTrees();
|
String whereTrees = sqlMeta.getWhereTrees();
|
||||||
List<String> wheres = new ArrayList<>();
|
List<String> wheres = new ArrayList<>();
|
||||||
if (customWheres != null) wheres.add(customWheres);
|
if (customWheres != null) wheres.add(customWheres);
|
||||||
|
if (extWheres != null) wheres.add(extWheres);
|
||||||
if (whereTrees != null) wheres.add(whereTrees);
|
if (whereTrees != null) wheres.add(whereTrees);
|
||||||
if (ObjectUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
if (ObjectUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ i18n_menu.datasource=datasource
|
|||||||
i18n_menu.user=User
|
i18n_menu.user=User
|
||||||
i18n_menu.org=Organization
|
i18n_menu.org=Organization
|
||||||
i18n_menu.auth=Authority
|
i18n_menu.auth=Authority
|
||||||
|
i18n_menu.sysVariable=System Variables
|
||||||
i18n_field_name_repeat=has duplicate field names:
|
i18n_field_name_repeat=has duplicate field names:
|
||||||
i18n_pid_not_eq_id=Target is error
|
i18n_pid_not_eq_id=Target is error
|
||||||
i18n_ds_name_exists=Name is exists
|
i18n_ds_name_exists=Name is exists
|
||||||
|
@ -26,6 +26,7 @@ i18n_menu.task=\u4EFB\u52A1\u7BA1\u7406
|
|||||||
i18n_menu.embedded=\u5D4C\u5165\u5F0F\u7BA1\u7406
|
i18n_menu.embedded=\u5D4C\u5165\u5F0F\u7BA1\u7406
|
||||||
i18n_menu.platform=\u5E73\u53F0\u5BF9\u63A5
|
i18n_menu.platform=\u5E73\u53F0\u5BF9\u63A5
|
||||||
i18n_menu.appearance=\u5916\u89C2\u914D\u7F6E
|
i18n_menu.appearance=\u5916\u89C2\u914D\u7F6E
|
||||||
|
i18n_menu.sysVariable=\u7cfb\u7edf\u53d8\u91cf
|
||||||
i18n_field_name_repeat=\u6709\u91CD\u590D\u5B57\u6BB5\u540D\uFF1A
|
i18n_field_name_repeat=\u6709\u91CD\u590D\u5B57\u6BB5\u540D\uFF1A
|
||||||
i18n_pid_not_eq_id=\u79FB\u52A8\u76EE\u6807\u4E0D\u80FD\u662F\u81EA\u5DF1\u6216\u5B50\u76EE\u5F55
|
i18n_pid_not_eq_id=\u79FB\u52A8\u76EE\u6807\u4E0D\u80FD\u662F\u81EA\u5DF1\u6216\u5B50\u76EE\u5F55
|
||||||
i18n_ds_name_exists=\u8BE5\u5206\u7EC4\u4E0B\u540D\u79F0\u91CD\u590D
|
i18n_ds_name_exists=\u8BE5\u5206\u7EC4\u4E0B\u540D\u79F0\u91CD\u590D
|
||||||
|
@ -17,6 +17,7 @@ i18n_menu.datasource=\u6578\u64DA\u6E90
|
|||||||
i18n_menu.user=\u7528\u6236\u7BA1\u7406
|
i18n_menu.user=\u7528\u6236\u7BA1\u7406
|
||||||
i18n_menu.org=\u7D44\u7E54\u7BA1\u7406
|
i18n_menu.org=\u7D44\u7E54\u7BA1\u7406
|
||||||
i18n_menu.auth=\u6B0A\u9650\u914D\u7F6E
|
i18n_menu.auth=\u6B0A\u9650\u914D\u7F6E
|
||||||
|
i18n_menu.sysVariable=\u7cfb\u7edf\u53d8\u91cf
|
||||||
i18n_field_name_repeat=\u5177\u6709\u91CD\u8907\u7684\u6B04\u4F4D\u540D\u7A31\uFF1A
|
i18n_field_name_repeat=\u5177\u6709\u91CD\u8907\u7684\u6B04\u4F4D\u540D\u7A31\uFF1A
|
||||||
i18n_pid_not_eq_id=\u79FB\u52D5\u76EE\u6A19\u4E0D\u80FD\u662F\u81EA\u5DF1\u6216\u5B50\u76EE\u9304
|
i18n_pid_not_eq_id=\u79FB\u52D5\u76EE\u6A19\u4E0D\u80FD\u662F\u81EA\u5DF1\u6216\u5B50\u76EE\u9304
|
||||||
i18n_ds_name_exists=\u8A72\u5206\u7D44\u4E0B\u540D\u7A31\u91CD\u5FA9
|
i18n_ds_name_exists=\u8A72\u5206\u7D44\u4E0B\u540D\u7A31\u91CD\u5FA9
|
||||||
|
25
core/core-frontend/src/api/variable.ts
Normal file
25
core/core-frontend/src/api/variable.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export const variableCreateApi = data => request.post({ url: '/sysVariable/create', data })
|
||||||
|
|
||||||
|
export const variableEditApi = data => request.post({ url: '/sysVariable/edit', data })
|
||||||
|
|
||||||
|
export const variableDetailApi = id => request.get({ url: '/sysVariable/detail/' + id })
|
||||||
|
|
||||||
|
export const variableDeletelApi = id => request.get({ url: '/sysVariable/delete/' + id })
|
||||||
|
|
||||||
|
export const searchVariableApi = async data => request.post({ url: '/sysVariable/query', data })
|
||||||
|
|
||||||
|
export const valueSelectedForVariableApi = (page: number, limit: number, data) =>
|
||||||
|
request.post({ url: `/sysVariable/value/selected/${page}/${limit}`, data })
|
||||||
|
|
||||||
|
export const valueForVariable = id => request.get({ url: '/sysVariable/value/selected/' + id })
|
||||||
|
|
||||||
|
export const variableValueCreateApi = data =>
|
||||||
|
request.post({ url: '/sysVariable/value/create', data })
|
||||||
|
|
||||||
|
export const variableValueDeletelApi = id => request.get({ url: '/sysVariable/value/delete/' + id })
|
||||||
|
|
||||||
|
export const variableValueEditApi = data => request.post({ url: '/sysVariable/value/edit', data })
|
||||||
|
|
||||||
|
export const batchDelApi = data => request.post({ url: '/sysVariable/value/batchDel', data })
|
@ -2316,5 +2316,9 @@ export default {
|
|||||||
last_status_running: '运行中',
|
last_status_running: '运行中',
|
||||||
last_status_fail: '失败',
|
last_status_fail: '失败',
|
||||||
last_status_success: '成功'
|
last_status_success: '成功'
|
||||||
|
},
|
||||||
|
variable: {
|
||||||
|
give_up: 's',
|
||||||
|
save_apply: '保存并应用'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,23 +202,6 @@ onMounted(() => {
|
|||||||
</el-checkbox>
|
</el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item
|
|
||||||
:label="t('chart.orient')"
|
|
||||||
class="form-item"
|
|
||||||
:class="'form-item-' + themes"
|
|
||||||
v-if="showProperty('layout')"
|
|
||||||
>
|
|
||||||
<el-radio-group
|
|
||||||
size="small"
|
|
||||||
:effect="themes"
|
|
||||||
v-model="state.basicStyleForm.layout"
|
|
||||||
@change="changeBasicStyle('layout')"
|
|
||||||
>
|
|
||||||
<el-radio :effect="themes" label="horizontal">{{ t('chart.horizontal') }}</el-radio>
|
|
||||||
<el-radio :effect="themes" label="vertical">{{ t('chart.vertical') }}</el-radio>
|
|
||||||
</el-radio-group>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item
|
<el-form-item
|
||||||
class="form-item"
|
class="form-item"
|
||||||
v-if="showProperty('tableLayoutMode')"
|
v-if="showProperty('tableLayoutMode')"
|
||||||
@ -269,6 +252,23 @@ onMounted(() => {
|
|||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<el-form-item
|
||||||
|
:label="t('chart.orient')"
|
||||||
|
class="form-item"
|
||||||
|
:class="'form-item-' + themes"
|
||||||
|
v-if="showProperty('layout')"
|
||||||
|
>
|
||||||
|
<el-radio-group
|
||||||
|
size="small"
|
||||||
|
:effect="themes"
|
||||||
|
v-model="state.basicStyleForm.layout"
|
||||||
|
@change="changeBasicStyle('layout')"
|
||||||
|
>
|
||||||
|
<el-radio :effect="themes" label="horizontal">{{ t('chart.horizontal') }}</el-radio>
|
||||||
|
<el-radio :effect="themes" label="vertical">{{ t('chart.vertical') }}</el-radio>
|
||||||
|
</el-radio-group>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
<!--map start-->
|
<!--map start-->
|
||||||
<el-row :gutter="8">
|
<el-row :gutter="8">
|
||||||
<el-col :span="12" v-if="showProperty('areaBorderColor')">
|
<el-col :span="12" v-if="showProperty('areaBorderColor')">
|
||||||
|
@ -53,6 +53,7 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
|
|||||||
'legend-selector',
|
'legend-selector',
|
||||||
'label-selector',
|
'label-selector',
|
||||||
'tooltip-selector',
|
'tooltip-selector',
|
||||||
|
'function-cfg',
|
||||||
'jump-set',
|
'jump-set',
|
||||||
'linkage'
|
'linkage'
|
||||||
]
|
]
|
||||||
@ -84,7 +85,7 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
|
|||||||
'fontShadow'
|
'fontShadow'
|
||||||
],
|
],
|
||||||
'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'],
|
'legend-selector': ['icon', 'orient', 'fontSize', 'color', 'hPosition', 'vPosition'],
|
||||||
'function-cfg': ['slider', 'emptyDataStrategy'],
|
'function-cfg': ['emptyDataStrategy'],
|
||||||
'label-selector': ['hPosition', 'seriesLabelFormatter'],
|
'label-selector': ['hPosition', 'seriesLabelFormatter'],
|
||||||
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter']
|
'tooltip-selector': ['fontSize', 'color', 'backgroundColor', 'seriesTooltipFormatter']
|
||||||
}
|
}
|
||||||
@ -201,6 +202,7 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
|
|||||||
pre[next.seriesId] = next
|
pre[next.seriesId] = next
|
||||||
return pre
|
return pre
|
||||||
}, {}) as Record<string, SeriesFormatter>
|
}, {}) as Record<string, SeriesFormatter>
|
||||||
|
const optionsData = cloneDeep(options.data)
|
||||||
const yaxisObj = item => {
|
const yaxisObj = item => {
|
||||||
const param = item.data
|
const param = item.data
|
||||||
let yaxis = yAxis[0]
|
let yaxis = yAxis[0]
|
||||||
@ -236,6 +238,19 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
|
|||||||
const name = isEmpty(formatter.chartShowName) ? formatter.name : formatter.chartShowName
|
const name = isEmpty(formatter.chartShowName) ? formatter.name : formatter.chartShowName
|
||||||
result.push({ ...item, name, value })
|
result.push({ ...item, name, value })
|
||||||
})
|
})
|
||||||
|
const dynamicTooltipValue = optionsData.find(
|
||||||
|
d => d.field === originalItems[0]['title']
|
||||||
|
)?.dynamicTooltipValue
|
||||||
|
if (dynamicTooltipValue.length > 0) {
|
||||||
|
dynamicTooltipValue.forEach(dy => {
|
||||||
|
const q = tooltipAttr.seriesTooltipFormatter.filter(i => i.id === dy.fieldId)
|
||||||
|
if (q && q.length > 0) {
|
||||||
|
const value = valueFormatter(parseFloat(dy.value as string), q[0].formatterCfg)
|
||||||
|
const name = isEmpty(q[0].chartShowName) ? q[0].name : q[0].chartShowName
|
||||||
|
result.push({ color: 'grey', name, value })
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -413,7 +428,8 @@ export class BidirectionalHorizontalBar extends G2PlotChartView<
|
|||||||
this.configXAxis,
|
this.configXAxis,
|
||||||
this.configYAxis,
|
this.configYAxis,
|
||||||
this.configAnalyse,
|
this.configAnalyse,
|
||||||
this.configSlider
|
this.configSlider,
|
||||||
|
this.configEmptyDataStrategy
|
||||||
)(chart, options)
|
)(chart, options)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,14 +1,19 @@
|
|||||||
package io.dataease.api.dataset.dto;
|
package io.dataease.api.dataset.dto;
|
||||||
|
|
||||||
|
import io.dataease.api.chart.dto.ChartExtFilterDTO;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author Junjun
|
* @Author Junjun
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
public class EnumValueRequest {
|
public class EnumValueRequest {
|
||||||
private Long queryId;
|
private Long queryId;// 查询字段
|
||||||
private Long displayId;
|
private Long displayId;// 显示字段
|
||||||
private Long sortId;
|
private Long sortId;// 排序字段
|
||||||
private String sort;
|
private String sort;// 排序 asc||desc
|
||||||
|
private String searchText;// 搜索内容,以 field like '%text%' 拼接到SQL
|
||||||
|
private List<ChartExtFilterDTO> filter;// 级联查询条件,多个条件之间用and拼接到SQL
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package io.dataease.api.permissions.user.dto;
|
package io.dataease.api.permissions.user.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueItem;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -31,4 +32,6 @@ public class UserCreator implements Serializable {
|
|||||||
@Schema(hidden = true)
|
@Schema(hidden = true)
|
||||||
@JsonIgnore
|
@JsonIgnore
|
||||||
private Long uid;
|
private Long uid;
|
||||||
|
@Schema(description = "系统变量")
|
||||||
|
private List<SysVariableValueItem> variables;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package io.dataease.api.permissions.user.vo;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueItem;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -42,4 +43,10 @@ public class UserFormVO implements Serializable {
|
|||||||
|
|
||||||
@Schema(description = "模式")
|
@Schema(description = "模式")
|
||||||
private String model;
|
private String model;
|
||||||
|
|
||||||
|
@Schema(description = "系统变量")
|
||||||
|
private String sysVariable;
|
||||||
|
|
||||||
|
@Schema(description = "系统变量")
|
||||||
|
private List<SysVariableValueItem> variables;
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package io.dataease.api.permissions.user.vo;
|
|||||||
|
|
||||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueItem;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@ -26,4 +27,6 @@ public class UserGridVO {
|
|||||||
private Boolean enable;
|
private Boolean enable;
|
||||||
@Schema(description = "创建时间")
|
@Schema(description = "创建时间")
|
||||||
private Long createTime;
|
private Long createTime;
|
||||||
|
@Schema(description = "系统变量")
|
||||||
|
private List<SysVariableValueItem> variables;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
package io.dataease.api.permissions.variable.api;
|
||||||
|
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableDto;
|
||||||
|
import io.dataease.api.permissions.variable.dto.SysVariableValueDto;
|
||||||
|
import io.dataease.auth.DeApiPath;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static io.dataease.constant.AuthResourceEnum.SYSTEM;
|
||||||
|
|
||||||
|
@Tag(name = "系统变量")
|
||||||
|
@ApiSupport(order = 881, author = "fit2cloud-someone")
|
||||||
|
@DeApiPath(value = "/sysVariable", rt = SYSTEM)
|
||||||
|
public interface SysVariablesApi {
|
||||||
|
|
||||||
|
@Operation(summary = "创建")
|
||||||
|
@PostMapping("/create")
|
||||||
|
SysVariableDto create(@RequestBody SysVariableDto sysVariableDto);
|
||||||
|
|
||||||
|
@Operation(summary = "编辑")
|
||||||
|
@PostMapping("/edit")
|
||||||
|
SysVariableDto edit(@RequestBody SysVariableDto sysVariableDto);
|
||||||
|
|
||||||
|
@Operation(summary = "删除")
|
||||||
|
@GetMapping("/delete/{id}")
|
||||||
|
void delete(@PathVariable String id);
|
||||||
|
|
||||||
|
@Operation(summary = "详细信息")
|
||||||
|
@GetMapping("/detail/{id}")
|
||||||
|
SysVariableDto detail(@PathVariable String id);
|
||||||
|
|
||||||
|
@Operation(summary = "查询")
|
||||||
|
@PostMapping("/query")
|
||||||
|
List<SysVariableDto> query(@RequestBody SysVariableDto sysVariableDto);
|
||||||
|
|
||||||
|
@Operation(summary = "创建")
|
||||||
|
@PostMapping("/value/create")
|
||||||
|
SysVariableValueDto createValue(@RequestBody SysVariableValueDto sysVariableDto);
|
||||||
|
|
||||||
|
@Operation(summary = "编辑")
|
||||||
|
@PostMapping("/value/edit")
|
||||||
|
SysVariableValueDto editValue(@RequestBody SysVariableValueDto sysVariableDto);
|
||||||
|
|
||||||
|
@Operation(summary = "删除")
|
||||||
|
@GetMapping("/value/delete/{id}")
|
||||||
|
void deleteValue(@PathVariable String id);
|
||||||
|
|
||||||
|
@GetMapping("/value/selected/{id}")
|
||||||
|
List<SysVariableValueDto> selectVariableValue(@PathVariable("id") String id);
|
||||||
|
|
||||||
|
@PostMapping("/value/selected/{goPage}/{pageSize}")
|
||||||
|
IPage<SysVariableValueDto> selectPage(@PathVariable("goPage") int goPage, @PathVariable("pageSize") int pageSize, @RequestBody SysVariableValueDto sysVariableValueDto);
|
||||||
|
|
||||||
|
@Operation(summary = "批量删除")
|
||||||
|
@PostMapping("/value/batchDel")
|
||||||
|
void batchDel(@RequestBody List<Long> ids);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package io.dataease.api.permissions.variable.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SysVariableDto {
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
private String type;
|
||||||
|
private String name;
|
||||||
|
private Long min;
|
||||||
|
private Long max;
|
||||||
|
private String startTime;
|
||||||
|
private String endTime;
|
||||||
|
private boolean root = false;
|
||||||
|
private boolean disabled = false;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
package io.dataease.api.permissions.variable.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SysVariableValueDto {
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long id;
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long sysVariableId;
|
||||||
|
private String value;
|
||||||
|
private String begin;
|
||||||
|
private String end;
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
package io.dataease.api.permissions.variable.dto;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||||
|
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class SysVariableValueItem {
|
||||||
|
private SysVariableDto sysVariableDto;
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private String variableId;
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private String variableValueId;
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private String variableValue;
|
||||||
|
private List<SysVariableValueDto> valueList;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user