wangrui 5 months ago
parent
commit
22de17fc77

+ 1 - 1
platomix-gmetry-bi-api/pom.xml

@@ -26,7 +26,7 @@
         <dependency>
             <groupId>com.platomix</groupId>
             <artifactId>platomix-gmetry-bi-client</artifactId>
-            <version>1.1.28</version>
+            <version>1.1.29</version>
         </dependency>
         <dependency>
             <groupId>com.platomix</groupId>

+ 14 - 14
platomix-gmetry-bi-api/src/main/java/org/springblade/cube/service/CubeDataBrowserService.java

@@ -132,7 +132,7 @@ public class CubeDataBrowserService {
         Set<Integer> excludeColumnIdSet = Optional.ofNullable(cubePermParseDto.getExcludeColumnIdList()).orElse(new HashSet<>());
         for (CubeTableColumn column : columnList) {
             // 计算字段包含聚合函数 OR 列权限包含该列,不做查询
-            if (Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getId())) {
+            if (Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getCubeTableColumnId())) {
                 continue;
             }
             // 处理全局参数变量
@@ -160,7 +160,7 @@ public class CubeDataBrowserService {
             // 是否包含在查询参数中
             //            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? .findFirst().orElse(null) : null;
 
-            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).collect(Collectors.toList());
+            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(collect)) {
                 for (BrowserParam browserParam : collect) {
                     String conditionSql = browserParam.getFunction().handle(queryColumnName, column.getViewDataType(),
@@ -196,7 +196,7 @@ public class CubeDataBrowserService {
         }
 
         // ID和别名Map
-        Map<Integer, String> columnDict = columnList.stream().collect(Collectors.toMap(CubeTableColumn::getId, CubeTableColumn::getColumnAliasName));
+        Map<Integer, String> columnDict = columnList.stream().collect(Collectors.toMap(CubeTableColumn::getCubeTableColumnId, CubeTableColumn::getColumnAliasName));
 
         // 设置OrderBy
         orderBy(query, columnDict, querySqlBuilder);
@@ -246,7 +246,7 @@ public class CubeDataBrowserService {
         Set<Integer> excludeColumnIdSet = Optional.ofNullable(cubePermParseDto.getExcludeColumnIdList()).orElse(new HashSet<>());
         for (CubeTableColumn column : columnList) {
             // 计算字段包含聚合函数 OR 列权限包含该列,不做查询
-            if (Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getId())) {
+            if (Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getCubeTableColumnId())) {
                 continue;
             }
             // 处理全局参数变量
@@ -272,8 +272,8 @@ public class CubeDataBrowserService {
             }
             selectSqlList.add(selectColumnName + " as \"" + column.getColumnAliasName() + "\"");
             // 是否包含在查询参数中
-//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).findFirst().orElse(null) : null;
-            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).collect(Collectors.toList());
+//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).findFirst().orElse(null) : null;
+            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(collect)) {
                 for (BrowserParam browserParam : collect) {
                     String conditionSql = browserParam.getFunction().handle(queryColumnName, column.getViewDataType(),
@@ -320,7 +320,7 @@ public class CubeDataBrowserService {
             }
         }
         // ID和别名Map
-        Map<Integer, String> columnDict = columnList.stream().collect(Collectors.toMap(CubeTableColumn::getId, CubeTableColumn::getColumnAliasName));
+        Map<Integer, String> columnDict = columnList.stream().collect(Collectors.toMap(CubeTableColumn::getCubeTableColumnId, CubeTableColumn::getColumnAliasName));
 
         // 设置OrderBy
         orderBy(query, columnDict, querySqlBuilder);
@@ -399,11 +399,11 @@ public class CubeDataBrowserService {
 
         Map<Integer, String> masterTableColumnMap = new HashedMap<>();
         for (CubeTableColumn column : columnList) {
-            masterTableColumnMap.put(column.getId(), column.getColumnName());
+            masterTableColumnMap.put(column.getCubeTableColumnId(), column.getColumnName());
             //获取别名
-            String tableColumnAlias = masterTableColumnAliasMap.get(column.getId());
+            String tableColumnAlias = masterTableColumnAliasMap.get(column.getCubeTableColumnId());
             // 计算字段包含聚合函数 OR 列权限包含该列,不做查询
-            if (StrUtil.isBlank(tableColumnAlias) || Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getId())) {
+            if (StrUtil.isBlank(tableColumnAlias) || Optional.<Integer>ofNullable(column.getVirtualAggregationStatus()).orElse(0) == 1 || excludeColumnIdSet.contains(column.getCubeTableColumnId())) {
                 continue;
             }
             // 处理全局参数变量
@@ -426,8 +426,8 @@ public class CubeDataBrowserService {
             }
             selectSqlList.add(selectColumnName + " as \"" + tableColumnAlias + "\"");
             // 是否包含在查询参数中
-//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).findFirst().orElse(null) : null;
-            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).collect(Collectors.toList());
+//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).findFirst().orElse(null) : null;
+            List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(collect)) {
                 for (BrowserParam browserParam : collect) {
                     String conditionSql = browserParam.getFunction().handle(queryColumnName, column.getViewDataType(), browserParam.getValues(), dsTypeEnum);
@@ -537,7 +537,7 @@ public class CubeDataBrowserService {
 
         Map<Integer, String> masterTableColumnMap = new HashedMap<>();
         for (CubeTableColumn column : columnList) {
-            masterTableColumnMap.put(column.getId(), column.getColumnName());
+            masterTableColumnMap.put(column.getCubeTableColumnId(), column.getColumnName());
             //获取别名
             String tableColumnAlias = masterTableColumnAliasMap.get(column.getCubeTableColumnId());
             // 计算字段包含聚合函数 OR 列权限包含该列,不做查询
@@ -564,7 +564,7 @@ public class CubeDataBrowserService {
             }
             selectSqlList.add(selectColumnName + " as \"" + tableColumnAlias + "\"");
             // 是否包含在查询参数中
-//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getId())).findFirst().orElse(null) : null;
+//            BrowserParam browserParam = CollectionUtil.isNotEmpty(paramList) ? paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).findFirst().orElse(null) : null;
             List<BrowserParam> collect = paramList.stream().filter(item -> item.getCubeColumnId().equals(column.getCubeTableColumnId())).collect(Collectors.toList());
             if (CollectionUtil.isNotEmpty(collect)) {
                 for (BrowserParam browserParam : collect) {

+ 7 - 1
platomix-gmetry-bi-api/src/main/java/org/springblade/cube/service/CubeTableColumnService.java

@@ -16,6 +16,7 @@ import org.springblade.datasource.enums.ViewColumnTypeEnum;
 import org.springblade.datasource.model.TableColumnDto;
 import org.springframework.stereotype.Service;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -26,7 +27,12 @@ import java.util.Map;
  */
 @Service
 public class CubeTableColumnService extends ServiceImpl<CubeTableColumnMapper, CubeTableColumn> {
-    
+
+    public CubeTableColumn getByCubeTableColumnId(Serializable id, Integer cubeId) {
+        CubeTableColumn one = this.lambdaQuery().eq(CubeTableColumn::getCubeTableColumnId, id).eq(CubeTableColumn::getCubeDataId, cubeId).one();
+        System.out.println(1);
+        return one;
+    }
     public List<CubeTableColumn> listByCubeId(Integer cubeId){
     	return baseMapper.listByCubeId(cubeId);
     }

+ 1 - 1
platomix-gmetry-bi-api/src/main/java/org/springblade/report/controller/ReportDatasourceController.java

@@ -157,7 +157,7 @@ public class ReportDatasourceController extends BladeController {
 		//oracle/dameng的schema默认是用户名
 		dto.setDbSchema((dsTypeEnum == DsTypeEnum.oracle || dsTypeEnum == DsTypeEnum.dameng)  && StrUtil.isBlank(dto.getDbSchema()) ? dto.getDsUser() : dto.getDbSchema());
 		//设置默认poolName
-		dto.setPoolName(UUID.randomUUID().toString().replaceAll("-", "").substring(0, 10));
+		dto.setPoolName("a"+UUID.randomUUID().toString().replaceAll("-", "").substring(0, 9));
 		boolean addDsRet = dynamicDataSourceSupport.addDs(dto);
 		return R.status(addDsRet && reportDatasourceService.save(dto));
 	}

+ 7 - 0
platomix-gmetry-bi-api/src/main/java/org/springblade/resouces/AppCopyService.java

@@ -4,10 +4,12 @@ import cn.hutool.core.exceptions.ExceptionUtil;
 import cn.hutool.json.JSONUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.core.tool.exception.ServiceException;
 import org.springblade.cube.model.*;
 import org.springblade.cube.service.*;
 import org.springblade.cube.utils.SnowFlowIntUtil;
 import org.springblade.datasource.DsHandler;
+import org.springblade.datasource.support.DynamicDataSourceSupport;
 import org.springblade.report.entity.*;
 import org.springblade.report.service.IDataApiService;
 import org.springblade.report.service.IDimensionService;
@@ -59,6 +61,8 @@ public class AppCopyService {
     private DsHandler dsHandler;
     @Resource
     private AppClient appClient;
+    @Autowired
+    private DynamicDataSourceSupport dynamicDataSourceSupport;
     @Async
     public void copy(List<Integer> cubeIds, List<Integer> dsIds, String appId, PlatomixAppCopyLogModel platomixAppCopyLogModel) {
 
@@ -215,6 +219,9 @@ public class AppCopyService {
             obj.setPoolName(SnowFlowIntUtil.nextId() + "");
             obj.setCreateTime(new Date());
             obj.setCreateUserId(AuthUtil.getUserId());
+            if ( !dynamicDataSourceSupport.addDs(obj)){
+                throw new ServiceException("数据源连接失败");
+            }
             reportDatasourceService.save(obj);
         }
         return true;

+ 4 - 4
platomix-gmetry-bi-api/src/main/java/org/springblade/resouces/CubeTableColumnResource.java

@@ -59,8 +59,8 @@ public class CubeTableColumnResource implements CubeTableColumnClient {
     private CubeDataService cubeDataService;
 
     @Override
-    public CubeTableColumnModel getById(Integer id) {
-        CubeTableColumn tableColumn = cubeTableColumnService.getById(id);
+    public CubeTableColumnModel getById(Integer id,Integer cubeId) {
+        CubeTableColumn tableColumn = cubeTableColumnService.getByCubeTableColumnId(id,cubeId);
         CubeTableColumnModel tableColumnModel = BeanUtil.copyProperties(tableColumn, CubeTableColumnModel.class, "viewDataType");
         tableColumnModel.setViewDataType(tableColumn.getViewDataType().getValue());
         return tableColumnModel;
@@ -70,11 +70,11 @@ public class CubeTableColumnResource implements CubeTableColumnClient {
     public List<CubeTableColumnModel> listByCubeId(Integer cubeId) {
         List<CubeTableColumn> tableColumnList = cubeTableColumnService.listByCubeId(cubeId);
         if (CollectionUtil.isNotEmpty(tableColumnList)) {
-            Map<Integer, CubeTableColumn> dataMap = tableColumnList.stream().collect(Collectors.toMap(CubeTableColumn::getId, t -> t));
+            Map<Integer, CubeTableColumn> dataMap = tableColumnList.stream().collect(Collectors.toMap(CubeTableColumn::getCubeTableColumnId, t -> t));
             List<CubeTableColumnModel> tableColumnModelList = BeanUtil.copyToList(tableColumnList, CubeTableColumnModel.class,
                     CopyOptions.create().setIgnoreProperties("viewDataType"));
             if (tableColumnModelList != null) {
-                tableColumnModelList.stream().forEach(item -> item.setViewDataType(dataMap.get(item.getId()).getViewDataType().getValue()));
+                tableColumnModelList.stream().forEach(item -> item.setViewDataType(dataMap.get(item.getCubeTableColumnId()).getViewDataType().getValue()));
             }
             return tableColumnModelList;
         }

+ 1 - 1
platomix-gmetry-bi-client/pom.xml

@@ -8,7 +8,7 @@
 		<version>1.0.0</version>
 	</parent>
 	<artifactId>platomix-gmetry-bi-client</artifactId>
-	<version>1.1.28</version>
+	<version>1.1.29</version>
 
 	<dependencies>
 		<dependency>

+ 2 - 2
platomix-gmetry-bi-client/src/main/java/org/springblade/bi/client/CubeTableColumnClient.java

@@ -32,8 +32,8 @@ public interface CubeTableColumnClient {
 	 * @param id
 	 * @return
 	 */
-	@GetMapping(OpenFeignConstants.BI_SERVICE + "/cubeTableColumn/info/{id}")
-	public CubeTableColumnModel getById(@PathVariable Integer id);
+	@GetMapping(OpenFeignConstants.BI_SERVICE + "/cubeTableColumn/info/{id}/{cubeId}")
+	public CubeTableColumnModel getById(@PathVariable Integer id,@PathVariable Integer cubeId);
 	
 	/**
 	 * 根据数据集ID查询数据集字段列表

+ 1 - 1
platomix-gmetry-bi-client/src/main/java/org/springblade/bi/client/factory/CubeTableColumnClientFallbackFactory.java

@@ -30,7 +30,7 @@ public class CubeTableColumnClientFallbackFactory implements FallbackFactory<Cub
         return new CubeTableColumnClient() {
 
             @Override
-            public CubeTableColumnModel getById(Integer id) {
+            public CubeTableColumnModel getById(Integer id, Integer cubeId) {
                 return null;
             }
 

+ 4 - 1
platomix-gmetry-bi-client/src/main/java/org/springblade/bi/client/model/CubeTableColumnModel.java

@@ -25,7 +25,10 @@ public class CubeTableColumnModel implements Serializable {
 	 * 数据集ID
 	 */
 	private Integer cubeDataId;
-	
+	/**
+	 * 数据集字段业务ID
+	 */
+	private Integer cubeTableColumnId;
 	/**
 	 * 表名
 	 */