Merge branch 'dev' into pr@dev_one_dot_x

This commit is contained in:
dataeaseShu 2023-11-28 16:00:01 +08:00
commit 7135cdcb9b
173 changed files with 4399 additions and 2867 deletions

View File

@ -99,6 +99,17 @@
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.1</version>
<exclusions>
<exclusion>
<artifactId>jsqlparser</artifactId>
<groupId>com.github.jsqlparser</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.6</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>

View File

@ -2,7 +2,7 @@ package io.dataease.auth.handler;
import io.dataease.auth.entity.ASKToken;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto;
import io.dataease.plugins.xpack.ukey.service.UkeyXpackService;
import org.apache.commons.lang3.StringUtils;

View File

@ -19,7 +19,7 @@ import io.dataease.controller.sys.request.LdapAddRequest;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.entity.XpackLdapUserEntity;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.util.PluginUtils;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.ldap.dto.request.LdapValidateRequest;

View File

@ -17,7 +17,7 @@ import io.dataease.plugins.common.base.domain.SysUser;
import io.dataease.plugins.common.base.mapper.SysLoginLimitMapper;
import io.dataease.plugins.common.base.mapper.SysUserMapper;
import io.dataease.plugins.common.service.PluginCommonService;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.util.PluginUtils;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService;

View File

@ -9,7 +9,7 @@ import io.dataease.commons.constants.DePermissionType;
import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.model.AuthURD;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.XpackBaseTreeRequest;
import io.dataease.plugins.xpack.auth.dto.response.XpackVAuthModelDTO;
import io.dataease.plugins.xpack.auth.service.AuthXpackService;

View File

@ -1,7 +1,7 @@
package io.dataease.commons.utils;
import io.dataease.commons.constants.AuthConstants;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import org.springframework.core.env.Environment;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

View File

@ -214,7 +214,7 @@ public class DataSetTableFieldController {
public List<Object> multFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
List<Object> results = new ArrayList<>();
for (String fieldId : multFieldValuesRequest.getFieldIds()) {
List<Object> fieldValues = dataSetFieldService.fieldValues(fieldId, multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, false);
List<Object> fieldValues = dataSetFieldService.fieldValues(fieldId, multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, false, multFieldValuesRequest.getKeyword());
if (CollectionUtil.isNotEmpty(fieldValues)) {
results.addAll(fieldValues);
}
@ -233,13 +233,13 @@ public class DataSetTableFieldController {
DecodedJWT jwt = JWT.decode(linkToken);
Long userId = jwt.getClaim("userId").asLong();
multFieldValuesRequest.setUserId(userId);
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true, false);
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true, false, multFieldValuesRequest.getKeyword());
}
@ApiIgnore
@PostMapping("mappingFieldValues")
public List<Object> mappingFieldValues(@RequestBody MultFieldValuesRequest multFieldValuesRequest) throws Exception {
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true, false);
return dataSetFieldService.fieldValues(multFieldValuesRequest.getFieldIds(), multFieldValuesRequest.getSort(), multFieldValuesRequest.getUserId(), true, true, false, multFieldValuesRequest.getKeyword());
}
@ApiIgnore

View File

@ -3,7 +3,10 @@ package io.dataease.controller.datasource;
import io.dataease.auth.annotation.DeLog;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.dto.DriverDTO;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.DeDriver;
import io.dataease.plugins.common.base.domain.DeDriverDetails;
import io.dataease.service.datasource.DriverService;
@ -31,6 +34,7 @@ public class DriverMgmController {
@ApiOperation("驱动列表")
@PostMapping("/list")
public List<DriverDTO> listDeDriver() throws Exception{
checkPermission();
return driverService.list();
}
@ -45,6 +49,7 @@ public class DriverMgmController {
value = "id"
)
public void delete(@RequestBody DeDriver deDriver) throws Exception{
checkPermission();
driverService.delete(deDriver);
}
@ -52,6 +57,7 @@ public class DriverMgmController {
@ApiOperation("驱动列表")
@GetMapping("/list/{type}")
public List<DriverDTO> listDeDriver(@PathVariable String type) throws Exception{
checkPermission();
return listDeDriver().stream().filter(driverDTO -> driverDTO.getType().equalsIgnoreCase(type)).collect(Collectors.toList());
}
@ -66,6 +72,7 @@ public class DriverMgmController {
value = "id"
)
public DeDriver save(@RequestBody DeDriver deDriver) throws Exception{
checkPermission();
return driverService.save(deDriver);
}
@ -79,6 +86,7 @@ public class DriverMgmController {
value = "id"
)
public DeDriver update(@RequestBody DeDriver deDriver) throws Exception{
checkPermission();
return driverService.update(deDriver);
}
@ -86,6 +94,7 @@ public class DriverMgmController {
@ApiOperation("驱动文件列表")
@GetMapping("/listDriverDetails/{id}")
public List<DeDriverDetails> listDriverDetails(@PathVariable String id) throws Exception{
checkPermission();
return driverService.listDriverDetails(id);
}
@ -93,6 +102,7 @@ public class DriverMgmController {
@ApiOperation("删除驱动文件")
@PostMapping("/deleteDriverFile")
public void deleteDriverFile(@RequestBody DeDriverDetails deDriverDetails) throws Exception{
checkPermission();
driverService.deleteDriverFile(deDriverDetails.getId());
}
@ -104,9 +114,15 @@ public class DriverMgmController {
@ApiImplicitParam(name = "id", value = "驱动D", required = true, dataType = "String")
})
public DeDriverDetails excelUpload(@RequestParam("id") String id, @RequestParam("file") MultipartFile file) throws Exception {
checkPermission();
return driverService.saveJar(file, id);
}
private void checkPermission()throws Exception{
if(!AuthUtils.getUser().getIsAdmin()){
DEException.throwException(Translator.get("I18N_NO_DRIVER_PERMISSION"));
}
}
}

View File

@ -13,4 +13,6 @@ public class MultFieldValuesRequest {
private DeSortDTO sort;
private String keyword;
}

View File

@ -17,7 +17,7 @@ public class ApiDefinition {
private List<DatasetTableFieldDTO> fields;
private ApiDefinitionRequest request;
private String dataPath;
private Integer queryTimeout;
private Integer apiQueryTimeout = 30;
private String status;
private List<Map<String,String>> data = new ArrayList<>();
private List<JSONObject> jsonFields = new ArrayList<>();

View File

@ -15,6 +15,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@ -31,6 +32,7 @@ public class SysLogController {
@I18n
@ApiOperation("查询日志")
@RequiresPermissions("log:read")
@PostMapping("/logGrid/{goPage}/{pageSize}")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "path", name = "goPage", value = "页码", required = true, dataType = "Integer"),
@ -52,6 +54,7 @@ public class SysLogController {
@ApiOperation("导出操作日志")
@PostMapping("/export")
@RequiresPermissions("log:export")
@ApiImplicitParam(name = "request", value = "查询条件", required = true)
@SqlInjectValidator(value = {"time"})
public void export(@RequestBody LogGridRequest request) throws Exception {

View File

@ -17,10 +17,7 @@ import io.dataease.commons.utils.AuthUtils;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.controller.response.ExistLdapUser;
import io.dataease.controller.sys.request.SysUserCreateRequest;
import io.dataease.controller.sys.request.SysUserPwdRequest;
import io.dataease.controller.sys.request.SysUserStateRequest;
import io.dataease.controller.sys.request.UserGridRequest;
import io.dataease.controller.sys.request.*;
import io.dataease.controller.sys.response.AuthBindDTO;
import io.dataease.controller.sys.response.RoleUserItem;
import io.dataease.controller.sys.response.SysUserGridResponse;
@ -70,6 +67,16 @@ public class SysUserController {
@Resource
private AuthUserService authUserService;
@ApiIgnore
@GetMapping("/transAccount")
public Long transAccount(@RequestBody TransAccountRequest request) {
String account = request.getAccount();
if (StringUtils.isBlank(account)) {
DEException.throwException("account can not be null");
}
return sysUserService.uidByAccount(account);
}
@ApiOperation("查询用户")
@RequiresPermissions("user:read")
@PostMapping("/userGrid/{goPage}/{pageSize}")

View File

@ -0,0 +1,11 @@
package io.dataease.controller.sys.request;
import lombok.Data;
import java.io.Serializable;
@Data
public class TransAccountRequest implements Serializable {
private String account;
}

View File

@ -11,4 +11,6 @@ public interface ExtSysUserMapper {
List<String> ldapUserNames(Integer from);
String queryAdminEmail();
Long queryUserId(String username);
}

View File

@ -106,4 +106,8 @@
from sys_user
where user_id = 1
</select>
<select id="queryUserId" resultType="java.lang.Long" parameterType="java.lang.String">
select user_id from sys_user where username = #{account}
</select>
</mapper>

View File

@ -15,7 +15,7 @@ import io.dataease.job.sechedule.strategy.TaskHandler;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.common.entity.GlobalTaskInstance;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.dingtalk.dto.entity.DingtalkMsgResult;
import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService;
import io.dataease.plugins.xpack.email.dto.request.XpackEmailTaskRequest;

View File

@ -1,6 +1,6 @@
package io.dataease.listener;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.boot.context.event.ApplicationReadyEvent;

View File

@ -4,7 +4,8 @@ import io.dataease.plugins.common.base.domain.DatasetTable;
import io.dataease.plugins.common.base.domain.DatasetTableExample;
import io.dataease.plugins.common.base.mapper.DatasetTableMapper;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.plugins.common.util.ClassloaderResponsity;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -5,7 +5,7 @@ import io.dataease.job.sechedule.ScheduleManager;
import io.dataease.job.sechedule.strategy.TaskHandler;
import io.dataease.job.sechedule.strategy.TaskStrategyFactory;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.email.service.EmailXpackService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.event.ApplicationReadyEvent;

View File

@ -2,8 +2,8 @@ package io.dataease.listener;
import io.dataease.plugins.common.base.domain.SysStartupJob;
import io.dataease.plugins.common.base.mapper.SysStartupJobMapper;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.plugins.common.util.ClassloaderResponsity;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.service.RowPermissionTreeService;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;

View File

@ -3,7 +3,7 @@ package io.dataease.listener;
import io.dataease.plugins.common.base.domain.DataeaseCodeVersion;
import io.dataease.plugins.common.base.mapper.DataeaseCodeVersionMapper;
import io.dataease.ext.DEVersionMapper;
import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.plugins.common.util.ClassloaderResponsity;
import io.dataease.service.panel.PanelGroupService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@ -1,10 +1,11 @@
package io.dataease.plugins.config;
import io.dataease.plugins.common.base.domain.MyPlugin;
import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.plugins.common.util.ClassloaderResponsity;
import io.dataease.plugins.common.util.ModuleClassLoader;
import io.dataease.plugins.common.util.MybatisLoader;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.loader.ControllerLoader;
import io.dataease.plugins.loader.ModuleClassLoader;
import io.dataease.plugins.loader.MybatisLoader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

View File

@ -2,7 +2,7 @@ package io.dataease.plugins.loader;
import io.dataease.commons.utils.LogUtil;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import org.springframework.stereotype.Component;
import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;

View File

@ -8,7 +8,7 @@ import io.dataease.commons.constants.ResourceAuthLevel;
import io.dataease.commons.utils.PageUtils;
import io.dataease.commons.utils.Pager;
import io.dataease.i18n.Translator;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.DataSetColumnPermissionsDTO;
import io.dataease.plugins.xpack.auth.dto.request.DatasetColumnPermissions;
import io.dataease.plugins.xpack.auth.service.ColumnPermissionService;

View File

@ -5,7 +5,7 @@ import io.dataease.plugins.common.dto.PluginSysMenu;
import io.dataease.plugins.common.dto.StaticResource;
import io.dataease.plugins.common.service.PluginComponentService;
import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -11,7 +11,7 @@ import io.dataease.commons.utils.Pager;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.request.permission.DataSetRowPermissionsTreeDTO;
import io.dataease.plugins.common.request.permission.DatasetRowPermissionsTreeRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.DataSetRowPermissionsDTO;
import io.dataease.plugins.xpack.auth.service.RowPermissionService;
import io.dataease.plugins.xpack.auth.service.RowPermissionTreeService;

View File

@ -11,6 +11,7 @@ import javax.servlet.http.HttpServletResponse;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.utils.DeLogUtils;
import io.dataease.plugins.common.util.SpringContextUtil;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -23,10 +24,8 @@ import io.dataease.auth.entity.TokenInfo;
import io.dataease.auth.service.AuthUserService;
import io.dataease.auth.util.JWTUtils;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.CodingUtil;
import io.dataease.commons.utils.LogUtil;
import io.dataease.commons.utils.ServletUtils;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.oidc.dto.SSOToken;
import io.dataease.plugins.xpack.oidc.dto.SSOUserInfo;

View File

@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RestController;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.utils.LogUtil;
import io.dataease.i18n.Translator;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.theme.service.ThemeXpackService;
@Api(tags = "xpack系统主题")

View File

@ -10,7 +10,7 @@ import io.dataease.dto.SysLogDTO;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.dto.DatasourceBaseType;
import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.XpackBaseTreeRequest;
import io.dataease.plugins.xpack.auth.dto.request.XpackSysAuthRequest;
import io.dataease.plugins.xpack.auth.dto.response.XpackSysAuthDetail;

View File

@ -1,7 +1,7 @@
package io.dataease.plugins.server;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.cas.dto.CasSaveResult;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;

View File

@ -20,7 +20,7 @@ import io.dataease.commons.utils.Pager;
import io.dataease.controller.sys.response.DeptNodeResponse;
import io.dataease.dto.SysLogDTO;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.dept.dto.request.*;
import io.dataease.plugins.xpack.dept.dto.response.DeptUserItemDTO;
import io.dataease.plugins.xpack.dept.dto.response.XpackDeptTreeNode;

View File

@ -12,7 +12,7 @@ import io.dataease.commons.utils.ServletUtils;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.dingtalk.dto.response.DingQrResult;
import io.dataease.plugins.xpack.dingtalk.dto.response.DingUserEntity;
import io.dataease.plugins.xpack.dingtalk.dto.response.DingtalkInfo;

View File

@ -1,7 +1,7 @@
package io.dataease.plugins.server;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.display.service.DisplayXpackService;
import org.apache.shiro.authz.annotation.RequiresPermissions;

View File

@ -14,7 +14,7 @@ import io.dataease.commons.utils.*;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.common.entity.GlobalTaskInstance;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.email.dto.request.*;
import io.dataease.plugins.xpack.email.dto.response.XpackTaskEntity;
import io.dataease.plugins.xpack.email.dto.response.XpackTaskGridDTO;

View File

@ -13,7 +13,7 @@ import io.dataease.commons.utils.ServletUtils;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.lark.dto.entity.LarkAppUserEntity;

View File

@ -12,7 +12,7 @@ import io.dataease.commons.utils.ServletUtils;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.lark.dto.entity.LarkQrResult;
import io.dataease.plugins.xpack.lark.dto.response.LarkInfo;

View File

@ -2,7 +2,7 @@ package io.dataease.plugins.server;
import io.dataease.plugins.common.entity.XpackLdapUserEntity;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.ldap.dto.response.LdapInfo;
import io.dataease.plugins.xpack.ldap.service.LdapXpackService;

View File

@ -1,7 +1,7 @@
package io.dataease.plugins.server;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.oidc.service.OidcXpackService;
import org.apache.commons.lang3.StringUtils;

View File

@ -17,7 +17,7 @@ import io.dataease.commons.utils.Pager;
import io.dataease.dto.SysLogDTO;
import io.dataease.listener.util.CacheUtils;
import io.dataease.plugins.common.request.KeywordRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.role.dto.request.RoleUserMappingRequest;
import io.dataease.plugins.xpack.role.dto.request.RoleUserRequest;
import io.dataease.plugins.xpack.role.dto.response.RoleUserItem;

View File

@ -3,7 +3,7 @@ package io.dataease.plugins.server;
import io.dataease.auth.annotation.DeLog;
import io.dataease.commons.constants.SysLogConstants;
import io.dataease.commons.utils.AuthUtils;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.ukey.dto.request.XpackUkeyDto;
import io.dataease.plugins.xpack.ukey.service.UkeyXpackService;
import org.springframework.web.bind.annotation.*;

View File

@ -2,7 +2,7 @@ package io.dataease.plugins.server;
import io.dataease.commons.constants.AuthConstants;
import io.dataease.commons.utils.LogUtil;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.user.service.UserXpackService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

View File

@ -1,6 +1,6 @@
package io.dataease.plugins.server;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.watermark.WatermarkService;
import io.dataease.plugins.xpack.watermark.dto.PanelWatermarkDTO;
import io.swagger.annotations.ApiOperation;

View File

@ -13,7 +13,7 @@ import io.dataease.commons.utils.ServletUtils;
import io.dataease.exception.DataEaseException;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.display.dto.response.SysSettingDto;
import io.dataease.plugins.xpack.wecom.dto.entity.BaseQrResult;

View File

@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.view.entity.PluginViewType;
import io.dataease.plugins.view.service.ViewPluginService;
import springfox.documentation.annotations.ApiIgnore;

View File

@ -4,7 +4,7 @@ import io.dataease.commons.license.DefaultLicenseService;
import io.dataease.commons.license.F2CLicenseResponse;
import io.dataease.plugins.common.dto.PluginSysMenu;
import io.dataease.plugins.common.service.PluginMenuService;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;

View File

@ -2,7 +2,7 @@ package io.dataease.provider;
import io.dataease.plugins.common.constants.DatasourceTypes;
import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.datasource.query.QueryProvider;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;

View File

@ -4,6 +4,7 @@ package io.dataease.provider.datasource;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
@ -40,7 +41,7 @@ public class ApiProvider extends Provider {
@Override
public List<String[]> getData(DatasourceRequest datasourceRequest) throws Exception {
ApiDefinition apiDefinition = checkApiDefinition(datasourceRequest);
String response = execHttpRequest(apiDefinition, apiDefinition.getQueryTimeout() == null || apiDefinition.getQueryTimeout()<=0 ? 30 : apiDefinition.getQueryTimeout());
String response = execHttpRequest(apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 30 : apiDefinition.getApiQueryTimeout());
return fetchResult(response, apiDefinition);
}
@ -68,7 +69,7 @@ public class ApiProvider extends Provider {
List<String[]> dataList = new ArrayList<>();
List<TableField> fieldList = new ArrayList<>();
ApiDefinition apiDefinition = checkApiDefinition(datasourceRequest);
String response = execHttpRequest(apiDefinition, apiDefinition.getQueryTimeout() == null || apiDefinition.getQueryTimeout()<=0 ? 30 : apiDefinition.getQueryTimeout());
String response = execHttpRequest(apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 30 : apiDefinition.getApiQueryTimeout());
fieldList = getTableFields(apiDefinition);
result.put("fieldList", fieldList);
@ -141,13 +142,13 @@ public class ApiProvider extends Provider {
switch (apiDefinition.getMethod()) {
case "GET":
List<String> params = new ArrayList<>();
List<String> params = new ArrayList<>();
for (Map<String, String> argument : apiDefinition.getRequest().getArguments()) {
if(StringUtils.isNotEmpty(argument.get("name")) && StringUtils.isNotEmpty(argument.get("value"))){
if (StringUtils.isNotEmpty(argument.get("name")) && StringUtils.isNotEmpty(argument.get("value"))) {
params.add(argument.get("name") + "=" + URLEncoder.encode(argument.get("value")));
}
}
if(CollectionUtils.isNotEmpty(params)){
if (CollectionUtils.isNotEmpty(params)) {
apiDefinition.setUrl(apiDefinition.getUrl() + "?" + StringUtils.join(params, "&"));
}
response = HttpClientUtil.get(apiDefinition.getUrl().trim(), httpClientConfig);
@ -167,7 +168,7 @@ public class ApiProvider extends Provider {
if (StringUtils.equalsAny(type, "Form_Data", "WWW_FORM")) {
if (apiDefinitionRequest.getBody().get("kvs") != null) {
Map<String, String> body = new HashMap<>();
JSONObject bodyObj = JSONObject.parseObject(apiDefinitionRequest.getBody().toString());
JSONObject bodyObj = JSONObject.parseObject(apiDefinitionRequest.getBody().toString(), Feature.IgnoreNotMatch);
JSONArray kvsArr = bodyObj.getJSONArray("kvs");
for (int i = 0; i < kvsArr.size(); i++) {
JSONObject kv = kvsArr.getJSONObject(i);
@ -267,9 +268,12 @@ public class ApiProvider extends Provider {
handleStr(apiDefinition, o.toString(), fields, rootPath);
}
} else {
JSONObject jsonObject = JSONObject.parseObject(jsonStr);
JSONObject jsonObject = JSONObject.parseObject(jsonStr, Feature.IgnoreNotMatch);
for (String s : jsonObject.keySet()) {
String value = jsonObject.getString(s);
if (StringUtils.isNotEmpty(value) && value.startsWith("{")) {
value = JSONObject.toJSONString(jsonObject.getJSONObject(s), SerializerFeature.WriteMapNullValue);
}
if (StringUtils.isNotEmpty(value) && value.startsWith("[")) {
JSONObject o = new JSONObject();
try {
@ -283,7 +287,7 @@ public class ApiProvider extends Provider {
} catch (Exception e) {
JSONArray array = new JSONArray();
array.add(StringUtils.isNotEmpty(jsonObject.getString(s)) ? jsonObject.getString(s) : "");
array.add(StringUtils.isNotEmpty(value) ? value : "");
o.put("value", array);
}
o.put("jsonPath", rootPath + "." + String.format(path, s));
@ -293,9 +297,9 @@ public class ApiProvider extends Provider {
}
} else if (StringUtils.isNotEmpty(value) && value.startsWith("{")) {
try {
JSONObject.parseObject(jsonStr);
JSONObject.parseObject(value, Feature.IgnoreNotMatch);
List<JSONObject> children = new ArrayList<>();
handleStr(apiDefinition, jsonObject.getString(s), children, rootPath + "." + String.format(path, s));
handleStr(apiDefinition, value, children, rootPath + "." + String.format(path, s));
JSONObject o = new JSONObject();
o.put("children", children);
o.put("childrenDataType", "OBJECT");
@ -304,12 +308,13 @@ public class ApiProvider extends Provider {
if (!hasItem(apiDefinition, fields, o)) {
fields.add(o);
}
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
JSONObject o = new JSONObject();
o.put("jsonPath", rootPath + "." + String.format(path, s));
setProperty(apiDefinition, o, s);
JSONArray array = new JSONArray();
array.add(StringUtils.isNotEmpty(jsonObject.getString(s)) ? jsonObject.getString(s) : "");
array.add(StringUtils.isNotEmpty(value) ? value : "");
o.put("value", array);
if (!hasItem(apiDefinition, fields, o)) {
fields.add(o);
@ -320,7 +325,7 @@ public class ApiProvider extends Provider {
o.put("jsonPath", rootPath + "." + String.format(path, s));
setProperty(apiDefinition, o, s);
JSONArray array = new JSONArray();
array.add(StringUtils.isNotEmpty(jsonObject.getString(s)) ? jsonObject.getString(s) : "");
array.add(StringUtils.isNotEmpty(value) ? value : "");
o.put("value", array);
if (!hasItem(apiDefinition, fields, o)) {
fields.add(o);
@ -376,9 +381,9 @@ public class ApiProvider extends Provider {
}
for (Object itemChild : itemChildren) {
boolean hasKey = false;
JSONObject itemChildObject = JSONObject.parseObject(itemChild.toString());
JSONObject itemChildObject = JSONObject.parseObject(itemChild.toString(), Feature.IgnoreNotMatch);
for (Object fieldChild : fieldChildren) {
JSONObject fieldChildObject = JSONObject.parseObject(fieldChild.toString());
JSONObject fieldChildObject = JSONObject.parseObject(fieldChild.toString(), Feature.IgnoreNotMatch);
if (itemChildObject.getString("jsonPath").equals(fieldChildObject.getString("jsonPath"))) {
mergeField(fieldChildObject, itemChildObject);
hasKey = true;
@ -403,10 +408,10 @@ public class ApiProvider extends Provider {
JSONArray fieldArrayChildren = new JSONArray();
for (Object fieldChild : fieldChildren) {
JSONObject jsonObject = JSONObject.parseObject(fieldChild.toString());
JSONObject jsonObject = JSONObject.parseObject(fieldChild.toString(), Feature.IgnoreNotMatch);
JSONObject find = null;
for (Object itemChild : itemChildren) {
JSONObject itemObject = JSONObject.parseObject(itemChild.toString());
JSONObject itemObject = JSONObject.parseObject(itemChild.toString(), Feature.IgnoreNotMatch);
if (jsonObject.getString("jsonPath").equals(itemObject.getString("jsonPath"))) {
find = itemObject;
}
@ -422,7 +427,7 @@ public class ApiProvider extends Provider {
private List<String[]> fetchResult(String result, ApiDefinition apiDefinition) {
List<String[]> dataList = new LinkedList<>();
if(apiDefinition.isUseJsonPath()){
if (apiDefinition.isUseJsonPath()) {
List<LinkedHashMap> currentData = new ArrayList<>();
Object object = JsonPath.read(result, apiDefinition.getJsonPath());
if (object instanceof List) {
@ -439,7 +444,7 @@ public class ApiProvider extends Provider {
}
dataList.add(row);
}
}else {
} else {
if (StringUtils.isNotEmpty(apiDefinition.getDataPath()) && CollectionUtils.isEmpty(apiDefinition.getJsonFields())) {
List<LinkedHashMap> currentData = new ArrayList<>();
Object object = JsonPath.read(result, apiDefinition.getDataPath());

View File

@ -97,7 +97,8 @@ public class JdbcProvider extends DefaultJdbcProvider {
}
String schemaPattern = "%";
if (datasourceRequest.getDatasource().getType().equalsIgnoreCase(DatasourceTypes.oracle.name())) {
schemaPattern = databaseMetaData.getUserName();
OracleConfiguration oracleConfiguration = new Gson().fromJson(datasourceRequest.getDatasource().getConfiguration(), OracleConfiguration.class);
schemaPattern = oracleConfiguration.getSchema();
}
ResultSet resultSet = databaseMetaData.getColumns(null, schemaPattern, tableNamePattern, "%");
while (resultSet.next()) {

View File

@ -92,17 +92,16 @@ public class DorisQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(DorisConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
.build();
List<SQLObj> xFields = new ArrayList<>();
int originSize = fields.size();
List<String> fieldList = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sortFields)) {
sortFields.forEach(item -> {
@ -168,6 +167,7 @@ public class DorisQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -196,6 +196,10 @@ public class DorisQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
String sql = st_sql.render();
@ -206,17 +210,11 @@ public class DorisQueryProvider extends QueryProvider {
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 1))
.build();
st.add("table", tableSQL);
List<SQLObj> outFieldList = new ArrayList<>();
for (int i = 0; i < originSize; i++) {
SQLObj fieldObj = xFields.get(i);
String outFieldAlias = tableSQL.getTableAlias() + "." + fieldObj.getFieldAlias();
outFieldList.add(SQLObj.builder().fieldName(outFieldAlias).fieldAlias(fieldObj.getFieldAlias()).build());
}
st.add("groups", outFieldList);
if (CollectionUtils.isNotEmpty(xOrders)) {
st.add("orders", xOrders);
return st.render() + " LIMIT 0, 10000000";
}
if (ObjectUtils.isNotEmpty(limit)) {
return st.render() + " LIMIT 0," + limit;
}
return st.render();
}
@ -268,8 +266,8 @@ public class DorisQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -93,11 +93,11 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MysqlConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -149,6 +149,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -165,6 +166,10 @@ public class MysqlQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
if (CollectionUtils.isNotEmpty(sortFields)) {
@ -178,7 +183,9 @@ public class MysqlQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
return st_sql.render() + " LIMIT 0," + limit;
}
return st_sql.render();
}
@ -229,8 +236,8 @@ public class MysqlQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sql + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -76,12 +76,12 @@ public class ApiProvider extends QueryProvider {
}
@Override
public String createQuerySQL(String s, List<DatasetTableField> list, boolean b, Datasource datasource, List<ChartFieldCustomFilterDTO> list1, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> list2) {
public String createQuerySQL(String s, List<DatasetTableField> list, boolean b, Datasource datasource, List<ChartFieldCustomFilterDTO> list1, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> list2, Long limit, String keyword) {
return null;
}
@Override
public String createQuerySQLAsTmp(String s, List<DatasetTableField> list, boolean b, List<ChartFieldCustomFilterDTO> list1, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> list2) {
public String createQuerySQLAsTmp(String s, List<DatasetTableField> list, boolean b, List<ChartFieldCustomFilterDTO> list1, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> list2, Long limit, String keyword) {
return null;
}

View File

@ -121,11 +121,11 @@ public class CKQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(CKConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -177,6 +177,7 @@ public class CKQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -194,6 +195,10 @@ public class CKQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
@ -208,6 +213,12 @@ public class CKQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@ -260,8 +271,8 @@ public class CKQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -90,11 +90,11 @@ public class Db2QueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(Db2Constants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -152,6 +152,7 @@ public class Db2QueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -170,6 +171,10 @@ public class Db2QueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
@ -184,6 +189,12 @@ public class Db2QueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@ -241,8 +252,8 @@ public class Db2QueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -120,11 +120,11 @@ public class EsQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(EsSqlLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -172,6 +172,7 @@ public class EsQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -190,6 +191,10 @@ public class EsQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
@ -205,6 +210,12 @@ public class EsQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@ -253,8 +264,8 @@ public class EsQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -82,11 +82,11 @@ public class HiveQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(HiveConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -134,6 +134,7 @@ public class HiveQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -151,6 +152,10 @@ public class HiveQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
@ -165,6 +170,12 @@ public class HiveQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@ -213,8 +224,8 @@ public class HiveQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -79,11 +79,11 @@ public class ImpalaQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(ImpalaConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -131,6 +131,7 @@ public class ImpalaQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -148,6 +149,10 @@ public class ImpalaQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
@ -163,12 +168,18 @@ public class ImpalaQueryProvider extends QueryProvider {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -92,11 +92,11 @@ public class MongoQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MongoConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -118,6 +118,7 @@ public class MongoQueryProvider extends QueryProvider {
String fieldName = "";
fieldName = originField;
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -137,6 +138,10 @@ public class MongoQueryProvider extends QueryProvider {
String whereTrees = transFilterTrees(tableObj, rowPermissionsTree);
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (whereTrees != null) wheres.add(whereTrees);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
@ -153,12 +158,19 @@ public class MongoQueryProvider extends QueryProvider {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -95,12 +95,12 @@ public class MysqlQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
private SQLObj buildSortField(DeSortField f, SQLObj tableObj, int index) {
@ -155,13 +155,12 @@ public class MysqlQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(MySQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
.build();
List<SQLObj> xFields = new ArrayList<>();
int originSize = fields.size();
List<String> fieldList = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(sortFields)) {
sortFields.forEach(item -> {
@ -223,6 +222,7 @@ public class MysqlQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -249,8 +249,12 @@ public class MysqlQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
String sql = st_sql.render();
ST st = stg.getInstanceOf("previewSql");
st.add("isGroup", false);
@ -260,23 +264,22 @@ public class MysqlQueryProvider extends QueryProvider {
.build();
st.add("table", tableSQL);
List<SQLObj> outFieldList = new ArrayList<>();
for (int i = 0; i < originSize; i++) {
SQLObj fieldObj = xFields.get(i);
String outFieldAlias = tableSQL.getTableAlias() + "." + fieldObj.getFieldAlias();
outFieldList.add(SQLObj.builder().fieldName(outFieldAlias).fieldAlias(fieldObj.getFieldAlias()).build());
}
st.add("groups", outFieldList);
if (CollectionUtils.isNotEmpty(xOrders)) {
st.add("orders", xOrders);
return st.render() + " LIMIT 0, 10000000";
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st.render(), view);
}
return st.render();
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -105,7 +105,7 @@ public class OracleQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(OracleConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(OracleConstants.ALIAS_FIX, String.format(TABLE_ALIAS_PREFIX, 0)))
@ -126,6 +126,10 @@ public class OracleQueryProvider extends QueryProvider {
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
@ -140,18 +144,24 @@ public class OracleQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
public void setSchema(SQLObj tableObj, Datasource ds) {
@ -253,6 +263,7 @@ public class OracleQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());

View File

@ -108,11 +108,11 @@ public class PgQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -162,6 +162,7 @@ public class PgQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -178,6 +179,10 @@ public class PgQueryProvider extends QueryProvider {
String whereTrees = transFilterTrees(tableObj, rowPermissionsTree);
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (whereTrees != null) wheres.add(whereTrees);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
@ -193,6 +198,14 @@ public class PgQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
}
return st_sql.render();
}
@ -240,8 +253,8 @@ public class PgQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -114,11 +114,11 @@ public class RedshiftQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(PgConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -168,6 +168,7 @@ public class RedshiftQueryProvider extends QueryProvider {
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
@ -184,6 +185,10 @@ public class RedshiftQueryProvider extends QueryProvider {
String whereTrees = transFilterTrees(tableObj, rowPermissionsTree);
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (whereTrees != null) wheres.add(whereTrees);
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
@ -200,6 +205,13 @@ public class RedshiftQueryProvider extends QueryProvider {
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
if (ObjectUtils.isNotEmpty(limit)) {
ChartViewWithBLOBs view = new ChartViewWithBLOBs();
view.setResultMode("custom");
view.setResultCount(Integer.parseInt(limit.toString()));
return sqlLimit(st_sql.render(), view);
}
return st_sql.render();
}
@ -247,8 +259,8 @@ public class RedshiftQueryProvider extends QueryProvider {
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override

View File

@ -97,7 +97,7 @@ public class SqlserverQueryProvider extends QueryProvider {
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree) {
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null);
return createQuerySQL(table, fields, isGroup, ds, fieldCustomFilter, rowPermissionsTree, null, null, null);
}
@Override
@ -105,13 +105,13 @@ public class SqlserverQueryProvider extends QueryProvider {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree);
}
@Override
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields);
public String createQuerySQLAsTmp(String sql, List<DatasetTableField> fields, boolean isGroup, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
return createQuerySQL("(" + sqlFix(sql) + ")", fields, isGroup, null, fieldCustomFilter, rowPermissionsTree, sortFields, limit, keyword);
}
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields) {
/*@Override
public String createQuerySQLWithLimit(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
@ -188,6 +188,105 @@ public class SqlserverQueryProvider extends QueryProvider {
xOrders.add(order);
}
}
if(limit != null){
SQLObj limitFiled = SQLObj.builder().limitFiled(" top " + limit + " ").build();
st_sql.add("limitFiled", limitFiled);
}
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}
return st_sql.render();
}*/
@Override
public String createQuerySQL(String table, List<DatasetTableField> fields, boolean isGroup, Datasource ds, List<ChartFieldCustomFilterDTO> fieldCustomFilter, List<DataSetRowPermissionsTreeDTO> rowPermissionsTree, List<DeSortField> sortFields, Long limit, String keyword) {
SQLObj tableObj = SQLObj.builder()
.tableName((table.startsWith("(") && table.endsWith(")")) ? table : String.format(SqlServerSQLConstants.KEYWORD_TABLE, table))
.tableAlias(String.format(TABLE_ALIAS_PREFIX, 0))
.build();
setSchema(tableObj, ds);
List<SQLObj> xFields = new ArrayList<>();
if (CollectionUtils.isNotEmpty(fields)) {
for (int i = 0; i < fields.size(); i++) {
DatasetTableField f = fields.get(i);
String originField;
if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 2) {
// 解析origin name中有关联的字段生成sql表达式
originField = calcFieldRegex(f.getOriginName(), tableObj);
} else if (ObjectUtils.isNotEmpty(f.getExtField()) && f.getExtField() == 1) {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
} else {
originField = String.format(SqlServerSQLConstants.KEYWORD_FIX, tableObj.getTableAlias(), f.getOriginName());
}
String fieldAlias = String.format(SQLConstants.FIELD_ALIAS_X_PREFIX, i);
String fieldName;
// 处理横轴字段
if (f.getDeExtractType() == DeTypeConstants.DE_TIME) { // 时间 转为 数值
if (f.getDeType() == DeTypeConstants.DE_INT || f.getDeType() == DeTypeConstants.DE_FLOAT) {
fieldName = String.format(SqlServerSQLConstants.UNIX_TIMESTAMP, originField);
} else {
fieldName = originField;
}
} else if (f.getDeExtractType() == DeTypeConstants.DE_STRING) {
if (f.getDeType() == DeTypeConstants.DE_INT) {
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
} else if (f.getDeType() == DeTypeConstants.DE_FLOAT) {
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
} else if (f.getDeType() == DeTypeConstants.DE_TIME) { //字符串转时间
fieldName = String.format(SqlServerSQLConstants.STRING_TO_DATE, originField, StringUtils.isNotEmpty(f.getDateFormat()) ? f.getDateFormat() : SqlServerSQLConstants.DEFAULT_DATE_FORMAT);
} else {
fieldName = originField;
}
} else {
if (f.getDeType() == DeTypeConstants.DE_TIME) { // 数值转时间
String cast = String.format(SqlServerSQLConstants.LONG_TO_DATE, originField + "/1000");
fieldName = String.format(SqlServerSQLConstants.FROM_UNIXTIME, cast);
} else if (f.getDeType() == DeTypeConstants.DE_INT) {
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_INT_FORMAT, originField);
} else {
fieldName = originField;
}
}
xFields.add(SQLObj.builder()
.fieldOriginName(originField)
.fieldName(fieldName)
.fieldAlias(fieldAlias)
.build());
}
}
STGroup stg = new STGroupFile(SQLConstants.SQL_TEMPLATE);
ST st_sql = stg.getInstanceOf("previewSql");
st_sql.add("isGroup", isGroup);
if (CollectionUtils.isNotEmpty(xFields)) st_sql.add("groups", xFields);
if (ObjectUtils.isNotEmpty(tableObj)) st_sql.add("table", tableObj);
String customWheres = transCustomFilterList(tableObj, fieldCustomFilter);
// row permissions tree
String whereTrees = transFilterTrees(tableObj, rowPermissionsTree);
List<String> wheres = new ArrayList<>();
if (customWheres != null) wheres.add(customWheres);
if (whereTrees != null) wheres.add(whereTrees);
if (StringUtils.isNotBlank(keyword)) {
String keyWhere = "("+transKeywordFilterList(tableObj, xFields, keyword)+")";
wheres.add(keyWhere);
}
if (CollectionUtils.isNotEmpty(wheres)) st_sql.add("filters", wheres);
List<SQLObj> xOrders = new ArrayList<>();
if (CollectionUtils.isNotEmpty(sortFields)) {
int step = fields.size();
for (int i = step; i < (step + sortFields.size()); i++) {
DeSortField deSortField = sortFields.get(i - step);
SQLObj order = buildSortField(deSortField, tableObj, i);
xOrders.add(order);
}
}
if(ObjectUtils.isNotEmpty(limit)){
SQLObj limitFiled = SQLObj.builder().limitFiled(" top " + limit + " ").build();
st_sql.add("limitFiled", limitFiled);
}
if (ObjectUtils.isNotEmpty(xOrders)) {
st_sql.add("orders", xOrders);
}

View File

@ -43,7 +43,7 @@ import io.dataease.plugins.common.dto.dataset.SqlVariableDetails;
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
import io.dataease.plugins.common.request.permission.DataSetRowPermissionsTreeDTO;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.datasource.entity.PageInfo;
import io.dataease.plugins.datasource.provider.Provider;
import io.dataease.plugins.datasource.query.QueryProvider;
@ -357,6 +357,10 @@ public class ChartViewService {
}
List<ChartViewFieldDTO> extStack = gson.fromJson(view.getExtStack(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
if (StringUtils.equalsIgnoreCase(view.getType(), "scatter") && StringUtils.equalsIgnoreCase(view.getRender(), "antv")) {
xAxis.addAll(extStack);
}
if (CollectionUtils.isNotEmpty(xAxis) && StringUtils.equals(xAxis.get(0).getGroupType(), "q") && StringUtils.equalsIgnoreCase(view.getRender(), "antv")) {
List<ChartViewFieldDTO> xAxisExt = gson.fromJson(view.getXAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
@ -451,7 +455,7 @@ public class ChartViewService {
List<ChartViewFieldDTO> xAxisExtList = gson.fromJson(view.getXAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
xAxisExtList.forEach((x) -> {
x.setExtField(1);
x.setBusiType("race-bar");
});
xAxis.addAll(xAxisExtList);
} else {
@ -1031,7 +1035,7 @@ public class ChartViewService {
List<ChartViewFieldDTO> xAxisExtList = gson.fromJson(view.getXAxisExt(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
xAxisExtList.forEach((x) -> {
x.setExtField(1);
x.setBusiType("race-bar");
});
xAxis.addAll(xAxisExtList);
}
@ -1290,7 +1294,9 @@ public class ChartViewService {
String compareFieldId = compareCalc.getField();// 选中字段
// 计算指标对应的下标
int dataIndex = 0;// 数据字段下标
if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
if (CollectionUtils.isNotEmpty(xAxis) && StringUtils.equals(xAxis.get(0).getGroupType(), "q") && StringUtils.equalsIgnoreCase(view.getRender(), "antv")) {
dataIndex = extStack.size() + i;
} else if (StringUtils.containsIgnoreCase(view.getType(), "stack")) {
dataIndex = xAxis.size() + extStack.size() + i;
} else {
dataIndex = xAxis.size() + i;
@ -1882,7 +1888,15 @@ public class ChartViewService {
getIndex = i;
}
}
if (StringUtils.equalsIgnoreCase(fieldType, "extStack")) {
boolean skipAddIndex = false;
if (StringUtils.equalsIgnoreCase(fieldType, "extStack") && StringUtils.equalsIgnoreCase("antv", view.getRender()) && StringUtils.equalsIgnoreCase("scatter", view.getType())) {
List<ChartViewFieldDTO> xAxis = gson.fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
if (CollectionUtils.isNotEmpty(xAxis) && StringUtils.equalsIgnoreCase(xAxis.get(0).getGroupType(), "q")) {
skipAddIndex = true;
}
}
if (StringUtils.equalsIgnoreCase(fieldType, "extStack") && !skipAddIndex) {
List<ChartViewFieldDTO> stack = gson.fromJson(view.getXAxis(), new TypeToken<List<ChartViewFieldDTO>>() {
}.getType());
index += stack.size();

View File

@ -19,7 +19,7 @@ import io.dataease.dto.chart.ChartViewDTO;
import io.dataease.dto.panel.PanelGroupDTO;
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
import io.dataease.plugins.common.request.chart.ChartExtFilterRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.service.panel.PanelGroupService;
import java.io.File;

View File

@ -9,9 +9,9 @@ public interface DataSetFieldService {
List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception;
List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception;
List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm, String keyword) throws Exception;
List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception;
List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm, String keyword) throws Exception;
List<Object> chineseSort(List<Object> list, DeSortDTO sortDTO) throws Exception;
}

View File

@ -47,9 +47,9 @@ import io.dataease.plugins.common.dto.datasource.TableField;
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
import io.dataease.plugins.common.request.permission.DataSetRowPermissionsTreeDTO;
import io.dataease.plugins.common.request.permission.DatasetRowPermissionsTreeObj;
import io.dataease.plugins.common.util.ClassloaderResponsity;
import io.dataease.plugins.datasource.provider.Provider;
import io.dataease.plugins.datasource.query.QueryProvider;
import io.dataease.plugins.loader.ClassloaderResponsity;
import io.dataease.plugins.xpack.auth.dto.request.ColumnPermissionItem;
import io.dataease.provider.DDLProvider;
import io.dataease.provider.ProviderFactory;
@ -1116,6 +1116,19 @@ public class DataSetTableService {
}
private String handlePlainSelect(PlainSelect plainSelect, Select statementSelect, String dsType) throws Exception {
List<SelectItem> selectItems = new ArrayList<>();
plainSelect.getSelectItems().forEach(selectItem -> {
System.out.println(selectItem);
System.out.println(selectItem instanceof PlainSelect);
System.out.println(selectItem instanceof SubSelect);
selectItems.add(selectItem);
});
plainSelect.addSelectItems(selectItems);
FromItem fromItem = plainSelect.getFromItem();
if (fromItem instanceof SubSelect) {
SelectBody selectBody = ((SubSelect) fromItem).getSelectBody();
@ -2436,10 +2449,11 @@ public class DataSetTableService {
});
data = (isPreview && noModelDataListener.getData().size() > 1000 ? new ArrayList<>(data.subList(0, 1000)) : data);
if (isPreview) {
for (List<String> datum : data) {
for (int i = 0; i < datum.size(); i++) {
if (i < fields.size()) {
cellType(datum.get(i), i, fields.get(i));
for (int i = 0; i < data.size(); i++) {
List<String> datum = data.get(i);
for (int j = 0; j < datum.size(); j++) {
if (j < fields.size()) {
cellType(datum.get(j), i, fields.get(j));
}
}
}
@ -2759,7 +2773,7 @@ public class DataSetTableService {
}
}
if(CollectionUtils.isNotEmpty(repeat)){
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat") + ": " + String.valueOf(repeat));
DataEaseException.throwException(Translator.get("i18n_excel_field_repeat") + "" + String.valueOf(repeat));
}
}
@ -2865,9 +2879,8 @@ public class DataSetTableService {
visitBinaryExpression(likeExpression,
(likeExpression.isNot() ? " NOT" : "") + (likeExpression.isCaseInsensitive() ? " ILIKE " : " LIKE "));
String escape = likeExpression.getEscape();
if (escape != null) {
buffer.append(" ESCAPE '").append(escape).append('\'');
if (likeExpression.getEscape() != null) {
buffer.append(" ESCAPE '").append(likeExpression.getEscape()).append('\'');
}
}

View File

@ -82,12 +82,13 @@ public class DataSetTableTaskService {
}
datasetTableTaskMapper.insert(datasetTableTask);
} else {
datasetTableTask.setStatus(TaskStatus.Underway.name());
datasetTableTask.setStatus(null);
datasetTableTask.setLastExecTime(null);
datasetTableTask.setLastExecStatus(null);
datasetTableTaskMapper.updateByPrimaryKeySelective(datasetTableTask);
}
scheduleService.deleteSchedule(datasetTableTask);
scheduleService.addSchedule(datasetTableTask);
// simple

View File

@ -223,7 +223,7 @@ public class ExtractDataService {
for (DatasetTableField datasetTableField : datasetTableFields) {
boolean add = true;
for (DatasetTableField oldField : oldFields) {
if (oldField.getDataeaseName().equalsIgnoreCase(datasetTableField.getDataeaseName())) {
if (oldField.getDataeaseName().equalsIgnoreCase(datasetTableField.getDataeaseName()) && oldField.getType().equalsIgnoreCase(datasetTableField.getType())) {
add = false;
}
}

View File

@ -11,7 +11,7 @@ import io.dataease.plugins.common.base.domain.DatasetTable;
import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.dto.request.*;
import io.dataease.plugins.xpack.auth.dto.response.Item;
import io.dataease.plugins.xpack.auth.service.ColumnPermissionService;

View File

@ -12,7 +12,7 @@ import io.dataease.plugins.common.request.permission.DataSetRowPermissionsTreeDT
import io.dataease.plugins.common.request.permission.DatasetRowPermissionsTreeItem;
import io.dataease.plugins.common.request.permission.DatasetRowPermissionsTreeObj;
import io.dataease.plugins.common.request.permission.DatasetRowPermissionsTreeRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.auth.service.RowPermissionTreeService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;

View File

@ -1,6 +1,7 @@
package io.dataease.service.dataset.impl.direct;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ArrayUtil;
import com.google.gson.Gson;
import io.dataease.commons.exception.DEException;
import io.dataease.commons.model.BaseTreeNode;
@ -11,6 +12,7 @@ import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.dto.dataset.DeSortDTO;
import io.dataease.i18n.Translator;
import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs;
import io.dataease.plugins.common.base.domain.DatasetTable;
import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.Datasource;
@ -58,14 +60,14 @@ public class DirectFieldService implements DataSetFieldService {
public List<Object> fieldValues(String fieldId, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception {
List<String> fieldIds = new ArrayList<>();
fieldIds.add(fieldId);
return fieldValues(fieldIds, null, userId, userPermissions, false, rowAndColumnMgm);
return fieldValues(fieldIds, null, userId, userPermissions, false, rowAndColumnMgm, null);
}
@Override
public List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm) throws Exception {
public List<Object> fieldValues(String fieldId, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean rowAndColumnMgm, String keyword) throws Exception {
List<String> fieldIds = new ArrayList<>();
fieldIds.add(fieldId);
return fieldValues(fieldIds, sortDTO, userId, userPermissions, false, rowAndColumnMgm);
return fieldValues(fieldIds, sortDTO, userId, userPermissions, false, rowAndColumnMgm, keyword);
}
public List<DeSortField> buildSorts(List<DatasetTableField> allFields, DeSortDTO sortDTO) {
@ -87,19 +89,19 @@ public class DirectFieldService implements DataSetFieldService {
}
String id = sortDTO.getId();
String sortStr = StringUtils.equalsIgnoreCase("chineseDesc", id) ? "desc" : "asc";
List<Object> result = CollectionUtil.sort(list, (v1, v2) -> {
return CollectionUtil.sort(list, (v1, v2) -> {
Collator instance = Collator.getInstance(Locale.CHINESE);
if (StringUtils.equals("desc", sortStr)) {
return instance.compare(v2, v1);
}
return instance.compare(v1, v2);
});
return result;
}
@Override
public List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm) throws Exception {
public List<Object> fieldValues(List<String> fieldIds, DeSortDTO sortDTO, Long userId, Boolean userPermissions, Boolean needMapping, Boolean rowAndColumnMgm, String keyword) throws Exception {
String fieldId = fieldIds.get(0);
DatasetTableField field = dataSetTableFieldsService.selectByPrimaryKey(fieldId);
if (field == null || StringUtils.isEmpty(field.getTableId())) return null;
@ -112,12 +114,12 @@ public class DirectFieldService implements DataSetFieldService {
List<DeSortField> deSortFields = buildSorts(fields, sortDTO);
Boolean needSort = CollectionUtils.isNotEmpty(deSortFields);
boolean needSort = CollectionUtils.isNotEmpty(deSortFields);
final List<String> allTableFieldIds = fields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
boolean multi = fieldIds.stream().anyMatch(item -> !allTableFieldIds.contains(item));
if (multi && needMapping) {
DEException.throwException("Cross multiple dataset is not supported");
DEException.throwException(Translator.get("i18n_dataset_cross_multiple"));
}
List<DatasetTableField> permissionFields = fields;
@ -148,10 +150,10 @@ public class DirectFieldService implements DataSetFieldService {
}
}
DatasourceRequest datasourceRequest = new DatasourceRequest();
Provider datasourceProvider = null;
String createSQL = null;
Long calcLimit = needMapping ? null : 1000L;
if (datasetTable.getMode() == 0) {// 直连
if (StringUtils.isEmpty(datasetTable.getDataSourceId())) return null;
Datasource ds = datasourceService.get(datasetTable.getDataSourceId());
@ -165,25 +167,26 @@ public class DirectFieldService implements DataSetFieldService {
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.DB.toString())) {
datasourceRequest.setTable(dataTableInfoDTO.getTable());
createSQL = qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, !needSort, ds, customFilter, rowPermissionsTree, deSortFields);
createSQL = qp.createQuerySQL(dataTableInfoDTO.getTable(), permissionFields, !needSort, ds, customFilter, rowPermissionsTree, deSortFields, calcLimit, keyword);
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.SQL.toString())) {
String sql = dataTableInfoDTO.getSql();
if (dataTableInfoDTO.isBase64Encryption()) {
sql = new String(java.util.Base64.getDecoder().decode(sql));
}
sql = dataSetTableService.handleVariableDefaultValue(sql, null, ds.getType(), false);
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields);
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields, calcLimit, keyword);
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.CUSTOM.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
List<DataSetTableUnionDTO> listUnion = dataSetTableUnionService.listByTableId(dt.getList().get(0).getTableId());
String sql = dataSetTableService.getCustomSQLDatasource(dt, listUnion, ds);
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields);
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields, calcLimit, keyword);
} else if (StringUtils.equalsIgnoreCase(datasetTable.getType(), DatasetType.UNION.toString())) {
DataTableInfoDTO dt = new Gson().fromJson(datasetTable.getInfo(), DataTableInfoDTO.class);
String sql = (String) dataSetTableService.getUnionSQLDatasource(dt, ds).get("sql");
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields);
createSQL = qp.createQuerySQLAsTmp(sql, permissionFields, !needSort, customFilter, rowPermissionsTree, deSortFields, calcLimit, keyword);
}
datasourceRequest.setQuery(qp.createSQLPreview(createSQL, null));
datasourceRequest.setQuery(needMapping ? createSQL : qp.createSQLPreview(createSQL, null));
} else if (datasetTable.getMode() == 1) {// 抽取
// 连接doris构建doris数据源查询
Datasource ds = engineService.getDeEngine();
@ -193,18 +196,36 @@ public class DirectFieldService implements DataSetFieldService {
String tableName = "ds_" + datasetTable.getId().replaceAll("-", "_");
datasourceRequest.setTable(tableName);
QueryProvider qp = ProviderFactory.getQueryProvider(ds.getType());
createSQL = qp.createQuerySQL(tableName, permissionFields, !needSort, null, customFilter, rowPermissionsTree, deSortFields);
datasourceRequest.setQuery(qp.createSQLPreview(createSQL, null));
createSQL = qp.createQuerySQL(tableName, permissionFields, !needSort, null, customFilter, rowPermissionsTree, deSortFields, calcLimit, keyword);
datasourceRequest.setQuery(createSQL);
}
permissionFields = permissionFields.stream().filter(f -> fieldIds.contains(f.getId())).collect(Collectors.toList());
int originSize = permissionFields.size();
boolean existExtSortField = false;
if (CollectionUtils.isNotEmpty(deSortFields)) {
List<String> fieldList = permissionFields.stream().map(DatasetTableField::getId).collect(Collectors.toList());
for (DeSortField sField : deSortFields) {
int indexOf = fieldList.indexOf(sField.getId());
if (indexOf == -1) {
existExtSortField = true;
permissionFields.add(sField);
} else {
permissionFields.set(indexOf, sField);
}
}
}
LogUtil.info(datasourceRequest.getQuery());
datasourceRequest.setPermissionFields(permissionFields);
assert datasourceProvider != null;
List<String[]> rows = datasourceProvider.getData(datasourceRequest);
if (!needMapping) {
List<Object> results = rows.stream().map(row -> row[0]).distinct().collect(Collectors.toList());
return results;
return rows.stream().map(row -> row[0]).distinct().collect(Collectors.toList());
}
Set<String> pkSet = new HashSet<>();
if (CollectionUtils.isNotEmpty(rows) && existExtSortField && originSize > 0) {
rows = rows.stream().map(row -> ArrayUtil.sub(row, 0, originSize)).collect(Collectors.toList());
}
List<BaseTreeNode> treeNodes = rows.stream().map(row -> buildTreeNode(row, pkSet)).flatMap(Collection::stream).collect(Collectors.toList());
List tree = TreeUtils.mergeDuplicateTree(treeNodes, TreeUtils.DEFAULT_ROOT);
return tree;

View File

@ -40,7 +40,7 @@ import io.dataease.plugins.common.dto.datasource.DataSourceType;
import io.dataease.plugins.common.dto.datasource.TableDesc;
import io.dataease.plugins.common.entity.GlobalTaskEntity;
import io.dataease.plugins.common.request.datasource.DatasourceRequest;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.datasource.entity.JdbcConfiguration;
import io.dataease.plugins.datasource.provider.Provider;
import io.dataease.provider.ProviderFactory;

View File

@ -2,7 +2,7 @@ package io.dataease.service.message.service.strategy;
import io.dataease.auth.service.AuthUserService;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.dingtalk.service.DingtalkXpackService;
import io.dataease.service.message.service.SendService;
import io.dataease.service.sys.SysUserService;

View File

@ -2,7 +2,7 @@ package io.dataease.service.message.service.strategy;
import io.dataease.auth.service.AuthUserService;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.lark.service.LarkXpackService;
import io.dataease.service.message.service.SendService;
import io.dataease.service.sys.SysUserService;

View File

@ -3,7 +3,8 @@ package io.dataease.service.message.service.strategy;
import io.dataease.auth.service.AuthUserService;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.larksuite.service.LarksuiteXpackService;
import io.dataease.service.message.service.SendService;
import io.dataease.service.sys.SysUserService;

View File

@ -2,7 +2,7 @@ package io.dataease.service.message.service.strategy;
import io.dataease.auth.service.AuthUserService;
import io.dataease.plugins.common.base.domain.SysUserAssist;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.wecom.service.WecomXpackService;
import io.dataease.service.message.service.SendService;
import io.dataease.service.sys.SysUserService;

View File

@ -63,6 +63,10 @@ public class SysUserService {
@Resource
private AuthUserService authUserService;
public Long uidByAccount(String account) {
return extSysUserMapper.queryUserId(account);
}
public List<SysUserGridResponse> query(UserGridRequest request) {

View File

@ -12,7 +12,7 @@ import io.dataease.plugins.common.base.domain.FileMetadata;
import io.dataease.plugins.common.base.domain.SystemParameter;
import io.dataease.plugins.common.base.domain.SystemParameterExample;
import io.dataease.plugins.common.base.mapper.SystemParameterMapper;
import io.dataease.plugins.config.SpringContextUtil;
import io.dataease.plugins.common.util.SpringContextUtil;
import io.dataease.plugins.xpack.cas.dto.CasSaveResult;
import io.dataease.plugins.xpack.cas.service.CasXpackService;
import io.dataease.plugins.xpack.display.service.DisplayXpackService;
@ -22,7 +22,6 @@ import io.dataease.service.datasource.DatasourceService;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;

View File

@ -82,6 +82,7 @@ i18n_login_type_error=Login type error
i18n_account_is_locked=Account is locked
i18n_datasource_delete=Data source is deleted
i18n_dataset_delete=Data set is deleted
i18n_dataset_cross_multiple=Cross multiple dataset is not supported
i18n_dataset_no_permission=Data set no permission
i18n_chart_delete=Chart is delete
i18n_not_exec_add_sync=There is no completed synchronization task. Incremental synchronization cannot be performed
@ -275,4 +276,5 @@ I18N_PANEL_PDF_TEMPLATE_ONLY_PIC=Default template only screenshot
\u8FB9\u68469=Border 9
\u8FB9\u684610=Border 10
I18n_name_cant_empty=Name can not be empty!
I18n_del_admin_tips=Forbidden to delete the admin account
I18n_del_admin_tips=Forbidden to delete the admin account
I18N_NO_DRIVER_PERMISSION=Do not have permissions!

View File

@ -82,6 +82,7 @@ i18n_login_type_error=\u767B\u5F55\u65B9\u5F0F\u9519\u8BEF
i18n_account_is_locked=\u8D26\u6237\u5DF2\u9501\u5B9A
i18n_datasource_delete=\u5F53\u524D\u7528\u5230\u7684\u6570\u636E\u6E90\u5DF2\u88AB\u5220\u9664
i18n_dataset_delete=\u5F53\u524D\u7528\u5230\u7684\u6570\u636E\u96C6\u5DF2\u88AB\u5220\u9664
i18n_dataset_cross_multiple=\u7981\u6B62\u8DE8\u6570\u636E\u96C6\u591A\u5B57\u6BB5
i18n_dataset_no_permission=\u5F53\u524D\u7528\u5230\u7684\u6570\u636E\u96C6\u6CA1\u6709\u6743\u9650
i18n_chart_delete=\u5F53\u524D\u7528\u5230\u7684\u89C6\u56FE\u5DF2\u88AB\u5220\u9664
i18n_not_exec_add_sync=\u6CA1\u6709\u5DF2\u5B8C\u6210\u7684\u540C\u6B65\u4EFB\u52A1\uFF0C\u65E0\u6CD5\u8FDB\u884C\u589E\u91CF\u540C\u6B65
@ -92,7 +93,7 @@ i18n_sql_add_not_matching=\u589E\u91CF\u6DFB\u52A0 SQL \u7684\u6570\u636E\u5217\
i18n_sql_delete_not_matching=\u589E\u91CF\u5220\u9664 SQL \u7684\u6570\u636E\u5217\u4E0E\u6570\u636E\u96C6\u4E0D\u5339\u914D,
i18n_cst_ds_tb_or_field_deleted=\u81EA\u5B9A\u4E49\u6570\u636E\u96C6\u6240\u5173\u8054\u6570\u636E\u88AB\u5220\u9664\u6216\u5B57\u6BB5\u53D1\u751F\u53D8\u5316\uFF0C\u65E0\u6CD5\u6B63\u5E38\u663E\u793A
i18n_no_all_delete_privilege_folder=\u8BE5\u76EE\u5F55\u4E0B\u5B58\u5728\u6CA1\u6709\u7BA1\u7406\u6743\u9650\u6216\u67E5\u770B\u6743\u9650\u7684\u8D44\u6E90\uFF0C\u65E0\u6CD5\u5220\u9664
i18n_excel_field_repeat=\u5b58\u5728\u91cd\u590d\u5b57\u6bb5\uff1a
i18n_excel_field_repeat=\u5B58\u5728\u91CD\u590D\u5B57\u6BB5\uFF1A
i18n_schema_is_empty=\u6570\u636E\u5E93 Schema \u4E3A\u7A7A
\u7AD9\u5185\u6D88\u606F=\u6D88\u606F\u4E2D\u5FC3
\u6240\u6709\u6D88\u606F=\u6240\u6709\u6D88\u606F
@ -266,4 +267,5 @@ I18N_PANEL_PDF_TEMPLATE_WITH_PARAMS=\u9ED8\u8BA4\u6A21\u677F(\u52A0\u4EEA\u8868\
I18N_PANEL_PDF_TEMPLATE_ONLY_PIC=\u9ED8\u8BA4\u6A21\u677F(\u53EA\u622A\u56FE)
I18n_name_cant_empty=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\uFF01
I18n_del_admin_tips=\u7981\u6B62\u5220\u9664admin\u8D26\u53F7
I18N_NO_DRIVER_PERMISSION=\u6ca1\u6709\u6743\u9650\uff01

View File

@ -82,6 +82,7 @@ i18n_login_type_error=\u767B\u9304\u65B9\u5F0F\u932F\u8AA4
i18n_account_is_locked=\u8CEC\u6236\u5DF2\u9396\u5B9A
i18n_datasource_delete=\u7576\u524D\u7528\u5230\u7684\u6578\u64DA\u6E90\u5DF2\u88AB\u522A\u9664
i18n_dataset_delete=\u7576\u524D\u7528\u5230\u7684\u6578\u64DA\u96C6\u5DF2\u88AB\u522A\u9664
i18n_dataset_cross_multiple=\u7981\u6B62\u8DE8\u6578\u64DA\u96C6\u591A\u5B57\u6BB5
i18n_dataset_no_permission=\u7576\u524D\u7528\u5230\u7684\u6578\u64DA\u96C6\u6C92\u6709\u6B0A\u9650
i18n_chart_delete=\u7576\u524D\u7528\u5230\u7684\u8996\u5716\u5DF2\u88AB\u522A\u9664
i18n_not_exec_add_sync=\u6C92\u6709\u5DF2\u7D93\u5B8C\u6210\u7684\u540C\u6B65\u4EFB\u52D9\uFF0C\u7121\u6CD5\u9032\u884C\u589E\u91CF\u540C\u6B65
@ -92,7 +93,7 @@ i18n_sql_add_not_matching=\u589E\u91CF\u6DFB\u52A0 sql \u7684\u6578\u64DA\u5217\
i18n_sql_delete_not_matching=\u589E\u91CF\u522A\u9664 sql \u7684\u6578\u64DA\u5217\u8207\u6578\u64DA\u96C6\u4E0D\u5339\u914D,
i18n_cst_ds_tb_or_field_deleted=\u81EA\u5B9A\u7FA9\u6578\u64DA\u96C6\u6240\u95DC\u806F\u6578\u64DA\u88AB\u522A\u9664\u6216\u5B57\u6BB5\u767C\u751F\u8B8A\u5316\uFF0C\u7121\u6CD5\u6B63\u5E38\u986F\u793A
i18n_no_all_delete_privilege_folder=\u8A72\u76EE\u9304\u4E0B\u5B58\u5728\u6C92\u6709\u7BA1\u7406\u6B0A\u9650\u6216\u67E5\u770B\u6B0A\u9650\u7684\u8CC7\u6E90\uFF0C\u7121\u6CD5\u522A\u9664
i18n_excel_field_repeat=\u5b58\u5728\u91cd\u5fa9\u5b57\u6bb5\uff1a
i18n_excel_field_repeat=\u5B58\u5728\u91CD\u5FA9\u5B57\u6BB5\uFF1A
i18n_schema_is_empty=\u6578\u64DA\u5EAB Schema \u70BA\u7A7A
\u7AD9\u5185\u6D88\u606F=\u6D88\u606F\u4E2D\u5FC3
\u6240\u6709\u6D88\u606F=\u6240\u6709\u6D88\u606F
@ -271,4 +272,5 @@ I18N_PANEL_PDF_TEMPLATE_ONLY_PIC=\u9ED8\u8A8D\u6A21\u677F(\u53EA\u622A\u5716)
\u8FB9\u68469=\u908A\u6846 9
\u8FB9\u684610=\u908A\u6846 10
I18n_name_cant_empty=\u540D\u7A31\u4E0D\u80FD\u70BA\u7A7A\uFF01
I18n_del_admin_tips=\u7981\u6B62\u522A\u9664admin\u8CEC\u865F
I18n_del_admin_tips=\u7981\u6B62\u522A\u9664admin\u8CEC\u865F
I18N_NO_DRIVER_PERMISSION=\u6c92\u6709\u8a31\u53ef\u6b0a\uff01

View File

@ -1,6 +1,6 @@
{
"name": "dataease",
"version": "1.18.12",
"version": "1.18.13",
"description": "dataease front",
"private": true,
"scripts": {

View File

@ -138,8 +138,8 @@
<span class="icon iconfont icon-adaptor icon16" />
<span class="text14 margin-left8">{{ $t('panel.auto_size_adaptor') }}</span>
<el-switch
v-model="autoSizeAdaptorSwitch"
:class="[{['grid-active']: autoSizeAdaptorSwitch},'margin-left8']"
v-model="canvasStyleData.autoSizeAdaptor"
:class="[{['grid-active']: canvasStyleData.autoSizeAdaptor},'margin-left8']"
size="mini"
@change="showSizeAdaptorSwitchChange"
/>
@ -285,7 +285,6 @@ export default {
return {
showPageLine: false,
showGridSwitch: false,
autoSizeAdaptorSwitch: true,
mobileLayoutInitStatus: false,
isShowPreview: false,
needToChange: [
@ -346,7 +345,6 @@ export default {
this.scale = this.canvasStyleData.scale
this.mobileLayoutInitStatus = this.mobileLayoutStatus
this.showGridSwitch = this.canvasStyleData.aidedDesign.showGrid
this.autoSizeAdaptorSwitch = this.canvasStyleData.autoSizeAdaptor || true
this.showPageLine = this.canvasStyleData.pdfPageLine?.showPageLine
this.autoCache()
},
@ -640,7 +638,7 @@ export default {
},
showSizeAdaptorSwitchChange() {
this.$store.commit('canvasChange')
this.canvasStyleData.autoSizeAdaptor = !this.canvasStyleData.autoSizeAdaptor
// this.canvasStyleData.autoSizeAdaptor = !this.canvasStyleData.autoSizeAdaptor
eventBus.$emit('componentSizeAdaptorChange')
},
showPageLineChange() {

View File

@ -2,7 +2,7 @@
<div
:style="getOutStyleDefault(config.style)"
class="component component-outer"
:class="{'component-active': filterActive}"
:class="{'component-active': filterActive, 'user-view': config.component === 'user-view'}"
@click="handleClick"
@mousedown="elementMouseDown"
>
@ -398,4 +398,11 @@ export default {
.component-active {
z-index: 1;
}
.fullscreen {
transform: translate(0);
.main_view {
z-index: 0;
}
}
</style>

View File

@ -145,7 +145,7 @@
:target="curComponent.hyperlinks.openMode "
:href="curComponent.hyperlinks.content "
>
<i class="icon iconfont icon-com-jump" />
<i class="icon iconfont icon-com-jump"/>
</a>
</span>
@ -193,7 +193,7 @@
</template>
<script>
import { mapState } from 'vuex'
import {mapState} from 'vuex'
import bus from '@/utils/bus'
import SettingMenu from '@/components/canvas/components/editor/SettingMenu'
import LinkageField from '@/components/canvas/components/editor/LinkageField'
@ -202,13 +202,13 @@ import FieldsList from '@/components/canvas/components/editor/FieldsList'
import LinkJumpSet from '@/views/panel/linkJumpSet'
import Background from '@/views/background/index'
import MapLayerController from '@/views/chart/components/map/MapLayerController'
import { uploadFileResult } from '@/api/staticResource/staticResource'
import {uploadFileResult} from '@/api/staticResource/staticResource'
import eventBus from '@/components/canvas/utils/eventBus'
import { hasDataPermission } from '@/utils/permission'
import { exportExcelDownload } from '@/components/canvas/utils/utils'
import {hasDataPermission} from '@/utils/permission'
import {exportExcelDownload} from '@/components/canvas/utils/utils'
export default {
components: { Background, LinkJumpSet, FieldsList, SettingMenu, LinkageField, MapLayerController },
components: {Background, LinkJumpSet, FieldsList, SettingMenu, LinkageField, MapLayerController},
props: {
canvasId: {
@ -467,7 +467,7 @@ export default {
}
},
showViewDetails(openType = 'details') {
this.$emit('showViewDetails', { openType: openType })
this.$emit('showViewDetails', {openType: openType})
},
exportExcelDownload() {
exportExcelDownload(this.chart)
@ -574,6 +574,7 @@ export default {
<style lang="scss" scoped>
.bar-main {
line-height: 24px;
position: absolute;
float: right;
z-index: 10;

View File

@ -164,6 +164,7 @@ export default {
this.drawLeft = 'none'
this.drawRight = 'auto'
}
this.setEdit()
},
viewInit() {
bus.$on('fieldSelect-' + this.element.propValue.viewId, this.fieldSelect)

View File

@ -108,7 +108,6 @@
<table-normal
v-else-if="tableShowFlag"
:ref="element.propValue.id"
:show-summary="chart.type === 'table-normal'"
:chart="chart"
:track-menu="trackMenu"
class="table-class"
@ -375,17 +374,17 @@ export default {
computed: {
// 使filter
initLoad() {
return !(this.isEdit && this.currentCanvasNewId.includes(this.element.id)) && this.isFirstLoad && this.canvasId === 'canvas-main'
return !(this.isEdit && this.currentCanvasNewId.includes(this.element.id)) && this.isFirstLoad
},
scaleCoefficient() {
if (this.terminal === 'pc' && !this.mobileLayoutStatus) {
if (this.terminal === 'pc' && (!this.mobileLayoutStatus || this.showPosition === 'preview-wait')) {
return 1.1
} else {
return 4.5
}
},
scaleCoefficientType() {
if (this.terminal === 'pc' && !this.mobileLayoutStatus) {
if (this.terminal === 'pc' && (!this.mobileLayoutStatus || this.showPosition === 'preview-wait')) {
return 'pc'
} else {
return 'mobile'
@ -423,7 +422,7 @@ export default {
},
filter() {
const filter = {}
filter.filter = this.initLoad ? this.filters : this.cfilters
filter.filter = this.initLoad && this.cfilters?.length === 0 ? this.filters : this.cfilters
filter.linkageFilters = this.element.linkageFilters
filter.outerParamsFilters = this.element.outerParamsFilters
filter.drill = this.drillClickDimensionList
@ -776,7 +775,13 @@ export default {
viewInCache(param) {
this.view = param.view
if (this.view && this.view.customAttr) {
this.currentPage.pageSize = parseInt(JSON.parse(this.view.customAttr).size.tablePageSize)
const curPageSize = this.currentPage.pageSize
const newPageSize = parseInt(JSON.parse(this.view.customAttr).size.tablePageSize)
//
if (curPageSize < newPageSize) {
this.currentPage.page = 1
}
this.currentPage.pageSize = newPageSize
}
param.viewId && param.viewId === this.element.propValue.viewId && this.getDataEdit(param)
},
@ -825,11 +830,11 @@ export default {
const filters = this.filter.filter
const group = this.groupRequiredInvalid(filters)
if (group.unReady?.length) {
this.view.unReadyMsg = '请先完成必填项过滤器!'
this.view && (this.view.unReadyMsg = '请先完成必填项过滤器!')
this.getDataLoading = false
return
} else {
this.view.unReadyMsg = ''
this.view && (this.view.unReadyMsg = '')
}
if (this.getDataLoading || Vue.prototype.$currentHttpRequestList.get(`/chart/view/getData/${id}/${this.panelInfo.id}`)) {
const url = `/chart/view/getData/${id}/${this.panelInfo.id}`
@ -1062,7 +1067,15 @@ export default {
jumpClick(param) {
let dimension, jumpInfo, sourceInfo
// name namedimension
if (param.name) {
if (param.scatterSpecial) {
param.scatterSpecialData.dimensionList.forEach(dimensionItem => {
if (param.scatterSpecialData.field === dimensionItem.value) {
dimension = dimensionItem
sourceInfo = param.viewId + '#' + dimension.id
jumpInfo = this.nowPanelJumpInfo[sourceInfo]
}
})
} else if (param.name) {
param.dimensionList.forEach(dimensionItem => {
if (dimensionItem.id === param.name || dimensionItem.value === param.name) {
dimension = dimensionItem
@ -1086,6 +1099,7 @@ export default {
}
}
}
if (jumpInfo) {
param.sourcePanelId = this.panelInfo.id
param.sourceViewId = param.viewId
@ -1354,27 +1368,20 @@ export default {
},
getDataOnly(sourceResponseData, dataBroadcast) {
if (this.isEdit) {
if ((this.filter.filter && this.filter.filter.length) || (this.filter.linkageFilters && this.filter.linkageFilters.length)) {
const requestInfo = {
filter: [],
drill: [],
queryFrom: 'panel'
if (((this.filter.filter && this.filter.filter.length) || (this.filter.linkageFilters && this.filter.linkageFilters.length)) &&
this.chart.render &&
this.chart.render === 'antv' &&
(this.chart.type.includes('bar') ||
this.chart.type.includes('line') ||
this.chart.type.includes('area') ||
this.chart.type.includes('pie') ||
this.chart.type === 'funnel' ||
this.chart.type === 'radar' ||
this.chart.type === 'scatter')) {
delete this.componentViewsData[this.chart.id]
if (dataBroadcast) {
bus.$emit('prop-change-data')
}
// table-info
if (this.view && this.view.customAttr) {
const attrSize = JSON.parse(this.view.customAttr).size
if (this.chart.type === 'table-info' && this.view.datasetMode === 0 && (!attrSize.tablePageMode || attrSize.tablePageMode === 'page')) {
requestInfo.goPage = this.currentPage.page
requestInfo.pageSize = this.currentPage.pageSize
}
}
viewData(this.chart.id, this.panelInfo.id, requestInfo).then(response => {
this.componentViewsData[this.chart.id] = response.data
this.view = response.data
if (dataBroadcast) {
bus.$emit('prop-change-data')
}
})
} else {
this.componentViewsData[this.chart.id] = sourceResponseData
if (dataBroadcast) {
@ -1414,7 +1421,6 @@ export default {
display: flex;
align-items: center;
justify-content: center;
background-color: #ece7e7;
}
.chart-error-message-class {

View File

@ -33,7 +33,7 @@
/>
<chart-component-g2
v-else-if="!chart.type.includes('text') && chart.type !== 'label' && !chart.type.includes('table') && renderComponent() === 'antv'"
class="chart-class"
class="chart-class show-in-dialog"
:chart="chart"
/>
<chart-component-s2

View File

@ -120,7 +120,8 @@ export const customAttrTrans = {
'quotaFontSize',
'spaceSplit', // 间隔
'scatterSymbolSize', // 气泡大小,散点图
'radarSize'// 雷达占比
'radarSize', // 雷达占比
'quotaSuffixFontSize'
],
'label': [
'fontSize'

View File

@ -85,6 +85,10 @@ export default {
clearable: {
type: Boolean,
default: true
},
flag: {
type: String,
require: true
}
},
data() {
@ -124,14 +128,14 @@ export default {
},
list() {
this.resetList()
this.show = false
this.$nextTick(() => {
this.show = true
this.$nextTick(() => {
this.init()
})
})
},
}
/*
模糊搜索改为后端检索暂注释前端
keyWord(val, old) {
if (val === old) return
const results = val ? this.vagueFilter(val, this.list) : null
@ -141,6 +145,7 @@ export default {
this.callback()
})
}
*/
},
mounted() {
this.resetList()
@ -174,8 +179,10 @@ export default {
this.$emit('handleShowNumber')
},
addScrollDiv(selectDom) {
const baseClass = `${this.classId}-creator`
this.maxHeightDom = document.createElement('div')
this.maxHeightDom.className = 'el-select-height'
this.maxHeightDom.classList.add(baseClass)
selectDom.insertBefore(this.maxHeightDom, this.domList)
},
reCacularHeight() {
@ -206,6 +213,12 @@ export default {
this.customInputStyle()
return
}
const baseClass = `.${this.classId}-creator`
if (document.querySelector(baseClass)) {
this.customInputStyle()
this.reCacularHeight()
return
}
const selectDom = document.querySelector(
`.${this.classId} .el-select-dropdown .el-select-dropdown__wrap`

View File

@ -18,6 +18,7 @@
popper-class="coustom-de-select"
:class="{'disabled-close': !inDraw && selectFirst && element.options.attrs.multiple}"
:list="data"
:flag="flag"
:is-config="isConfig"
:custom-style="customStyle"
@resetKeyWords="filterMethod"
@ -52,7 +53,7 @@ import { isSameVueObj, mergeCustomSortOption } from '@/utils'
import { getLinkToken, getToken } from '@/utils/auth'
import customInput from '@/components/widget/deWidget/customInput'
import { textSelectWidget } from '@/components/widget/deWidget/serviceNameFn.js'
import { uuid } from 'vue-uuid'
export default {
components: { ElVisualSelect },
mixins: [customInput],
@ -94,7 +95,10 @@ export default {
data: [],
onFocus: false,
keyWord: '',
separator: ','
separator: ',',
timeMachine: null,
changeIndex: 0,
flag: uuid.v1()
}
},
computed: {
@ -220,6 +224,7 @@ export default {
method = linkMultFieldValues
}
if (!this.element.options.attrs.fieldId) {
this.show = true
return
}
const param = { fieldIds: this.element.options.attrs.fieldId.split(this.separator), sort: this.element.options.attrs.sort }
@ -238,6 +243,8 @@ export default {
bus.$emit('valid-values-change', true)
}).catch(e => {
bus.$emit('valid-values-change', false)
}).finally(() => {
this.show = true
}) || (this.element.options.value = '')
}
@ -289,8 +296,49 @@ export default {
this.value = this.element.options.attrs.multiple ? [] : null
this.$refs.deSelect && this.$refs.deSelect.resetSelectAll && this.$refs.deSelect.resetSelectAll()
},
searchWithKey(index) {
this.timeMachine = setTimeout(() => {
if (index === this.changeIndex) {
this.refreshOptions()
}
this.destroyTimeMachine()
}, 1500)
},
destroyTimeMachine() {
this.timeMachine && clearTimeout(this.timeMachine)
this.timeMachine = null
},
filterMethod(key) {
if (key === this.keyWord) {
return
}
this.keyWord = key
this.destroyTimeMachine()
this.changeIndex++
this.searchWithKey(this.changeIndex)
},
refreshOptions() {
// this.data = []
let method = multFieldValues
const token = this.$store.getters.token || getToken()
const linkToken = this.$store.getters.linkToken || getLinkToken()
if (!token && linkToken) {
method = linkMultFieldValues
}
if (!this.element.options.attrs.fieldId) {
return
}
const param = { fieldIds: this.element.options.attrs.fieldId.split(this.separator), sort: this.element.options.attrs.sort, keyword: this.keyWord }
if (this.panelInfo.proxy) {
param.userId = this.panelInfo.proxy
}
this.element.options.attrs.fieldId &&
this.element.options.attrs.fieldId.length > 0 &&
method(param).then(res => {
this.data = this.optionData(res.data)
this.flag = uuid.v1()
})
},
onScroll() {
if (this.onFocus) {

View File

@ -169,8 +169,6 @@ export default {
}
this.show = false
this.$nextTick(() => {
// this.value = value ? [] : null
this.show = true
this.$nextTick(() => {
const defaultV = this.element.options.value === null ? '' : this.element.options.value.toString()
@ -213,7 +211,6 @@ export default {
this.$refs.deSelectTree && this.$refs.deSelectTree.treeDataUpdateFun(this.data)
})
})
this.element.options.value = ''
}
},

View File

@ -27,7 +27,7 @@
<el-tab-pane
v-for="(item, index) in element.options.tabList"
:key="item.name+index"
:lazy="true"
:lazy="!isEdit"
:name="item.name"
>
<span slot="label">

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1700015172685" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4199" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M922.366667 114.813333A53.04 53.04 0 0 0 874.666667 85.333333H149.333333a53.333333 53.333333 0 0 0-42.666666 85.333334l277.333333 369.78V917.333333a21.333333 21.333333 0 0 0 29.253333 19.806667l213.333334-85.333333A21.333333 21.333333 0 0 0 640 832V540.446667L917.333333 170.666667a53.04 53.04 0 0 0 5.033334-55.853334z" p-id="4200"></path></svg>

After

Width:  |  Height:  |  Size: 680 B

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1700022592729" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1436" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M797.866667 490.666667L571.733333 266.666667 533.333333 228.266667c-6.4-6.4-14.933333-8.533333-23.466666-8.533334-8.533333 0-17.066667 2.133333-23.466667 8.533334L448 266.666667 226.133333 490.666667c-8.533333 8.533333-8.533333 21.333333 0 29.866666l29.866667 29.866667c8.533333 8.533333 21.333333 8.533333 29.866667 0l183.466666-183.466667V874.666667c0 10.666667 8.533333 21.333333 21.333334 21.333333h42.666666c10.666667 0 21.333333-8.533333 21.333334-21.333333V369.066667l183.466666 183.466666c8.533333 8.533333 21.333333 8.533333 29.866667 0l29.866667-29.866666c8.533333-8.533333 8.533333-23.466667 0-32zM874.666667 215.466667H149.333333c-10.666667 0-21.333333-8.533333-21.333333-21.333334v-42.666666c0-10.666667 8.533333-21.333333 21.333333-21.333334h725.333334c10.666667 0 21.333333 8.533333 21.333333 21.333334v42.666666c0 12.8-8.533333 21.333333-21.333333 21.333334z" fill="#297AFF" p-id="1437"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -1146,6 +1146,8 @@ export default {
table_item_fontsize: 'Table font size',
table_header_bg: 'Header Background',
table_item_bg: 'Table Background',
table_item_sub_enable: 'Enable CrossBackgroundColor',
table_item_sub_bg: 'CrossBackgroundColor',
table_header_font_color: 'Header Font',
table_item_font_color: 'Table Font',
table_show_index: 'Show Index',
@ -1159,6 +1161,12 @@ export default {
quota_color: 'Value Color',
dimension_font_size: 'Name FontSize',
quota_font_size: 'Value FontSize',
quota_suffix: 'Value Suffix',
quota_suffix_font_size: 'Value Suffix FontSize',
quota_suffix_color: 'Value Suffix Color',
quota_suffix_font_family: 'Value Suffix Font Family',
quota_suffix_text_style: 'Value Suffix Style',
quota_suffix_letter_space: 'Value Suffix Letter Space',
space_split: 'Name/Value Space',
only_one_quota: 'Only support 1 quota',
only_one_result: 'Only show first result',
@ -1232,6 +1240,7 @@ export default {
center: 'Center',
split: 'Axis',
axis_line: 'Axis Line',
axis: 'Axis',
axis_label: 'Axis Label',
label_fontsize: 'Label Fontsize',
split_line: 'Split Line',
@ -1434,6 +1443,7 @@ export default {
value_formatter_suffix: 'Unit Suffix',
value_formatter_thousand_separator: 'Thousand Separator',
value_formatter_example: 'Example',
value_suffix: 'Value Suffix',
unit_none: 'None',
unit_thousand: 'Thousand',
unit_ten_thousand: 'Ten Thousand',
@ -1472,6 +1482,7 @@ export default {
dimension_letter_space: 'Name Letter Space',
font_family: 'Font Family',
font_family_tip: 'The font will only take effect if it is installed on the operating system',
radar_min_max_tip: 'If the minimum value of the actual data is less than the custom minimum value, or the maximum value is greater than the custom maximum value, the actual data will prevail.',
letter_space: 'Letter Space',
font_shadow: 'Font Shadow',
chart_area: 'Area',
@ -1573,7 +1584,8 @@ export default {
map_line_theta_offset: 'Radian',
gauge_axis_label: 'Axis Label',
word_size_range: 'Word Size Range',
word_spacing: 'Word Spacing'
word_spacing: 'Word Spacing',
axis_multi_select_tip: 'Hold down the Ctrl or Shift key and click to select more than one'
},
dataset: {
scope_edit: 'Effective only when editing',
@ -2027,6 +2039,7 @@ export default {
back_parent: 'Back to previous'
},
panel: {
filter_no_select: 'Filter components do not need to be selected',
first_item: 'First item',
forbidden_copy: 'Forbidden copy',
url_check_error: 'Jump error, Illegal URL',
@ -2343,7 +2356,9 @@ export default {
link_panel: 'panel',
select_jump_panel: 'Select Jump Panel',
link_view: 'Link View',
link_component: 'Link Component',
link_view_field: 'Link View Field',
link_component_field: 'Link Component Field',
add_jump_field: 'Add Jump Field',
input_jump_link: 'Input Jump Link',
select_dimension: 'Select Dimension...',

View File

@ -1145,6 +1145,8 @@ export default {
table_item_fontsize: '表格字體大小',
table_header_bg: '表頭背景',
table_item_bg: '表格背景',
table_item_sub_enable: '斑馬紋',
table_item_sub_bg: '斑馬紋顏色',
table_header_font_color: '表頭字體',
table_item_font_color: '表格字體',
table_show_index: '顯示序號',
@ -1158,6 +1160,11 @@ export default {
quota_color: '值顔色',
dimension_font_size: '名稱字體大小',
quota_font_size: '值字體大小',
quota_suffix_font_size: '後綴字體大小',
quota_suffix_font_family: '後綴字體',
quota_suffix_text_style: '後綴樣式',
quota_suffix_letter_space: '後綴字間距',
quota_suffix_color: '後綴顏色',
space_split: '名稱/值間隔',
only_one_quota: '僅支持1個指標',
only_one_result: '僅顯示第1個計算結果',
@ -1231,6 +1238,7 @@ export default {
center: '中心',
split: '軸線',
axis_line: '軸線',
axis: '坐標軸',
axis_label: '軸標簽',
label_fontsize: '標簽大小',
split_line: '分割線',
@ -1471,6 +1479,7 @@ export default {
dimension_letter_space: '名稱字間距',
font_family: '字體',
font_family_tip: '只有操作系統上已安裝該字體才能生效',
radar_min_max_tip: '如果實際數據的最小值小於自定義的最小值,或者最大值大於自定義的最大值,將以實際數據為準。',
letter_space: '字間距',
font_shadow: '字體陰影',
chart_area: '面積圖',
@ -1567,7 +1576,8 @@ export default {
map_line_theta_offset: '弧度',
gauge_axis_label: '刻度標籤',
word_size_range: '字號區間',
word_spacing: '文字間隔'
word_spacing: '文字間隔',
axis_multi_select_tip: '按住 Ctrl 鍵或者 Shift 鍵再點擊可多選'
},
dataset: {
scope_edit: '僅編輯時生效',
@ -2021,6 +2031,7 @@ export default {
back_parent: '返回上一級'
},
panel: {
filter_no_select: '過濾組件無需選擇',
first_item: '首項',
forbidden_copy: '當前組件不允許復製',
url_check_error: '跳轉錯誤URL不合法',
@ -2337,7 +2348,9 @@ export default {
link_panel: '儀表闆',
select_jump_panel: '選擇關聯的儀表闆',
link_view: '聯動視圖',
link_component: '聯動组件',
link_view_field: '聯動視圖字段',
link_component_field: '聯動组件字段',
add_jump_field: '追加跳轉聯動依賴字段',
input_jump_link: '請輸入跳轉連接',
select_dimension: '請選擇維度...',

View File

@ -1144,6 +1144,8 @@ export default {
table_item_fontsize: '表格字体大小',
table_header_bg: '表头背景',
table_item_bg: '表格背景',
table_item_sub_enable: '斑马纹',
table_item_sub_bg: '斑马纹颜色',
table_header_font_color: '表头字体',
table_item_font_color: '表格字体',
table_show_index: '显示序号',
@ -1157,6 +1159,12 @@ export default {
quota_color: '值颜色',
dimension_font_size: '名称字体大小',
quota_font_size: '值字体大小',
quota_suffix: '值后缀',
quota_suffix_font_size: '后缀字体大小',
quota_suffix_font_family: '后缀字体',
quota_suffix_text_style: '后缀样式',
quota_suffix_letter_space: '后缀字间距',
quota_suffix_color: '后缀颜色',
space_split: '名称/值间隔',
only_one_quota: '仅支持1个指标',
only_one_result: '仅显示第1个计算结果',
@ -1230,6 +1238,7 @@ export default {
center: '中心',
split: '轴线',
axis_line: '轴线',
axis: '坐标轴',
axis_label: '轴标签',
label_fontsize: '标签大小',
split_line: '分割线',
@ -1470,6 +1479,7 @@ export default {
dimension_letter_space: '名称字间距',
font_family: '字体',
font_family_tip: '只有操作系统上已安装该字体才能生效',
radar_min_max_tip: '如果实际数据的最小值小于自定义的最小值,或者最大值大于自定义的最大值,将以实际数据为准。',
letter_space: '字间距',
font_shadow: '字体阴影',
chart_area: '面积图',
@ -1566,7 +1576,8 @@ export default {
map_line_theta_offset: '弧度',
gauge_axis_label: '刻度标签',
word_size_range: '字号区间',
word_spacing: '文字间隔'
word_spacing: '文字间隔',
axis_multi_select_tip: '按住 Ctrl 键或者 Shift 键再点击可多选'
},
dataset: {
scope_edit: '仅编辑时生效',
@ -2021,6 +2032,7 @@ export default {
back_parent: '返回上一级'
},
panel: {
filter_no_select: '过滤组件无需选择',
first_item: '首项',
forbidden_copy: '当前组件不允许复制',
url_check_error: '跳转错误URL不合法',
@ -2337,7 +2349,9 @@ export default {
link_panel: '仪表板',
select_jump_panel: '选择关联的仪表板',
link_view: '联动视图',
link_component: '联动组件',
link_view_field: '联动视图字段',
link_component_field: '联动组件字段',
add_jump_field: '追加跳转联动依赖字段',
input_jump_link: '请输入跳转连接',
select_dimension: '请选择维度...',

View File

@ -1,5 +1,7 @@
<template>
<div
v-loading="showTips"
element-loading-custom-class="pwd-tips-loading"
:class="classObj"
class="app-wrapper"
>
@ -131,10 +133,13 @@ export default {
})
},
mounted() {
document.addEventListener('click', this.bodyClick)
bus.$on('PanelSwitchComponent', this.panelSwitchComponent)
bus.$on('web-seize-topic-call', this.webMsgTopicCall)
},
beforeDestroy() {
this.showTips = false
document.removeEventListener('click', this.bodyClick)
bus.$off('PanelSwitchComponent', this.panelSwitchComponent)
bus.$off('web-seize-topic-call', this.webMsgTopicCall)
},
@ -142,6 +147,12 @@ export default {
showMultiLoginMsg()
},
methods: {
bodyClick(e) {
const dom = document.querySelector('.pwd-tips')
if (dom && !dom.contains(e.target)) {
this.showTips = false
}
},
webMsgTopicCall(param) {
const msg = this.$t('multi_login_lang.forced_offline')
// eslint-disable-next-line
@ -184,6 +195,14 @@ export default {
position: fixed;
top: 0;
}
}
::v-deep .pwd-tips-loading {
z-index: 2024;
background-color: rgba(255, 255, 255, 0.1);
.el-loading-spinner {
display: none !important;
}
}
.drawer-bg {
background: #000;

View File

@ -465,17 +465,27 @@ const data = {
for (let index = 0; index < state.componentData.length; index++) {
const element = state.componentData[index]
if (!element.type || element.type !== 'view') continue
if (!element.type || (element.type !== 'view' && element.type !== 'custom')) continue
const currentFilters = element.outerParamsFilters || [] // 外部参数信息
// 外部参数 可能会包含多个参数
Object.keys(params).forEach(function(sourceInfo) {
// 获取外部参数的值 sourceInfo 是外部参数名称 支持数组传入
let paramValue = params[sourceInfo]
let paramValueStr = params[sourceInfo]
let operator = 'in'
if (paramValue && !Array.isArray(paramValue)) {
paramValue = [paramValue]
operator = 'eq'
} else if (paramValue && Array.isArray(paramValue)) {
paramValueStr = ''
paramValue.forEach((innerValue, index) => {
if (index === 0) {
paramValueStr = innerValue
} else {
paramValueStr = paramValueStr + ',' + innerValue
}
})
}
// 获取所有目标联动信息
const targetInfoList = trackInfo[sourceInfo] || []
@ -483,7 +493,7 @@ const data = {
targetInfoList.forEach(targetInfo => {
const targetInfoArray = targetInfo.split('#')
const targetViewId = targetInfoArray[0] // 目标视图
if (element.propValue.viewId === targetViewId) { // 如果目标视图 和 当前循环组件id相等 则进行条件增减
if (element.type === 'view' && element.propValue.viewId === targetViewId) { // 如果目标视图 和 当前循环组件id相等 则进行条件增减
const targetFieldId = targetInfoArray[1] // 目标视图列ID
const condition = new Condition('', targetFieldId, operator, paramValue, [targetViewId])
let j = currentFilters.length
@ -498,8 +508,17 @@ const data = {
// !filterExist && vValid && currentFilters.push(condition)
currentFilters.push(condition)
}
if (element.type === 'custom' && element.id === targetViewId) { // 过滤组件处理
if (element.component === 'de-number-range') {
element.options.value = paramValue
} else {
element.options.value = paramValueStr
}
}
})
element.outerParamsFilters = currentFilters
if (element.type === 'view') {
element.outerParamsFilters = currentFilters
}
state.componentData[index] = element
})
}

Some files were not shown because too many files have changed in this diff Show More