Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
data-service
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
songchuancai
data-service
Commits
7cc43e06
提交
7cc43e06
authored
3月 29, 2023
作者:
songchuancai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化代码
上级
99379019
显示空白字符变更
内嵌
并排
正在显示
36 个修改的文件
包含
1309 行增加
和
207 行删除
+1309
-207
ColumnDataRangeFilter.java
...ava/com/hisense/dataservice/bo/ColumnDataRangeFilter.java
+1
-1
DataColumn.java
src/main/java/com/hisense/dataservice/bo/DataColumn.java
+1
-1
LineDataRangeFilter.java
.../java/com/hisense/dataservice/bo/LineDataRangeFilter.java
+2
-2
DataServiceLogManagementController.java
...ervice/controller/DataServiceLogManagementController.java
+1
-2
DataServiceManagementController.java
...taservice/controller/DataServiceManagementController.java
+13
-12
MyApplicationController.java
...sense/dataservice/controller/MyApplicationController.java
+33
-17
DataApiModelSubscribeDto.java
...com/hisense/dataservice/dto/DataApiModelSubscribeDto.java
+40
-0
WorkFlowDto.java
src/main/java/com/hisense/dataservice/dto/WorkFlowDto.java
+32
-0
DataApiApplication.java
...va/com/hisense/dataservice/entity/DataApiApplication.java
+41
-0
DataApiProcessRecord.java
.../com/hisense/dataservice/entity/DataApiProcessRecord.java
+40
-0
DataApiSubscribeConfig.java
...om/hisense/dataservice/entity/DataApiSubscribeConfig.java
+9
-0
DataItem.java
src/main/java/com/hisense/dataservice/entity/DataItem.java
+67
-0
ElasticsearchUtils.java
.../com/hisense/dataservice/es/utils/ElasticsearchUtils.java
+1
-1
DataApiApplicationRepository.java
.../dataservice/repository/DataApiApplicationRepository.java
+41
-0
DataApiModelRepository.java
...isense/dataservice/repository/DataApiModelRepository.java
+13
-0
DataApiProcessRecordRepository.java
...ataservice/repository/DataApiProcessRecordRepository.java
+18
-0
DataApiSubscribeRepository.java
...se/dataservice/repository/DataApiSubscribeRepository.java
+49
-0
DataItemRepository.java
...om/hisense/dataservice/repository/DataItemRepository.java
+7
-0
BaseService.java
...ain/java/com/hisense/dataservice/service/BaseService.java
+40
-0
DataApiCommonService.java
...com/hisense/dataservice/service/DataApiCommonService.java
+1
-1
DataApiServiceManagementService.java
.../dataservice/service/DataApiServiceManagementService.java
+1
-1
MyApplicationService.java
...com/hisense/dataservice/service/MyApplicationService.java
+7
-4
WorkFlowService.java
...java/com/hisense/dataservice/service/WorkFlowService.java
+15
-0
DataApiCommonServiceImpl.java
...se/dataservice/service/impl/DataApiCommonServiceImpl.java
+347
-92
DataApiServiceManagementServiceImpl.java
...ice/service/impl/DataApiServiceManagementServiceImpl.java
+14
-1
DataMarketServiceImpl.java
...sense/dataservice/service/impl/DataMarketServiceImpl.java
+0
-61
DataServiceLogManagementServiceImpl.java
...ice/service/impl/DataServiceLogManagementServiceImpl.java
+19
-3
MyApplicationServiceImpl.java
...se/dataservice/service/impl/MyApplicationServiceImpl.java
+122
-0
WorkFlowServiceImpl.java
...hisense/dataservice/service/impl/WorkFlowServiceImpl.java
+69
-0
HttpUtil.java
src/main/java/com/hisense/dataservice/util/HttpUtil.java
+89
-0
DataApiModelSubscribeDetailVo.java
...hisense/dataservice/vo/DataApiModelSubscribeDetailVo.java
+75
-0
LdapUserInfoVo.java
src/main/java/com/hisense/dataservice/vo/LdapUserInfoVo.java
+17
-0
MyApplicationVo.java
...main/java/com/hisense/dataservice/vo/MyApplicationVo.java
+32
-0
application.yml
src/main/resources/application.yml
+16
-0
DataApiCommonServiceTest.java
...hisense/dataservice/service/DataApiCommonServiceTest.java
+20
-4
DataApiServiceManagementServiceTest.java
...aservice/service/DataApiServiceManagementServiceTest.java
+16
-4
没有找到文件。
src/main/java/com/hisense/dataservice/bo/ColumnDataRangeFilter.java
浏览文件 @
7cc43e06
...
...
@@ -23,7 +23,7 @@ import java.util.Locale;
@NoArgsConstructor
public
class
ColumnDataRangeFilter
{
// 表名
@ApiModelProperty
(
hidden
=
true
)
//
@ApiModelProperty(hidden = true)
private
String
tableName
;
// 表名ID
@ApiModelProperty
(
value
=
"表名ID"
,
required
=
true
)
...
...
src/main/java/com/hisense/dataservice/bo/DataColumn.java
浏览文件 @
7cc43e06
...
...
@@ -13,7 +13,7 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public
class
DataColumn
{
// 字段名
@ApiModelProperty
(
hidden
=
true
)
//
@ApiModelProperty(hidden = true)
private
String
columnName
;
// 字段ID
@ApiModelProperty
(
value
=
"字段ID"
,
required
=
true
)
...
...
src/main/java/com/hisense/dataservice/bo/LineDataRangeFilter.java
浏览文件 @
7cc43e06
...
...
@@ -33,8 +33,8 @@ public class LineDataRangeFilter {
@ApiModelProperty
(
value
=
"表ID"
,
required
=
true
)
private
Long
tableId
;
@ApiModelProperty
(
hidden
=
true
)
//
@ApiModelProperty(value = "表名", required = false)
//
@ApiModelProperty(hidden = true)
@ApiModelProperty
(
value
=
"表名"
,
required
=
false
)
private
String
tableName
;
/**
...
...
src/main/java/com/hisense/dataservice/controller/DataServiceLogManagementController.java
浏览文件 @
7cc43e06
...
...
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*;
* @author : scc
* @date : 2023/03/20
**/
@Api
(
tags
=
"数据
api
服务-日志管理"
)
@Api
(
tags
=
"数据服务-日志管理"
)
@RestController
@RequestMapping
(
"/api/v1/dataService/logs"
)
public
class
DataServiceLogManagementController
extends
BaseController
{
...
...
@@ -25,7 +25,6 @@ public class DataServiceLogManagementController extends BaseController{
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"environment"
,
value
=
"环境"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"systemId"
,
value
=
"系统ID"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"nextToken"
,
value
=
"下一页token"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"pageSize"
,
value
=
"指定返回结果中每页显示的记录数量"
,
defaultValue
=
"10"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"page"
,
value
=
"指定显示返回结果中的第几页"
,
defaultValue
=
"1"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"sortProperty"
,
value
=
"根据哪个字段排序"
,
required
=
false
,
allowableValues
=
"timestamp, status"
,
defaultValue
=
"timestamp"
),
...
...
src/main/java/com/hisense/dataservice/controller/DataServiceManagementController.java
浏览文件 @
7cc43e06
...
...
@@ -6,12 +6,9 @@ import com.hisense.dataservice.enums.ModelConfigType;
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.DataApiDataSourceManagementService
;
import
com.hisense.dataservice.service.DataApiServiceManagementService
;
import
com.hisense.dataservice.vo.DataApiModelDetailVo
;
import
com.hisense.dataservice.vo.DataApiModelItemVo
;
import
com.hisense.dataservice.vo.DataTableVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
...
...
@@ -20,8 +17,6 @@ import lombok.extern.slf4j.Slf4j;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author : scc
* @date : 2023/02/24
...
...
@@ -37,13 +32,13 @@ public class DataServiceManagementController extends BaseController {
private
DataApiServiceManagementService
dataApiServiceManagementService
;
@ApiOperation
(
value
=
"数据服务管理-创建或修改数据服务(草稿状态)"
,
notes
=
"返回数据模型ID"
)
@ApiOperation
(
value
=
"数据服务管理-创建或修改数据服务(草稿状态)"
,
notes
=
"返回数据模型ID"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"environment"
,
value
=
"环境"
,
required
=
true
)
})
@PostMapping
(
"/createDataApiService/{environment}"
)
public
Result
<
Long
>
createDataApiService
(
@PathVariable
String
environment
,
@RequestBody
DataApiModelDto
dataApiModelDto
){
return
dataApiServiceManagementService
.
createDataApi
(
environment
,
dataApiModelDto
);
public
Result
<
Long
>
createDataApiService
(
@PathVariable
String
environment
,
@RequestBody
DataApiModelDto
dataApiModelDto
)
{
return
dataApiServiceManagementService
.
createDataApi
(
environment
,
dataApiModelDto
);
}
@ApiOperation
(
value
=
"数据服务管理-发布数据服务"
)
...
...
@@ -60,8 +55,11 @@ public class DataServiceManagementController extends BaseController {
@ApiOperation
(
value
=
"数据服务管理-数据服务列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"environment"
,
value
=
"环境"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"publishSystemId"
,
value
=
"发布系统ID"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"类型(1:已发布/0:草稿)"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"serviceName"
,
value
=
"服务名"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"systemName"
,
value
=
"发布系统名"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"publisher"
,
value
=
"发布者"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"publishSystemId"
,
value
=
"发布系统ID(服务市场列表不必填)"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"类型(1:已发布/0:草稿)服务市场列表必须传1"
,
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"
),
...
...
@@ -69,6 +67,9 @@ public class DataServiceManagementController extends BaseController {
})
@GetMapping
(
"/{environment}"
)
public
Result
<
PageData
<
DataApiModelItemVo
>>
getPublishDataApiList
(
@PathVariable
String
environment
,
@RequestParam
(
value
=
"serviceName"
)
String
serviceName
,
@RequestParam
(
value
=
"systemName"
)
String
systemName
,
@RequestParam
(
value
=
"publisher"
)
String
publisher
,
@RequestParam
(
value
=
"status"
,
defaultValue
=
"1"
)
Integer
status
,
@RequestParam
(
value
=
"publishSystemId"
)
Long
publishSystemId
,
@RequestParam
(
value
=
"pageSize"
,
required
=
false
,
defaultValue
=
"10"
)
Integer
pageSize
,
...
...
@@ -78,7 +79,7 @@ public class DataServiceManagementController extends BaseController {
PageLink
pageLink
=
createPageLink
(
pageSize
,
page
,
""
,
sortProperty
,
sortOrder
);
return
dataApiServiceManagementService
.
queryDataApiList
(
environment
,
status
,
publishSystemId
,
pageLink
);
return
dataApiServiceManagementService
.
queryDataApiList
(
environment
,
status
,
publishSystemId
,
serviceName
,
systemName
,
publisher
,
pageLink
);
}
@ApiOperation
(
value
=
"数据服务管理-服务详情"
)
...
...
@@ -109,7 +110,7 @@ public class DataServiceManagementController extends BaseController {
@PathVariable
Long
dataModelId
,
@PathVariable
ModelConfigType
type
)
{
return
dataApiServiceManagementService
.
debugDataApiService
(
environment
,
dataModelId
,
type
);
return
dataApiServiceManagementService
.
debugDataApiService
(
environment
,
dataModelId
,
type
);
}
...
...
src/main/java/com/hisense/dataservice/controller/
DataServiceMarket
Controller.java
→
src/main/java/com/hisense/dataservice/controller/
MyApplication
Controller.java
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
controller
;
import
com.hisense.dataservice.enums.DataSourceTypeEnum
;
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.DataMarketService
;
import
com.hisense.dataservice.vo.DataApiModelItemVo
;
import
com.hisense.dataservice.service.MyApplicationService
;
import
com.hisense.dataservice.vo.DataApiModelDetailVo
;
import
com.hisense.dataservice.vo.DataApiModelSubscribeDetailVo
;
import
com.hisense.dataservice.vo.DataSourceVo
;
import
com.hisense.dataservice.vo.MyApplicationVo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* @author : scc
* @date : 2023/03/2
2
* @date : 2023/03/2
7
**/
@Api
(
tags
=
"数据api服务-
服务市场
"
)
@Api
(
tags
=
"数据api服务-
我的申请
"
)
@RestController
@RequestMapping
(
"/api/v1/dataService/market"
)
public
class
DataServiceMarketController
extends
BaseController
{
@RequestMapping
(
"/api/v1/dataService/myapp"
)
@Slf4j
public
class
MyApplicationController
extends
BaseController
{
@Autowired
private
DataMarketService
dataMarket
Service
;
private
MyApplicationService
myApplication
Service
;
@ApiOperation
(
value
=
"
数据服务市场-服务
列表"
)
@ApiOperation
(
value
=
"
我的申请-我的订阅
列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"environment"
,
value
=
"环境"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"serviceName"
,
value
=
"服务名"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"systemName"
,
value
=
"发布系统名"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"publisher"
,
value
=
"发布者"
,
required
=
false
),
@ApiImplicitParam
(
name
=
"status"
,
value
=
"状态(0:未审批,1审批)"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"systemId"
,
value
=
"系统ID"
,
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}"
)
public
Result
<
PageData
<
DataApiModelItemVo
>>
getPublishDataApiList
(
@PathVariable
String
environment
,
@RequestParam
(
value
=
"serviceName"
)
String
serviceName
,
@RequestParam
(
value
=
"systemName"
)
String
systemName
,
@RequestParam
(
value
=
"publisher"
)
String
publisher
,
public
Result
<
PageData
<
MyApplicationVo
>>
getApplicationList
(
@PathVariable
String
environment
,
@RequestParam
(
value
=
"status"
)
Integer
status
,
@RequestParam
(
value
=
"systemId"
)
Integer
systemId
,
@RequestParam
(
value
=
"pageSize"
,
required
=
false
,
defaultValue
=
"10"
)
Integer
pageSize
,
@RequestParam
(
value
=
"page"
,
required
=
false
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"sortProperty"
,
required
=
false
,
defaultValue
=
"id"
)
String
sortProperty
,
@RequestParam
(
value
=
"sortOrder"
,
required
=
false
,
defaultValue
=
"ASC"
)
String
sortOrder
)
{
PageLink
pageLink
=
createPageLink
(
pageSize
,
page
,
""
,
sortProperty
,
sortOrder
);
return
dataMarketService
.
queryDataServiceList
(
environment
,
serviceName
,
systemName
,
publisher
,
pageLink
);
return
myApplicationService
.
querySubscribeList
(
environment
,
status
,
systemId
,
pageLink
);
}
@ApiOperation
(
value
=
"数据服务管理-服务详情"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"environment"
,
value
=
"环境"
,
required
=
true
),
@ApiImplicitParam
(
name
=
"subscribeId"
,
value
=
"订阅ID"
,
required
=
true
)
})
@GetMapping
(
"/{environment}/{subscribeId}"
)
public
Result
<
DataApiModelSubscribeDetailVo
>
getApiModelDetail
(
@PathVariable
String
environment
,
@PathVariable
Long
subscribeId
)
{
return
myApplicationService
.
queryApiModelDetail
(
environment
,
subscribeId
);
}
}
src/main/java/com/hisense/dataservice/dto/DataApiModelSubscribeDto.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
dto
;
import
com.hisense.dataservice.bo.ColumnDataRangeFilter
;
import
com.hisense.dataservice.bo.LineDataRangeFilter
;
import
com.hisense.dataservice.bo.TableJoinRelationConfig
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.List
;
/**
* @author : scc
* @date : 2023/03/22
**/
@ApiModel
(
"数据api服务订阅dto"
)
@Data
public
class
DataApiModelSubscribeDto
{
@ApiModelProperty
(
value
=
"数据模板ID"
,
required
=
false
)
private
Long
modelId
;
@ApiModelProperty
(
value
=
"列数据范围"
,
required
=
true
)
private
List
<
ColumnDataRangeFilter
>
columnDataRangeConfig
;
@ApiModelProperty
(
value
=
"行数据范围"
,
required
=
true
)
private
List
<
LineDataRangeFilter
>
lineDataRangeConfig
;
@ApiModelProperty
(
value
=
"订阅系统ID"
,
required
=
false
)
private
Integer
subscribeSystemId
;
@ApiModelProperty
(
value
=
"网络环境"
,
required
=
true
)
private
String
networkEnv
;
@ApiModelProperty
(
value
=
"系统环境"
,
required
=
true
)
private
String
systemEnv
;
@ApiModelProperty
(
value
=
"订阅服务描述"
,
required
=
true
)
private
String
desc
;
}
src/main/java/com/hisense/dataservice/dto/WorkFlowDto.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
dto
;
import
lombok.Data
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author : scc
* @date : 2023/03/23
**/
@Data
public
class
WorkFlowDto
{
private
String
userID
;
//用户id
private
String
processDefName
;
//流程定义名称
private
String
processInstName
;
//流程实例名称
private
String
processInstDesc
;
//流程实例描述
private
Map
<
String
,
Object
>
relaDatas
;
//相关数据
private
String
tenantID
;
//租户id
private
String
tableName
;
//业务表
private
Map
bizInfo
;
//业务数据
private
Boolean
finishFirstWorkItem
;
//是否完成第一个工作项
private
Boolean
log
;
//是否记录操作
private
String
userName
;
//用户名称
private
String
msg
;
//操作意见
private
String
personID
;
//指定人员
private
List
<
String
>
procBindList
;
//流程实例条件
private
List
<
String
>
bizBindList
;
//业务条件
private
Map
pageCond
;
//分页属性
private
String
processDefId
;
//流程定义ID;
}
src/main/java/com/hisense/dataservice/entity/DataApiApplication.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author : scc
* @date : 2023/03/23
* 发布、订阅应用信息
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
(
name
=
"data_api_application"
)
public
class
DataApiApplication
extends
BaseEntity
{
// 流程记录ID
private
Long
processRecordId
;
// 数据服务订阅配置ID
@Column
(
name
=
"data_model_sub_config_id"
,
nullable
=
false
)
private
Long
dataModelSubConfigId
;
@Column
(
columnDefinition
=
"varchar2(256) default null"
)
private
String
userKey
;
private
String
appId
;
private
String
appKey
;
private
Integer
system
;
// 发布、订阅系统所属ID
private
Integer
environment
;
// 环境
}
src/main/java/com/hisense/dataservice/entity/DataApiProcessRecord.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
entity
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.Table
;
/**
* @author : scc
* @date : 2023/03/23
* 数据服务-发布、订阅流程记录表
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table
(
name
=
"data_api_process_record"
)
public
class
DataApiProcessRecord
extends
BaseEntity
{
// 数据服务ID
private
Long
dataModelId
;
// 流程类型(sub-订阅,pub-发布)
@Column
(
name
=
"process_type"
,
columnDefinition
=
"varchar2(32)"
)
private
String
processType
;
// 流程实例ID
@Column
(
columnDefinition
=
"varchar2(512) default null"
)
private
String
processInstID
;
/**
* 审批状态:0-删除,1-初始,2-完成审批,3-审批不通过
*/
private
Integer
status
;
// 审批意见
private
String
remark
;
}
src/main/java/com/hisense/dataservice/entity/DataApiSubscribeConfig.java
浏览文件 @
7cc43e06
...
...
@@ -37,4 +37,13 @@ public class DataApiSubscribeConfig extends BaseEntity {
@Column
(
name
=
"system_env"
,
columnDefinition
=
"varchar2(10)"
,
nullable
=
false
)
private
SystemEnv
systemEnv
;
// 订阅负责人
private
String
subSystemLeader
;
// 订阅说明
private
String
subDesc
;
// 订阅唯一标识
private
String
hashStr
;
}
src/main/java/com/hisense/dataservice/entity/DataItem.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author : scc
* @date : 2023/03/23
**/
@Entity
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table
(
name
=
"data_item"
)
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
DataItem
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
Integer
id
;
@Column
(
columnDefinition
=
"varchar(32) default null"
)
private
String
groupKey
;
// 字典组key
@Column
(
columnDefinition
=
"varchar(32) default null"
)
private
String
groupName
;
// 字典组名称
@Column
(
columnDefinition
=
"varchar(32) default null"
)
private
String
itemKey
;
// 字典key
@Column
(
columnDefinition
=
"varchar(32) default null"
)
private
String
itemName
;
// 字典名称
private
Integer
parentId
;
// 父字典ID
private
Integer
status
=
1
;
// 状态:0 废弃,1有效
private
Integer
createId
;
// remove for later
private
String
creator
;
private
Date
createTime
;
private
Date
updateTime
;
public
DataItem
(
String
groupKey
,
String
groupName
,
String
itemKey
,
String
itemName
,
Integer
parentId
,
String
creator
,
Date
createTime
,
Date
updateTime
)
{
this
.
groupKey
=
groupKey
;
this
.
groupName
=
groupName
;
this
.
itemKey
=
itemKey
;
this
.
itemName
=
itemName
;
this
.
parentId
=
parentId
;
this
.
creator
=
creator
;
this
.
createTime
=
createTime
;
this
.
updateTime
=
updateTime
;
}
}
\ No newline at end of file
src/main/java/com/hisense/dataservice/es/utils/ElasticsearchUtils.java
浏览文件 @
7cc43e06
...
...
@@ -442,7 +442,7 @@ public class ElasticsearchUtils {
searchRequest
.
indices
(
indexName
);
SearchSourceBuilder
searchSourceBuilder
=
buildSearchSourceBuilder
(
conditionFileds
);
//设置分页
searchSourceBuilder
.
from
((
pageNum
-
1
)
*
pageSize
).
size
(
pageSize
);
searchSourceBuilder
.
from
((
pageNum
)
*
pageSize
).
size
(
pageSize
);
searchRequest
.
source
(
searchSourceBuilder
);
SearchResponse
searchResponse
=
restHighLevelClient
.
search
(
searchRequest
,
RequestOptions
.
DEFAULT
);
//分析结果
...
...
src/main/java/com/hisense/dataservice/repository/DataApiApplicationRepository.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
repository
;
import
com.hisense.dataservice.entity.DataApiApplication
;
import
com.hisense.dataservice.entity.PublishApplication
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Set
;
/**
* @author : scc
* @date : 2023/03/23
**/
@Repository
public
interface
DataApiApplicationRepository
extends
JpaRepository
<
DataApiApplication
,
Long
>
{
DataApiApplication
findByProcessRecordId
(
Long
processRecordId
);
DataApiApplication
findDataApiApplicationByDataModelSubConfigId
(
Long
dataModelSubConfigId
);
// 获取数据api
@Query
(
"select p from DataApiApplication p JOIN DataApiProcessRecord pr "
+
"on pr.id = p.processRecordId and (pr.processType='sub' and pr.status=:status)"
+
"where p.system =:systemId and pr.dataModelId=:apiId "
)
List
<
DataApiApplication
>
findSubscribedApiBySystem
(
@Param
(
"systemId"
)
Integer
systemId
,
@Param
(
"apiId"
)
Long
apiId
,
@Param
(
"status"
)
Integer
status
);
// @Query("select p from DataApiApplication p JOIN DataApiProcessRecord pr " +
// "on pr.id = p.processRecordId and pr.processType='sub' and p.userKey is not null " +
// "where p.system =:systemId and p.environment=:env")
// List<PublishApplication> findSubscribedBySystemUserKeyNotNull(@Param("systemId") Integer systemId, @Param("type") Integer type, @Param("env") Integer env);
//
// @Query("select p from DataApiApplication p JOIN DataApiProcessRecord pr " +
// "on pr.id = p.processRecordId and pr.processType='sub' and p.appId is not null " +
// "where p.system =:systemId and p.environment=:env")
// List<PublishApplication> findSubscribedBySystemAppIdNotNull(@Param("systemId") Integer systemId,@Param("type") Integer type,@Param("env") Integer env);
}
src/main/java/com/hisense/dataservice/repository/DataApiModelRepository.java
浏览文件 @
7cc43e06
...
...
@@ -2,6 +2,7 @@ package com.hisense.dataservice.repository;
import
com.hisense.dataservice.entity.DataApiModel
;
import
com.hisense.dataservice.enums.SystemEnv
;
import
com.hisense.dataservice.vo.LdapUserInfoVo
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.jpa.domain.Specification
;
...
...
@@ -10,7 +11,10 @@ import org.springframework.data.jpa.repository.Query;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Set
;
/**
* @author : scc
...
...
@@ -29,4 +33,13 @@ public interface DataApiModelRepository extends JpaRepository<DataApiModel,Long>
@Query
(
value
=
"select name from system_info where id = :systemId"
,
nativeQuery
=
true
)
String
findSystemNameBySystemId
(
@Param
(
"systemId"
)
Long
systemId
);
// 获取系统的项目管理员和租户管理员
@Query
(
value
=
"select prd_api_dev_dame as projectDevName ,prd_api_tenant_name as tenantAdminName from system_info where id = :systemId"
,
nativeQuery
=
true
)
Map
<
String
,
String
>
findSystemProjectAndTenantAdminNameBySystemId
(
@Param
(
"systemId"
)
Integer
systemId
);
@Query
(
value
=
"select a.user_id, a.cn from ldap_user_info a where a.user_id in (:userIds)"
,
nativeQuery
=
true
)
List
<
Map
<
String
,
String
>>
getUserInfoByUserIds
(
@Param
(
"userIds"
)
Set
<
String
>
userIds
);
}
src/main/java/com/hisense/dataservice/repository/DataApiProcessRecordRepository.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
repository
;
import
com.hisense.dataservice.entity.DataApiProcessRecord
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.Optional
;
/**
* @author : scc
* @date : 2023/03/23
**/
public
interface
DataApiProcessRecordRepository
extends
JpaRepository
<
DataApiProcessRecord
,
Long
>
{
// 根据流程ID查询流程记录
Optional
<
DataApiProcessRecord
>
findByProcessInstID
(
String
processInstId
);
}
src/main/java/com/hisense/dataservice/repository/DataApiSubscribeRepository.java
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
repository
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hisense.dataservice.entity.DataApiApplication
;
import
com.hisense.dataservice.entity.DataApiSubscribeConfig
;
import
com.hisense.dataservice.enums.NetworkEnv
;
import
com.hisense.dataservice.enums.SystemEnv
;
import
com.hisense.dataservice.vo.MyApplicationVo
;
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.Query
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.Optional
;
/**
...
...
@@ -15,4 +26,42 @@ public interface DataApiSubscribeRepository extends JpaRepository<DataApiSubscri
Optional
<
DataApiSubscribeConfig
>
findBySubscribeSystemIdAndDataApiModelIdAndDeletedIsFalse
(
Integer
subscribeSystemId
,
Long
dataApiModelId
);
Optional
<
DataApiSubscribeConfig
>
findBySubscribeSystemIdAndDataApiModelIdAndCreatorAndDeletedIsFalse
(
Integer
subscribeSystemId
,
Long
dataApiModelId
,
String
userName
);
// 查询已审批的服务
@Query
(
value
=
"SELECT new com.hisense.dataservice.vo.MyApplicationVo(sc.id, m.name, m.description) "
+
"FROM DataApiSubscribeConfig sc "
+
"LEFT JOIN DataApiApplication app on sc.id = app.dataModelSubConfigId "
+
"LEFT JOIN DataApiProcessRecord pr on pr.id = app.processRecordId "
+
"LEFT JOIN DataApiModel m on m.id = pr.dataModelId "
+
"WHERE sc.subscribeSystemId = :systemId and pr.status in (2,3) and sc.systemEnv =:systemEnv and sc.creator = :creator"
,
countQuery
=
" "
+
"SELECT count(sc) "
+
"FROM DataApiSubscribeConfig sc "
+
"LEFT JOIN DataApiApplication app on sc.id = app.dataModelSubConfigId "
+
"LEFT JOIN DataApiProcessRecord pr on pr.id = app.processRecordId "
+
"LEFT JOIN DataApiModel m on m.id = pr.dataModelId "
+
"WHERE sc.subscribeSystemId = :systemId and pr.status in (2,3) and sc.systemEnv =:systemEnv and sc.creator = :creator"
)
Page
<
MyApplicationVo
>
findAllApplicationWithApprove
(
@Param
(
"systemId"
)
Integer
systemId
,
@Param
(
"systemEnv"
)
SystemEnv
systemEnv
,
@Param
(
"creator"
)
String
creator
,
Pageable
pageable
);
// 查询未审批的服务
@Query
(
value
=
"SELECT new com.hisense.dataservice.vo.MyApplicationVo(sc.id, m.name, m.description) "
+
"FROM DataApiSubscribeConfig sc "
+
"LEFT JOIN DataApiApplication app on sc.id = app.dataModelSubConfigId "
+
"LEFT JOIN DataApiProcessRecord pr on pr.id = app.processRecordId "
+
"LEFT JOIN DataApiModel m on m.id = pr.dataModelId "
+
"WHERE sc.subscribeSystemId = :systemId and pr.status =1 and sc.systemEnv =:systemEnv and sc.creator = :creator"
,
countQuery
=
" "
+
"SELECT count(sc) "
+
"FROM DataApiSubscribeConfig sc "
+
"LEFT JOIN DataApiApplication app on sc.id = app.dataModelSubConfigId "
+
"LEFT JOIN DataApiProcessRecord pr on pr.id = app.processRecordId "
+
"LEFT JOIN DataApiModel m on m.id = pr.dataModelId "
+
"WHERE sc.subscribeSystemId = :systemId and pr.status =1 and sc.systemEnv =:systemEnv and sc.creator = :creator"
)
Page
<
MyApplicationVo
>
findAllApplicationWithNoApprove
(
@Param
(
"systemId"
)
Integer
systemId
,
@Param
(
"systemEnv"
)
SystemEnv
systemEnv
,
@Param
(
"creator"
)
String
creator
,
Pageable
pageable
);
Optional
<
DataApiSubscribeConfig
>
findByIdAndSystemEnv
(
Long
id
,
SystemEnv
systemEnv
);
Optional
<
DataApiSubscribeConfig
>
findByIdAndSystemEnvAndSubscribeSystemId
(
Long
id
,
SystemEnv
systemEnv
,
Integer
systemId
);
}
src/main/java/com/hisense/dataservice/repository/DataItemRepository.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
repository
;
import
com.hisense.dataservice.entity.DataItem
;
import
org.springframework.data.jpa.repository.JpaRepository
;
public
interface
DataItemRepository
extends
JpaRepository
<
DataItem
,
Integer
>
{
}
src/main/java/com/hisense/dataservice/service/BaseService.java
浏览文件 @
7cc43e06
...
...
@@ -5,10 +5,13 @@ import com.hisense.dataservice.library.model.page.PageLink;
import
com.hisense.dataservice.library.model.page.SortOrder
;
import
com.hisense.dataservice.library.model.Result
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageImpl
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -61,4 +64,41 @@ public interface BaseService {
default
<
T
>
Result
<
T
>
failure
(
String
message
)
{
return
new
Result
<>(
Result
.
FAIL
,
message
);
}
/**
* 资源列表转分页
*/
default
<
T
>
PageData
buildPage
(
List
<
T
>
items
,
Pageable
pageable
)
{
PageData
<
T
>
resourcePageable
=
new
PageData
<>();
if
(!
CollectionUtils
.
isEmpty
(
items
)){
List
<
T
>
ts
=
splitList
(
items
,
pageable
.
getPageNumber
(),
pageable
.
getPageSize
());
Page
<
T
>
page
=
new
PageImpl
(
ts
,
pageable
,
items
.
size
());
resourcePageable
.
setData
(
ts
);
resourcePageable
.
setTotalPages
(
page
.
getTotalPages
());
resourcePageable
.
setTotalElements
(
page
.
getTotalElements
());
resourcePageable
.
setCurrentPage
(
page
.
getNumber
()
+
1
);
}
else
{
Page
<
T
>
page
=
new
PageImpl
(
Collections
.
emptyList
(),
pageable
,
items
.
size
());
resourcePageable
.
setData
(
items
);
resourcePageable
.
setTotalPages
(
page
.
getTotalPages
());
resourcePageable
.
setTotalElements
(
page
.
getTotalElements
());
resourcePageable
.
setCurrentPage
(
1
);
}
return
resourcePageable
;
}
default
<
T
>
List
<
T
>
splitList
(
List
<
T
>
list
,
int
pageNumber
,
int
pageSize
)
{
List
<
T
>
pageList
=
new
ArrayList
<
T
>();
int
currIdx
=
(
pageNumber
>
0
?
pageNumber
*
pageSize
:
0
);
if
(
null
==
list
||
list
.
size
()
==
0
)
{
return
pageList
;
}
for
(
int
i
=
0
;
i
<
pageSize
&&
i
<
list
.
size
()
-
currIdx
;
i
++)
{
T
listNew
=
list
.
get
(
currIdx
+
i
);
pageList
.
add
(
listNew
);
}
return
pageList
;
}
}
src/main/java/com/hisense/dataservice/service/DataApiCommonService.java
浏览文件 @
7cc43e06
...
...
@@ -8,7 +8,7 @@ import javax.servlet.http.HttpServletRequest;
* @author : scc
* @date : 2023/02/24
**/
public
interface
DataApiCommonService
{
public
interface
DataApiCommonService
extends
BaseService
{
Object
queryData
(
String
environment
,
String
pattern
,
String
apiId
,
HttpServletRequest
request
);
}
src/main/java/com/hisense/dataservice/service/DataApiServiceManagementService.java
浏览文件 @
7cc43e06
...
...
@@ -25,7 +25,7 @@ public interface DataApiServiceManagementService extends BaseService {
Result
<
JSONObject
>
debugDataApiService
(
String
environment
,
Long
dataModelId
,
ModelConfigType
type
);
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataApiList
(
String
environment
,
Integer
status
,
Long
publishSystemId
,
PageLink
pageLink
);
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataApiList
(
String
environment
,
Integer
status
,
Long
publishSystemId
,
String
serviceName
,
String
systemName
,
String
publisher
,
PageLink
pageLink
);
Result
<
DataApiModelDetailVo
>
queryApiModelDetail
(
String
environment
,
Long
modelId
);
}
src/main/java/com/hisense/dataservice/service/
DataMarket
Service.java
→
src/main/java/com/hisense/dataservice/service/
MyApplication
Service.java
浏览文件 @
7cc43e06
...
...
@@ -3,12 +3,15 @@ package com.hisense.dataservice.service;
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
com.hisense.dataservice.vo.DataApiModelSubscribeDetailVo
;
import
com.hisense.dataservice.vo.MyApplicationVo
;
/**
* @author : scc
* @date : 2023/03/2
2
* @date : 2023/03/2
7
**/
public
interface
DataMarketService
extends
BaseService
{
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataServiceList
(
String
environment
,
String
serviceName
,
String
systemName
,
String
publisher
,
PageLink
pageLink
);
public
interface
MyApplicationService
extends
BaseService
{
Result
<
PageData
<
MyApplicationVo
>>
querySubscribeList
(
String
environment
,
Integer
status
,
Integer
systemId
,
PageLink
pageLink
);
Result
<
DataApiModelSubscribeDetailVo
>
queryApiModelDetail
(
String
environment
,
Long
subscribeId
);
}
src/main/java/com/hisense/dataservice/service/WorkFlowService.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
service
;
import
com.hisense.dataservice.dto.WorkFlowDto
;
import
com.hisense.dataservice.library.model.Result
;
public
interface
WorkFlowService
{
/**
* 启动流程
* @param workFlowDto
* @return
*/
Result
<
Object
>
startProcess
(
WorkFlowDto
workFlowDto
);
}
src/main/java/com/hisense/dataservice/service/impl/DataApiCommonServiceImpl.java
浏览文件 @
7cc43e06
...
...
@@ -6,27 +6,32 @@ import com.alibaba.excel.write.metadata.WriteSheet;
import
com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hisense.dataservice.bo.*
;
import
com.hisense.dataservice.dto.DataApiModelDto
;
import
com.hisense.dataservice.entity.DataApiDataSource
;
import
com.hisense.dataservice.entity.DataApiModel
;
import
com.hisense.dataservice.entity.DataApiModelConfig
;
import
com.hisense.dataservice.entity.DataApiSubscribeConfig
;
import
com.hisense.dataservice.dto.DataApiModelSubscribeDto
;
import
com.hisense.dataservice.dto.WorkFlowDto
;
import
com.hisense.dataservice.entity.*
;
import
com.hisense.dataservice.enums.*
;
import
com.hisense.dataservice.es.utils.ElasticsearchUtils
;
import
com.hisense.dataservice.exceptions.DataQueryException
;
import
com.hisense.dataservice.library.model.Result
;
import
com.hisense.dataservice.repository.*
;
import
com.hisense.dataservice.service.DataApiCommonService
;
import
com.hisense.dataservice.service.WorkFlowService
;
import
com.hisense.dataservice.util.FileUtil
;
import
com.hisense.dataservice.util.ThreadPoolManagerUtil
;
import
com.hisense.dataservice.vo.LdapUserInfoVo
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.transaction.TransactionRolledbackException
;
import
javax.transaction.Transactional
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.concurrent.ExecutionException
;
import
java.util.concurrent.Future
;
...
...
@@ -57,10 +62,32 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
@Autowired
private
PublishApplicationRepository
publishApplicationRepository
;
@Autowired
private
DataItemRepository
dataItemRepository
;
@Autowired
private
DataApiApplicationRepository
dataApiApplicationRepository
;
@Autowired
private
DataApiProcessRecordRepository
dataApiProcessRecordRepository
;
@Autowired
private
WorkFlowService
workFlowService
;
@Value
(
"${flow.app.link}"
)
private
String
link
;
@Value
(
"${flow.app.im-link}"
)
private
String
imLink
;
private
Integer
queryDataTotalPerThread
=
2000
;
private
ThreadPoolManagerUtil
batchQueryDataThreadPool
=
new
ThreadPoolManagerUtil
(
"batchQueryDataThread"
);
@Autowired
private
ElasticsearchUtils
elasticsearchUtils
;
@Value
(
"${es.index-pre}"
)
private
String
ES_INDEX
;
private
Integer
findSystemByUserKeyOrAppId
(
HttpServletRequest
request
)
{
String
userKey
=
request
.
getParameter
(
"user_key"
);
...
...
@@ -76,6 +103,7 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
}
return
null
;
}
@Override
public
Object
queryData
(
String
environment
,
String
pattern
,
String
apiId
,
HttpServletRequest
request
)
{
//
...
...
@@ -252,7 +280,7 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// excel的列名
List
<
List
<
String
>>
heads
=
ColumnDataRangeFilter
.
generateExcelHead
(
dataApiModelConfig
.
getColumnDataRangeConfig
());
Result
<
List
<
List
<
List
<
Object
>>>>
dataResult
=
doGetData
(
dataApiDataSource
,
dataApiModelConfig
,
heads
);
Result
<
List
<
List
<
List
<
Object
>>>>
dataResult
=
doGetData
(
dataApiDataSource
,
dataApiModelConfig
,
heads
,
systemId
);
if
(
dataResult
.
getCode
().
equals
(
Result
.
FAIL
))
{
result
.
setMsg
(
dataResult
.
getMsg
());
return
result
;
...
...
@@ -281,8 +309,9 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
}
// 获取全部数据
private
Result
<
List
<
List
<
List
<
Object
>>>>
doGetData
(
DataApiDataSource
dataApiDataSource
,
DataApiModelConfig
dataApiModelConfig
,
List
<
List
<
String
>>
heads
)
{
private
Result
<
List
<
List
<
List
<
Object
>>>>
doGetData
(
DataApiDataSource
dataApiDataSource
,
DataApiModelConfig
dataApiModelConfig
,
List
<
List
<
String
>>
heads
,
Integer
systemId
)
{
Result
<
List
<
List
<
List
<
Object
>>>>
result
=
new
Result
<>();
DataApiModel
dataApiModel
=
new
DataApiModel
();
result
.
setCode
(
Result
.
OK
);
Long
dataPageTotal
;
String
fullSql
=
dataApiModelConfig
.
getFullSql
();
// TODO 前面需要判断该api是否已经审核通过了
...
...
@@ -292,8 +321,23 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
result
.
setMsg
(
"系统异常:未生成完整的sql"
);
return
result
;
}
try
{
List
<
Object
>
jdbcParamValues
=
new
ArrayList
<>();
// 记录调用记录
JSONObject
callSqlEsLogJson
=
new
JSONObject
();
callSqlEsLogJson
.
put
(
"sql"
,
fullSql
);
callSqlEsLogJson
.
put
(
"jdbcParams"
,
jdbcParamValues
);
callSqlEsLogJson
.
put
(
"serviceName"
,
dataApiModel
.
getName
());
callSqlEsLogJson
.
put
(
"systemName"
,
dataApiModel
.
getPublishSystemName
());
callSqlEsLogJson
.
put
(
"status"
,
"成功"
);
callSqlEsLogJson
.
put
(
"reason"
,
""
);
callSqlEsLogJson
.
put
(
"timestamp"
,
System
.
currentTimeMillis
());
callSqlEsLogJson
.
put
(
"environment"
,
dataApiModel
.
getSystemEnv
());
callSqlEsLogJson
.
put
(
"subscribeSystemId"
,
systemId
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
indexName
=
ES_INDEX
+
sdf
.
format
(
new
Date
());
try
{
List
<
LineDataRangeFilter
>
lineDataRangeConfigs
=
dataApiModelConfig
.
getLineDataRangeConfig
();
if
(!
CollectionUtils
.
isEmpty
(
lineDataRangeConfigs
))
{
for
(
LineDataRangeFilter
lineDataRangeFilter
:
lineDataRangeConfigs
)
{
...
...
@@ -316,6 +360,8 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
if
(
e
.
getCause
()
instanceof
DataQueryException
)
{
// 数据查询异常,则记录到ES TODO
log
.
warn
(
"记录数据到es...."
);
callSqlEsLogJson
.
put
(
"status"
,
"失败"
);
callSqlEsLogJson
.
put
(
"reason"
,
e
.
getMessage
());
}
log
.
error
(
"查询数据异步线程异常:"
,
e
);
}
catch
(
Exception
e
)
{
// 其他业务逻辑异常
...
...
@@ -323,6 +369,8 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
result
.
setCode
(
Result
.
FAIL
);
result
.
setMsg
(
"系统异常:"
+
e
.
getMessage
());
}
boolean
addLogResult
=
elasticsearchUtils
.
addData
(
indexName
,
callSqlEsLogJson
.
toJSONString
());
log
.
info
(
"添加记录到es,结果:{}"
,
addLogResult
);
return
result
;
}
...
...
@@ -369,8 +417,8 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// 封装成任务提交(sql,limit条件)
pageNumber
=
index
;
if
(
DataSourceTypeEnum
.
ORACLE
.
equals
(
dataSourceType
))
{
limitFirstValue
=
pageNumber
*
pageSize
;
limitSecondValue
=
(
pageNumber
-
1
)
*
pageSize
;
limitFirstValue
=
pageNumber
*
pageSize
;
limitSecondValue
=
(
pageNumber
-
1
)
*
pageSize
;
}
else
if
(
DataSourceTypeEnum
.
POSTGRESQL
.
equals
(
dataSourceType
))
{
limitFirstValue
=
pageSize
;
limitSecondValue
=
pageNumber
-
1
;
...
...
@@ -437,64 +485,36 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// 订阅数据api
@Transactional
public
Boolean
subscribeDataApi
(
DataApiModelDto
dataApiModelDto
)
{
Long
modelId
=
dataApiModelDto
.
getModelId
();
Integer
subscribeSystemId
=
dataApiModelDto
.
getSubscribeSystemId
();
if
(
modelId
==
null
||
subscribeSystemId
==
null
)
{
log
.
info
(
"数据api模板ID或订阅系统ID为空"
);
return
false
;
}
// 防止重复性订阅
Optional
<
DataApiSubscribeConfig
>
dataApiSubscribeConfigOptional
=
dataApiSubscribeRepository
.
findBySubscribeSystemIdAndDataApiModelIdAndDeletedIsFalse
(
subscribeSystemId
,
modelId
);
if
(
dataApiSubscribeConfigOptional
.
isPresent
())
{
log
.
info
(
"已经订阅该数据api,请不要重复订阅"
);
return
false
;
}
// 获取数据源
Long
dataSourceId
=
dataApiModelDto
.
getDataSourceId
();
Optional
<
DataApiDataSource
>
dataApiDataSourceOptional
=
dataApiDataSourceRepository
.
findById
(
dataSourceId
);
if
(!
dataApiDataSourceOptional
.
isPresent
())
{
log
.
info
(
"订阅数据服务的数据源不存在"
);
return
false
;
}
DataApiDataSource
dataApiDataSource
=
dataApiDataSourceOptional
.
get
();
public
Result
<
Long
>
subscribeDataApi
(
DataApiModelSubscribeDto
dataApiModelSubscribeDto
,
HttpServletRequest
request
)
{
// 获取发布时数据api行列配置
Optional
<
DataApiModelConfig
>
publishDataApiModelConfigOptional
=
dataApiModelConfigRepository
.
findByTypeIdAndType
(
modelId
,
ModelConfigType
.
PUBLISH
);
if
(!
publishDataApiModelConfigOptional
.
isPresent
())
{
log
.
info
(
"数据服务行列配置为空"
);
return
false
;
}
DataApiModelConfig
publishDataApiModelConfig
=
publishDataApiModelConfigOptional
.
get
();
Long
modelId
=
dataApiModelSubscribeDto
.
getModelId
();
Integer
subscribeSystemId
=
dataApiModelSubscribeDto
.
getSubscribeSystemId
();
// 检查列条件
List
<
ColumnDataRangeFilter
>
subscribeColumnDataRangeConfig
=
dataApiModelDto
.
getColumnDataRangeConfig
();
List
<
ColumnDataRangeFilter
>
publishColumnDataRangeConfig
=
publishDataApiModelConfig
.
getColumnDataRangeConfig
();
Boolean
checkColumnResult
=
checkColumnCondition
(
publishColumnDataRangeConfig
,
dataApiModelDto
.
getColumnDataRangeConfig
());
if
(!
checkColumnResult
)
{
log
.
info
(
"订阅的列条件不在数据API服务定义范围内, pubColumnConfig: {}, subColumnConfig: {}"
,
publishColumnDataRangeConfig
,
subscribeColumnDataRangeConfig
);
return
false
;
}
String
user
=
""
;
// TODO SecurityUtils.getLoginUser().getLoginName()
// 检查行条件
List
<
LineDataRangeFilter
>
subLineDataRangeConfig
=
dataApiModelDto
.
getLineDataRangeConfig
();
List
<
LineDataRangeFilter
>
pubLineDataRangeConfig
=
publishDataApiModelConfig
.
getLineDataRangeConfig
();
Boolean
checkLineResult
=
checkLineCondition
(
pubLineDataRangeConfig
,
subLineDataRangeConfig
);
if
(!
checkLineResult
)
{
log
.
info
(
"订阅的行条件不在数据API服务定义范围内, pubLineConfig: {}, subLineConfig: {}"
,
pubLineDataRangeConfig
,
subLineDataRangeConfig
);
return
false
;
// 获取订阅系统名称
DataItem
systemItem
=
dataItemRepository
.
getOne
(
subscribeSystemId
);
String
subscribeSystemName
=
systemItem
==
null
?
subscribeSystemId
+
""
:
systemItem
.
getItemName
();
// 校验订阅参数
Result
<
DataApiModel
>
checkSubscribeApiParamsResult
=
checkSubscribeApiParams
(
dataApiModelSubscribeDto
,
user
,
subscribeSystemName
);
if
(
checkSubscribeApiParamsResult
.
getCode
().
equals
(
Result
.
FAIL
)){
return
failure
(
checkSubscribeApiParamsResult
.
getMsg
());
}
// TODO 针对like的处理:发布的like在订阅时like处理???
DataApiModel
dataApiModel
=
checkSubscribeApiParamsResult
.
getData
();
// 检查表关系
List
<
TableJoinRelationConfig
>
tableJoinRelationConfig
=
dataApiModelDto
.
getTableJoinRelationConfig
();
if
(!
CollectionUtils
.
isEmpty
(
tableJoinRelationConfig
)
&&
tableJoinRelationConfig
.
size
()
!=
subscribeColumnDataRangeConfig
.
size
())
{
log
.
info
(
"表之间关联关系不正确"
);
return
false
;
// 获取数据源
Long
dataSourceId
=
dataApiModel
.
getDataSourceId
();
Optional
<
DataApiDataSource
>
dataApiDataSourceOptional
=
dataApiDataSourceRepository
.
findById
(
dataSourceId
);
if
(!
dataApiDataSourceOptional
.
isPresent
())
{
return
failure
(
"订阅数据服务的数据源不存在"
);
}
DataApiDataSource
dataApiDataSource
=
dataApiDataSourceOptional
.
get
();
// 保存行列过滤条件
List
<
LineDataRangeFilter
>
subLineDataRangeConfig
=
dataApiModelSubscribeDto
.
getLineDataRangeConfig
();
List
<
ColumnDataRangeFilter
>
subscribeColumnDataRangeConfig
=
dataApiModelSubscribeDto
.
getColumnDataRangeConfig
();
List
<
TableJoinRelationConfig
>
tableJoinRelationConfig
=
dataApiModel
.
getTableJoinRelationConfig
();
DataApiModelConfig
subscribeDataApiModelConfig
=
new
DataApiModelConfig
();
subscribeDataApiModelConfig
.
setLineDataRangeConfig
(
subLineDataRangeConfig
);
subscribeDataApiModelConfig
.
setColumnDataRangeConfig
(
subscribeColumnDataRangeConfig
);
...
...
@@ -502,28 +522,225 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
String
fullSql
=
subscribeDataApiModelConfig
.
generateAndSetFullSql
(
tableJoinRelationConfig
,
dataApiDataSource
.
getType
());
log
.
info
(
"生成的完整sql: {}"
,
fullSql
);
if
(
StringUtils
.
isEmpty
(
fullSql
))
{
log
.
info
(
"未能成功生成sql语句"
);
return
false
;
return
failure
(
"未能成功生成sql语句"
);
}
dataApiModelConfigRepository
.
saveAndFlush
(
subscribeDataApiModelConfig
);
// 保存订阅信息
Map
<
String
,
String
>
subSystemProjectAndTenantAdminNameMap
=
dataApiModelRepository
.
findSystemProjectAndTenantAdminNameBySystemId
(
dataApiModelSubscribeDto
.
getSubscribeSystemId
());
String
subSystemLeader
=
subSystemProjectAndTenantAdminNameMap
.
get
(
"projectAdminName"
);
DataApiSubscribeConfig
subscribeConfig
=
new
DataApiSubscribeConfig
();
subscribeConfig
.
setSubscribeSystemId
(
dataApiModelDto
.
getSubscribeSystemId
());
subscribeConfig
.
setSubscribeSystemId
(
dataApiModel
Subscribe
Dto
.
getSubscribeSystemId
());
subscribeConfig
.
setDataApiModelId
(
modelId
);
subscribeConfig
.
setSystemEnv
(
SystemEnv
.
valueOf
(
dataApiModelDto
.
getSystemEnv
()));
subscribeConfig
.
setNetworkEnv
(
NetworkEnv
.
valueOf
(
dataApiModelDto
.
getNetworkEnv
()));
subscribeConfig
.
setSystemEnv
(
SystemEnv
.
valueOf
(
dataApiModel
Subscribe
Dto
.
getSystemEnv
()));
subscribeConfig
.
setNetworkEnv
(
NetworkEnv
.
valueOf
(
dataApiModel
Subscribe
Dto
.
getNetworkEnv
()));
subscribeConfig
.
setCreatedTime
(
new
Date
());
subscribeConfig
.
setSubscribeSystemId
(
dataApiModelDto
.
getSubscribeSystemId
());
subscribeConfig
.
setSubDesc
(
dataApiModelSubscribeDto
.
getDesc
());
subscribeConfig
.
setHashStr
(
UUID
.
randomUUID
().
toString
());
subscribeConfig
.
setSubSystemLeader
(
subSystemLeader
);
subscribeConfig
.
setCreator
(
user
);
subscribeConfig
=
dataApiSubscribeRepository
.
saveAndFlush
(
subscribeConfig
);
// 更新行列配置的typeId
subscribeDataApiModelConfig
.
setTypeId
(
subscribeConfig
.
getId
());
dataApiModelConfigRepository
.
saveAndFlush
(
subscribeDataApiModelConfig
);
return
true
;
// 创建流程处理
DataApiProcessRecord
pr
=
new
DataApiProcessRecord
();
pr
.
setCreatedTime
(
new
Date
());
pr
.
setCreator
(
user
);
pr
.
setStatus
(
1
);
pr
.
setDataModelId
(
dataApiModel
.
getId
());
pr
.
setProcessType
(
"sub"
);
pr
=
dataApiProcessRecordRepository
.
saveAndFlush
(
pr
);
// 获取鉴权信息
String
userKey
=
""
;
String
appId
=
""
;
String
appKey
=
""
;
//查询订阅记录
List
<
DataApiApplication
>
subscribedDataApis
=
dataApiApplicationRepository
.
findSubscribedApiBySystem
(
subscribeSystemId
,
dataApiModel
.
getId
(),
2
);
if
(!
CollectionUtils
.
isEmpty
(
subscribedDataApis
)){
// 之前订阅过则用之前的认证信息
userKey
=
subscribedDataApis
.
get
(
0
).
getUserKey
();
appId
=
subscribedDataApis
.
get
(
0
).
getAppId
();
appKey
=
subscribedDataApis
.
get
(
0
).
getAppKey
();
}
else
{
// 之前没有订阅过 TODO 需要从3scale或者apisix中进行创建或者获取
userKey
=
UUID
.
randomUUID
().
toString
().
replace
(
"-"
,
""
).
substring
(
0
,
16
);
}
// 创建数据服务发布应用信息
DataApiApplication
app
=
new
DataApiApplication
();
app
.
setSystem
(
subscribeSystemId
);
app
.
setDataModelSubConfigId
(
subscribeConfig
.
getId
());
app
.
setAppId
(
appId
);
app
.
setAppKey
(
appKey
);
app
.
setUserKey
(
userKey
);
app
.
setProcessRecordId
(
pr
.
getId
());
app
.
setCreator
(
user
);
app
=
dataApiApplicationRepository
.
saveAndFlush
(
app
);
// 开始订阅审批流程
Result
<
String
>
startProcessResult
=
startProcess
(
user
,
subscribeSystemName
,
dataApiModel
);
if
(
startProcessResult
.
getCode
().
equals
(
Result
.
FAIL
)){
// 回滚事务
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
failure
(
startProcessResult
.
getMsg
());
}
// 更新订阅审批流程实例ID
String
processInstID
=
startProcessResult
.
getData
();
pr
.
setProcessInstID
(
processInstID
);
dataApiProcessRecordRepository
.
saveAndFlush
(
pr
);
return
success
(
subscribeConfig
.
getId
());
}
// 检查订阅api的参数
private
Result
<
DataApiModel
>
checkSubscribeApiParams
(
DataApiModelSubscribeDto
dataApiModelSubscribeDto
,
String
user
,
String
subscribeSystemName
){
Long
modelId
=
dataApiModelSubscribeDto
.
getModelId
();
Integer
subscribeSystemId
=
dataApiModelSubscribeDto
.
getSubscribeSystemId
();
if
(
modelId
==
null
||
subscribeSystemId
==
null
)
{
return
failure
(
"请选择需要订阅的API"
);
}
if
(
subscribeSystemId
==
null
)
{
return
failure
(
"订阅系统ID为空"
);
}
Optional
<
DataApiModel
>
dataApiModelOptional
=
dataApiModelRepository
.
findById
(
modelId
);
if
(!
dataApiModelOptional
.
isPresent
())
{
return
failure
(
String
.
format
(
"订阅的API【%d】不存在!"
,
modelId
));
}
DataApiModel
dataApiModel
=
dataApiModelOptional
.
get
();
if
(
new
Integer
(
"0"
).
equals
(
dataApiModel
.
getStatus
()))
{
return
failure
(
String
.
format
(
"API【%d】未发布!"
,
modelId
));
}
if
(
subscribeSystemId
.
equals
(
dataApiModel
.
getPublishSystemId
()))
{
return
failure
(
String
.
format
(
"不可为系统{},订阅自己系统发布的API"
,
subscribeSystemId
));
}
log
.
info
(
String
.
format
(
"订阅系统=%s,订阅api=%s"
,
subscribeSystemName
,
dataApiModel
.
getName
()));
// 是否订阅过 根据当前登陆人、订阅系统、api判断是否有过订阅
Optional
<
DataApiSubscribeConfig
>
dataApiSubscribeConfigOptional
=
dataApiSubscribeRepository
.
findBySubscribeSystemIdAndDataApiModelIdAndCreatorAndDeletedIsFalse
(
subscribeSystemId
,
modelId
,
user
);
if
(
dataApiSubscribeConfigOptional
.
isPresent
())
{
return
failure
(
String
.
format
(
"您已经为系统【%s】订阅过API【%s】,不能重复订阅!"
,
subscribeSystemName
,
dataApiModel
.
getName
()));
}
// 是否正在等待审批
// List<DataApiApplication> apps =
// dataApiApplicationRepository.findSubscribedApiBySystem(subscribeSystemId,dataApiModel.getId(),1);
// if(!CollectionUtils.isEmpty(apps)) {
// log.info(String.format("%s正在为系统【%s】申请订阅API【%s】,等待审批!",apps.get(0).getCreator(),subscribeSystemName,dataApiModel.getName()));
// return false;
// }
// 获取发布时数据api行列配置
Optional
<
DataApiModelConfig
>
publishDataApiModelConfigOptional
=
dataApiModelConfigRepository
.
findByTypeIdAndType
(
modelId
,
ModelConfigType
.
PUBLISH
);
if
(!
publishDataApiModelConfigOptional
.
isPresent
())
{
return
failure
(
"数据服务行列配置为空"
);
}
DataApiModelConfig
publishDataApiModelConfig
=
publishDataApiModelConfigOptional
.
get
();
// 检查列条件
List
<
ColumnDataRangeFilter
>
subscribeColumnDataRangeConfig
=
dataApiModelSubscribeDto
.
getColumnDataRangeConfig
();
List
<
ColumnDataRangeFilter
>
publishColumnDataRangeConfig
=
publishDataApiModelConfig
.
getColumnDataRangeConfig
();
Boolean
checkColumnResult
=
checkColumnCondition
(
publishColumnDataRangeConfig
,
subscribeColumnDataRangeConfig
);
if
(!
checkColumnResult
)
{
return
failure
(
String
.
format
(
"订阅的列条件不在数据API服务定义范围内, pubColumnConfig: {}, subColumnConfig: {}"
,
publishColumnDataRangeConfig
,
subscribeColumnDataRangeConfig
));
}
// 检查行条件
List
<
LineDataRangeFilter
>
subLineDataRangeConfig
=
dataApiModelSubscribeDto
.
getLineDataRangeConfig
();
List
<
LineDataRangeFilter
>
pubLineDataRangeConfig
=
publishDataApiModelConfig
.
getLineDataRangeConfig
();
Boolean
checkLineResult
=
checkLineCondition
(
pubLineDataRangeConfig
,
subLineDataRangeConfig
);
if
(!
checkLineResult
)
{
return
failure
(
String
.
format
(
"订阅的行条件不在数据API服务定义范围内, pubLineConfig: {}, subLineConfig: {}"
,
publishColumnDataRangeConfig
,
subLineDataRangeConfig
));
}
return
success
(
dataApiModel
);
}
// 开始审批流程
private
Result
<
String
>
startProcess
(
String
user
,
String
subscribeSystemName
,
DataApiModel
dataApiModel
){
Integer
publishSystemId
=
dataApiModel
.
getPublishSystemId
().
intValue
();
// TODO 数据服务发布系统的管理员来审批还是订阅系统的管理员来审批
Map
<
String
,
String
>
pubSystemProjectAndTenantAdminNameMap
=
dataApiModelRepository
.
findSystemProjectAndTenantAdminNameBySystemId
(
dataApiModel
.
getPublishSystemId
().
intValue
());
String
projectAdminUserName
=
pubSystemProjectAndTenantAdminNameMap
.
get
(
"projectAdminName"
);
String
tenantAdminUserName
=
pubSystemProjectAndTenantAdminNameMap
.
get
(
"tenantAdminName"
);
Map
<
String
,
Object
>
relaDatas
=
new
HashMap
<>();
relaDatas
.
put
(
"isSubscribeApprove"
,
1
);
if
(
StringUtils
.
isEmpty
(
projectAdminUserName
))
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
failure
(
"项目管理员为空,流程启动失败"
);
}
relaDatas
.
put
(
"projectManager"
,
projectAdminUserName
);
relaDatas
.
put
(
"isHighSecurity"
,
0
);
// api为高密级
relaDatas
.
put
(
"link"
,
link
);
relaDatas
.
put
(
"im_link"
,
imLink
);
WorkFlowDto
flowDto
=
new
WorkFlowDto
();
flowDto
.
setUserID
(
user
);
flowDto
.
setProcessDefName
(
"com.kubenote.bpm.hip.subscribeApi"
);
flowDto
.
setProcessInstName
(
"订阅API"
);
flowDto
.
setRelaDatas
(
relaDatas
);
// 姓名中文转换
Set
<
String
>
adminNameSet
=
new
HashSet
<>();
if
(!
StringUtils
.
isEmpty
(
user
)){
Arrays
.
asList
(
user
.
split
(
","
)).
forEach
(
adminNameSet:
:
add
);
}
List
<
Map
<
String
,
String
>>
ldapUserInfoVos
=
dataApiModelRepository
.
getUserInfoByUserIds
(
adminNameSet
);
Map
<
String
,
LdapUserInfoVo
>
userIdToCnMap
=
new
HashMap
<>();
for
(
Map
<
String
,
String
>
userInfo
:
ldapUserInfoVos
)
{
String
userId
=
userInfo
.
get
(
"user_id"
);
String
cn
=
userInfo
.
get
(
"cn"
);
userIdToCnMap
.
put
(
userId
,
new
LdapUserInfoVo
(
userId
,
cn
));
}
if
(!
StringUtils
.
isEmpty
(
user
)){
List
<
String
>
nameStr
=
Arrays
.
asList
(
user
.
split
(
","
));
for
(
int
i
=
0
;
i
<
nameStr
.
size
();
i
++)
{
String
userId
=
nameStr
.
get
(
i
);
// 用户ID
if
(
userIdToCnMap
.
get
(
userId
)
!=
null
)
{
nameStr
.
set
(
i
,
userIdToCnMap
.
get
(
userId
).
getCn
()
+
"("
+
userId
+
")"
);
}
}
flowDto
.
setUserName
(
String
.
join
(
","
,
nameStr
));
}
else
{
flowDto
.
setUserName
(
user
);
}
// 流程主题名称
Map
bizInfoMap
=
new
HashMap
();
DataItem
publishSystemDataItem
=
dataItemRepository
.
findById
(
publishSystemId
).
orElse
(
null
);
String
publishSystemName
=
publishSystemId
.
toString
();
if
(
null
!=
publishSystemDataItem
)
{
publishSystemName
=
publishSystemDataItem
.
getItemName
();
}
bizInfoMap
.
put
(
"theme"
,
String
.
format
(
"%s-订阅-%s的API-%s"
,
subscribeSystemName
,
publishSystemName
,
dataApiModel
.
getName
()));
flowDto
.
setBizInfo
(
bizInfoMap
);
// 开启流程
Result
<
Object
>
startProcessResult
=
workFlowService
.
startProcess
(
flowDto
);
String
processInstID
=
null
;
if
(
Result
.
OK
.
equals
(
startProcessResult
.
getCode
()))
{
JSONObject
resultObj
=
(
JSONObject
)
startProcessResult
.
getData
();
if
(
null
!=
resultObj
)
{
processInstID
=
String
.
valueOf
(
resultObj
.
get
(
"processInstID"
));
}
}
else
{
return
failure
(
"流程启动失败: "
+
startProcessResult
.
getMsg
());
}
if
(
StringUtils
.
isEmpty
(
processInstID
)){
return
failure
(
"流程启动失败: 流程实例ID不存在"
);
}
return
success
(
processInstID
);
}
// 检查订阅列条件是否在发布的api模板范围内
private
Boolean
checkColumnCondition
(
List
<
ColumnDataRangeFilter
>
publishColumnDataRangeConfig
,
List
<
ColumnDataRangeFilter
>
subscribeColumnDataRangeConfig
)
{
Boolean
columnCheckFlag
=
true
;
...
...
@@ -533,8 +750,10 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// 封装数据服务发布时的表和列映射配置关系
// Map<Long, Map<Long, String>> publishTableIdToFieldInfoMap = new HashMap<>();
Map
<
Long
,
List
<
String
>>
publishTableIdToColumnNamesMap
=
new
HashMap
<>();
// Map<Long, List<DataColumn>> publishTableIdToColumnMap = new HashMap<>();
Map
<
Long
,
Map
<
String
,
DataColumn
>>
publishTableIdToColumnMap
=
new
HashMap
<>();
Long
pubTableId
;
String
pubTableName
;
String
pubTableName
=
""
;
List
<
DataColumn
>
pubColumns
;
Map
<
Long
,
String
>
columnIdToNameMap
;
List
<
String
>
pubColumnNames
;
// for test
...
...
@@ -551,10 +770,15 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// publishTableIdToFieldInfoMap.put(pubTableId, columnIdToNameMap);
pubColumnNames
=
pubColumns
.
stream
().
map
(
DataColumn:
:
getColumnName
).
collect
(
Collectors
.
toList
());
// for test
if
(
publishTableIdToColumnNamesMap
.
get
(
pubTableId
)
!=
null
)
{
// if (publishTableIdToColumnNamesMap.get(pubTableId) != null) {
// log.warn("{}: 表的列筛选重复配置,选择最后一次的配置", pubTableName);
// }
// publishTableIdToColumnNamesMap.put(pubTableId, pubColumnNames);
if
(
publishTableIdToColumnMap
.
get
(
pubTableId
)
!=
null
){
log
.
warn
(
"{}: 表的列筛选重复配置,选择最后一次的配置"
,
pubTableName
);
}
publishTableIdToColumnNamesMap
.
put
(
pubTableId
,
pubColumnNames
);
publishTableIdToColumnMap
.
put
(
pubTableId
,
pubColumns
.
stream
().
collect
(
Collectors
.
toMap
(
DataColumn:
:
getColumnName
,
Function
.
identity
())));
}
Long
subTableId
;
...
...
@@ -566,29 +790,46 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
columnOut:
for
(
ColumnDataRangeFilter
subscribeColumnConfig
:
subscribeColumnDataRangeConfig
)
{
subTableId
=
subscribeColumnConfig
.
getTableId
();
subTableName
=
subscribeColumnConfig
.
getTableName
();
//
subTableName = subscribeColumnConfig.getTableName();
subFields
=
subscribeColumnConfig
.
getFields
();
// columnIdToNameMap = publishTableIdToFieldInfoMap.get(subTableId);
pubColumnNames
=
publishTableIdToColumnNamesMap
.
get
(
subTableId
);
if
(
pubColumnNames
==
null
)
{
columnCheckFlag
=
false
;
log
.
info
(
"发布的数据api服务中,未找到表:【{}】相关定义字段配置"
,
subTableName
);
break
columnOut
;
}
// pubColumnNames = publishTableIdToColumnNamesMap.get(subTableId);
Map
<
String
,
DataColumn
>
stringDataColumnMap
=
publishTableIdToColumnMap
.
get
(
subTableId
);
// if (pubColumnNames == null) {
// columnCheckFlag = false;
// log.info("发布的数据api服务中,未找到表:【{}】相关定义字段配置", subTableName);
// break columnOut;
// }
// if(columnIdToNameMap == null){
// columnCheckFlag = false;
// log.info("发布的数据api服务中,未找到表:【{}】相关定义字段配置", subTableName);
// break columnOut;
// }
subscribeColumnConfig
.
setTableName
(
pubTableName
);
if
(
CollectionUtils
.
isEmpty
(
stringDataColumnMap
)){
columnCheckFlag
=
false
;
log
.
info
(
"发布的数据api服务中,未找到表:【{}】相关定义字段配置"
,
pubTableName
);
break
columnOut
;
}
for
(
DataColumn
subField
:
subFields
)
{
// subColumnId = subField.getId();
// pubColumnName = columnIdToNameMap.get(subColumnId);
subColumnName
=
subField
.
getColumnName
();
if
(!
pubColumnNames
.
contains
(
subColumnName
))
{
DataColumn
pubColumn
=
stringDataColumnMap
.
get
(
subColumnName
);
if
(
pubColumn
==
null
)
{
columnCheckFlag
=
false
;
log
.
info
(
"发布的数据api服务中,表:【{}】 中未定义该订阅的字段:columnName:【{}】配置"
,
s
ubTableName
,
subColumnName
);
log
.
info
(
"发布的数据api服务中,表:【{}】 中未定义该订阅的字段:columnName:【{}】配置"
,
p
ubTableName
,
subColumnName
);
break
columnOut
;
}
subField
.
setDesc
(
pubColumn
.
getDesc
());
subField
.
setId
(
pubColumn
.
getId
());
subField
.
setFieldType
(
pubColumn
.
getFieldType
());
// if (!pubColumnNames.contains(subColumnName)) {
// columnCheckFlag = false;
// log.info("发布的数据api服务中,表:【{}】 中未定义该订阅的字段:columnName:【{}】配置", subTableName, subColumnName);
// break columnOut;
// }
// if (pubColumnName == null || !pubColumnName.equals(subColumnName)) {
// columnCheckFlag = false;
// log.info("发布的数据api服务中,表:【{}】 中未定义该订阅的字段:columnId:【{}】 columnName:【{}】配置", subTableName, subColumnId, subColumnName);
...
...
@@ -607,7 +848,7 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
log
.
info
(
"模板中没有定义行筛选条件,订阅的时候可以直接通过检查"
);
return
true
;
}
Map
<
Long
,
LineDataRangeFilter
>
tableIdToSelfMap
=
publishLineDataRangeConfig
.
stream
().
collect
(
Collectors
.
toMap
(
LineDataRangeFilter:
:
getTableId
,
Function
.
identity
(),
(
k1
,
k2
)->
k2
));
Map
<
Long
,
LineDataRangeFilter
>
tableIdToSelfMap
=
publishLineDataRangeConfig
.
stream
().
collect
(
Collectors
.
toMap
(
LineDataRangeFilter:
:
getTableId
,
Function
.
identity
(),
(
k1
,
k2
)
->
k2
));
Long
subTableId
;
String
subTableName
;
Boolean
subFullMatched
;
...
...
@@ -630,8 +871,6 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
for
(
LineDataRangeFilter
subscribeLineFilter
:
subLineDataRangeConfig
)
{
// 某个表行过滤条件
// 表ID
subTableId
=
subscribeLineFilter
.
getTableId
();
// 表名
subTableName
=
subscribeLineFilter
.
getTableName
();
// 条件逻辑运算规则(or || &&)
subFullMatched
=
subscribeLineFilter
.
getFullMatched
();
// 数据API发布时某个表配置的行筛选条件
...
...
@@ -642,20 +881,21 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
}
if
(
publishLineFilter
!=
null
&&
(
!
publishLineFilter
.
getFullMatched
().
equals
(
subFullMatched
)
||
!
publishLineFilter
.
getTable
Name
().
equals
(
subTableName
)))
{
!
publishLineFilter
.
getTable
Id
().
equals
(
subTableId
)))
{
log
.
info
(
"订阅的表名或条件逻辑运算规则不正确, publishLine:{}, subscribeLine:{}"
,
publishLineFilter
,
subscribeLineFilter
);
lineCheckFlag
=
false
;
break
lineOut
;
}
subscribeLineFilter
.
setTableName
(
publishLineFilter
.
getTableName
());
// 设置表名
// 获取数据api订阅时具体某个表定义的【行】过滤条件
subFieldConditions
=
subscribeLineFilter
.
getFilterConditions
();
// 获取数据api发布时具体某个表定义的【行】过滤条件
publishFieldConditions
=
publishLineFilter
.
getFilterConditions
();
for
(
FilterCondition
subFieldCondition
:
subFieldConditions
)
{
// 表的多个行过滤条件
// 订阅 表ID
sTId
=
subFieldCondition
.
getTableId
();
//
sTId = subFieldCondition.getTableId();
// 订阅 表名
sTName
=
subFieldCondition
.
getTableName
();
//
sTName = subFieldCondition.getTableName();
// 订阅 列ID
sCId
=
subFieldCondition
.
getField
().
getId
();
// 订阅 列名
...
...
@@ -666,7 +906,7 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// 发布 表ID
pTId
=
pubFilter
.
getTableId
();
// 发布 表名
pTName
=
subFieldCondition
.
getTableName
();
pTName
=
pubFilter
.
getTableName
();
// 发布 列对象
pFD
=
pubFilter
.
getField
();
// 发布 列ID
...
...
@@ -675,12 +915,15 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
pCName
=
pFD
.
getColumnName
();
// 发布 运算符
pubOperate
=
pubFilter
.
getOperateEnumType
();
if
(
pTId
==
sTId
&&
pCId
==
sCId
&&
pTName
.
equals
(
sTName
)
&&
pCName
.
equals
(
sCName
)
&&
if
(
pCId
==
sCId
&&
// pTName.equals(sTName) &&
// pCName.equals(sCName) &&
pubOperate
.
name
().
equals
(
sOperate
.
name
()))
{
// 已有的行筛选,未有的直接通过
condition
=
pTName
+
"."
+
pCName
;
subFieldCondition
.
setTableId
(
pTId
);
subFieldCondition
.
setTableName
(
pTName
);
subFieldCondition
.
getField
().
setFieldType
(
pFD
.
getFieldType
());
subFieldCondition
.
getField
().
setDesc
(
pFD
.
getDesc
());
switch
(
pubOperate
)
{
case
BETWEEN_AND:
List
<
Object
>
pubBTAFilterValues
=
pubFilter
.
getFilterValues
();
...
...
@@ -731,8 +974,8 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
// 取消订阅数据api
// TODO 根据当前用户所在的系统ID+订阅配置Id来查找订阅配置信息
@Transactional
public
Boolean
unsubscribeDataApi
(
Long
subscribeConfigId
)
{
Optional
<
DataApiSubscribeConfig
>
dataApiSubscribeConfigOptional
=
dataApiSubscribeRepository
.
findById
(
subscribeConfig
Id
);
public
Boolean
unsubscribeDataApi
(
Long
subscribeConfigId
,
Integer
systemId
,
SystemEnv
systemEnv
)
{
Optional
<
DataApiSubscribeConfig
>
dataApiSubscribeConfigOptional
=
dataApiSubscribeRepository
.
findById
AndSystemEnvAndSubscribeSystemId
(
subscribeConfigId
,
systemEnv
,
system
Id
);
if
(!
dataApiSubscribeConfigOptional
.
isPresent
())
{
log
.
info
(
"未能找到订阅配置信息"
);
return
false
;
...
...
@@ -747,6 +990,18 @@ public class DataApiCommonServiceImpl implements DataApiCommonService {
dataApiModelConfig
.
setDeleted
(
false
);
dataApiModelConfigRepository
.
save
(
dataApiModelConfig
);
}
DataApiApplication
dataApiApplication
=
dataApiApplicationRepository
.
findDataApiApplicationByDataModelSubConfigId
(
dataApiSubscribeConfig
.
getId
());
if
(
dataApiApplication
!=
null
){
dataApiApplication
.
setDeleted
(
Boolean
.
FALSE
);
dataApiApplicationRepository
.
saveAndFlush
(
dataApiApplication
);
}
Optional
<
DataApiProcessRecord
>
dataApiProcessRecordOptional
=
dataApiProcessRecordRepository
.
findById
(
dataApiApplication
.
getProcessRecordId
());
if
(
dataApiProcessRecordOptional
!=
null
){
DataApiProcessRecord
dataApiProcessRecord
=
dataApiProcessRecordOptional
.
get
();
dataApiProcessRecord
.
setStatus
(
0
);
dataApiProcessRecord
.
setDeleted
(
Boolean
.
TRUE
);
dataApiProcessRecordRepository
.
saveAndFlush
(
dataApiProcessRecord
);
}
return
true
;
}
...
...
src/main/java/com/hisense/dataservice/service/impl/DataApiServiceManagementServiceImpl.java
浏览文件 @
7cc43e06
...
...
@@ -517,12 +517,25 @@ public class DataApiServiceManagementServiceImpl implements DataApiServiceManage
}
@Override
public
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataApiList
(
String
environment
,
Integer
status
,
Long
publishSystemId
,
PageLink
pageLink
)
{
public
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataApiList
(
String
environment
,
Integer
status
,
Long
publishSystemId
,
String
serviceName
,
String
systemName
,
String
publisher
,
PageLink
pageLink
)
{
Specification
<
DataApiModel
>
spec
=
(
root
,
query
,
builder
)
->
{
List
<
Predicate
>
andList
=
new
LinkedList
<>();
if
(!
StringUtils
.
isEmpty
(
serviceName
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"name"
).
as
(
String
.
class
)),
serviceName
));
}
if
(!
StringUtils
.
isEmpty
(
systemName
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"publishSystemName"
).
as
(
String
.
class
)),
systemName
));
}
if
(!
StringUtils
.
isEmpty
(
publisher
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"creator"
).
as
(
String
.
class
)),
publisher
));
}
if
(
status
!=
null
){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"status"
).
as
(
Integer
.
class
)),
status
));
}
if
(
publishSystemId
!=
null
){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"publishSystemId"
).
as
(
Long
.
class
)),
publishSystemId
));
}
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
())));
...
...
src/main/java/com/hisense/dataservice/service/impl/DataMarketServiceImpl.java
deleted
100644 → 0
浏览文件 @
99379019
package
com
.
hisense
.
dataservice
.
service
.
impl
;
import
com.hisense.dataservice.entity.DataApiModel
;
import
com.hisense.dataservice.enums.SystemEnv
;
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.DataApiModelRepository
;
import
com.hisense.dataservice.service.DataMarketService
;
import
com.hisense.dataservice.vo.DataApiModelItemVo
;
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.util.StringUtils
;
import
javax.persistence.criteria.Predicate
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* @author : scc
* @date : 2023/03/22
**/
@Service
public
class
DataMarketServiceImpl
implements
DataMarketService
{
@Autowired
private
DataApiModelRepository
dataApiModelRepository
;
@Override
public
Result
<
PageData
<
DataApiModelItemVo
>>
queryDataServiceList
(
String
environment
,
String
serviceName
,
String
systemName
,
String
publisher
,
PageLink
pageLink
)
{
Specification
<
DataApiModel
>
spec
=
(
root
,
query
,
builder
)
->
{
List
<
Predicate
>
andList
=
new
LinkedList
<>();
if
(!
StringUtils
.
isEmpty
(
serviceName
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"name"
).
as
(
Integer
.
class
)),
serviceName
));
}
if
(!
StringUtils
.
isEmpty
(
systemName
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"publishSystemName"
).
as
(
Integer
.
class
)),
systemName
));
}
if
(!
StringUtils
.
isEmpty
(
publisher
)){
andList
.
add
(
builder
.
equal
((
root
.
get
(
"creator"
).
as
(
Integer
.
class
)),
publisher
));
}
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
())));
andList
.
add
(
builder
.
equal
((
root
.
get
(
"status"
).
as
(
Integer
.
class
)),
new
Integer
(
1
)));
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
);
}
}
src/main/java/com/hisense/dataservice/service/impl/DataServiceLogManagementServiceImpl.java
浏览文件 @
7cc43e06
...
...
@@ -11,6 +11,7 @@ import com.hisense.dataservice.service.DataServiceLogManagementService;
import
com.hisense.dataservice.vo.CallLogVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
...
...
@@ -26,18 +27,33 @@ public class DataServiceLogManagementServiceImpl implements DataServiceLogManage
@Autowired
private
ElasticsearchUtils
elasticsearchUtils
;
@Value
(
"${es.index-pre}"
)
private
String
ES_INDEX
;
@Override
public
PageData
<
CallLogVo
>
getCallLog
(
String
environment
,
Long
systemId
,
PageLink
pageLink
)
{
List
<
EsField
>
conditions
=
new
ArrayList
<>();
//
排序
//
环境
EsField
esField
=
new
EsField
();
esField
.
setField
(
"environment"
);
esField
.
setValue
(
environment
);
esField
.
setFieldTypeEnum
(
FieldTypeEnum
.
PRECISE_QUERY
);
conditions
.
add
(
esField
);
// 系统ID
esField
=
new
EsField
();
esField
.
setField
(
"systemId"
);
esField
.
setValue
(
systemId
+
""
);
esField
.
setFieldTypeEnum
(
FieldTypeEnum
.
PRECISE_QUERY
);
conditions
.
add
(
esField
);
// 排序
esField
=
new
EsField
();
esField
.
setField
(
pageLink
.
getSortOrder
().
getProperty
());
esField
.
setFieldTypeEnum
(
pageLink
.
getSortOrder
().
getDirection
().
equals
(
SortOrder
.
Direction
.
ASC
)
?
FieldTypeEnum
.
ORDER_ASC
:
FieldTypeEnum
.
ORDER_ESC
);
conditions
.
add
(
esField
);
// 索引名称 : data_serv_call_log_+环境+订阅系统ID
String
indexName
=
"data_serv_call_log_"
+
environment
+
"_"
+
systemId
;
String
indexName
=
ES_INDEX
+
"*"
;
PageData
result
=
new
PageData
();
result
.
setData
(
new
ArrayList
());
...
...
src/main/java/com/hisense/dataservice/service/impl/MyApplicationServiceImpl.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
service
.
impl
;
import
com.hisense.dataservice.entity.DataApiApplication
;
import
com.hisense.dataservice.entity.DataApiModel
;
import
com.hisense.dataservice.entity.DataApiModelConfig
;
import
com.hisense.dataservice.entity.DataApiSubscribeConfig
;
import
com.hisense.dataservice.enums.ModelConfigType
;
import
com.hisense.dataservice.enums.SystemEnv
;
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.DataApiApplicationRepository
;
import
com.hisense.dataservice.repository.DataApiModelConfigRepository
;
import
com.hisense.dataservice.repository.DataApiModelRepository
;
import
com.hisense.dataservice.repository.DataApiSubscribeRepository
;
import
com.hisense.dataservice.service.MyApplicationService
;
import
com.hisense.dataservice.vo.DataApiModelDetailVo
;
import
com.hisense.dataservice.vo.DataApiModelSubscribeDetailVo
;
import
com.hisense.dataservice.vo.MyApplicationVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.domain.Page
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.StringUtils
;
import
java.util.Optional
;
/**
* @author : scc
* @date : 2023/03/27
**/
@Service
@Slf4j
public
class
MyApplicationServiceImpl
implements
MyApplicationService
{
@Autowired
private
DataApiSubscribeRepository
dataApiSubscribeRepository
;
@Autowired
private
DataApiModelRepository
dataApiModelRepository
;
@Autowired
private
DataApiModelConfigRepository
dataApiModelConfigRepository
;
@Autowired
private
DataApiApplicationRepository
dataApiApplicationRepository
;
@Value
(
"${data-server.base-url}"
)
private
String
DATA_SERVER_BASE_URL
;
@Override
public
Result
<
PageData
<
MyApplicationVo
>>
querySubscribeList
(
String
environment
,
Integer
status
,
Integer
systemId
,
PageLink
pageLink
)
{
String
userName
=
""
;
// TODO 当前用户
SystemEnv
systemEnv
=
SystemEnv
.
valueOf
(
environment
);
Page
<
MyApplicationVo
>
myApplicationVoPage
;
if
(
new
Integer
(
0
).
equals
(
status
)){
myApplicationVoPage
=
dataApiSubscribeRepository
.
findAllApplicationWithNoApprove
(
systemId
,
systemEnv
,
userName
,
toPageable
(
pageLink
));
}
else
if
(
new
Integer
(
1
).
equals
(
status
)){
myApplicationVoPage
=
dataApiSubscribeRepository
.
findAllApplicationWithApprove
(
systemId
,
systemEnv
,
userName
,
toPageable
(
pageLink
));
}
else
{
return
failure
(
"审批状态无效"
);
}
PageData
<
MyApplicationVo
>
result
=
pageToPageData
(
myApplicationVoPage
);
result
.
setData
(
myApplicationVoPage
.
getContent
());
return
success
(
result
);
}
@Override
public
Result
<
DataApiModelSubscribeDetailVo
>
queryApiModelDetail
(
String
environment
,
Long
subscribeId
)
{
DataApiModelSubscribeDetailVo
subscribeDetailVo
=
new
DataApiModelSubscribeDetailVo
();
subscribeDetailVo
.
setSubscribeId
(
subscribeId
);
// 获取订阅信息
Optional
<
DataApiSubscribeConfig
>
dataApiSubscribeConfigOptional
=
dataApiSubscribeRepository
.
findByIdAndSystemEnv
(
subscribeId
,
SystemEnv
.
valueOf
(
environment
));
if
(!
dataApiSubscribeConfigOptional
.
isPresent
()){
return
failure
(
"未查询到订阅信息"
);
}
DataApiSubscribeConfig
subscribeConfig
=
dataApiSubscribeConfigOptional
.
get
();
Long
dataApiModelId
=
subscribeConfig
.
getDataApiModelId
();
// 获取数据服务信息
Optional
<
DataApiModel
>
dataApiModelOptional
=
dataApiModelRepository
.
findByIdAndSystemEnv
(
dataApiModelId
,
SystemEnv
.
valueOf
(
environment
));
if
(!
dataApiModelOptional
.
isPresent
()){
return
failure
(
"数据服务不存在"
);
}
DataApiModel
dataApiModel
=
dataApiModelOptional
.
get
();
BeanUtils
.
copyProperties
(
dataApiModel
,
subscribeDetailVo
);
// 获取订阅配置
Optional
<
DataApiModelConfig
>
dataApiModelConfigOptional
=
dataApiModelConfigRepository
.
findByTypeIdAndType
(
subscribeConfig
.
getId
(),
ModelConfigType
.
SUBSCRIBE
);
if
(!
dataApiModelConfigOptional
.
isPresent
()){
return
failure
(
"订阅配置信息不存在"
);
}
DataApiModelConfig
dataApiModelConfig
=
dataApiModelConfigOptional
.
get
();
subscribeDetailVo
.
setColumnDataRangeConfig
(
dataApiModelConfig
.
getColumnDataRangeConfig
());
subscribeDetailVo
.
setLineDataRangeConfig
(
dataApiModelConfig
.
getLineDataRangeConfig
());
// 负责人
subscribeDetailVo
.
setSystemLeader
(
dataApiModel
.
getCreator
());
// 设置路由规则
DataApiApplication
dataApiApplication
=
dataApiApplicationRepository
.
findDataApiApplicationByDataModelSubConfigId
(
subscribeId
);
if
(
dataApiApplication
==
null
){
return
failure
(
"未查询到订阅认证信息"
);
}
String
userKey
=
dataApiApplication
.
getUserKey
();
String
appId
=
dataApiApplication
.
getAppId
();
String
appKey
=
dataApiApplication
.
getAppKey
();
DataApiModelSubscribeDetailVo
.
RouteRule
routeRule
=
new
DataApiModelSubscribeDetailVo
.
RouteRule
();
routeRule
.
setMethod
(
"GET"
);
String
url
;
if
(
StringUtils
.
isEmpty
(
userKey
)){
url
=
String
.
format
(
"%s?appId=%s&appKey=%s"
,
DATA_SERVER_BASE_URL
,
appId
,
appKey
);
}
else
{
url
=
String
.
format
(
"%s?user_key=%s"
,
DATA_SERVER_BASE_URL
,
userKey
);
}
routeRule
.
setUrl
(
url
);
subscribeDetailVo
.
setRouter
(
routeRule
);
return
success
(
subscribeDetailVo
);
}
}
src/main/java/com/hisense/dataservice/service/impl/WorkFlowServiceImpl.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.hisense.dataservice.dto.WorkFlowDto
;
import
com.hisense.dataservice.library.model.Result
;
import
com.hisense.dataservice.service.WorkFlowService
;
import
com.hisense.dataservice.util.HttpUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
@Service
public
class
WorkFlowServiceImpl
implements
WorkFlowService
{
private
String
bpmSucCode
=
"00000000"
;
@Value
(
"${flow.app.key}"
)
private
String
appKey
;
@Value
(
"${flow.app.operationCode}"
)
private
String
operationCode
;
@Value
(
"${flow.bpm.apiBasic-url}"
)
private
String
bpmBasicUrl
;
@Value
(
"${flow.bpm.service-url}"
)
private
String
bpmServiceUrl
;
@Override
public
Result
<
Object
>
startProcess
(
WorkFlowDto
workFlowDto
)
{
Result
<
Object
>
result
=
new
Result
<>(
Result
.
OK
,
"启动流程成功!"
,
null
);
WorkFlowDto
flowDto
=
new
WorkFlowDto
();
flowDto
.
setTenantID
(
"HXJT"
);
flowDto
.
setUserID
(
workFlowDto
.
getUserID
());
flowDto
.
setProcessDefName
(
workFlowDto
.
getProcessDefName
());
flowDto
.
setProcessInstName
(
workFlowDto
.
getProcessInstName
());
flowDto
.
setRelaDatas
(
workFlowDto
.
getRelaDatas
());
flowDto
.
setTableName
(
"bizinfo"
);
flowDto
.
setBizInfo
(
workFlowDto
.
getBizInfo
());
flowDto
.
setFinishFirstWorkItem
(
true
);
flowDto
.
setLog
(
true
);
flowDto
.
setUserName
(
workFlowDto
.
getUserName
());
Map
<
String
,
String
>
header
=
new
HashMap
<>()
;
header
.
put
(
"appKey"
,
appKey
);
header
.
put
(
"OperationCode"
,
operationCode
);
String
url
=
bpmServiceUrl
+
"com.hisense.bpm.createAndStartProcessInstance"
;
String
response
=
null
;
try
{
response
=
HttpUtil
.
sendPostAndHeader
(
url
,
JSONObject
.
toJSONString
(
flowDto
),
header
);
JSONObject
resultObj
=
JSONObject
.
parseObject
(
response
);
String
code
=
(
String
)
resultObj
.
get
(
"code"
);
if
(
bpmSucCode
.
equals
(
code
)){
JSONObject
data
=
(
JSONObject
)
resultObj
.
get
(
"data"
);
result
.
setData
(
data
==
null
?
new
String
[]{}:
data
);
}
else
{
result
.
setError
(
Result
.
FAIL
,(
String
)
resultObj
.
get
(
"message"
));
}
}
catch
(
Exception
e
)
{
log
.
error
(
"启动流程异常:"
,
e
);
}
return
result
;
}
}
src/main/java/com/hisense/dataservice/util/HttpUtil.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
util
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.config.RequestConfig
;
import
org.apache.http.client.methods.*
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.util.EntityUtils
;
import
java.io.IOException
;
import
java.util.Map
;
@Slf4j
public
class
HttpUtil
{
private
static
final
CloseableHttpClient
httpclient
=
HttpClients
.
createDefault
();
/**
* 处理get请求.
*
* @return json
*/
public
static
String
get
(
String
url
)
{
String
methodName
=
"get"
;
// 实例化httpclient
CloseableHttpClient
httpclient
=
HttpClients
.
createDefault
();
// 实例化get方法
HttpGet
httpget
=
new
HttpGet
(
url
);
// 请求结果
CloseableHttpResponse
response
=
null
;
String
content
=
""
;
// 设置请求和传输超时时间
RequestConfig
requestConfig
=
RequestConfig
.
custom
().
setSocketTimeout
(
1000
*
180
).
setConnectTimeout
(
1000
*
180
)
.
build
();
httpget
.
setConfig
(
requestConfig
);
try
{
// 执行get方法
response
=
httpclient
.
execute
(
httpget
);
if
(
response
.
getStatusLine
().
getStatusCode
()
==
200
)
{
content
=
EntityUtils
.
toString
(
response
.
getEntity
(),
"UTF-8"
);
}
}
catch
(
Exception
e
)
{
}
finally
{
if
(
response
!=
null
)
{
try
{
response
.
close
();
}
catch
(
IOException
e
)
{
}
}
if
(
httpclient
!=
null
)
{
try
{
httpclient
.
close
();
}
catch
(
IOException
e
)
{
}
}
}
return
content
;
}
/**
* 发送httpPost请求,参数为json,
* @param url
* @param json
* @return
* @throws IOException
*/
public
static
String
sendPostAndHeader
(
String
url
,
String
json
,
Map
<
String
,
String
>
header
)
throws
IOException
{
log
.
info
(
"request, url: {}, body: {}"
,
url
,
json
);
StringEntity
entity
=
new
StringEntity
(
json
,
ContentType
.
APPLICATION_JSON
);
HttpPost
httppost
=
new
HttpPost
(
url
);
httppost
.
setEntity
(
entity
);
httppost
.
setHeader
(
"appKey"
,
header
.
get
(
"appKey"
));
httppost
.
setHeader
(
"OperationCode"
,
header
.
get
(
"OperationCode"
));
CloseableHttpResponse
response
=
httpclient
.
execute
(
httppost
);
HttpEntity
entityRes
=
response
.
getEntity
();
String
ret
=
EntityUtils
.
toString
(
entityRes
);
log
.
info
(
"get response: {}"
,
ret
);
return
ret
;
}
}
src/main/java/com/hisense/dataservice/vo/DataApiModelSubscribeDetailVo.java
0 → 100644
浏览文件 @
7cc43e06
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
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
DataApiModelSubscribeDetailVo
{
@ApiModelProperty
(
name
=
"数据服务ID"
)
private
Long
id
;
@ApiModelProperty
(
name
=
"订阅ID"
)
private
Long
subscribeId
;
@ApiModelProperty
(
name
=
"数据服务名称"
)
private
String
name
;
@ApiModelProperty
(
name
=
"数据服务描述"
)
private
String
description
;
@ApiModelProperty
(
name
=
"数据源类型"
)
private
String
dataSourceId
;
@ApiModelProperty
(
name
=
"发布/创建人"
)
private
String
creator
;
@ApiModelProperty
(
name
=
"负责人"
)
private
String
systemLeader
;
@ApiModelProperty
(
name
=
"发布系统"
)
private
String
publishSystemName
;
@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
;
@ApiModelProperty
(
value
=
"路由规则"
)
private
RouteRule
router
;
@Data
public
static
class
RouteRule
{
@ApiModelProperty
(
value
=
"请求方法"
)
private
String
method
;
@ApiModelProperty
(
value
=
"请求地址"
)
private
String
url
;
}
}
src/main/java/com/hisense/dataservice/vo/LdapUserInfoVo.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
vo
;
import
lombok.Data
;
/**
* @author : scc
* @date : 2023/03/24
**/
@Data
public
class
LdapUserInfoVo
{
private
String
userId
;
private
String
cn
;
public
LdapUserInfoVo
(
String
userId
,
String
cn
){
this
.
userId
=
userId
;
this
.
cn
=
cn
;
}
}
src/main/java/com/hisense/dataservice/vo/MyApplicationVo.java
0 → 100644
浏览文件 @
7cc43e06
package
com
.
hisense
.
dataservice
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author : scc
* @date : 2023/03/27
**/
@Data
@ApiModel
(
"我的申请"
)
public
class
MyApplicationVo
{
@ApiModelProperty
(
name
=
"订阅ID"
)
private
Long
subscribeId
;
@ApiModelProperty
(
name
=
"服务名称"
)
private
String
name
;
@ApiModelProperty
(
name
=
"服务描述"
)
private
String
description
;
public
MyApplicationVo
(
Long
id
,
String
name
,
String
description
){
this
.
subscribeId
=
id
;
this
.
name
=
name
;
this
.
description
=
description
;
}
public
MyApplicationVo
(){
}
}
src/main/resources/application.yml
浏览文件 @
7cc43e06
...
...
@@ -22,3 +22,19 @@ es:
connectTimeout
:
${ES_CONNECT_TIMEOUT:30000}
socketTimeout
:
${ES_SOCKET_TIMEOUT:30000}
connectionRequestTimeout
:
${CONNECTION_REQUEST_TIMEOUT:30000}
index-pre
:
api-dataservice-recored-dev-
# 索引前缀
flow
:
bpm
:
service-url
:
http://10.19.34.80:9090/
apiBasic-url
:
com.kubenote.bpm.
app
:
key
:
N4dLEpIoenUFgAgmekVqPQ==
tenantID
:
processDefName
:
operationCode
:
com.kubenote.bpm.rest.createAndStartProcessInstance
tableName
:
bizinfo
link
:
http://hip-web-kubenote-apigateway-test.devapps.kubenote.com/flowNeedDo/api/v1/process/needTodo
im-link
:
https://kk-proxy.kubenote.com/hiphichat/#/approvalAgency
data-server
:
base-url
:
${DATA_SERVER_BASE_URL:https://data-server.com}
src/test/java/com/hisense/dataservice/service/DataApiCommonServiceTest.java
浏览文件 @
7cc43e06
...
...
@@ -16,6 +16,7 @@ import com.hisense.dataservice.repository.DataApiModelRepository;
import
com.hisense.dataservice.repository.DataApiSubscribeRepository
;
import
com.hisense.dataservice.service.impl.DataApiCommonServiceImpl
;
import
com.hisense.dataservice.util.FileUtil
;
import
com.hisense.dataservice.vo.LdapUserInfoVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
...
...
@@ -24,9 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.*
;
/**
* @author : scc
...
...
@@ -479,7 +478,7 @@ public class DataApiCommonServiceTest {
dataApiModelDto
.
setDataSourceId
(
1L
);
try
{
dataApiModelService
.
unsubscribeDataApi
(
432L
);
//
dataApiModelService.unsubscribeDataApi(432L);
// Boolean result = dataApiModelService.subscribeDataApi(dataApiModelDto);
}
catch
(
Exception
e
)
{
log
.
error
(
"创建或更新数据服务api失败:"
,
e
);
...
...
@@ -493,5 +492,22 @@ public class DataApiCommonServiceTest {
}
@Test
public
void
testLdapUserInfoQuery
(){
Set
<
String
>
adminNameSet
=
new
HashSet
<>();
adminNameSet
.
add
(
"scc"
);
adminNameSet
.
add
(
"zgz"
);
adminNameSet
.
add
(
"s"
);
List
<
Map
<
String
,
String
>>
ldapUserInfoVos
=
dataApiModelRepository
.
getUserInfoByUserIds
(
adminNameSet
);
Map
<
String
,
LdapUserInfoVo
>
userIdToCnMap
=
new
HashMap
<>();
for
(
Map
<
String
,
String
>
userInfo
:
ldapUserInfoVos
)
{
String
userId
=
userInfo
.
get
(
"user_id"
);
String
cn
=
userInfo
.
get
(
"cn"
);
userIdToCnMap
.
put
(
userId
,
new
LdapUserInfoVo
(
userId
,
cn
));
}
}
}
src/test/java/com/hisense/dataservice/service/DataApiServiceManagementServiceTest.java
浏览文件 @
7cc43e06
...
...
@@ -22,7 +22,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
...
...
@@ -290,18 +292,28 @@ public class DataApiServiceManagementServiceTest {
callSqlEsLogJson
.
put
(
"reason"
,
"数据库连接失败"
);
callSqlEsLogJson
.
put
(
"timestamp"
,
System
.
currentTimeMillis
());
callSqlEsLogJson
.
put
(
"environment"
,
"staging"
);
callSqlEsLogJson
.
put
(
"subscribeSystemId"
,
"1"
);
String
indexName
=
"call_log_"
+
"staging_"
+
"2"
;
callSqlEsLogJson
.
put
(
"systemId"
,
"1"
);
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
formattedDate
=
sdf
.
format
(
new
Date
());
String
indexName
=
"api-dataservice-recored-dev-"
+
formattedDate
;
boolean
addLogResult
=
elasticsearchUtils
.
addData
(
indexName
,
callSqlEsLogJson
.
toJSONString
());
log
.
info
(
"添加记录到es,结果:{}"
,
addLogResult
);
PageLink
pageLink
=
new
PageLink
(
10
,
1
,
""
,
new
SortOrder
(
"timestamp"
,
SortOrder
.
Direction
.
DESC
));
PageData
<
CallLogVo
>
pageData1
=
dataServiceLogManagementService
.
getCallLog
(
"staging"
,
2
L
,
pageLink
);
PageData
<
CallLogVo
>
pageData1
=
dataServiceLogManagementService
.
getCallLog
(
"staging"
,
1
L
,
pageLink
);
log
.
info
(
"pageData1: {}"
,
pageData1
);
PageData
<
CallLogVo
>
pageData2
=
dataServiceLogManagementService
.
getCallLog
(
"staging"
,
1
L
,
pageLink
);
PageData
<
CallLogVo
>
pageData2
=
dataServiceLogManagementService
.
getCallLog
(
"staging"
,
2
L
,
pageLink
);
log
.
info
(
"pageData2: {}"
,
pageData2
);
}
@Autowired
private
MyApplicationService
myApplicationService
;
@Test
public
void
testMyApplicationList
(){
PageLink
pageLink
=
new
PageLink
(
10
,
0
,
""
,
new
SortOrder
(
"id"
,
SortOrder
.
Direction
.
DESC
));
myApplicationService
.
querySubscribeList
(
"DEV"
,
1
,
1
,
pageLink
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论