Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
P
poc-api
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
poc
poc-api
Commits
85628679
Commit
85628679
authored
Jun 25, 2025
by
alex yao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(文档对比):新增百度文档对比接口
parent
846cc766
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
62 changed files
with
3807 additions
and
105 deletions
+3807
-105
HttpUtils.java
src/main/java/cn/com/poc/common/utils/http/HttpUtils.java
+1
-1
ContractConstants.java
...java/cn/com/poc/covenant/constants/ContractConstants.java
+22
-0
ExtractionDto.java
src/main/java/cn/com/poc/covenant/dto/ExtractionDto.java
+30
-0
ReviewProgressDto.java
src/main/java/cn/com/poc/covenant/dto/ReviewProgressDto.java
+74
-0
StartReviewDto.java
src/main/java/cn/com/poc/covenant/dto/StartReviewDto.java
+50
-0
BizExtractionKeyInfoConfigModel.java
...m/poc/covenant/model/BizExtractionKeyInfoConfigModel.java
+140
-0
BizExtractionReviewTaskModel.java
.../com/poc/covenant/model/BizExtractionReviewTaskModel.java
+265
-0
BizExtreactionContractTypeModel.java
...m/poc/covenant/model/BizExtreactionContractTypeModel.java
+85
-0
ExtractionTaskQuery.sql
...in/java/cn/com/poc/covenant/query/ExtractionTaskQuery.sql
+19
-0
ExtractionTaskQueryCondition.java
.../com/poc/covenant/query/ExtractionTaskQueryCondition.java
+42
-0
ExtractionTaskQueryItem.java
...va/cn/com/poc/covenant/query/ExtractionTaskQueryItem.java
+213
-0
BizExtractionKeyInfoConfigRepository.java
...nant/repository/BizExtractionKeyInfoConfigRepository.java
+7
-0
BizExtractionReviewTaskRepository.java
...ovenant/repository/BizExtractionReviewTaskRepository.java
+7
-0
BizExtreactionContractTypeRepository.java
...nant/repository/BizExtreactionContractTypeRepository.java
+7
-0
ExtractionRest.java
src/main/java/cn/com/poc/covenant/rest/ExtractionRest.java
+57
-0
TextDiffRest.java
src/main/java/cn/com/poc/covenant/rest/TextDiffRest.java
+52
-0
ExtractionRestImpl.java
...ava/cn/com/poc/covenant/rest/impl/ExtractionRestImpl.java
+316
-0
TextDiffRestImpl.java
.../java/cn/com/poc/covenant/rest/impl/TextDiffRestImpl.java
+49
-0
ExtractionReviewScheduler.java
...com/poc/covenant/scheduler/ExtractionReviewScheduler.java
+96
-0
BizExtractionKeyInfoConfigService.java
...c/covenant/service/BizExtractionKeyInfoConfigService.java
+26
-0
BizExtractionReviewTaskService.java
.../poc/covenant/service/BizExtractionReviewTaskService.java
+31
-0
BizExtreactionContractTypeService.java
...c/covenant/service/BizExtreactionContractTypeService.java
+26
-0
BizExtractionKeyInfoConfigServiceImpl.java
...t/service/impl/BizExtractionKeyInfoConfigServiceImpl.java
+51
-0
BizExtractionReviewTaskServiceImpl.java
...nant/service/impl/BizExtractionReviewTaskServiceImpl.java
+58
-0
BizExtreactionContractTypeServiceImpl.java
...t/service/impl/BizExtreactionContractTypeServiceImpl.java
+51
-0
BaiduBaseApi.java
...n/com/poc/thirdparty/resource/baidu/api/BaiduBaseApi.java
+2
-0
BaiduTextDiffApi.java
...m/poc/thirdparty/resource/baidu/api/BaiduTextDiffApi.java
+101
-0
BaiduTokenAPI.java
.../com/poc/thirdparty/resource/baidu/api/BaiduTokenAPI.java
+2
-2
TextReviewApi.java
.../com/poc/thirdparty/resource/baidu/api/TextReviewApi.java
+62
-0
BaiduTextDiffResponse.java
...resource/baidu/entity/response/BaiduTextDiffResponse.java
+138
-0
TextReviewQueryResult.java
...resource/baidu/entity/response/TextReviewQueryResult.java
+20
-0
TextReviewResultQueryResponse.java
.../baidu/entity/response/TextReviewResultQueryResponse.java
+50
-0
TextReviewSubmitResponse.java
...ource/baidu/entity/response/TextReviewSubmitResponse.java
+50
-0
TextReviewSubmitResult.java
...esource/baidu/entity/response/TextReviewSubmitResult.java
+19
-0
BaiduTextDiffQueryResult.java
...u/entity/response/text_diff/BaiduTextDiffQueryResult.java
+18
-0
DiffItemList.java
...esource/baidu/entity/response/text_diff/DiffItemList.java
+163
-0
Param.java
...party/resource/baidu/entity/response/text_diff/Param.java
+53
-0
Result.java
...arty/resource/baidu/entity/response/text_diff/Result.java
+57
-0
SubTaskList.java
...resource/baidu/entity/response/text_diff/SubTaskList.java
+153
-0
BaiduTextDiffResult.java
...rty/resource/baidu/entity/result/BaiduTextDiffResult.java
+30
-0
TextReviewRequest.java
...party/resource/baidu/entity/result/TextReviewRequest.java
+129
-0
BaiduTextDiffService.java
...irdparty/resource/baidu/service/BaiduTextDiffService.java
+52
-0
BaiduTokenService.java
.../thirdparty/resource/baidu/service/BaiduTokenService.java
+2
-0
BaiduTextDiffServiceImpl.java
...resource/baidu/service/impl/BaiduTextDiffServiceImpl.java
+94
-0
BaiduTokenServiceImpl.java
...ty/resource/baidu/service/impl/BaiduTokenServiceImpl.java
+14
-1
ContractExtractionFunction.java
...nd/ai/function/extraction/ContractExtractionFunction.java
+4
-2
PdfToMDFunction.java
...ce/demand/ai/function/text_in_pdf2md/PdfToMDFunction.java
+1
-1
TextInClient.java
...com/poc/thirdparty/resource/text_in/api/TextInClient.java
+320
-0
Config.java
...rty/resource/text_in/entity/extraction/entity/Config.java
+43
-0
CreateExtractionResponse.java
...in/entity/extraction/entity/CreateExtractionResponse.java
+68
-0
CreateResult.java
...source/text_in/entity/extraction/entity/CreateResult.java
+69
-0
ExtractionResult.java
...ce/text_in/entity/extraction/entity/ExtractionResult.java
+40
-0
KeyInfo.java
...ty/resource/text_in/entity/extraction/entity/KeyInfo.java
+64
-0
RequestData.java
...esource/text_in/entity/extraction/entity/RequestData.java
+23
-0
Result.java
...rty/resource/text_in/entity/extraction/entity/Result.java
+52
-0
ImageEdgeTrimingResult.java
...xt_in/entity/imageEdgeTriming/ImageEdgeTrimingResult.java
+43
-0
ImageList.java
...y/resource/text_in/entity/imageEdgeTriming/ImageList.java
+54
-0
Result.java
...arty/resource/text_in/entity/imageEdgeTriming/Result.java
+36
-0
PdfToMDResponse.java
...oc/thirdparty/resource/textin/entity/PdfToMDResponse.java
+0
-89
PdfToMDResult.java
.../poc/thirdparty/resource/textin/entity/PdfToMDResult.java
+0
-8
config.properties
src/main/resources/framemax-config/config.properties
+4
-0
PdfToMdFunctionTest.java
...arty/resource/demand/ai/function/PdfToMdFunctionTest.java
+2
-1
No files found.
src/main/java/cn/com/poc/common/utils/http/HttpUtils.java
View file @
85628679
...
...
@@ -94,7 +94,7 @@ public class HttpUtils {
httpConn
.
setRequestProperty
(
"Connection"
,
"Keep-Alive"
);
httpConn
.
setRequestProperty
(
"User-Agent"
,
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)"
);
httpConn
.
setRequestProperty
(
"Accept-Charset"
,
"UTF-8"
);
httpConn
.
setRequestProperty
(
"Content-Type"
,
"
application/x-www-form-urlencoded;charset=UTF-8
"
);
httpConn
.
setRequestProperty
(
"Content-Type"
,
"
multipart/form-data
"
);
for
(
Map
.
Entry
<
String
,
String
>
entry
:
headers
.
entrySet
())
{
httpConn
.
setRequestProperty
(
entry
.
getKey
(),
entry
.
getValue
());
}
...
...
src/main/java/cn/com/poc/covenant/constants/ContractConstants.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
constants
;
/**
* @Author:Roger Wu
* @name:ContractConstants
* @Date:2025-05-29 17:09
*/
public
interface
ContractConstants
{
public
interface
ActionType
{
final
static
String
extract
=
"extract"
;
//提取
final
static
String
textreview
=
"textreview"
;
//审查
final
static
String
textdiff
=
"textdiff"
;
//对比
}
public
interface
ContractType
{
final
static
String
contractExtract
=
"ContractExtract"
;
//审查
final
static
String
contractReview
=
"ContractReview"
;
//对比
}
}
src/main/java/cn/com/poc/covenant/dto/ExtractionDto.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
dto
;
import
cn.com.poc.thirdparty.resource.text_in.entity.imageEdgeTriming.Result
;
/**
* @author alex.yao
* @date 2025/5/19
*/
public
class
ExtractionDto
{
private
Integer
status
;
private
Result
result
;
public
Integer
getStatus
()
{
return
status
;
}
public
void
setStatus
(
Integer
status
)
{
this
.
status
=
status
;
}
public
Result
getResult
()
{
return
result
;
}
public
void
setResult
(
Result
result
)
{
this
.
result
=
result
;
}
}
src/main/java/cn/com/poc/covenant/dto/ReviewProgressDto.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
dto
;
import
java.util.Date
;
/**
* 合同审核进度详情
*
* @author alex.yao
* @date 2025/5/21
*/
public
class
ReviewProgressDto
{
private
String
reviewTaskId
;
//审核任务ID
private
String
fileName
;
//文件名
private
String
fileUrl
;
//文件URL
private
String
reviewStatus
;
//审核状态
private
Date
reviewDate
;
// 审核日期
private
String
textInTaskId
;
// textIn 任务id
public
String
getFileUrl
()
{
return
fileUrl
;
}
public
void
setFileUrl
(
String
fileUrl
)
{
this
.
fileUrl
=
fileUrl
;
}
public
String
getReviewTaskId
()
{
return
reviewTaskId
;
}
public
void
setReviewTaskId
(
String
reviewTaskId
)
{
this
.
reviewTaskId
=
reviewTaskId
;
}
public
String
getFileName
()
{
return
fileName
;
}
public
void
setFileName
(
String
fileName
)
{
this
.
fileName
=
fileName
;
}
public
String
getReviewStatus
()
{
return
reviewStatus
;
}
public
void
setReviewStatus
(
String
reviewStatus
)
{
this
.
reviewStatus
=
reviewStatus
;
}
public
Date
getReviewDate
()
{
return
reviewDate
;
}
public
void
setReviewDate
(
Date
reviewDate
)
{
this
.
reviewDate
=
reviewDate
;
}
public
String
getTextInTaskId
()
{
return
textInTaskId
;
}
public
void
setTextInTaskId
(
String
textInTaskId
)
{
this
.
textInTaskId
=
textInTaskId
;
}
}
src/main/java/cn/com/poc/covenant/dto/StartReviewDto.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
dto
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
/**
* @author alex.yao
* @date 2025/5/21
*/
public
class
StartReviewDto
{
/**
* 文件URL列表
*/
private
List
<
String
>
fileUrls
;
private
MultipartFile
file
;
/**
* 合同类型
*/
private
String
contractType
;
public
MultipartFile
getFile
()
{
return
file
;
}
public
void
setFile
(
MultipartFile
file
)
{
this
.
file
=
file
;
}
public
List
<
String
>
getFileUrls
()
{
return
fileUrls
;
}
public
void
setFileUrls
(
List
<
String
>
fileUrls
)
{
this
.
fileUrls
=
fileUrls
;
}
public
String
getContractType
()
{
return
contractType
;
}
public
void
setContractType
(
String
contractType
)
{
this
.
contractType
=
contractType
;
}
}
src/main/java/cn/com/poc/covenant/model/BizExtractionKeyInfoConfigModel.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
model
;
import
cn.com.yict.framemax.data.model.BaseModelClass
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* Model class for biz_extraction_key_info_config
* TextIn 合同要素抽取 关键信息配置
*/
@Entity
@Table
(
name
=
"biz_extraction_key_info_config"
)
@DynamicInsert
@DynamicUpdate
public
class
BizExtractionKeyInfoConfigModel
extends
BaseModelClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* id
*/
private
Integer
id
;
@Column
(
name
=
"id"
,
length
=
10
)
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
public
Integer
getId
()
{
return
this
.
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
super
.
addValidField
(
"id"
);
}
/**
* key_info
* 关键信息名称, 长度限制20个字符
*/
private
String
keyInfo
;
@Column
(
name
=
"key_info"
,
length
=
20
)
public
String
getKeyInfo
()
{
return
this
.
keyInfo
;
}
public
void
setKeyInfo
(
String
keyInfo
)
{
this
.
keyInfo
=
keyInfo
;
super
.
addValidField
(
"keyInfo"
);
}
/**
* paraphrase_names
* 相似名字段,字符串数组, 可根据相似名精准抽取关键信息, 最多填写3个,每个释义名称长度限制20个字符 [array]
*/
private
String
paraphraseNames
;
@Column
(
name
=
"paraphrase_names"
,
length
=
1073741824
)
public
String
getParaphraseNames
()
{
return
this
.
paraphraseNames
;
}
public
void
setParaphraseNames
(
String
paraphraseNames
)
{
this
.
paraphraseNames
=
paraphraseNames
;
super
.
addValidField
(
"paraphraseNames"
);
}
/**
* field_type
* 字段类型字段, 可选项有,时间:time, 金额:amount, 地址:address, 公司:company, 姓名:name, 描述(长文本):long_text_description, 其他:other, 印章:stamp, 分别对应产品段配置的字段类型
*/
private
String
fieldType
;
@Column
(
name
=
"field_type"
,
length
=
10
)
public
String
getFieldType
()
{
return
this
.
fieldType
;
}
public
void
setFieldType
(
String
fieldType
)
{
this
.
fieldType
=
fieldType
;
super
.
addValidField
(
"fieldType"
);
}
/**
* is_in_table
* 位于表格字段, 抽取内容是否位于表格内,若不确定可不填写
*/
private
String
isInTable
;
@Column
(
name
=
"is_in_table"
,
length
=
1
)
public
String
getIsInTable
()
{
return
this
.
isInTable
;
}
public
void
setIsInTable
(
String
isInTable
)
{
this
.
isInTable
=
isInTable
;
super
.
addValidField
(
"isInTable"
);
}
/**
* keywords
* 关键字字段, 字符串数组, 可根据关键字信息,快速定位抽取信所在段落范围, 最多填写10个,且字符总长度不超过50 [array]
*/
private
String
keywords
;
@Column
(
name
=
"keywords"
,
length
=
1073741824
)
public
String
getKeywords
()
{
return
this
.
keywords
;
}
public
void
setKeywords
(
String
keywords
)
{
this
.
keywords
=
keywords
;
super
.
addValidField
(
"keywords"
);
}
/**
* 合同类型
*/
private
String
contractType
;
@Column
(
name
=
"contract_type"
,
length
=
100
)
public
String
getContractType
()
{
return
contractType
;
}
public
void
setContractType
(
String
contractType
)
{
this
.
contractType
=
contractType
;
super
.
addValidField
(
"contractType"
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/model/BizExtractionReviewTaskModel.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
model
;
import
cn.com.yict.framemax.data.model.BaseModelClass
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* Model class for biz_extraction_review_task
* 合同审查任务
*/
@Entity
@Table
(
name
=
"biz_extraction_review_task"
)
@DynamicInsert
@DynamicUpdate
public
class
BizExtractionReviewTaskModel
extends
BaseModelClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/** id
*
*/
private
Integer
id
;
@Column
(
name
=
"id"
,
length
=
10
)
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
public
Integer
getId
(){
return
this
.
id
;
}
public
void
setId
(
Integer
id
){
this
.
id
=
id
;
super
.
addValidField
(
"id"
);
}
/** task_id
*审查任务
*/
private
String
taskId
;
@Column
(
name
=
"task_id"
,
length
=
100
)
public
String
getTaskId
(){
return
this
.
taskId
;
}
public
void
setTaskId
(
String
taskId
){
this
.
taskId
=
taskId
;
super
.
addValidField
(
"taskId"
);
}
/** file_url
*文件地址
*/
private
String
fileUrl
;
@Column
(
name
=
"file_url"
,
length
=
120
)
public
String
getFileUrl
(){
return
this
.
fileUrl
;
}
public
void
setFileUrl
(
String
fileUrl
){
this
.
fileUrl
=
fileUrl
;
super
.
addValidField
(
"fileUrl"
);
}
/** file_name
*文件名
*/
private
String
fileName
;
@Column
(
name
=
"file_name"
,
length
=
100
)
public
String
getFileName
(){
return
this
.
fileName
;
}
public
void
setFileName
(
String
fileName
){
this
.
fileName
=
fileName
;
super
.
addValidField
(
"fileName"
);
}
/** actionType
*执行动作(审查,提取,对比)
*/
private
String
actionType
;
@Column
(
name
=
"action_type"
,
length
=
100
)
public
String
getActionType
()
{
return
actionType
;
}
public
void
setActionType
(
String
actionType
)
{
this
.
actionType
=
actionType
;
super
.
addValidField
(
"actionType"
);
}
/** review_status
*审核状态 RUN-审核中 END-已完成 FAIL-审核失败
*/
private
String
reviewStatus
;
@Column
(
name
=
"review_status"
,
length
=
10
)
public
String
getReviewStatus
(){
return
this
.
reviewStatus
;
}
public
void
setReviewStatus
(
String
reviewStatus
){
this
.
reviewStatus
=
reviewStatus
;
super
.
addValidField
(
"reviewStatus"
);
}
/** review_error_msg
*审核异常消息
*/
private
String
reviewErrorMsg
;
@Column
(
name
=
"review_error_msg"
,
length
=
300
)
public
String
getReviewErrorMsg
(){
return
this
.
reviewErrorMsg
;
}
public
void
setReviewErrorMsg
(
String
reviewErrorMsg
){
this
.
reviewErrorMsg
=
reviewErrorMsg
;
super
.
addValidField
(
"reviewErrorMsg"
);
}
/** text_in_task_id
*textIn的task_id
*/
private
String
textInTaskId
;
@Column
(
name
=
"text_in_task_id"
,
length
=
120
)
public
String
getTextInTaskId
(){
return
this
.
textInTaskId
;
}
public
void
setTextInTaskId
(
String
textInTaskId
){
this
.
textInTaskId
=
textInTaskId
;
super
.
addValidField
(
"textInTaskId"
);
}
/** contract_type
*合同类型
*/
private
String
contractType
;
@Column
(
name
=
"contract_type"
,
length
=
100
)
public
String
getContractType
(){
return
this
.
contractType
;
}
public
void
setContractType
(
String
contractType
){
this
.
contractType
=
contractType
;
super
.
addValidField
(
"contractType"
);
}
/** is_deleted
*是否删除 1、Y 是 2、N 否
*/
private
String
isDeleted
;
@Column
(
name
=
"is_deleted"
,
length
=
1
)
public
String
getIsDeleted
(){
return
this
.
isDeleted
;
}
public
void
setIsDeleted
(
String
isDeleted
){
this
.
isDeleted
=
isDeleted
;
super
.
addValidField
(
"isDeleted"
);
}
/** CREATOR
*创建人
*/
private
String
creator
;
@Column
(
name
=
"CREATOR"
,
length
=
225
)
public
String
getCreator
(){
return
this
.
creator
;
}
public
void
setCreator
(
String
creator
){
this
.
creator
=
creator
;
super
.
addValidField
(
"creator"
);
}
/** CREATED_TIME
*创建时间
*/
private
java
.
util
.
Date
createdTime
;
@Column
(
name
=
"CREATED_TIME"
,
length
=
19
)
public
java
.
util
.
Date
getCreatedTime
(){
return
this
.
createdTime
;
}
public
void
setCreatedTime
(
java
.
util
.
Date
createdTime
){
this
.
createdTime
=
createdTime
;
super
.
addValidField
(
"createdTime"
);
}
/** MODIFIER
*修改人
*/
private
String
modifier
;
@Column
(
name
=
"MODIFIER"
,
length
=
225
)
public
String
getModifier
(){
return
this
.
modifier
;
}
public
void
setModifier
(
String
modifier
){
this
.
modifier
=
modifier
;
super
.
addValidField
(
"modifier"
);
}
/** MODIFIED_TIME
*修改时间
*/
private
java
.
util
.
Date
modifiedTime
;
@Column
(
name
=
"MODIFIED_TIME"
,
length
=
19
)
public
java
.
util
.
Date
getModifiedTime
(){
return
this
.
modifiedTime
;
}
public
void
setModifiedTime
(
java
.
util
.
Date
modifiedTime
){
this
.
modifiedTime
=
modifiedTime
;
super
.
addValidField
(
"modifiedTime"
);
}
/** SYS_VERSION
*乐观锁,版本号
*/
private
Integer
sysVersion
;
@Column
(
name
=
"SYS_VERSION"
,
length
=
10
)
@Version
public
Integer
getSysVersion
(){
return
this
.
sysVersion
;
}
public
void
setSysVersion
(
Integer
sysVersion
){
this
.
sysVersion
=
sysVersion
;
super
.
addValidField
(
"sysVersion"
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/model/BizExtreactionContractTypeModel.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
model
;
import
cn.com.yict.framemax.data.model.BaseModelClass
;
import
org.hibernate.annotations.DynamicInsert
;
import
org.hibernate.annotations.DynamicUpdate
;
import
javax.persistence.*
;
import
java.io.Serializable
;
/**
* Model class for biz_extreaction_contract_type
* 合同审查-合同类型
*/
@Entity
@Table
(
name
=
"biz_extreaction_contract_type"
)
@DynamicInsert
@DynamicUpdate
public
class
BizExtreactionContractTypeModel
extends
BaseModelClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/** id
*
*/
private
Integer
id
;
@Column
(
name
=
"id"
,
length
=
10
)
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
public
Integer
getId
(){
return
this
.
id
;
}
public
void
setId
(
Integer
id
){
this
.
id
=
id
;
super
.
addValidField
(
"id"
);
}
/** contract_code
*合同类型-代码
*/
private
String
contractCode
;
@Column
(
name
=
"contract_code"
,
length
=
100
)
public
String
getContractCode
(){
return
this
.
contractCode
;
}
public
void
setContractCode
(
String
contractCode
){
this
.
contractCode
=
contractCode
;
super
.
addValidField
(
"contractCode"
);
}
/** contract_name
*合同类型名
*/
private
String
contractName
;
@Column
(
name
=
"contract_name"
,
length
=
100
)
public
String
getContractName
(){
return
this
.
contractName
;
}
public
void
setContractName
(
String
contractName
){
this
.
contractName
=
contractName
;
super
.
addValidField
(
"contractName"
);
}
/** contract_type
*合同类型名
*/
private
String
contractType
;
@Column
(
name
=
"contract_type"
,
length
=
100
)
public
String
getContractType
()
{
return
contractType
;
}
public
void
setContractType
(
String
contractType
)
{
this
.
contractType
=
contractType
;
super
.
addValidField
(
"contractType"
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/query/ExtractionTaskQuery.sql
0 → 100644
View file @
85628679
select
id
,
task_id
,
file_url
,
file_name
,
action_type
,
review_status
,
review_error_msg
,
text_in_task_id
,
contract_type
,
is_deleted
,
CREATOR
,
CREATED_TIME
,
MODIFIER
,
MODIFIED_TIME
from
biz_extraction_review_task
where
is_deleted
=
'N'
<<
and
task_id
=
:
taskId
>>
<<
and
LOCATE
(:
search
,
file_name
)
>>
<<
and
action_type
=
:
actionType
>>
order
by
CREATED_TIME
desc
\ No newline at end of file
src/main/java/cn/com/poc/covenant/query/ExtractionTaskQueryCondition.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
query
;
import
java.io.Serializable
;
/**
* Query Condition class for ExtractionTaskQuery
*/
public
class
ExtractionTaskQueryCondition
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
taskId
;
public
String
getTaskId
()
{
return
taskId
;
}
public
void
setTaskId
(
String
taskId
)
{
this
.
taskId
=
taskId
;
}
private
String
search
;
public
String
getSearch
()
{
return
this
.
search
;
}
public
void
setSearch
(
String
search
)
{
this
.
search
=
search
;
}
private
String
actionType
;
public
String
getActionType
()
{
return
actionType
;
}
public
void
setActionType
(
String
actionType
)
{
this
.
actionType
=
actionType
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/query/ExtractionTaskQueryItem.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
query
;
import
cn.com.yict.framemax.data.model.BaseItemClass
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
java.io.Serializable
;
/**
* Query Item class for ExtractionTaskQuery
*/
@Entity
public
class
ExtractionTaskQueryItem
extends
BaseItemClass
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/** id
*id
*/
private
Integer
id
;
@Column
(
name
=
"id"
)
public
Integer
getId
(){
return
this
.
id
;
}
public
void
setId
(
Integer
id
){
this
.
id
=
id
;
}
/** task_id
*task_id
*/
private
String
taskId
;
@Column
(
name
=
"task_id"
)
public
String
getTaskId
(){
return
this
.
taskId
;
}
public
void
setTaskId
(
String
taskId
){
this
.
taskId
=
taskId
;
}
/** file_url
*file_url
*/
private
String
fileUrl
;
@Column
(
name
=
"file_url"
)
public
String
getFileUrl
(){
return
this
.
fileUrl
;
}
public
void
setFileUrl
(
String
fileUrl
){
this
.
fileUrl
=
fileUrl
;
}
/** file_name
*file_name
*/
private
String
fileName
;
@Column
(
name
=
"file_name"
)
public
String
getFileName
(){
return
this
.
fileName
;
}
public
void
setFileName
(
String
fileName
){
this
.
fileName
=
fileName
;
}
/** actionType
*执行动作(审查,提取,对比)
*/
private
String
actionType
;
@Column
(
name
=
"action_type"
,
length
=
100
)
public
String
getActionType
()
{
return
actionType
;
}
public
void
setActionType
(
String
actionType
)
{
this
.
actionType
=
actionType
;
}
/** review_status
*review_status
*/
private
String
reviewStatus
;
@Column
(
name
=
"review_status"
)
public
String
getReviewStatus
(){
return
this
.
reviewStatus
;
}
public
void
setReviewStatus
(
String
reviewStatus
){
this
.
reviewStatus
=
reviewStatus
;
}
/** review_error_msg
*review_error_msg
*/
private
String
reviewErrorMsg
;
@Column
(
name
=
"review_error_msg"
)
public
String
getReviewErrorMsg
(){
return
this
.
reviewErrorMsg
;
}
public
void
setReviewErrorMsg
(
String
reviewErrorMsg
){
this
.
reviewErrorMsg
=
reviewErrorMsg
;
}
/** text_in_task_id
*text_in_task_id
*/
private
String
textInTaskId
;
@Column
(
name
=
"text_in_task_id"
)
public
String
getTextInTaskId
(){
return
this
.
textInTaskId
;
}
public
void
setTextInTaskId
(
String
textInTaskId
){
this
.
textInTaskId
=
textInTaskId
;
}
/** contract_type
*contract_type
*/
private
String
contractType
;
@Column
(
name
=
"contract_type"
)
public
String
getContractType
(){
return
this
.
contractType
;
}
public
void
setContractType
(
String
contractType
){
this
.
contractType
=
contractType
;
}
/** is_deleted
*is_deleted
*/
private
String
isDeleted
;
@Column
(
name
=
"is_deleted"
)
public
String
getIsDeleted
(){
return
this
.
isDeleted
;
}
public
void
setIsDeleted
(
String
isDeleted
){
this
.
isDeleted
=
isDeleted
;
}
/** CREATOR
*CREATOR
*/
private
String
creator
;
@Column
(
name
=
"CREATOR"
)
public
String
getCreator
(){
return
this
.
creator
;
}
public
void
setCreator
(
String
creator
){
this
.
creator
=
creator
;
}
/** CREATED_TIME
*CREATED_TIME
*/
private
java
.
util
.
Date
createdTime
;
@Column
(
name
=
"CREATED_TIME"
)
public
java
.
util
.
Date
getCreatedTime
(){
return
this
.
createdTime
;
}
public
void
setCreatedTime
(
java
.
util
.
Date
createdTime
){
this
.
createdTime
=
createdTime
;
}
/** MODIFIER
*MODIFIER
*/
private
String
modifier
;
@Column
(
name
=
"MODIFIER"
)
public
String
getModifier
(){
return
this
.
modifier
;
}
public
void
setModifier
(
String
modifier
){
this
.
modifier
=
modifier
;
}
/** MODIFIED_TIME
*MODIFIED_TIME
*/
private
java
.
util
.
Date
modifiedTime
;
@Column
(
name
=
"MODIFIED_TIME"
)
public
java
.
util
.
Date
getModifiedTime
(){
return
this
.
modifiedTime
;
}
public
void
setModifiedTime
(
java
.
util
.
Date
modifiedTime
){
this
.
modifiedTime
=
modifiedTime
;
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/repository/BizExtractionKeyInfoConfigRepository.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
repository
;
import
cn.com.poc.covenant.model.BizExtractionKeyInfoConfigModel
;
import
cn.com.yict.framemax.data.repository.Repository
;
public
interface
BizExtractionKeyInfoConfigRepository
extends
Repository
<
BizExtractionKeyInfoConfigModel
,
Integer
>
{
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/repository/BizExtractionReviewTaskRepository.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
repository
;
import
cn.com.poc.covenant.model.BizExtractionReviewTaskModel
;
import
cn.com.yict.framemax.data.repository.Repository
;
public
interface
BizExtractionReviewTaskRepository
extends
Repository
<
BizExtractionReviewTaskModel
,
Integer
>
{
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/repository/BizExtreactionContractTypeRepository.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
repository
;
import
cn.com.poc.covenant.model.BizExtreactionContractTypeModel
;
import
cn.com.yict.framemax.data.repository.Repository
;
public
interface
BizExtreactionContractTypeRepository
extends
Repository
<
BizExtreactionContractTypeModel
,
Integer
>
{
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/rest/ExtractionRest.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
rest
;
import
cn.com.poc.covenant.dto.ExtractionDto
;
import
cn.com.poc.covenant.dto.ReviewProgressDto
;
import
cn.com.poc.covenant.dto.StartReviewDto
;
import
cn.com.poc.covenant.model.BizExtreactionContractTypeModel
;
import
cn.com.yict.framemax.core.rest.BaseRest
;
import
cn.com.yict.framemax.web.permission.Access
;
import
cn.com.yict.framemax.web.permission.Permission
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.List
;
/**
* 合同要素抽取服务
*
* @author alex.yao
* @date 2025/5/19
*/
@Permission
(
Access
.
Anonymous
)
public
interface
ExtractionRest
extends
BaseRest
{
/**
* 开始合同抽取
*/
String
startExtract
(
@RequestBody
StartReviewDto
startReviewDto
)
throws
Exception
;
/**
* 开始合同审查
*/
String
startReview
(
@RequestBody
StartReviewDto
startReviewDto
)
throws
Exception
;
/**
* 获取合同类型列表
*/
List
<
BizExtreactionContractTypeModel
>
getContractTypeList
(
@RequestParam
String
contractType
)
throws
Exception
;
/**
* 获取审核进度详情-列表
*/
List
<
ReviewProgressDto
>
reviewProgressList
(
@RequestParam
String
reviewTaskId
,
@RequestParam
String
search
,
@RequestParam
String
actionType
);
/**
* 获取合同要素抽取结果
*
* @param taskId 任务ID
*/
ExtractionDto
getResult
(
@RequestParam
String
taskId
);
/**
* @param taskId 任务ID
* @return
*/
String
getReviewUrl
(
@RequestParam
String
taskId
)
throws
Exception
;
}
src/main/java/cn/com/poc/covenant/rest/TextDiffRest.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
rest
;
import
cn.com.yict.framemax.core.rest.BaseRest
;
import
cn.com.yict.framemax.web.permission.Access
;
import
cn.com.yict.framemax.web.permission.Permission
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.multipart.MultipartFile
;
/**
* 合同对比服务接口
*
* @author alex.yao
* @date 2025/6/25
*/
@Permission
(
Access
.
Anonymous
)
public
interface
TextDiffRest
extends
BaseRest
{
/**
* 文本对比
*
* @param baseFile 主版文件
* @param compareFile 副版文件
* @return 任务ID
*/
String
textDiff
(
@RequestParam
MultipartFile
baseFile
,
@RequestParam
MultipartFile
compareFile
);
/**
* 文本对比
*
* @param baseFileUrl 主版文件URL
* @param compareFileUrl 副版文件URL
* @return 任务ID
*/
String
textDiffByUrl
(
@RequestParam
String
baseFileUrl
,
@RequestParam
String
compareFileUrl
);
/**
* 获取前端SDK渲染地址
*
* @param taskId 任务ID
* @return 渲染地址
*/
String
getRenderUrl
(
@RequestParam
String
taskId
);
/**
* 查询任务状态
*/
String
queryTextDiffTask
(
@RequestParam
String
taskId
);
}
src/main/java/cn/com/poc/covenant/rest/impl/ExtractionRestImpl.java
0 → 100644
View file @
85628679
This diff is collapsed.
Click to expand it.
src/main/java/cn/com/poc/covenant/rest/impl/TextDiffRestImpl.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
rest
.
impl
;
import
cn.com.poc.common.utils.Assert
;
import
cn.com.poc.common.utils.FileUtils
;
import
cn.com.poc.covenant.rest.TextDiffRest
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.text_diff.BaiduTextDiffQueryResult
;
import
cn.com.poc.thirdparty.resource.baidu.service.BaiduTextDiffService
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
/**
* @author alex.yao
* @date 2025/6/25
*/
@Component
public
class
TextDiffRestImpl
implements
TextDiffRest
{
@Resource
private
BaiduTextDiffService
baiduTextDiffService
;
@Override
public
String
textDiff
(
MultipartFile
baseFile
,
MultipartFile
compareFile
)
{
Assert
.
notNull
(
baseFile
,
"Base file cannot be null"
);
Assert
.
notNull
(
compareFile
,
"Compare file cannot be null"
);
return
baiduTextDiffService
.
textDiff
(
baseFile
,
compareFile
,
null
);
}
@Override
public
String
textDiffByUrl
(
String
baseFileUrl
,
String
compareFileUrl
)
{
Assert
.
notNull
(
baseFileUrl
,
"Base file cannot be null"
);
Assert
.
notNull
(
compareFileUrl
,
"Compare file cannot be null"
);
return
baiduTextDiffService
.
textDiff
(
baseFileUrl
,
compareFileUrl
,
null
);
}
@Override
public
String
getRenderUrl
(
String
taskId
)
{
Assert
.
notBlank
(
taskId
,
"Task ID cannot be blank"
);
return
baiduTextDiffService
.
getSDKUrl
(
taskId
);
}
@Override
public
String
queryTextDiffTask
(
String
taskId
)
{
Assert
.
notBlank
(
taskId
,
"Task ID cannot be blank"
);
BaiduTextDiffQueryResult
baiduTextDiffQueryResult
=
baiduTextDiffService
.
queryTextDiffTask
(
taskId
);
return
baiduTextDiffQueryResult
.
getResult
().
getStatus
();
}
}
src/main/java/cn/com/poc/covenant/scheduler/ExtractionReviewScheduler.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
scheduler
;
import
cn.com.poc.common.constant.CommonConstant
;
import
cn.com.poc.covenant.constants.ContractConstants
;
import
cn.com.poc.covenant.model.BizExtractionReviewTaskModel
;
import
cn.com.poc.covenant.service.BizExtractionReviewTaskService
;
import
cn.com.poc.thirdparty.resource.baidu.api.BaiduTokenAPI
;
import
cn.com.poc.thirdparty.resource.baidu.api.TextReviewApi
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.TextReviewResultQueryResponse
;
import
cn.com.poc.thirdparty.resource.text_in.api.TextInClient
;
import
cn.com.poc.thirdparty.resource.text_in.entity.extraction.entity.ExtractionResult
;
import
cn.com.yict.framemax.frame.service.FmxParamConfigService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* @author alex.yao
* @date 2025/5/21
*/
@Component
public
class
ExtractionReviewScheduler
{
private
final
TextInClient
textInClient
=
new
TextInClient
();
@Resource
private
BizExtractionReviewTaskService
bizExtractionReviewTaskService
;
@Resource
private
TextReviewApi
textReviewApi
;
@Resource
private
FmxParamConfigService
fmxConfigService
;
@Resource
private
BaiduTokenAPI
baiduTokenAPI
;
@Scheduled
(
cron
=
"0 0/1 * * * ?"
)
public
void
extraction
()
throws
Exception
{
// 执行任务
BizExtractionReviewTaskModel
bizExtractionReviewTaskModel
=
new
BizExtractionReviewTaskModel
();
bizExtractionReviewTaskModel
.
setReviewStatus
(
"RUN"
);
bizExtractionReviewTaskModel
.
setActionType
(
ContractConstants
.
ActionType
.
extract
);
bizExtractionReviewTaskModel
.
setIsDeleted
(
CommonConstant
.
IsDeleted
.
N
);
List
<
BizExtractionReviewTaskModel
>
models
=
bizExtractionReviewTaskService
.
findByExample
(
bizExtractionReviewTaskModel
,
null
);
if
(
CollectionUtils
.
isNotEmpty
(
models
))
{
for
(
BizExtractionReviewTaskModel
model
:
models
)
{
String
textInTaskId
=
model
.
getTextInTaskId
();
ExtractionResult
extractionResult
=
textInClient
.
extractedResults
(
textInTaskId
);
if
(
extractionResult
==
null
)
{
model
.
setReviewStatus
(
"ERROR"
);
}
else
if
(
extractionResult
.
getCode
().
equals
(
209L
))
{
model
.
setReviewStatus
(
"RUN"
);
}
else
if
(
extractionResult
.
getCode
().
equals
(
200L
))
{
model
.
setReviewStatus
(
"END"
);
}
else
{
model
.
setReviewStatus
(
"ERROR"
);
model
.
setReviewErrorMsg
(
extractionResult
.
getMsg
());
}
}
bizExtractionReviewTaskService
.
saveAll
(
models
);
}
}
@Scheduled
(
cron
=
"0 0/1 * * * ?"
)
public
void
textReviewTaskQuery
()
throws
Exception
{
// 执行任务
BizExtractionReviewTaskModel
bizExtractionReviewTaskModel
=
new
BizExtractionReviewTaskModel
();
bizExtractionReviewTaskModel
.
setReviewStatus
(
"RUN"
);
bizExtractionReviewTaskModel
.
setActionType
(
ContractConstants
.
ActionType
.
textreview
);
bizExtractionReviewTaskModel
.
setIsDeleted
(
CommonConstant
.
IsDeleted
.
N
);
List
<
BizExtractionReviewTaskModel
>
models
=
bizExtractionReviewTaskService
.
findByExample
(
bizExtractionReviewTaskModel
,
null
);
if
(
CollectionUtils
.
isNotEmpty
(
models
))
{
String
clientId
=
fmxConfigService
.
getParam
(
"baidu.textmind.clientId"
);
String
clientSecret
=
fmxConfigService
.
getParam
(
"baidu.textmind.clientSecret"
);
String
accessToken
=
baiduTokenAPI
.
getToken
(
clientId
,
clientSecret
).
getAccess_token
();
for
(
BizExtractionReviewTaskModel
model
:
models
)
{
String
textInTaskId
=
model
.
getTextInTaskId
();
TextReviewResultQueryResponse
textReviewResponse
=
textReviewApi
.
textReviewTaskQuery
(
textInTaskId
,
accessToken
);
if
(
textReviewResponse
==
null
)
{
model
.
setReviewStatus
(
"ERROR"
);
}
else
if
(
"0"
.
equals
(
textReviewResponse
.
getError_code
()))
{
if
(
textReviewResponse
.
getResult
()
!=
null
&&
"success"
.
equals
(
textReviewResponse
.
getResult
().
getStatus
()))
{
model
.
setReviewStatus
(
"END"
);
}
}
else
{
model
.
setReviewStatus
(
"ERROR"
);
}
}
bizExtractionReviewTaskService
.
saveAll
(
models
);
}
}
}
src/main/java/cn/com/poc/covenant/service/BizExtractionKeyInfoConfigService.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
;
import
cn.com.poc.covenant.model.BizExtractionKeyInfoConfigModel
;
import
cn.com.yict.framemax.core.service.BaseService
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
BizExtractionKeyInfoConfigService
extends
BaseService
{
BizExtractionKeyInfoConfigModel
get
(
Integer
id
)
throws
Exception
;
List
<
BizExtractionKeyInfoConfigModel
>
findByExample
(
BizExtractionKeyInfoConfigModel
example
,
PagingInfo
pagingInfo
)
;
void
delete
(
BizExtractionKeyInfoConfigModel
model
)
throws
Exception
;
void
deleteById
(
Integer
id
)
throws
Exception
;
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
;
BizExtractionKeyInfoConfigModel
save
(
BizExtractionKeyInfoConfigModel
model
)
throws
Exception
;
Collection
<
BizExtractionKeyInfoConfigModel
>
saveAll
(
Collection
<
BizExtractionKeyInfoConfigModel
>
models
)
throws
Exception
;
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/service/BizExtractionReviewTaskService.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
;
import
cn.com.poc.covenant.model.BizExtractionReviewTaskModel
;
import
cn.com.poc.covenant.query.ExtractionTaskQueryCondition
;
import
cn.com.poc.covenant.query.ExtractionTaskQueryItem
;
import
cn.com.yict.framemax.core.service.BaseService
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
BizExtractionReviewTaskService
extends
BaseService
{
BizExtractionReviewTaskModel
get
(
Integer
id
)
throws
Exception
;
List
<
BizExtractionReviewTaskModel
>
findByExample
(
BizExtractionReviewTaskModel
example
,
PagingInfo
pagingInfo
)
throws
Exception
;
void
delete
(
BizExtractionReviewTaskModel
model
)
throws
Exception
;
void
deleteById
(
Integer
id
)
throws
Exception
;
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
;
BizExtractionReviewTaskModel
save
(
BizExtractionReviewTaskModel
model
)
throws
Exception
;
Collection
<
BizExtractionReviewTaskModel
>
saveAll
(
Collection
<
BizExtractionReviewTaskModel
>
models
)
throws
Exception
;
List
<
ExtractionTaskQueryItem
>
extractionTaskQuery
(
ExtractionTaskQueryCondition
condition
,
PagingInfo
pagingInfo
);
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/service/BizExtreactionContractTypeService.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
;
import
cn.com.poc.covenant.model.BizExtreactionContractTypeModel
;
import
cn.com.yict.framemax.core.service.BaseService
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
java.util.Collection
;
import
java.util.List
;
public
interface
BizExtreactionContractTypeService
extends
BaseService
{
BizExtreactionContractTypeModel
get
(
Integer
id
)
throws
Exception
;
List
<
BizExtreactionContractTypeModel
>
findByExample
(
BizExtreactionContractTypeModel
example
,
PagingInfo
pagingInfo
)
throws
Exception
;
void
delete
(
BizExtreactionContractTypeModel
model
)
throws
Exception
;
void
deleteById
(
Integer
id
)
throws
Exception
;
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
;
BizExtreactionContractTypeModel
save
(
BizExtreactionContractTypeModel
model
)
throws
Exception
;
Collection
<
BizExtreactionContractTypeModel
>
saveAll
(
Collection
<
BizExtreactionContractTypeModel
>
models
)
throws
Exception
;
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/service/impl/BizExtractionKeyInfoConfigServiceImpl.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
.
impl
;
import
cn.com.poc.covenant.model.BizExtractionKeyInfoConfigModel
;
import
cn.com.poc.covenant.repository.BizExtractionKeyInfoConfigRepository
;
import
cn.com.poc.covenant.service.BizExtractionKeyInfoConfigService
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Collection
;
import
java.util.List
;
@Service
public
class
BizExtractionKeyInfoConfigServiceImpl
extends
BaseServiceImpl
implements
BizExtractionKeyInfoConfigService
{
@Resource
private
BizExtractionKeyInfoConfigRepository
repository
;
public
BizExtractionKeyInfoConfigModel
get
(
Integer
id
)
throws
Exception
{
return
this
.
repository
.
get
(
id
);
}
public
List
<
BizExtractionKeyInfoConfigModel
>
findByExample
(
BizExtractionKeyInfoConfigModel
example
,
PagingInfo
pagingInfo
)
{
if
(
example
==
null
){
example
=
new
BizExtractionKeyInfoConfigModel
();
}
return
this
.
repository
.
findByExample
(
example
,
pagingInfo
);
}
public
void
delete
(
BizExtractionKeyInfoConfigModel
model
)
throws
Exception
{
this
.
repository
.
remove
(
model
);
}
public
void
deleteById
(
Integer
id
)
throws
Exception
{
this
.
repository
.
removeByPk
(
id
);
}
public
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
{
this
.
repository
.
removeAllByPk
(
ids
);
}
public
BizExtractionKeyInfoConfigModel
save
(
BizExtractionKeyInfoConfigModel
model
)
throws
Exception
{
return
this
.
repository
.
save
(
model
);
}
public
Collection
<
BizExtractionKeyInfoConfigModel
>
saveAll
(
Collection
<
BizExtractionKeyInfoConfigModel
>
models
)
throws
Exception
{
return
this
.
repository
.
saveAll
(
models
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/service/impl/BizExtractionReviewTaskServiceImpl.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
.
impl
;
import
cn.com.poc.covenant.model.BizExtractionReviewTaskModel
;
import
cn.com.poc.covenant.query.ExtractionTaskQueryCondition
;
import
cn.com.poc.covenant.query.ExtractionTaskQueryItem
;
import
cn.com.poc.covenant.repository.BizExtractionReviewTaskRepository
;
import
cn.com.poc.covenant.service.BizExtractionReviewTaskService
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Collection
;
import
java.util.List
;
@Service
public
class
BizExtractionReviewTaskServiceImpl
extends
BaseServiceImpl
implements
BizExtractionReviewTaskService
{
@Resource
private
BizExtractionReviewTaskRepository
repository
;
public
BizExtractionReviewTaskModel
get
(
Integer
id
)
throws
Exception
{
return
this
.
repository
.
get
(
id
);
}
public
List
<
BizExtractionReviewTaskModel
>
findByExample
(
BizExtractionReviewTaskModel
example
,
PagingInfo
pagingInfo
)
throws
Exception
{
if
(
example
==
null
)
{
example
=
new
BizExtractionReviewTaskModel
();
}
return
this
.
repository
.
findByExample
(
example
,
pagingInfo
);
}
public
void
delete
(
BizExtractionReviewTaskModel
model
)
throws
Exception
{
this
.
repository
.
remove
(
model
);
}
public
void
deleteById
(
Integer
id
)
throws
Exception
{
this
.
repository
.
removeByPk
(
id
);
}
public
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
{
this
.
repository
.
removeAllByPk
(
ids
);
}
public
BizExtractionReviewTaskModel
save
(
BizExtractionReviewTaskModel
model
)
throws
Exception
{
return
this
.
repository
.
save
(
model
);
}
public
Collection
<
BizExtractionReviewTaskModel
>
saveAll
(
Collection
<
BizExtractionReviewTaskModel
>
models
)
throws
Exception
{
return
this
.
repository
.
saveAll
(
models
);
}
@Override
public
List
<
ExtractionTaskQueryItem
>
extractionTaskQuery
(
ExtractionTaskQueryCondition
condition
,
PagingInfo
pagingInfo
)
{
return
this
.
sqlDao
.
query
(
condition
,
ExtractionTaskQueryItem
.
class
,
pagingInfo
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/covenant/service/impl/BizExtreactionContractTypeServiceImpl.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
covenant
.
service
.
impl
;
import
cn.com.poc.covenant.model.BizExtreactionContractTypeModel
;
import
cn.com.poc.covenant.repository.BizExtreactionContractTypeRepository
;
import
cn.com.poc.covenant.service.BizExtreactionContractTypeService
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.Collection
;
import
java.util.List
;
@Service
public
class
BizExtreactionContractTypeServiceImpl
extends
BaseServiceImpl
implements
BizExtreactionContractTypeService
{
@Resource
private
BizExtreactionContractTypeRepository
repository
;
public
BizExtreactionContractTypeModel
get
(
Integer
id
)
throws
Exception
{
return
this
.
repository
.
get
(
id
);
}
public
List
<
BizExtreactionContractTypeModel
>
findByExample
(
BizExtreactionContractTypeModel
example
,
PagingInfo
pagingInfo
)
throws
Exception
{
if
(
example
==
null
){
example
=
new
BizExtreactionContractTypeModel
();
}
return
this
.
repository
.
findByExample
(
example
,
pagingInfo
);
}
public
void
delete
(
BizExtreactionContractTypeModel
model
)
throws
Exception
{
this
.
repository
.
remove
(
model
);
}
public
void
deleteById
(
Integer
id
)
throws
Exception
{
this
.
repository
.
removeByPk
(
id
);
}
public
void
deleteAll
(
Collection
<
Integer
>
ids
)
throws
Exception
{
this
.
repository
.
removeAllByPk
(
ids
);
}
public
BizExtreactionContractTypeModel
save
(
BizExtreactionContractTypeModel
model
)
throws
Exception
{
return
this
.
repository
.
save
(
model
);
}
public
Collection
<
BizExtreactionContractTypeModel
>
saveAll
(
Collection
<
BizExtreactionContractTypeModel
>
models
)
throws
Exception
{
return
this
.
repository
.
saveAll
(
models
);
}
}
\ No newline at end of file
src/main/java/cn/com/poc/thirdparty/resource/baidu/api/BaiduBaseApi.java
View file @
85628679
...
...
@@ -20,4 +20,6 @@ public interface BaiduBaseApi {
Header
acceptHeader
=
new
BasicHeader
(
HttpHeaders
.
ACCEPT
,
ContentType
.
APPLICATION_JSON
.
toString
());
Header
formUrlEncodeHeader
=
new
BasicHeader
(
HttpHeaders
.
CONTENT_TYPE
,
ContentType
.
APPLICATION_FORM_URLENCODED
.
withCharset
(
"utf-8"
).
toString
());
Header
multipartFormDataHeader
=
new
BasicHeader
(
HttpHeaders
.
CONTENT_TYPE
,
ContentType
.
MULTIPART_FORM_DATA
.
toString
());
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/api/BaiduTextDiffApi.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
api
;
import
cn.com.poc.common.utils.StringUtils
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.BaiduTextDiffResponse
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.text_diff.BaiduTextDiffQueryResult
;
import
cn.com.poc.thirdparty.resource.baidu.entity.result.BaiduTextDiffResult
;
import
cn.com.yict.framemax.core.exception.BusinessException
;
import
com.google.gson.Gson
;
import
okhttp3.*
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.Assert
;
import
java.io.IOException
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
/**
* 百度文档对比API
*
* @author alex.yao
* @desc 接口描述
* 文档比对支持精准比对文档的增删改差异,快速定位并高亮显示差异原文,支持导出完整的比对报告,大幅提升比对准确性和效率。
* 如希望快速可视化体验效果,可登录智能文档分析平台,一键上传文档,在线测试;在线工具和API服务的额度共享互通。
* 文档比对API服务为异步接口,需要先调用提交请求接口获取 taskID,
* 然后调用获取结果接口进行结果轮询,建议提交请求后5~10秒开始轮询。提交请求接口QPS为2,获取结果接口QPS为10。
* @url https://cloud.baidu.com/doc/OCR/s/Glqd7jgmf
* @date 2025/6/25
*/
@Component
public
class
BaiduTextDiffApi
implements
BaiduBaseApi
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
BaiduTextDiffApi
.
class
);
public
final
OkHttpClient
HTTP_CLIENT
=
new
OkHttpClient
().
newBuilder
().
readTimeout
(
300
,
TimeUnit
.
SECONDS
).
build
();
/**
* 提交请求接口
* <p>
* https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/create_task
*/
public
BaiduTextDiffResult
textDiff
(
BaiduTextDiffResponse
response
,
String
token
)
{
Assert
.
notNull
(
response
);
Assert
.
notNull
(
token
);
String
url
=
BASE_API
+
"file/2.0/brain/online/v1/textdiff/create_task?access_token="
+
token
;
MultipartBody
.
Builder
builder
=
new
MultipartBody
.
Builder
().
setType
(
MultipartBody
.
FORM
);
try
{
if
(
StringUtils
.
isNotBlank
(
response
.
getBaseFileURL
()))
{
builder
=
builder
.
addFormDataPart
(
"baseFileURL"
,
response
.
getBaseFileURL
())
.
addFormDataPart
(
"compareFileURL"
,
response
.
getCompareFileURL
());
}
else
{
RequestBody
baseFile
=
RequestBody
.
create
(
MediaType
.
parse
(
Objects
.
requireNonNull
(
response
.
getBaseFile
().
getContentType
())),
response
.
getBaseFile
().
getBytes
());
RequestBody
compareFile
=
RequestBody
.
create
(
MediaType
.
parse
(
Objects
.
requireNonNull
(
response
.
getCompareFile
().
getContentType
())),
response
.
getCompareFile
().
getBytes
());
builder
=
builder
.
addFormDataPart
(
"baseFile"
,
response
.
getBaseFile
().
getOriginalFilename
(),
baseFile
)
.
addFormDataPart
(
"compareFile"
,
response
.
getCompareFile
().
getOriginalFilename
(),
compareFile
);
}
MultipartBody
body
=
builder
.
build
();
Request
request
=
new
Request
.
Builder
()
.
url
(
url
)
.
method
(
"POST"
,
body
)
.
addHeader
(
"Content-Type"
,
"multipart/form-data"
)
.
build
();
String
result
=
Objects
.
requireNonNull
(
HTTP_CLIENT
.
newCall
(
request
).
execute
().
body
()).
string
();
Gson
gson
=
new
Gson
();
return
gson
.
fromJson
(
result
,
BaiduTextDiffResult
.
class
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"百度文本对比接口调用失败"
,
e
);
throw
new
BusinessException
(
"百度文本对比接口调用失败"
);
}
}
/**
* 获取结果接口
* https://aip.baidubce.com/file/2.0/brain/online/v1/textdiff/query_task
*/
public
BaiduTextDiffQueryResult
queryTask
(
String
taskId
,
String
token
)
{
Assert
.
notNull
(
taskId
);
MultipartBody
.
Builder
builder
=
new
MultipartBody
.
Builder
().
setType
(
MultipartBody
.
FORM
);
builder
.
addFormDataPart
(
"taskId"
,
taskId
);
MultipartBody
body
=
builder
.
build
();
Request
request
=
new
Request
.
Builder
()
.
url
(
BASE_API
+
"file/2.0/brain/online/v1/textdiff/query_task?access_token="
+
token
)
.
method
(
"POST"
,
body
)
.
addHeader
(
"Content-Type"
,
"multipart/form-data"
)
.
build
();
try
{
String
result
=
Objects
.
requireNonNull
(
HTTP_CLIENT
.
newCall
(
request
).
execute
().
body
()).
string
();
Gson
gson
=
new
Gson
();
return
gson
.
fromJson
(
result
,
BaiduTextDiffQueryResult
.
class
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"查询文本对比任务失败"
,
e
);
throw
new
BusinessException
(
"查询文本对比任务失败"
);
}
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/api/BaiduTokenAPI.java
View file @
85628679
...
...
@@ -19,8 +19,8 @@ public class BaiduTokenAPI implements BaiduBaseApi {
Assert
.
notNull
(
secretKey
);
HttpUriRequest
httpUriRequest
=
RequestBuilder
.
post
()
.
setUri
(
BASE_API
+
"oauth/2.0/token"
)
.
set
Header
(
jsonHeader
)
.
set
Header
(
acceptHeader
)
.
add
Header
(
jsonHeader
)
.
add
Header
(
acceptHeader
)
.
addParameter
(
"grant_type"
,
"client_credentials"
)
.
addParameter
(
"client_id"
,
apiKey
)
.
addParameter
(
"client_secret"
,
secretKey
)
...
...
src/main/java/cn/com/poc/thirdparty/resource/baidu/api/TextReviewApi.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
api
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.TextReviewSubmitResponse
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.TextReviewResultQueryResponse
;
import
cn.com.poc.thirdparty.resource.baidu.entity.result.TextReviewRequest
;
import
com.google.gson.Gson
;
import
okhttp3.*
;
import
org.springframework.stereotype.Component
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.concurrent.TimeUnit
;
/**
* @author alex.yao
* @date 2025/5/21
*/
@Component
public
class
TextReviewApi
{
// https://aip.baidubce.com/file/2.0/brain/online/v1/textreview/task
public
static
final
OkHttpClient
HTTP_CLIENT
=
new
OkHttpClient
().
newBuilder
().
readTimeout
(
300
,
TimeUnit
.
SECONDS
).
build
();
public
TextReviewSubmitResponse
textReview
(
TextReviewRequest
textReviewRequest
,
String
token
)
throws
IOException
{
File
file
=
textReviewRequest
.
getFile
();
RequestBody
body
=
new
MultipartBody
.
Builder
().
setType
(
MultipartBody
.
FORM
)
.
addFormDataPart
(
"file"
,
file
.
getName
(),
RequestBody
.
create
(
null
,
file
))
.
addFormDataPart
(
"templateName"
,
textReviewRequest
.
getTemplateName
())
.
addFormDataPart
(
"commentRiskLevel"
,
textReviewRequest
.
getCommentRiskLevel
())
.
build
();
Request
request
=
new
Request
.
Builder
()
.
url
(
"https://aip.baidubce.com/file/2.0/brain/online/v1/textreview/task?access_token="
+
token
)
.
method
(
"POST"
,
body
)
.
addHeader
(
"Content-Type"
,
"multipart/form-data"
)
.
build
();
String
response
=
HTTP_CLIENT
.
newCall
(
request
).
execute
().
body
().
string
();
Gson
gson
=
new
Gson
();
return
gson
.
fromJson
(
response
,
TextReviewSubmitResponse
.
class
);
}
public
TextReviewResultQueryResponse
textReviewTaskQuery
(
String
taskId
,
String
token
)
throws
IOException
{
MediaType
mediaType
=
MediaType
.
parse
(
"multipart/form-data"
);
RequestBody
body
=
new
MultipartBody
.
Builder
().
setType
(
MultipartBody
.
FORM
)
.
addFormDataPart
(
"taskId"
,
taskId
)
.
build
();
Request
request
=
new
Request
.
Builder
()
.
url
(
"https://aip.baidubce.com/file/2.0/brain/online/v1/textreview/task/query?access_token="
+
token
)
.
method
(
"POST"
,
body
)
.
addHeader
(
"Content-Type"
,
"multipart/form-data"
)
.
build
();
String
response
=
HTTP_CLIENT
.
newCall
(
request
).
execute
().
body
().
string
();
Gson
gson
=
new
Gson
();
return
gson
.
fromJson
(
response
,
TextReviewResultQueryResponse
.
class
);
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/BaiduTextDiffResponse.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
/**
* @author alex.yao
* @date 2025/6/25
*/
public
class
BaiduTextDiffResponse
{
/**
* 文件数据,主版比对文档
* 支持的文件类型:
* -图片:bmp/jpg/jpeg/png/tif/tiff
* -文档:doc/docx/wps/pdf/ofd
* 支持的文件大小:仅支持上传一篇文件,文件大小不超过10M。图像最短边至少15px,最长边最大4096px
* 优先级: baseFile > baseFileURL,当baseFile字段存在时,baseFileURL字段失效
*/
private
MultipartFile
baseFile
;
/**
* 文件数据,副版比对文档
* 支持的文件类型:
* -图片:bmp/jpg/jpeg/png/tif/tiff
* -文档:doc/docx/wps/pdf/ofd
* 支持的文件大小:仅支持上传一篇文件,文件大小不超过10M。图像最短边至少15px,最长边最大4096px
* 优先级: compareFile > compareFileURL,当compareFile字段存在时,compareFileURL字段失效
*/
private
MultipartFile
compareFile
;
private
String
baseFileURL
;
private
String
compareFileURL
;
/**
* 文档比对特殊差异识别参数。默认为false。将指定参数以json格式传递。例如,传递参数{"sealRecognition":true,"handWritingRecognition":true}将分别启用印章识别与手写体识别功能
*/
private
Param
param
;
public
MultipartFile
getBaseFile
()
{
return
baseFile
;
}
public
void
setBaseFile
(
MultipartFile
baseFile
)
{
this
.
baseFile
=
baseFile
;
}
public
MultipartFile
getCompareFile
()
{
return
compareFile
;
}
public
void
setCompareFile
(
MultipartFile
compareFile
)
{
this
.
compareFile
=
compareFile
;
}
public
String
getBaseFileURL
()
{
return
baseFileURL
;
}
public
void
setBaseFileURL
(
String
baseFileURL
)
{
this
.
baseFileURL
=
baseFileURL
;
}
public
String
getCompareFileURL
()
{
return
compareFileURL
;
}
public
void
setCompareFileURL
(
String
compareFileURL
)
{
this
.
compareFileURL
=
compareFileURL
;
}
public
Param
getParam
()
{
return
param
;
}
public
void
setParam
(
Param
param
)
{
this
.
param
=
param
;
}
/**
* sealRecognition 否 bool true/false 是否识别印章信息(识别印章信息有额外的时间开销)。默认为false
* fullWidthHalfWidthRecognition 否 bool true/false 是否识别中英文符号差异。默认为false
* fontFamilyRecognition 否 bool true/false 是否识别字体差异。默认为false
* fontSizeRecognition 否 bool true/false 是否识别字号差异。默认为false
* handWritingRecognition
*/
public
static
class
Param
{
private
Boolean
sealRecognition
;
private
Boolean
fullWidthHalfWidthRecognition
;
private
Boolean
fontFamilyRecognition
;
private
Boolean
fontSizeRecognition
;
private
Boolean
handWritingRecognition
;
public
Boolean
getSealRecognition
()
{
return
sealRecognition
;
}
public
void
setSealRecognition
(
Boolean
sealRecognition
)
{
this
.
sealRecognition
=
sealRecognition
;
}
public
Boolean
getFullWidthHalfWidthRecognition
()
{
return
fullWidthHalfWidthRecognition
;
}
public
void
setFullWidthHalfWidthRecognition
(
Boolean
fullWidthHalfWidthRecognition
)
{
this
.
fullWidthHalfWidthRecognition
=
fullWidthHalfWidthRecognition
;
}
public
Boolean
getFontFamilyRecognition
()
{
return
fontFamilyRecognition
;
}
public
void
setFontFamilyRecognition
(
Boolean
fontFamilyRecognition
)
{
this
.
fontFamilyRecognition
=
fontFamilyRecognition
;
}
public
Boolean
getFontSizeRecognition
()
{
return
fontSizeRecognition
;
}
public
void
setFontSizeRecognition
(
Boolean
fontSizeRecognition
)
{
this
.
fontSizeRecognition
=
fontSizeRecognition
;
}
public
Boolean
getHandWritingRecognition
()
{
return
handWritingRecognition
;
}
public
void
setHandWritingRecognition
(
Boolean
handWritingRecognition
)
{
this
.
handWritingRecognition
=
handWritingRecognition
;
}
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/TextReviewQueryResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
;
/**
* @Author:Roger Wu
* @name:TextReviewResult
* @Date:2025-05-29 17:30
*/
public
class
TextReviewQueryResult
{
//任务状态,pending:排队中;processing:运行中;success:成功;failed:失败
private
String
status
;
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/TextReviewResultQueryResponse.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
;
/**
* @Author:Roger Wu
* @name:TextReviewResponse
* @Date:2025-05-29 17:29
*/
public
class
TextReviewResultQueryResponse
{
private
String
log_id
;
private
String
error_code
;
private
String
error_msg
;
private
TextReviewQueryResult
result
;
public
String
getLog_id
()
{
return
log_id
;
}
public
void
setLog_id
(
String
log_id
)
{
this
.
log_id
=
log_id
;
}
public
String
getError_code
()
{
return
error_code
;
}
public
void
setError_code
(
String
error_code
)
{
this
.
error_code
=
error_code
;
}
public
String
getError_msg
()
{
return
error_msg
;
}
public
void
setError_msg
(
String
error_msg
)
{
this
.
error_msg
=
error_msg
;
}
public
TextReviewQueryResult
getResult
()
{
return
result
;
}
public
void
setResult
(
TextReviewQueryResult
result
)
{
this
.
result
=
result
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/TextReviewSubmitResponse.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
;
/**
* @Author:Roger Wu
* @name:TextReviewResponse
* @Date:2025-05-29 17:29
*/
public
class
TextReviewSubmitResponse
{
private
String
log_id
;
private
String
error_code
;
private
String
error_msg
;
private
TextReviewSubmitResult
result
;
public
String
getLog_id
()
{
return
log_id
;
}
public
void
setLog_id
(
String
log_id
)
{
this
.
log_id
=
log_id
;
}
public
String
getError_code
()
{
return
error_code
;
}
public
void
setError_code
(
String
error_code
)
{
this
.
error_code
=
error_code
;
}
public
String
getError_msg
()
{
return
error_msg
;
}
public
void
setError_msg
(
String
error_msg
)
{
this
.
error_msg
=
error_msg
;
}
public
TextReviewSubmitResult
getResult
()
{
return
result
;
}
public
void
setResult
(
TextReviewSubmitResult
result
)
{
this
.
result
=
result
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/TextReviewSubmitResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
;
/**
* @Author:Roger Wu
* @name:TextReviewResult
* @Date:2025-05-29 17:30
*/
public
class
TextReviewSubmitResult
{
private
String
taskId
;
public
String
getTaskId
()
{
return
taskId
;
}
public
void
setTaskId
(
String
taskId
)
{
this
.
taskId
=
taskId
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/text_diff/BaiduTextDiffQueryResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
.
text_diff
;
import
cn.com.poc.thirdparty.resource.baidu.entity.result.BaiduErrorResult
;
public
class
BaiduTextDiffQueryResult
extends
BaiduErrorResult
{
private
Result
result
;
public
Result
getResult
()
{
return
result
;
}
public
void
setResult
(
Result
result
)
{
this
.
result
=
result
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/text_diff/DiffItemList.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
.
text_diff
;
import
java.util.List
;
import
javax.annotation.Generated
;
import
com.google.gson.annotations.Expose
;
@Generated
(
"net.hexar.json2pojo"
)
@SuppressWarnings
(
"unused"
)
public
class
DiffItemList
{
@Expose
private
List
<
Long
>
baseBoxArea
;
@Expose
private
String
baseDiffBoxes
;
@Expose
private
String
baseDiffContent
;
@Expose
private
List
<
Object
>
baseDiffContentType
;
@Expose
private
String
baseDiffContext
;
@Expose
private
String
baseDiffType
;
@Expose
private
Long
basePageNum
;
@Expose
private
List
<
Long
>
compareBoxArea
;
@Expose
private
String
compareDiffBoxes
;
@Expose
private
String
compareDiffContent
;
@Expose
private
List
<
Object
>
compareDiffContentType
;
@Expose
private
String
compareDiffContext
;
@Expose
private
String
compareDiffType
;
@Expose
private
Long
comparePageNum
;
@Expose
private
String
id
;
public
List
<
Long
>
getBaseBoxArea
()
{
return
baseBoxArea
;
}
public
void
setBaseBoxArea
(
List
<
Long
>
baseBoxArea
)
{
this
.
baseBoxArea
=
baseBoxArea
;
}
public
String
getBaseDiffBoxes
()
{
return
baseDiffBoxes
;
}
public
void
setBaseDiffBoxes
(
String
baseDiffBoxes
)
{
this
.
baseDiffBoxes
=
baseDiffBoxes
;
}
public
String
getBaseDiffContent
()
{
return
baseDiffContent
;
}
public
void
setBaseDiffContent
(
String
baseDiffContent
)
{
this
.
baseDiffContent
=
baseDiffContent
;
}
public
List
<
Object
>
getBaseDiffContentType
()
{
return
baseDiffContentType
;
}
public
void
setBaseDiffContentType
(
List
<
Object
>
baseDiffContentType
)
{
this
.
baseDiffContentType
=
baseDiffContentType
;
}
public
String
getBaseDiffContext
()
{
return
baseDiffContext
;
}
public
void
setBaseDiffContext
(
String
baseDiffContext
)
{
this
.
baseDiffContext
=
baseDiffContext
;
}
public
String
getBaseDiffType
()
{
return
baseDiffType
;
}
public
void
setBaseDiffType
(
String
baseDiffType
)
{
this
.
baseDiffType
=
baseDiffType
;
}
public
Long
getBasePageNum
()
{
return
basePageNum
;
}
public
void
setBasePageNum
(
Long
basePageNum
)
{
this
.
basePageNum
=
basePageNum
;
}
public
List
<
Long
>
getCompareBoxArea
()
{
return
compareBoxArea
;
}
public
void
setCompareBoxArea
(
List
<
Long
>
compareBoxArea
)
{
this
.
compareBoxArea
=
compareBoxArea
;
}
public
String
getCompareDiffBoxes
()
{
return
compareDiffBoxes
;
}
public
void
setCompareDiffBoxes
(
String
compareDiffBoxes
)
{
this
.
compareDiffBoxes
=
compareDiffBoxes
;
}
public
String
getCompareDiffContent
()
{
return
compareDiffContent
;
}
public
void
setCompareDiffContent
(
String
compareDiffContent
)
{
this
.
compareDiffContent
=
compareDiffContent
;
}
public
List
<
Object
>
getCompareDiffContentType
()
{
return
compareDiffContentType
;
}
public
void
setCompareDiffContentType
(
List
<
Object
>
compareDiffContentType
)
{
this
.
compareDiffContentType
=
compareDiffContentType
;
}
public
String
getCompareDiffContext
()
{
return
compareDiffContext
;
}
public
void
setCompareDiffContext
(
String
compareDiffContext
)
{
this
.
compareDiffContext
=
compareDiffContext
;
}
public
String
getCompareDiffType
()
{
return
compareDiffType
;
}
public
void
setCompareDiffType
(
String
compareDiffType
)
{
this
.
compareDiffType
=
compareDiffType
;
}
public
Long
getComparePageNum
()
{
return
comparePageNum
;
}
public
void
setComparePageNum
(
Long
comparePageNum
)
{
this
.
comparePageNum
=
comparePageNum
;
}
public
String
getId
()
{
return
id
;
}
public
void
setId
(
String
id
)
{
this
.
id
=
id
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/text_diff/Param.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
.
text_diff
;
public
class
Param
{
private
Boolean
fontFamilyRecognition
;
private
Boolean
fontSizeRecognition
;
private
Boolean
fullWidthHalfWidthRecognition
;
private
Boolean
handWritingRecognition
;
private
Boolean
sealRecognition
;
public
Boolean
getFontFamilyRecognition
()
{
return
fontFamilyRecognition
;
}
public
void
setFontFamilyRecognition
(
Boolean
fontFamilyRecognition
)
{
this
.
fontFamilyRecognition
=
fontFamilyRecognition
;
}
public
Boolean
getFontSizeRecognition
()
{
return
fontSizeRecognition
;
}
public
void
setFontSizeRecognition
(
Boolean
fontSizeRecognition
)
{
this
.
fontSizeRecognition
=
fontSizeRecognition
;
}
public
Boolean
getFullWidthHalfWidthRecognition
()
{
return
fullWidthHalfWidthRecognition
;
}
public
void
setFullWidthHalfWidthRecognition
(
Boolean
fullWidthHalfWidthRecognition
)
{
this
.
fullWidthHalfWidthRecognition
=
fullWidthHalfWidthRecognition
;
}
public
Boolean
getHandWritingRecognition
()
{
return
handWritingRecognition
;
}
public
void
setHandWritingRecognition
(
Boolean
handWritingRecognition
)
{
this
.
handWritingRecognition
=
handWritingRecognition
;
}
public
Boolean
getSealRecognition
()
{
return
sealRecognition
;
}
public
void
setSealRecognition
(
Boolean
sealRecognition
)
{
this
.
sealRecognition
=
sealRecognition
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/text_diff/Result.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
.
text_diff
;
import
java.util.List
;
import
javax.annotation.Generated
;
import
com.google.gson.annotations.Expose
;
@SuppressWarnings
(
"unused"
)
public
class
Result
{
private
String
duration
;
private
Param
param
;
private
String
status
;
private
List
<
SubTaskList
>
subTaskList
;
private
String
taskId
;
public
String
getDuration
()
{
return
duration
;
}
public
void
setDuration
(
String
duration
)
{
this
.
duration
=
duration
;
}
public
Param
getParam
()
{
return
param
;
}
public
void
setParam
(
Param
param
)
{
this
.
param
=
param
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
public
List
<
SubTaskList
>
getSubTaskList
()
{
return
subTaskList
;
}
public
void
setSubTaskList
(
List
<
SubTaskList
>
subTaskList
)
{
this
.
subTaskList
=
subTaskList
;
}
public
String
getTaskId
()
{
return
taskId
;
}
public
void
setTaskId
(
String
taskId
)
{
this
.
taskId
=
taskId
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/response/text_diff/SubTaskList.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
response
.
text_diff
;
import
java.util.List
;
import
javax.annotation.Generated
;
import
com.google.gson.annotations.Expose
;
@Generated
(
"net.hexar.json2pojo"
)
@SuppressWarnings
(
"unused"
)
public
class
SubTaskList
{
@Expose
private
String
baseDocId
;
@Expose
private
String
baseDocName
;
@Expose
private
String
baseDocOssURL
;
@Expose
private
String
compareDocId
;
@Expose
private
String
compareDocName
;
@Expose
private
String
compareDocOssURL
;
@Expose
private
String
compareStatus
;
@Expose
private
String
createdAt
;
@Expose
private
List
<
DiffItemList
>
diffItemList
;
@Expose
private
String
finishedAt
;
@Expose
private
String
reportOssURL
;
@Expose
private
String
reportStatus
;
@Expose
private
String
similarity
;
@Expose
private
Long
totalDiff
;
public
String
getBaseDocId
()
{
return
baseDocId
;
}
public
void
setBaseDocId
(
String
baseDocId
)
{
this
.
baseDocId
=
baseDocId
;
}
public
String
getBaseDocName
()
{
return
baseDocName
;
}
public
void
setBaseDocName
(
String
baseDocName
)
{
this
.
baseDocName
=
baseDocName
;
}
public
String
getBaseDocOssURL
()
{
return
baseDocOssURL
;
}
public
void
setBaseDocOssURL
(
String
baseDocOssURL
)
{
this
.
baseDocOssURL
=
baseDocOssURL
;
}
public
String
getCompareDocId
()
{
return
compareDocId
;
}
public
void
setCompareDocId
(
String
compareDocId
)
{
this
.
compareDocId
=
compareDocId
;
}
public
String
getCompareDocName
()
{
return
compareDocName
;
}
public
void
setCompareDocName
(
String
compareDocName
)
{
this
.
compareDocName
=
compareDocName
;
}
public
String
getCompareDocOssURL
()
{
return
compareDocOssURL
;
}
public
void
setCompareDocOssURL
(
String
compareDocOssURL
)
{
this
.
compareDocOssURL
=
compareDocOssURL
;
}
public
String
getCompareStatus
()
{
return
compareStatus
;
}
public
void
setCompareStatus
(
String
compareStatus
)
{
this
.
compareStatus
=
compareStatus
;
}
public
String
getCreatedAt
()
{
return
createdAt
;
}
public
void
setCreatedAt
(
String
createdAt
)
{
this
.
createdAt
=
createdAt
;
}
public
List
<
DiffItemList
>
getDiffItemList
()
{
return
diffItemList
;
}
public
void
setDiffItemList
(
List
<
DiffItemList
>
diffItemList
)
{
this
.
diffItemList
=
diffItemList
;
}
public
String
getFinishedAt
()
{
return
finishedAt
;
}
public
void
setFinishedAt
(
String
finishedAt
)
{
this
.
finishedAt
=
finishedAt
;
}
public
String
getReportOssURL
()
{
return
reportOssURL
;
}
public
void
setReportOssURL
(
String
reportOssURL
)
{
this
.
reportOssURL
=
reportOssURL
;
}
public
String
getReportStatus
()
{
return
reportStatus
;
}
public
void
setReportStatus
(
String
reportStatus
)
{
this
.
reportStatus
=
reportStatus
;
}
public
String
getSimilarity
()
{
return
similarity
;
}
public
void
setSimilarity
(
String
similarity
)
{
this
.
similarity
=
similarity
;
}
public
Long
getTotalDiff
()
{
return
totalDiff
;
}
public
void
setTotalDiff
(
Long
totalDiff
)
{
this
.
totalDiff
=
totalDiff
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/result/BaiduTextDiffResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
result
;
/**
* @author alex.yao
* @date 2025/6/25
*/
public
class
BaiduTextDiffResult
extends
BaiduErrorResult
{
private
Result
result
;
public
void
setResult
(
Result
result
)
{
this
.
result
=
result
;
}
public
Result
getResult
()
{
return
result
;
}
public
class
Result
{
private
String
taskId
;
public
String
getTaskId
()
{
return
taskId
;
}
public
void
setTaskId
(
String
taskId
)
{
this
.
taskId
=
taskId
;
}
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/entity/result/TextReviewRequest.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
entity
.
result
;
import
java.io.File
;
/**
* @Author:Roger Wu
* @name:TextReviewRequest
* @Date:2025-05-29 17:15
*/
public
class
TextReviewRequest
{
/**
* 文件数据,支持Word和PDF格式,文件大小不超过10M
* 优先级: file > fileURLList,当file字段存在时,fileURLList字段失效
*/
private
File
file
;
/**
* 文件完整URL,仅支持北京区域的BOS公网访问,URL长度不超过1024字节,支持PDF/doc/docx格式,仅支持上传1篇文件,文件大小不超过10M
* 优先级: file > fileURLList,当file字段存在时,fileURLList字段失效
* 请注意关闭URL防盗链
*/
private
String
fileURLList
;
/**
* 该清单类型为系统预置清单。每次审查任务仅可选择单一清单。具体清单选项如下:
* - Sales_PartyA_V2:买卖合同-买方;
* - Sales_PartyB_V2:买卖合同-卖方;
* - Lease_PartyA_V2:租赁合同-出租方;
* - Lease_PartyB_V2:租赁合同-承租方;
* - TechDev_PartyA_V2:技术开发合同-委托方;
* - TechDev_PartyB_V2:技术开发合同-受托方;
* - Labor_PartyA_V2:劳动合同-用人单位;
* - Labor_PartyB_V2:劳动合同-劳动者;
* - Entrustment_PartyA_V2:委托合同-委托方;
* - Entrustment_PartyB_V2:委托合同-受托方;
* - Work-for-hire_PartyA_V2:承揽合同-定作人;
* - Work-for-hire_PartyB_V2:承揽合同-承揽人;
* - LaborDispatch_PartyA_V2:劳务派遣合同-用工单位;
* - LaborDispatch_PartyB_V2:劳务派遣合同-劳务派遣单位;
* - RealtySvcs_PartyA_V2:物业服务合同-业主;
* - RealtySvcs_PartyB_V2:物业服务合同-物业服务人;
* - EquipPur_PartyA_V2:设备采购合同-买方;
* - EquipPur_PartyB_V2:设备采购合同-卖方;
* - FinLease_PartyA_V2:融资租赁合同-出租方;
* - FinLease_PartyB_V2:融资租赁合同-承租方;
* - DebtAssign_PartyA_V2:债权转让合同-转让方;
* - DebtAssign_PartyB_V2:债权转让合同-受让方;
* - CISG_PartyA_V2:国际货物贸易合同-买方;
* - CISG_PartyB_V2:国际货物贸易合同-卖方 ;
* - GUAR_PartyA_V2:保证合同-保证方 ;
* - GUAR_PartyA_V2:保证合同-债权方 ;
* - CG_PartyA_V2:货运合同-承运方 ;
* - CG_PartyB_V2:货运合同-托运方 ;
* - Factoring_PartyA_V2:保理合同-保理商 ;
* - Factoring_PartyB_V2:保理合同-卖方 ;
* - Brokerage_PartyA_V2:中介合同-委托人 ;
* - Brokerage_PartyB_V2:中介合同-中介人 ;
* - TradingTrust_PartyA_V2:行纪合同-委托人 ;
* - TradingTrust_PartyB_V2:行纪合同-行纪人 ;
* - PNRship_V2:合伙合同-合伙人 ;
* - PT/PAT_PartyA_V2:专利(申请)权转让合同-受让方 ;
* - PT/PAT_PartyB_V2:专利(申请)权转让合同-转让方;
* - TST_PartyA_V2:技术秘密转让合同-受让方;
* - TST_PartyB_V2:技术秘密转让合同-转让方;
* - TST_PartyB_V2:技术秘密转让合同-转让方;
* -TechLic_PartyA_V2:技术许可合同-许可方;
* -TechLic_PartyB_V2:技术许可合同-被许可方;
* - EquipLea_PartyA_V2:设备租赁合同-出租方;
* - EquipLea_PartyB_V2:设备租赁合同-承租方;
* - ConstCtrl_PartyA_V2:建设工程施工合同-发包方;
* - ConstCtrl_PartyB_V2:建设工程施工合同-承包方
*/
private
String
templateName
;
/**
* 该清单类型为用户在合同审查清单管理 创建的我的清单。每次审查任务仅可选择单一清单
* https://ai.baidu.com/ai-doc/OCR/olqc085rg
*/
private
String
templateId
;
/**
* 筛选下载的批注结果中展示的风险等级条款。默认为"major",即仅展示重大风险条款。
* - normal:一般风险;
* - major:重大风险;
* - all:一般风险和重大风险
*/
private
String
commentRiskLevel
;
public
File
getFile
()
{
return
file
;
}
public
void
setFile
(
File
file
)
{
this
.
file
=
file
;
}
public
String
getFileURLList
()
{
return
fileURLList
;
}
public
void
setFileURLList
(
String
fileURLList
)
{
this
.
fileURLList
=
fileURLList
;
}
public
String
getTemplateName
()
{
return
templateName
;
}
public
void
setTemplateName
(
String
templateName
)
{
this
.
templateName
=
templateName
;
}
public
String
getTemplateId
()
{
return
templateId
;
}
public
void
setTemplateId
(
String
templateId
)
{
this
.
templateId
=
templateId
;
}
public
String
getCommentRiskLevel
()
{
return
commentRiskLevel
;
}
public
void
setCommentRiskLevel
(
String
commentRiskLevel
)
{
this
.
commentRiskLevel
=
commentRiskLevel
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/service/BaiduTextDiffService.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
service
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.BaiduTextDiffResponse
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.text_diff.BaiduTextDiffQueryResult
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
/**
* @author alex.yao
* @date 2025/6/25
*/
public
interface
BaiduTextDiffService
{
/**
* 文档比对任务创建接口
*
* @param baseFile 主版比对文档
* @param compareFile 副版比对文档
* @param param 参数
* @return taskId - 任务ID
*/
String
textDiff
(
MultipartFile
baseFile
,
MultipartFile
compareFile
,
BaiduTextDiffResponse
.
Param
param
);
/**
* 文档比对任务创建接口
*
* @param baseFileUrl 主版比对文档URL
* @param compareFileUrl 副版比对文档URL
* @param param 参数
* @return taskId - 任务ID
*/
String
textDiff
(
String
baseFileUrl
,
String
compareFileUrl
,
BaiduTextDiffResponse
.
Param
param
);
/**
* 查询文档比对任务结果
*
* @param taskId 任务ID
* @return BaiduTextDiffQueryResult - 文档比对任务结果对象
*/
BaiduTextDiffQueryResult
queryTextDiffTask
(
String
taskId
);
/**
* 获取前端SDK渲染
*
* @param taskId 任务ID
* @return SDK渲染地址
*/
String
getSDKUrl
(
String
taskId
);
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/service/BaiduTokenService.java
View file @
85628679
...
...
@@ -7,4 +7,6 @@ package cn.com.poc.thirdparty.resource.baidu.service;
public
interface
BaiduTokenService
{
String
getToken
();
String
getToken
(
String
clientId
,
String
clientSecret
);
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/service/impl/BaiduTextDiffServiceImpl.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
baidu
.
service
.
impl
;
import
cn.com.poc.common.utils.StringUtils
;
import
cn.com.poc.thirdparty.resource.baidu.api.BaiduTextDiffApi
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.BaiduTextDiffResponse
;
import
cn.com.poc.thirdparty.resource.baidu.entity.response.text_diff.BaiduTextDiffQueryResult
;
import
cn.com.poc.thirdparty.resource.baidu.entity.result.BaiduTextDiffResult
;
import
cn.com.poc.thirdparty.resource.baidu.service.BaiduTextDiffService
;
import
cn.com.poc.thirdparty.resource.baidu.service.BaiduTokenService
;
import
cn.com.yict.framemax.core.exception.BusinessException
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
/**
* @author alex.yao
* @date 2025/6/25
*/
@Service
public
class
BaiduTextDiffServiceImpl
implements
BaiduTextDiffService
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
BaiduTextDiffService
.
class
);
@Value
(
"baidu.text_diff.client_id"
)
private
String
clientId
;
@Value
(
"baidu.text_diff.client_secret"
)
private
String
clientSecret
;
@Resource
private
BaiduTextDiffApi
baiduTextDiffApi
;
@Resource
private
BaiduTokenService
baiduTokenService
;
@Override
public
String
textDiff
(
MultipartFile
baseFile
,
MultipartFile
compareFile
,
BaiduTextDiffResponse
.
Param
param
)
{
BaiduTextDiffResponse
baiduTextDiffResponse
=
new
BaiduTextDiffResponse
();
baiduTextDiffResponse
.
setBaseFile
(
baseFile
);
baiduTextDiffResponse
.
setCompareFile
(
compareFile
);
baiduTextDiffResponse
.
setParam
(
param
);
return
createTextDiffTask
(
baiduTextDiffResponse
,
baiduTokenService
.
getToken
(
clientId
,
clientSecret
));
}
@Override
public
String
textDiff
(
String
baseFileUrl
,
String
compareFileUrl
,
BaiduTextDiffResponse
.
Param
param
)
{
BaiduTextDiffResponse
baiduTextDiffResponse
=
new
BaiduTextDiffResponse
();
baiduTextDiffResponse
.
setBaseFileURL
(
baseFileUrl
);
baiduTextDiffResponse
.
setCompareFileURL
(
compareFileUrl
);
baiduTextDiffResponse
.
setParam
(
param
);
return
createTextDiffTask
(
baiduTextDiffResponse
,
baiduTokenService
.
getToken
(
clientId
,
clientSecret
));
}
private
String
createTextDiffTask
(
BaiduTextDiffResponse
baiduTextDiffResponse
,
String
token
)
{
BaiduTextDiffResult
baiduTextDiffResult
=
baiduTextDiffApi
.
textDiff
(
baiduTextDiffResponse
,
token
);
if
(
baiduTextDiffResult
==
null
||
!
baiduTextDiffResult
.
getError_code
().
equals
(
0
))
{
if
(
baiduTextDiffResult
!=
null
&&
baiduTextDiffResult
.
getError_code
()
!=
null
&&
StringUtils
.
isNotBlank
(
baiduTextDiffResult
.
getError_msg
()))
{
logger
.
error
(
"文档比对任务创建失败,错误码:{},错误信息:{}"
,
baiduTextDiffResult
.
getError_code
(),
baiduTextDiffResult
.
getError_msg
());
}
throw
new
BusinessException
(
"文档比对任务创建失败"
);
}
return
baiduTextDiffResult
.
getResult
().
getTaskId
();
}
@Override
public
BaiduTextDiffQueryResult
queryTextDiffTask
(
String
taskId
)
{
String
token
=
baiduTokenService
.
getToken
(
clientId
,
clientSecret
);
BaiduTextDiffQueryResult
baiduTextDiffQueryResult
=
baiduTextDiffApi
.
queryTask
(
taskId
,
token
);
if
(
baiduTextDiffQueryResult
==
null
||
!
baiduTextDiffQueryResult
.
getError_code
().
equals
(
0
))
{
if
(
baiduTextDiffQueryResult
!=
null
&&
baiduTextDiffQueryResult
.
getError_code
()
!=
null
&&
StringUtils
.
isNotBlank
(
baiduTextDiffQueryResult
.
getError_msg
()))
{
logger
.
error
(
"查询文档对比任务,错误码:{},错误信息:{}"
,
baiduTextDiffQueryResult
.
getError_code
(),
baiduTextDiffQueryResult
.
getError_msg
());
}
throw
new
BusinessException
(
"查询文档对比任务失败"
);
}
return
baiduTextDiffQueryResult
;
}
@Override
public
String
getSDKUrl
(
String
taskId
)
{
String
baseUrl
=
"https://textmind-sdk.bce.baidu.com/textmind/sdk/textdiff/{taskId}?access_token={access_token}"
;
String
token
=
baiduTokenService
.
getToken
(
clientId
,
clientSecret
);
baseUrl
=
baseUrl
.
replace
(
"{taskId}"
,
taskId
).
replace
(
"{access_token}"
,
token
);
return
baseUrl
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/baidu/service/impl/BaiduTokenServiceImpl.java
View file @
85628679
...
...
@@ -31,7 +31,20 @@ public class BaiduTokenServiceImpl implements BaiduTokenService {
String
SECRET_ACCESS_KEY
=
Config
.
get
(
"baidu.code.keySecret"
);
if
(
null
==
redisService
.
get
(
BAIDU_AI_CUSTOM_TOKEN
))
{
BaiduTokenResult
token
=
baiduTokenApi
.
getToken
(
ACCESS_KEY_ID
,
SECRET_ACCESS_KEY
);
if
(
StringUtils
.
isNoneBlank
(
token
.
getError
()))
{
if
(
token
==
null
||
StringUtils
.
isNoneBlank
(
token
.
getError
()))
{
throw
new
I18nMessageException
(
"exception/failed.to.obtain.baidu.token"
);
}
redisService
.
set
(
BAIDU_AI_CUSTOM_TOKEN
,
token
.
getAccess_token
(),
token
.
getExpires_in
());
}
return
redisService
.
get
(
BAIDU_AI_CUSTOM_TOKEN
).
toString
();
}
@Override
public
String
getToken
(
String
clientId
,
String
clientSecret
)
{
String
BAIDU_AI_CUSTOM_TOKEN
=
"BAIDU_TOKEN_"
+
clientId
;
if
(
null
==
redisService
.
get
(
BAIDU_AI_CUSTOM_TOKEN
))
{
BaiduTokenResult
token
=
baiduTokenApi
.
getToken
(
clientId
,
clientSecret
);
if
(
token
==
null
||
StringUtils
.
isNoneBlank
(
token
.
getError
()))
{
throw
new
I18nMessageException
(
"exception/failed.to.obtain.baidu.token"
);
}
redisService
.
set
(
BAIDU_AI_CUSTOM_TOKEN
,
token
.
getAccess_token
(),
token
.
getExpires_in
());
...
...
src/main/java/cn/com/poc/thirdparty/resource/demand/ai/function/extraction/ContractExtractionFunction.java
View file @
85628679
...
...
@@ -9,8 +9,10 @@ import cn.com.poc.thirdparty.resource.demand.ai.function.AbstractLargeModelFunct
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.FunctionLLMConfig
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.Parameters
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.Properties
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.extraction.entity.KeyInfo
;
import
cn.com.poc.thirdparty.resource.textin.api.TextInClient
;
import
cn.com.poc.thirdparty.resource.text_in.api.TextInClient
;
import
cn.com.poc.thirdparty.resource.text_in.entity.extraction.entity.KeyInfo
;
import
cn.hutool.core.collection.ListUtil
;
import
cn.hutool.json.JSONException
;
import
com.alibaba.fastjson.JSONArray
;
...
...
src/main/java/cn/com/poc/thirdparty/resource/demand/ai/function/text_in_pdf2md/PdfToMDFunction.java
View file @
85628679
...
...
@@ -9,7 +9,7 @@ import cn.com.poc.thirdparty.resource.demand.ai.function.AbstractLargeModelFunct
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.FunctionLLMConfig
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.Parameters
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.entity.Properties
;
import
cn.com.poc.thirdparty.resource.textin.api.TextInClient
;
import
cn.com.poc.thirdparty.resource.text
_
in.api.TextInClient
;
import
cn.hutool.core.collection.ListUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.fasterxml.jackson.databind.JsonNode
;
...
...
src/main/java/cn/com/poc/thirdparty/resource/textin/api/TextInClient.java
→
src/main/java/cn/com/poc/thirdparty/resource/text
_
in/api/TextInClient.java
View file @
85628679
This diff is collapsed.
Click to expand it.
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/Config.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
@SuppressWarnings
(
"unused"
)
public
class
Config
{
private
String
engine
;
private
String
remove_watermark
;
private
String
use_pdf_parser
;
private
String
use_semantic_match
;
public
String
getEngine
()
{
return
engine
;
}
public
void
setEngine
(
String
engine
)
{
this
.
engine
=
engine
;
}
public
String
getRemove_watermark
()
{
return
remove_watermark
;
}
public
void
setRemove_watermark
(
String
remove_watermark
)
{
this
.
remove_watermark
=
remove_watermark
;
}
public
String
getUse_pdf_parser
()
{
return
use_pdf_parser
;
}
public
void
setUse_pdf_parser
(
String
use_pdf_parser
)
{
this
.
use_pdf_parser
=
use_pdf_parser
;
}
public
String
getUse_semantic_match
()
{
return
use_semantic_match
;
}
public
void
setUse_semantic_match
(
String
use_semantic_match
)
{
this
.
use_semantic_match
=
use_semantic_match
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/CreateExtractionResponse.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
java.util.List
;
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
CreateExtractionResponse
{
private
Config
config
;
private
String
creator
;
private
String
filedata
;
private
String
filename
;
private
List
<
KeyInfo
>
key_info_list
;
private
Long
token_mode
;
public
Config
getConfig
()
{
return
config
;
}
public
void
setConfig
(
Config
config
)
{
this
.
config
=
config
;
}
public
String
getCreator
()
{
return
creator
;
}
public
void
setCreator
(
String
creator
)
{
this
.
creator
=
creator
;
}
public
String
getFiledata
()
{
return
filedata
;
}
public
void
setFiledata
(
String
filedata
)
{
this
.
filedata
=
filedata
;
}
public
String
getFilename
()
{
return
filename
;
}
public
void
setFilename
(
String
filename
)
{
this
.
filename
=
filename
;
}
public
List
<
KeyInfo
>
getKey_info_list
()
{
return
key_info_list
;
}
public
void
setKey_info_list
(
List
<
KeyInfo
>
key_info_list
)
{
this
.
key_info_list
=
key_info_list
;
}
public
Long
getToken_mode
()
{
return
token_mode
;
}
public
void
setToken_mode
(
Long
token_mode
)
{
this
.
token_mode
=
token_mode
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/CreateResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
/**
* @author alex.yao
* @date 2025/5/21
*/
public
class
CreateResult
{
private
Integer
code
;
private
Data
data
;
private
String
msg
;
public
static
class
Data
{
private
String
extracted_results_url
;
private
String
preview_url
;
private
String
task_id
;
public
String
getExtracted_results_url
()
{
return
extracted_results_url
;
}
public
void
setExtracted_results_url
(
String
extracted_results_url
)
{
this
.
extracted_results_url
=
extracted_results_url
;
}
public
String
getPreview_url
()
{
return
preview_url
;
}
public
void
setPreview_url
(
String
preview_url
)
{
this
.
preview_url
=
preview_url
;
}
public
String
getTask_id
()
{
return
task_id
;
}
public
void
setTask_id
(
String
task_id
)
{
this
.
task_id
=
task_id
;
}
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
Data
getData
()
{
return
data
;
}
public
void
setData
(
Data
data
)
{
this
.
data
=
data
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/ExtractionResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
import
cn.com.poc.thirdparty.resource.text_in.entity.imageEdgeTriming.Result
;
/**
* @author alex.yao
* @date 2025/5/19
*/
public
class
ExtractionResult
{
private
Long
code
;
private
String
msg
;
private
Result
result
;
public
Long
getCode
()
{
return
code
;
}
public
void
setCode
(
Long
code
)
{
this
.
code
=
code
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
public
Result
getResult
()
{
return
result
;
}
public
void
setResult
(
Result
result
)
{
this
.
result
=
result
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/KeyInfo.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
/**
* @author alex.yao
* @date 2025/5/12
*/
public
class
KeyInfo
{
public
String
key_info
;
public
String
[]
paraphrase_names
;
public
String
field_type
;
public
boolean
is_in_table
;
public
String
[]
keywords
;
public
KeyInfo
()
{
}
public
KeyInfo
(
String
key_info
,
String
[]
paraphrase_names
,
String
field_type
,
boolean
is_in_table
,
String
[]
keywords
)
{
this
.
key_info
=
key_info
;
this
.
paraphrase_names
=
paraphrase_names
;
this
.
field_type
=
field_type
;
this
.
is_in_table
=
is_in_table
;
this
.
keywords
=
keywords
;
}
public
String
getKey_info
()
{
return
key_info
;
}
public
void
setKey_info
(
String
key_info
)
{
this
.
key_info
=
key_info
;
}
public
String
[]
getParaphrase_names
()
{
return
paraphrase_names
;
}
public
void
setParaphrase_names
(
String
[]
paraphrase_names
)
{
this
.
paraphrase_names
=
paraphrase_names
;
}
public
String
getField_type
()
{
return
field_type
;
}
public
void
setField_type
(
String
field_type
)
{
this
.
field_type
=
field_type
;
}
public
boolean
isIs_in_table
()
{
return
is_in_table
;
}
public
void
setIs_in_table
(
boolean
is_in_table
)
{
this
.
is_in_table
=
is_in_table
;
}
public
String
[]
getKeywords
()
{
return
keywords
;
}
public
void
setKeywords
(
String
[]
keywords
)
{
this
.
keywords
=
keywords
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/RequestData.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
/**
* @author alex.yao
* @date 2025/5/12
*/
public
class
RequestData
{
public
Integer
token_mode
;
public
String
creator
;
public
Config
config
;
public
String
filedata
;
public
String
filename
;
public
KeyInfo
[]
key_info_list
;
public
RequestData
(
String
creator
,
Config
config
,
String
filedata
,
String
filename
,
KeyInfo
[]
key_info_list
)
{
this
.
token_mode
=
1
;
this
.
creator
=
creator
;
this
.
config
=
config
;
this
.
filedata
=
filedata
;
this
.
filename
=
filename
;
this
.
key_info_list
=
key_info_list
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/extraction/entity/Result.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
extraction
.
entity
;
import
java.util.List
;
/**
* @author alex.yao
* @date 2025/5/19
*/
public
class
Result
{
private
List
<
Item
>
customize_keys
;
//自配置字段数组
private
List
<
Item
>
stamp_keys
;
//印章字段数组
public
List
<
Item
>
getCustomize_keys
()
{
return
customize_keys
;
}
public
void
setCustomize_keys
(
List
<
Item
>
customize_keys
)
{
this
.
customize_keys
=
customize_keys
;
}
public
List
<
Item
>
getStamp_keys
()
{
return
stamp_keys
;
}
public
void
setStamp_keys
(
List
<
Item
>
stamp_keys
)
{
this
.
stamp_keys
=
stamp_keys
;
}
public
static
class
Item
{
private
String
key
;
//字段名
private
Object
value
;
//字段值
public
String
getKey
()
{
return
key
;
}
public
void
setKey
(
String
key
)
{
this
.
key
=
key
;
}
public
Object
getValue
()
{
return
value
;
}
public
void
setValue
(
Object
value
)
{
this
.
value
=
value
;
}
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/imageEdgeTriming/ImageEdgeTrimingResult.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
imageEdgeTriming
;
import
com.google.gson.annotations.Expose
;
import
javax.annotation.Generated
;
@Generated
(
"net.hexar.json2pojo"
)
@SuppressWarnings
(
"unused"
)
public
class
ImageEdgeTrimingResult
{
@Expose
private
Long
duration
;
@Expose
private
Result
result
;
@Expose
private
String
version
;
public
Long
getDuration
()
{
return
duration
;
}
public
void
setDuration
(
Long
duration
)
{
this
.
duration
=
duration
;
}
public
Result
getResult
()
{
return
result
;
}
public
void
setResult
(
Result
result
)
{
this
.
result
=
result
;
}
public
String
getVersion
()
{
return
version
;
}
public
void
setVersion
(
String
version
)
{
this
.
version
=
version
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/imageEdgeTriming/ImageList.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
imageEdgeTriming
;
import
java.util.List
;
@SuppressWarnings
(
"unused"
)
public
class
ImageList
{
private
Long
angle
;
//图像角度,correct_direction=1时生效 定义0度为人类阅读文字的图像方向,称为正置图像, 本字段表示输入图像是正置图像进行顺时针若干角度的旋转所得。
private
Long
cropped_height
;
//图像处理后的高
private
Long
cropped_width
;
//图像处理后的宽
private
String
image
;
//图像处理后的jpg图片,base64格式
private
List
<
Object
>
position
;
//切图区域的4个角点坐标, 是个长度为8的数组
public
Long
getAngle
()
{
return
angle
;
}
public
void
setAngle
(
Long
angle
)
{
this
.
angle
=
angle
;
}
public
Long
getCropped_height
()
{
return
cropped_height
;
}
public
void
setCropped_height
(
Long
cropped_height
)
{
this
.
cropped_height
=
cropped_height
;
}
public
Long
getCropped_width
()
{
return
cropped_width
;
}
public
void
setCropped_width
(
Long
cropped_width
)
{
this
.
cropped_width
=
cropped_width
;
}
public
String
getImage
()
{
return
image
;
}
public
void
setImage
(
String
image
)
{
this
.
image
=
image
;
}
public
List
<
Object
>
getPosition
()
{
return
position
;
}
public
void
setPosition
(
List
<
Object
>
position
)
{
this
.
position
=
position
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/text_in/entity/imageEdgeTriming/Result.java
0 → 100644
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
text_in
.
entity
.
imageEdgeTriming
;
import
java.util.List
;
@SuppressWarnings
(
"unused"
)
public
class
Result
{
private
List
<
ImageList
>
image_list
;
private
Long
origin_height
;
private
Long
origin_width
;
public
List
<
ImageList
>
getImage_list
()
{
return
image_list
;
}
public
void
setImage_list
(
List
<
ImageList
>
image_list
)
{
this
.
image_list
=
image_list
;
}
public
Long
getOrigin_height
()
{
return
origin_height
;
}
public
void
setOrigin_height
(
Long
origin_height
)
{
this
.
origin_height
=
origin_height
;
}
public
Long
getOrigin_width
()
{
return
origin_width
;
}
public
void
setOrigin_width
(
Long
origin_width
)
{
this
.
origin_width
=
origin_width
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/textin/entity/PdfToMDResponse.java
deleted
100644 → 0
View file @
846cc766
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
textin
.
entity
;
/**
* @author alex.yao
* @date 2025/5/7
*/
public
class
PdfToMDResponse
{
public
String
pdfPwd
;
public
Integer
dpi
;
public
Integer
pageStart
;
public
Integer
pageCount
;
public
Boolean
applyDocumentTree
;
public
String
markdownDetails
;
public
String
tableFlavor
;
public
String
getImage
;
public
String
parseMode
;
public
String
getPdfPwd
()
{
return
pdfPwd
;
}
public
void
setPdfPwd
(
String
pdfPwd
)
{
this
.
pdfPwd
=
pdfPwd
;
}
public
Integer
getDpi
()
{
return
dpi
;
}
public
void
setDpi
(
Integer
dpi
)
{
this
.
dpi
=
dpi
;
}
public
Integer
getPageStart
()
{
return
pageStart
;
}
public
void
setPageStart
(
Integer
pageStart
)
{
this
.
pageStart
=
pageStart
;
}
public
Integer
getPageCount
()
{
return
pageCount
;
}
public
void
setPageCount
(
Integer
pageCount
)
{
this
.
pageCount
=
pageCount
;
}
public
Boolean
getApplyDocumentTree
()
{
return
applyDocumentTree
;
}
public
void
setApplyDocumentTree
(
Boolean
applyDocumentTree
)
{
this
.
applyDocumentTree
=
applyDocumentTree
;
}
public
String
getMarkdownDetails
()
{
return
markdownDetails
;
}
public
void
setMarkdownDetails
(
String
markdownDetails
)
{
this
.
markdownDetails
=
markdownDetails
;
}
public
String
getTableFlavor
()
{
return
tableFlavor
;
}
public
void
setTableFlavor
(
String
tableFlavor
)
{
this
.
tableFlavor
=
tableFlavor
;
}
public
String
getGetImage
()
{
return
getImage
;
}
public
void
setGetImage
(
String
getImage
)
{
this
.
getImage
=
getImage
;
}
public
String
getParseMode
()
{
return
parseMode
;
}
public
void
setParseMode
(
String
parseMode
)
{
this
.
parseMode
=
parseMode
;
}
}
src/main/java/cn/com/poc/thirdparty/resource/textin/entity/PdfToMDResult.java
deleted
100644 → 0
View file @
846cc766
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
textin
.
entity
;
/**
* @author alex.yao
* @date 2025/5/7
*/
public
class
PdfToMDResult
{
}
src/main/resources/framemax-config/config.properties
View file @
85628679
...
...
@@ -55,6 +55,10 @@ baidu.code.mainLand.signatureId=sms-sign-wqlTsv51668
baidu.code.mainLand.template
=
sms-tmpl-AnDHlz15911
baidu.code.gangAo.signatureId
=
sms-sign-FcfPaR54702
baidu.code.gangAo.template
=
sms-tmpl-GZmkfn63181
#baidu text_diff
baidu.text_diff.client_id
=
ugOntUL9xGeePxI2IFlRO9IO
baidu.text_diff.client_secret
=
YZqMbOZMe9qnaj1ts2DP59xjfOWvKpDU
#tencent
tencent.speech.synthesizer.appid
=
1251105573
tencent.speech.synthesizer.secretId
=
AKIDAGE2Y1KWTGTTKZ5d5KTO5XzNdnpfOxPL
...
...
src/test/java/cn/com/poc/thirdparty/resource/demand/ai/function/PdfToMdFunctionTest.java
View file @
85628679
package
cn
.
com
.
poc
.
thirdparty
.
resource
.
demand
.
ai
.
function
;
import
cn.com.poc.thirdparty.resource.demand.ai.function.extraction.ContractExtractionFunction
;
import
cn.com.poc.thirdparty.resource.textin.api.TextInClient
;
import
cn.com.poc.thirdparty.resource.text_in.api.TextInClient
;
import
cn.com.yict.framemax.core.spring.SingleContextInitializer
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment