提交 217ec945 authored 作者: songchuancai's avatar songchuancai

优化数据服务创建和增加列表

上级 3b8fcfe8
...@@ -2,9 +2,13 @@ package com.hisense.dataservice.controller; ...@@ -2,9 +2,13 @@ package com.hisense.dataservice.controller;
import com.hisense.dataservice.dto.DataApiModelDto; import com.hisense.dataservice.dto.DataApiModelDto;
import com.hisense.dataservice.library.model.Result; import com.hisense.dataservice.library.model.Result;
import com.hisense.dataservice.library.model.page.PageData;
import com.hisense.dataservice.library.model.page.PageLink;
import com.hisense.dataservice.service.DataApiCommonService; import com.hisense.dataservice.service.DataApiCommonService;
import com.hisense.dataservice.service.DataApiDataSourceManagementService; import com.hisense.dataservice.service.DataApiDataSourceManagementService;
import com.hisense.dataservice.service.DataApiServiceManagementService; import com.hisense.dataservice.service.DataApiServiceManagementService;
import com.hisense.dataservice.vo.DataApiModelItemVo;
import com.hisense.dataservice.vo.DataTableVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
...@@ -24,7 +28,7 @@ import java.util.List; ...@@ -24,7 +28,7 @@ import java.util.List;
@RestController @RestController
@RequestMapping("/api/v1/dataService") @RequestMapping("/api/v1/dataService")
@Slf4j @Slf4j
public class DataServiceManagementController { public class DataServiceManagementController extends BaseController {
@Autowired @Autowired
private DataApiServiceManagementService dataApiServiceManagementService; private DataApiServiceManagementService dataApiServiceManagementService;
...@@ -50,9 +54,26 @@ public class DataServiceManagementController { ...@@ -50,9 +54,26 @@ public class DataServiceManagementController {
return dataApiServiceManagementService.publishDataApi(environment, modelId); return dataApiServiceManagementService.publishDataApi(environment, modelId);
} }
@ApiOperation(value = "数据服务管理-数据服务列表")
@ApiImplicitParams({
@ApiImplicitParam(name = "environment", value = "环境", required = true),
@ApiImplicitParam(name = "status", value = "类型(1:已发布/0:草稿)", required = true),
@ApiImplicitParam(name = "pageSize", value = "指定返回结果中每页显示的记录数量", defaultValue = "10", required = false),
@ApiImplicitParam(name = "page", value = "指定显示返回结果中的第几页", defaultValue = "1", required = false),
@ApiImplicitParam(name = "sortProperty", value = "根据哪个字段排序", required = false, allowableValues = "id,createdTime,updatedTime"),
@ApiImplicitParam(name = "sortOrder", value = "排序方向", required = false, allowableValues = "ASC,DESC")
})
@GetMapping("/{environment}") @GetMapping("/{environment}")
public List<Object> getPublishDataApiList(@PathVariable String environment) { public Result<PageData<DataApiModelItemVo>> getPublishDataApiList(@PathVariable String environment,
return null; @RequestParam(value = "status") Integer status,
@RequestParam(value = "pageSize", required = false, defaultValue = "10") Integer pageSize,
@RequestParam(value = "page", required = false, defaultValue = "1") Integer page,
@RequestParam(value = "sortProperty", required = false) String sortProperty,
@RequestParam(value = "sortOrder", required = false) String sortOrder) {
PageLink pageLink = createPageLink(pageSize, page, "", sortProperty, sortOrder);
return dataApiServiceManagementService.queryDataApiList(environment, status, pageLink);
} }
......
...@@ -50,4 +50,6 @@ public class DataApiModelDto { ...@@ -50,4 +50,6 @@ public class DataApiModelDto {
@ApiModelProperty(value = "数据服务描述", required = true) @ApiModelProperty(value = "数据服务描述", required = true)
private String desc; private String desc;
@ApiModelProperty(value = "上传图片ID", required = false)
private String imageId;
} }
...@@ -4,12 +4,14 @@ import com.hisense.dataservice.bo.TableJoinRelationConfig; ...@@ -4,12 +4,14 @@ import com.hisense.dataservice.bo.TableJoinRelationConfig;
import com.hisense.dataservice.enums.DebugStatusEnum; import com.hisense.dataservice.enums.DebugStatusEnum;
import com.hisense.dataservice.enums.NetworkEnv; import com.hisense.dataservice.enums.NetworkEnv;
import com.hisense.dataservice.enums.SystemEnv; import com.hisense.dataservice.enums.SystemEnv;
import com.hisense.dataservice.vo.DataApiModelItemVo;
import com.vladmihalcea.hibernate.type.json.JsonBlobType; import com.vladmihalcea.hibernate.type.json.JsonBlobType;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type; import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef; import org.hibernate.annotations.TypeDef;
import org.springframework.beans.BeanUtils;
import javax.persistence.*; import javax.persistence.*;
import java.util.List; import java.util.List;
...@@ -67,5 +69,12 @@ public class DataApiModel extends BaseEntity{ ...@@ -67,5 +69,12 @@ public class DataApiModel extends BaseEntity{
@Column(name = "debug_status", columnDefinition = "varchar2(10) default 'NO_DEBUG' ", nullable = false) @Column(name = "debug_status", columnDefinition = "varchar2(10) default 'NO_DEBUG' ", nullable = false)
private DebugStatusEnum debugStatus = DebugStatusEnum.NO_DEBUG; private DebugStatusEnum debugStatus = DebugStatusEnum.NO_DEBUG;
// 图片ID
private String imageId;
public DataApiModelItemVo toItem(){
DataApiModelItemVo dataApiModelItemVo = new DataApiModelItemVo();
BeanUtils.copyProperties(this, dataApiModelItemVo);
return dataApiModelItemVo;
}
} }
package com.hisense.dataservice.repository; package com.hisense.dataservice.repository;
import com.hisense.dataservice.entity.DataApiModel; import com.hisense.dataservice.entity.DataApiModel;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -14,4 +17,6 @@ import java.util.Optional; ...@@ -14,4 +17,6 @@ import java.util.Optional;
public interface DataApiModelRepository extends JpaRepository<DataApiModel,Long> { public interface DataApiModelRepository extends JpaRepository<DataApiModel,Long> {
Optional<DataApiModel> findByApiID(String apiId); Optional<DataApiModel> findByApiID(String apiId);
Page<DataApiModel> findAll(Specification specification, Pageable pageable);
} }
...@@ -3,6 +3,11 @@ package com.hisense.dataservice.service; ...@@ -3,6 +3,11 @@ package com.hisense.dataservice.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.hisense.dataservice.dto.DataApiModelDto; import com.hisense.dataservice.dto.DataApiModelDto;
import com.hisense.dataservice.library.model.Result; import com.hisense.dataservice.library.model.Result;
import com.hisense.dataservice.library.model.page.PageData;
import com.hisense.dataservice.library.model.page.PageLink;
import com.hisense.dataservice.vo.DataApiModelItemVo;
import java.util.List;
/** /**
* @author : scc * @author : scc
...@@ -18,4 +23,5 @@ public interface DataApiServiceManagementService extends BaseService { ...@@ -18,4 +23,5 @@ public interface DataApiServiceManagementService extends BaseService {
Result<JSONObject> debugDataApiService(String environment, Long dataModelId); Result<JSONObject> debugDataApiService(String environment, Long dataModelId);
Result<PageData<DataApiModelItemVo>> queryDataApiList(String environment, Integer status, PageLink pageLink);
} }
...@@ -6,19 +6,27 @@ import com.hisense.dataservice.dto.DataApiModelDto; ...@@ -6,19 +6,27 @@ import com.hisense.dataservice.dto.DataApiModelDto;
import com.hisense.dataservice.entity.*; import com.hisense.dataservice.entity.*;
import com.hisense.dataservice.enums.*; import com.hisense.dataservice.enums.*;
import com.hisense.dataservice.library.model.Result; import com.hisense.dataservice.library.model.Result;
import com.hisense.dataservice.library.model.page.PageData;
import com.hisense.dataservice.library.model.page.PageLink;
import com.hisense.dataservice.repository.*; import com.hisense.dataservice.repository.*;
import com.hisense.dataservice.service.DataApiServiceManagementService; import com.hisense.dataservice.service.DataApiServiceManagementService;
import com.hisense.dataservice.util.ThreadPoolManagerUtil; import com.hisense.dataservice.util.ThreadPoolManagerUtil;
import com.hisense.dataservice.vo.DataApiModelItemVo;
import com.hisense.dataservice.vo.DataSourceVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import javax.persistence.criteria.Predicate;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.util.*; import java.util.*;
import java.util.concurrent.Future; import java.util.concurrent.Future;
import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -174,6 +182,9 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage ...@@ -174,6 +182,9 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage
dataApiModel = dataApiModelOptional.get(); dataApiModel = dataApiModelOptional.get();
} }
if(!StringUtils.isEmpty(dataApiModelDto.getImageId())){
dataApiModel.setImageId(dataApiModel.getImageId());
}
if(!StringUtils.isEmpty(dataApiModelDto.getDesc())){ if(!StringUtils.isEmpty(dataApiModelDto.getDesc())){
dataApiModel.setDescription(dataApiModelDto.getDesc()); dataApiModel.setDescription(dataApiModelDto.getDesc());
...@@ -261,19 +272,22 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage ...@@ -261,19 +272,22 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage
columnDataRangeFilter.setTableName(dataApiTable.getTableName()); // 设置表名 columnDataRangeFilter.setTableName(dataApiTable.getTableName()); // 设置表名
List<DataApiColumn> dataApiColumns = dataApiColumnRepository.findAllByDataTableIdAndDeletedIsFalse(tableId); List<DataApiColumn> dataApiColumns = dataApiColumnRepository.findAllByDataTableIdAndDeletedIsFalse(tableId);
Map<Long, String> columnIdToNameMap = dataApiColumns.stream().collect(Collectors.toMap(DataApiColumn::getId, DataApiColumn::getFieldName)); Map<Long, DataApiColumn> columnIdToNameMap = dataApiColumns.stream().collect(Collectors.toMap(DataApiColumn::getId, Function.identity()));
for (DataColumn field : fields) { for (DataColumn field : fields) {
Long id = field.getId(); Long id = field.getId();
if(null == id){ if(null == id){
log.warn("列过滤条件:【{}】中数据字段:【{}】不存在ID", columnDataRangeFilter, field); log.warn("列过滤条件:【{}】中数据字段:【{}】不存在ID", columnDataRangeFilter, field);
return Boolean.FALSE; return Boolean.FALSE;
} }
String columnName = columnIdToNameMap.get(id); DataApiColumn column = columnIdToNameMap.get(id);
String columnName = column.getFieldName();
if(StringUtils.isEmpty(columnName)){ if(StringUtils.isEmpty(columnName)){
log.warn("数据列:【id:{},name:{}】不存在表:【{}】中", id, columnName, tableId); log.warn("数据列:【id:{},name:{}】不存在表:【{}】中", id, columnName, tableId);
return Boolean.FALSE; return Boolean.FALSE;
} }
field.setColumnName(columnName); // 设置表名 field.setColumnName(columnName); // 设置表名
field.setFieldType(column.getFiledType());
field.setDesc(column.getDescription());
} }
} }
return Boolean.TRUE; return Boolean.TRUE;
...@@ -310,6 +324,7 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage ...@@ -310,6 +324,7 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage
} }
field.setColumnName(dataApiColumn.getFieldName()); // 设置字段名 field.setColumnName(dataApiColumn.getFieldName()); // 设置字段名
field.setFieldType(dataApiColumn.getFiledType()); // 设置字段类型 field.setFieldType(dataApiColumn.getFiledType()); // 设置字段类型
field.setDesc(dataApiColumn.getDescription()); // 设置字段描述
} }
} }
return Boolean.TRUE; return Boolean.TRUE;
...@@ -413,6 +428,29 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage ...@@ -413,6 +428,29 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage
return success("数据api服务调试", result); return success("数据api服务调试", result);
} }
@Override
public Result<PageData<DataApiModelItemVo>> queryDataApiList(String environment, Integer status, PageLink pageLink) {
Specification<DataApiModel> spec = (root, query, builder) -> {
List<Predicate> andList = new LinkedList<>();
andList.add(builder.equal((root.get("status").as(Integer.class)), status));
andList.add(builder.equal((root.get("deleted").as(Boolean.class)), Boolean.FALSE));
andList.add(builder.equal((root.get("systemEnv").as(SystemEnv.class)), SystemEnv.valueOf(environment.toUpperCase())));
return builder.and(andList.toArray(new Predicate[0]));
};
Page<DataApiModel> dataApiModelPage = dataApiModelRepository.findAll(spec, toPageable(pageLink));
PageData<DataApiModelItemVo> result = pageToPageData(dataApiModelPage);
List<DataApiModelItemVo> dataSourceVos = new ArrayList<>();
for (DataApiModel dataApiModel : dataApiModelPage.getContent()) {
dataSourceVos.add(dataApiModel.toItem());
}
result.setData(dataSourceVos);
return success(result);
}
private List<List<Object>> executeDataQueryTask(String dataSql, DataApiModelConfig dataApiModelConfig, DataApiDataSource dataSource) throws Exception{ private List<List<Object>> executeDataQueryTask(String dataSql, DataApiModelConfig dataApiModelConfig, DataApiDataSource dataSource) throws Exception{
// 获取sql的填充参数 // 获取sql的填充参数
List<Object> jdbcParamValues = new ArrayList<>(); List<Object> jdbcParamValues = new ArrayList<>();
......
package com.hisense.dataservice.vo;
import com.hisense.dataservice.bo.ColumnDataRangeFilter;
import com.hisense.dataservice.bo.LineDataRangeFilter;
import com.hisense.dataservice.bo.TableJoinRelationConfig;
import com.hisense.dataservice.enums.NetworkEnv;
import com.hisense.dataservice.enums.SystemEnv;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @author : scc
* @date : 2023/02/24
**/
@ApiModel("数据服务详情vo")
@Data
public class DataApiModelDetailVo {
@ApiModelProperty(name = "数据服务ID")
private Long id;
@ApiModelProperty(name = "数据服务名称")
private String name;
@ApiModelProperty(name = "数据服务描述")
private String description;
@ApiModelProperty(name = "发布/创建人")
private String creator;
@ApiModelProperty(name = "负责人")
private String systemLeader;
@ApiModelProperty(name = "发布系统")
private String publishSystem;
@ApiModelProperty(name = "发布时间")
private Date createdTime;
@ApiModelProperty(name = "数据服务图片")
private String imageId;
@ApiModelProperty(name = "网络环境")
private NetworkEnv networkEnv;
@ApiModelProperty(value = "列数据范围")
private List<ColumnDataRangeFilter> columnDataRangeConfig;
@ApiModelProperty(value = "数据表关系")
private List<TableJoinRelationConfig> tableJoinRelationConfig;
@ApiModelProperty(value = "行数据范围")
private List<LineDataRangeFilter> lineDataRangeConfig;
}
package com.hisense.dataservice.vo;
import com.hisense.dataservice.enums.SystemEnv;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author : scc
* @date : 2023/02/24
**/
@ApiModel("数据服务列表vo")
@Data
public class DataApiModelItemVo {
@ApiModelProperty(name = "数据源ID")
private Long dataSourceId;
@ApiModelProperty(name = "数据服务ID")
private Long id;
@ApiModelProperty(name = "数据服务名称")
private String name;
@ApiModelProperty(name = "数据服务描述")
private String description;
@ApiModelProperty(name = "数据服务图片")
private String imageId;
@ApiModelProperty(name = "系统环境")
private SystemEnv systemEnv;
}
package com.hisense.dataservice.vo;
import io.swagger.annotations.ApiModelProperty;
/**
* @author : scc
* @date : 2023/02/24
**/
public class DataApiModelVo {
@ApiModelProperty(name = "数据源ID")
private Long dataSourceId;
@ApiModelProperty(name = "数据源名称")
private Long dataSourceName;
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论