Merge branch 'dev' into pr@dev_one_dot_x
This commit is contained in:
commit
7135cdcb9b
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -13,4 +13,6 @@ public class MultFieldValuesRequest {
|
||||
|
||||
private DeSortDTO sort;
|
||||
|
||||
private String keyword;
|
||||
|
||||
}
|
||||
|
||||
@ -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<>();
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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}")
|
||||
|
||||
@ -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;
|
||||
}
|
||||
@ -11,4 +11,6 @@ public interface ExtSysUserMapper {
|
||||
List<String> ldapUserNames(Integer from);
|
||||
|
||||
String queryAdminEmail();
|
||||
|
||||
Long queryUserId(String username);
|
||||
}
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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:系统主题")
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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.*;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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()) {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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('\'');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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) {
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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!
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "dataease",
|
||||
"version": "1.18.12",
|
||||
"version": "1.18.13",
|
||||
"description": "dataease front",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -164,6 +164,7 @@ export default {
|
||||
this.drawLeft = 'none'
|
||||
this.drawRight = 'auto'
|
||||
}
|
||||
this.setEdit()
|
||||
},
|
||||
viewInit() {
|
||||
bus.$on('fieldSelect-' + this.element.propValue.viewId, this.fieldSelect)
|
||||
|
||||
@ -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 获取和name匹配的dimension 否则倒序取最后一个能匹配的
|
||||
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 {
|
||||
|
||||
@ -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
|
||||
|
||||
@ -120,7 +120,8 @@ export const customAttrTrans = {
|
||||
'quotaFontSize',
|
||||
'spaceSplit', // 间隔
|
||||
'scatterSymbolSize', // 气泡大小,散点图
|
||||
'radarSize'// 雷达占比
|
||||
'radarSize', // 雷达占比
|
||||
'quotaSuffixFontSize'
|
||||
],
|
||||
'label': [
|
||||
'fontSize'
|
||||
|
||||
@ -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`
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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 = ''
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
@ -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">
|
||||
|
||||
1
core/frontend/src/icons/svg/filter.svg
Normal file
1
core/frontend/src/icons/svg/filter.svg
Normal 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 |
1
core/frontend/src/icons/svg/to-top.svg
Normal file
1
core/frontend/src/icons/svg/to-top.svg
Normal 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 |
@ -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...',
|
||||
|
||||
@ -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: '請選擇維度...',
|
||||
|
||||
@ -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: '请选择维度...',
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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
Loading…
Reference in New Issue
Block a user