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
1
Merge Requests
1
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
366b81d9
Commit
366b81d9
authored
Oct 30, 2025
by
R10
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
AI data audit 修改上传
parent
540e566d
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
105 deletions
+124
-105
AIDataAuditMatchFileNameResponse.java
...i_data_audit/entity/AIDataAuditMatchFileNameResponse.java
+37
-0
DataAuditService.java
...va/cn/com/poc/ai_data_audit/service/DataAuditService.java
+2
-4
DataAuditServiceImpl.java
.../poc/ai_data_audit/service/impl/DataAuditServiceImpl.java
+85
-101
No files found.
src/main/java/cn/com/poc/ai_data_audit/entity/AIDataAuditMatchFileNameResponse.java
0 → 100644
View file @
366b81d9
package
cn
.
com
.
poc
.
ai_data_audit
.
entity
;
/**
* @Author:Roger Wu
* @name:AIDataAuditMatchFileNameResponse
* @Date:2025-10-30 12:08
*/
public
class
AIDataAuditMatchFileNameResponse
{
String
templateCode
;
String
templateName
;
String
uploadFileName
;
public
String
getTemplateCode
()
{
return
templateCode
;
}
public
void
setTemplateCode
(
String
templateCode
)
{
this
.
templateCode
=
templateCode
;
}
public
String
getTemplateName
()
{
return
templateName
;
}
public
void
setTemplateName
(
String
templateName
)
{
this
.
templateName
=
templateName
;
}
public
String
getUploadFileName
()
{
return
uploadFileName
;
}
public
void
setUploadFileName
(
String
uploadFileName
)
{
this
.
uploadFileName
=
uploadFileName
;
}
}
src/main/java/cn/com/poc/ai_data_audit/service/DataAuditService.java
View file @
366b81d9
...
...
@@ -7,14 +7,12 @@ import cn.com.yict.framemax.core.service.BaseService;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
java.util.List
;
import
java.util.concurrent.ExecutionException
;
public
interface
DataAuditService
extends
BaseService
{
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
);
public
List
matchOriginalTemplateAndUploadFile
();
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
throws
ExecutionException
,
InterruptedException
;
}
\ No newline at end of file
src/main/java/cn/com/poc/ai_data_audit/service/impl/DataAudit
Task
ServiceImpl.java
→
src/main/java/cn/com/poc/ai_data_audit/service/impl/DataAuditServiceImpl.java
View file @
366b81d9
package
cn
.
com
.
poc
.
ai_data_audit
.
service
.
impl
;
import
cn.com.poc.agent_application.entity.BizAgentApplicationDialoguesRecordEntity
;
import
cn.com.poc.agent_application.entity.BizAgentApplicationGcConfigEntity
;
import
cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService
;
import
cn.com.poc.ai_data_audit.constants.DataAuditConstants
;
import
cn.com.poc.ai_data_audit.convert.BizAiDataAuditTaskConvert
;
import
cn.com.poc.ai_data_audit.dto.FileUploadConfirmDto
;
import
cn.com.poc.ai_data_audit.dto.FileUploadDto
;
import
cn.com.poc.ai_data_audit.dto.FileUploadReturnDto
;
import
cn.com.poc.ai_data_audit.entity.BizAiDataAuditFileEntity
;
import
cn.com.poc.ai_data_audit.entity.BizAiDataAuditTaskEntity
;
import
cn.com.poc.ai_data_audit.model.BizAiDataAuditTaskModel
;
import
cn.com.poc.ai_data_audit.repository.BizAiDataAuditTaskRepository
;
import
cn.com.poc.ai_data_audit.service.BizAiDataAuditFileService
;
import
cn.com.poc.ai_data_audit.service.BizAiDataAuditTaskService
;
import
cn.com.poc.ai_data_audit.entity.AIDataAuditMatchFileNameResponse
;
import
cn.com.poc.ai_data_audit.service.DataAuditService
;
import
cn.com.poc.common.constant.CommonConstant
;
import
cn.com.poc.common.service.BosConfigService
;
import
cn.com.poc.common.utils.BlContext
;
import
cn.com.poc.common.utils.DocumentLoad
;
import
cn.com.poc.common.utils.JsonUtils
;
import
cn.com.poc.common.utils.UUIDTool
;
import
cn.com.poc.law.entity.legislativeDocument.LegislativeDocumentResult
;
import
cn.com.poc.law.entity.motorVehicleDrivingComplaint.Plaintiff
;
import
cn.com.poc.thirdparty.resource.demand.ai.aggregate.MinerUOcrService
;
import
cn.com.poc.thirdparty.resource.demand.ai.constants.LLMRoleEnum
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelDemandResult
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelResponse
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.orc.minerU.MinerUOcrResponse
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.orc.minerU.MinerUOcrResult
;
import
cn.com.poc.thirdparty.service.LLMService
;
import
cn.com.yict.framemax.core.exception.BusinessException
;
import
cn.com.yict.framemax.core.i18n.I18nMessageException
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
cn.hutool.core.util.ObjectUtil
;
import
org.apache.commons.collections4.CollectionUtils
;
import
com.alibaba.fastjson.JSON
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
javax.annotation.Resource
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.LinkedBlockingDeque
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.*
;
import
java.util.stream.Collectors
;
@Service
public
class
DataAudit
Task
ServiceImpl
extends
BaseServiceImpl
public
class
DataAuditServiceImpl
extends
BaseServiceImpl
implements
DataAuditService
{
@Resource
private
MinerUOcrService
minerUOcrService
;
@Resource
private
LLMService
llmService
;
@Resource
private
BizAgentApplicationGcConfigService
bizAgentApplicationGcConfigService
;
...
...
@@ -69,7 +45,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
final
private
ThreadPoolExecutor
executor
=
new
ThreadPoolExecutor
(
16
,
64
,
10
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingDeque
<>(
100
));
@Override
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
{
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
throws
ExecutionException
,
InterruptedException
{
fileUploadDtoList
.
stream
().
collect
(
Collectors
.
groupingBy
(
item
->
item
.
getFileName
()));
// 获取单个文件的文件名
...
...
@@ -77,28 +53,30 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
.
map
(
item
->
item
.
getFileName
())
.
collect
(
Collectors
.
toList
());
// CompletableFuture<Plaintiff> extractFileFuture = CompletableFuture.supplyAsync(() -> {
// try {
// return extractFile(input);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }, executor).exceptionally(ex -> {
// return new Plaintiff();
// });
//
//
// String url = fileUploadDtoList.get(0).getFileUrl();
//
// CompletableFuture<MinerUOcrResult> ocrFuture = CompletableFuture.supplyAsync(() -> {
// try {
// return ocrPrase(url);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// }, executor).exceptionally(ex -> {
// return new MinerUOcrResult();
// });
CompletableFuture
<
List
<
AIDataAuditMatchFileNameResponse
>>
extractFileFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
try
{
return
matchOriginalTemplateAndUploadFile
(
fileNames
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
},
executor
).
exceptionally
(
ex
->
{
return
new
ArrayList
<
AIDataAuditMatchFileNameResponse
>();
});
CompletableFuture
<
MinerUOcrResult
>
ocrFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
try
{
return
ocrPrase
(
new
File
(
"1"
));
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
},
executor
).
exceptionally
(
ex
->
{
return
new
MinerUOcrResult
();
});
// 等待所有任务完成并获取结果
CompletableFuture
.
allOf
(
extractFileFuture
,
ocrFuture
).
join
();
List
<
AIDataAuditMatchFileNameResponse
>
aiDataAuditMatchFileNameResponses
=
extractFileFuture
.
get
();
MinerUOcrResult
minerUOcrResult
=
ocrFuture
.
get
();
Map
<
String
,
String
>
fileNameMap
=
new
HashMap
<>();
...
...
@@ -122,57 +100,62 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
fileNameMap
.
put
(
"DOC-18"
,
"Permit to Dig"
);
fileNameMap
.
put
(
"DOC-19"
,
"Temporary Traffic Management Plan"
);
//执行文件名匹配
//执行类型匹配
List
<
AIDataAuditMatchFileNameResponse
>
otherList
=
new
ArrayList
<>();
List
<
FileUploadReturnDto
>
fileUploadReturnDtoList
=
new
ArrayList
<>();
//执行类型匹配
for
(
AIDataAuditMatchFileNameResponse
aiDataAuditMatchFileNameResponse
:
aiDataAuditMatchFileNameResponses
)
{
if
(
StringUtils
.
isBlank
(
aiDataAuditMatchFileNameResponse
.
getTemplateName
())){
otherList
.
add
(
aiDataAuditMatchFileNameResponse
);
continue
;
}
FileUploadReturnDto
fileUploadReturnDto
=
new
FileUploadReturnDto
();
fileUploadReturnDto
.
setOrginalTemplateName
(
aiDataAuditMatchFileNameResponse
.
getTemplateName
());
fileUploadReturnDto
.
setOrginalTemplateCode
(
aiDataAuditMatchFileNameResponse
.
getTemplateCode
());
fileUploadReturnDto
.
setUploadFileName
(
aiDataAuditMatchFileNameResponse
.
getUploadFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto
);
}
FileUploadReturnDto
fileUploadReturnDto
=
new
FileUploadReturnDto
();
fileUploadReturnDto
.
setOrginalTemplateName
(
"Work Permit Application Details"
);
fileUploadReturnDto
.
setOrginalTemplateCode
(
"doc1"
);
fileUploadReturnDto
.
setUploadFileName
(
fileUploadDtoList
.
get
(
0
).
getFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto
);
FileUploadReturnDto
fileUploadReturnDto1
=
new
FileUploadReturnDto
();
fileUploadReturnDto1
.
setOrginalTemplateName
(
"Work Method Statement"
);
fileUploadReturnDto1
.
setOrginalTemplateCode
(
"doc3"
);
fileUploadReturnDto1
.
setUploadFileName
(
fileUploadDtoList
.
get
(
1
).
getFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto1
);
for
(
AIDataAuditMatchFileNameResponse
other:
otherList
)
{
FileUploadReturnDto
fileUploadReturnDto
=
new
FileUploadReturnDto
();
fileUploadReturnDto
.
setOrginalTemplateName
(
"ohter"
);
fileUploadReturnDto
.
setOrginalTemplateCode
(
"ohter"
);
fileUploadReturnDto
.
setUploadFileName
(
other
.
getUploadFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto
);
}
return
fileUploadReturnDtoList
;
}
@Override
public
List
matchOriginalTemplateAndUploadFile
()
{
return
new
ArrayList
();
// // 获取对话提示词
// String promptCode = "AIDataAuditMatchFileName";
// BizAgentApplicationGcConfigEntity documentDialoguePrompt = bizAgentApplicationGcConfigService.getByConfigCode(promptCode);
// if (documentDialoguePrompt == null || StringUtils.isBlank(documentDialoguePrompt.getConfigSystem())) {
// throw new BusinessException("获取对话提示词失败");
// }
//
// String prompt = documentDialoguePrompt.getConfigSystem().replace("${input}", "input");
//
//
// //组装请求参数
// List<Message> messages = buildMessages(input, null, prompt);
// LargeModelResponse largeModelResponse = new LargeModelResponse();
// largeModelResponse.setModel("deepseek-v3");//获取模型);
// largeModelResponse.setMessages(messages.toArray(new Message[0]));
// largeModelResponse.setStream(false);
// LargeModelDemandResult chat = llmService.chat(largeModelResponse);
// Plaintiff plaintiff = new Plaintiff();
// if (ObjectUtil.isEmpty(chat) || !chat.getCode().equals("0")) {
// throw new BusinessException("获取失败");
// }
// String message = chat.getMessage().replaceAll("```json", StringUtils.EMPTY).replaceAll("```", StringUtils.EMPTY);
// plaintiff = JsonUtils.deSerialize(message, Plaintiff.class);
// if (ObjectUtil.isEmpty(plaintiff)) {
// throw new BusinessException("提取失败");
// }
// return plaintiff;
public
List
<
AIDataAuditMatchFileNameResponse
>
matchOriginalTemplateAndUploadFile
(
List
<
String
>
fileNames
)
throws
Exception
{
// 获取对话提示词
String
promptCode
=
"AIDataAuditMatchFileName"
;
BizAgentApplicationGcConfigEntity
documentDialoguePrompt
=
bizAgentApplicationGcConfigService
.
getByConfigCode
(
promptCode
);
if
(
documentDialoguePrompt
==
null
||
StringUtils
.
isBlank
(
documentDialoguePrompt
.
getConfigSystem
()))
{
throw
new
BusinessException
(
"获取对话提示词失败"
);
}
String
fileNamesString
=
String
.
join
(
","
,
fileNames
);
String
prompt
=
documentDialoguePrompt
.
getConfigSystem
().
replace
(
"${uploadFileName}"
,
fileNamesString
);
//组装请求参数
List
<
Message
>
messages
=
buildMessages
(
""
,
null
,
prompt
);
LargeModelResponse
largeModelResponse
=
new
LargeModelResponse
();
largeModelResponse
.
setModel
(
"deepseek-v3"
);
//获取模型);
largeModelResponse
.
setTopP
(
0.1f
);
//获取模型);
largeModelResponse
.
setTemperature
(
0.1f
);
//获取模型);
largeModelResponse
.
setMessages
(
messages
.
toArray
(
new
Message
[
0
]));
largeModelResponse
.
setStream
(
false
);
LargeModelDemandResult
chat
=
llmService
.
chat
(
largeModelResponse
);
Plaintiff
plaintiff
=
new
Plaintiff
();
if
(
ObjectUtil
.
isEmpty
(
chat
)
||
!
chat
.
getCode
().
equals
(
"0"
))
{
throw
new
BusinessException
(
"获取失败"
);
}
String
message
=
chat
.
getMessage
().
replaceAll
(
"```json"
,
StringUtils
.
EMPTY
).
replaceAll
(
"```"
,
StringUtils
.
EMPTY
);
List
<
AIDataAuditMatchFileNameResponse
>
aIDataAuditMatchFileNameResponses
=
JSON
.
parseArray
(
message
,
AIDataAuditMatchFileNameResponse
.
class
);
if
(
ObjectUtil
.
isEmpty
(
plaintiff
))
{
throw
new
BusinessException
(
"提取失败"
);
}
return
aIDataAuditMatchFileNameResponses
;
}
private
List
<
Message
>
buildMessages
(
String
input
,
String
fileUrl
,
String
prompt
)
throws
Exception
{
...
...
@@ -209,7 +192,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
// 用户输入
Message
message
=
new
Message
();
message
.
setContent
(
"
请根据要求提取
"
);
message
.
setContent
(
""
);
message
.
setRole
(
LLMRoleEnum
.
USER
.
getRole
());
messages
.
add
(
message
);
// logger.info("--------- Build Messages dialogsId:{},messages:{}--------------", dialogsId, messages);
...
...
@@ -217,7 +200,8 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
}
public
MinerUOcrResult
ocrPrase
(
File
file
)
{
return
minerUOcrService
.
fileParse
(
file
);
// return minerUOcrService.fileParse(file);
return
new
MinerUOcrResult
();
}
...
...
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