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;
...
@@ -7,14 +7,12 @@ import cn.com.yict.framemax.core.service.BaseService;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.ExecutionException
;
public
interface
DataAuditService
extends
BaseService
{
public
interface
DataAuditService
extends
BaseService
{
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
);
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
throws
ExecutionException
,
InterruptedException
;
public
List
matchOriginalTemplateAndUploadFile
();
}
}
\ 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
;
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.entity.BizAgentApplicationGcConfigEntity
;
import
cn.com.poc.agent_application.service.BizAgentApplicationGcConfigService
;
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.FileUploadDto
;
import
cn.com.poc.ai_data_audit.dto.FileUploadReturnDto
;
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.AIDataAuditMatchFileNameResponse
;
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.service.DataAuditService
;
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.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.law.entity.motorVehicleDrivingComplaint.Plaintiff
;
import
cn.com.poc.thirdparty.resource.demand.ai.aggregate.MinerUOcrService
;
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.constants.LLMRoleEnum
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.dialogue.Message
;
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.LargeModelDemandResult
;
import
cn.com.poc.thirdparty.resource.demand.ai.entity.largemodel.LargeModelResponse
;
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.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.exception.BusinessException
;
import
cn.com.yict.framemax.core.i18n.I18nMessageException
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.core.service.impl.BaseServiceImpl
;
import
cn.com.yict.framemax.data.model.PagingInfo
;
import
cn.hutool.core.util.ObjectUtil
;
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.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.Assert
;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.io.File
;
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.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.concurrent.CompletableFuture
;
import
java.util.concurrent.*
;
import
java.util.concurrent.LinkedBlockingDeque
;
import
java.util.concurrent.ThreadPoolExecutor
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
@Service
@Service
public
class
DataAudit
Task
ServiceImpl
extends
BaseServiceImpl
public
class
DataAuditServiceImpl
extends
BaseServiceImpl
implements
DataAuditService
{
implements
DataAuditService
{
@Resource
@Resource
private
MinerUOcrService
minerUOcrService
;
private
MinerUOcrService
minerUOcrService
;
@Resource
private
LLMService
llmService
;
@Resource
@Resource
private
BizAgentApplicationGcConfigService
bizAgentApplicationGcConfigService
;
private
BizAgentApplicationGcConfigService
bizAgentApplicationGcConfigService
;
...
@@ -69,7 +45,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
...
@@ -69,7 +45,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
final
private
ThreadPoolExecutor
executor
=
new
ThreadPoolExecutor
(
16
,
64
,
10
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingDeque
<>(
100
));
final
private
ThreadPoolExecutor
executor
=
new
ThreadPoolExecutor
(
16
,
64
,
10
,
TimeUnit
.
SECONDS
,
new
LinkedBlockingDeque
<>(
100
));
@Override
@Override
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
{
public
List
fileUploadAndProcessing
(
List
<
FileUploadDto
>
fileUploadDtoList
)
throws
ExecutionException
,
InterruptedException
{
fileUploadDtoList
.
stream
().
collect
(
Collectors
.
groupingBy
(
item
->
item
.
getFileName
()));
fileUploadDtoList
.
stream
().
collect
(
Collectors
.
groupingBy
(
item
->
item
.
getFileName
()));
// 获取单个文件的文件名
// 获取单个文件的文件名
...
@@ -77,28 +53,30 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
...
@@ -77,28 +53,30 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
.
map
(
item
->
item
.
getFileName
())
.
map
(
item
->
item
.
getFileName
())
.
collect
(
Collectors
.
toList
());
.
collect
(
Collectors
.
toList
());
// CompletableFuture<Plaintiff> extractFileFuture = CompletableFuture.supplyAsync(() -> {
CompletableFuture
<
List
<
AIDataAuditMatchFileNameResponse
>>
extractFileFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
// try {
try
{
// return extractFile(input);
return
matchOriginalTemplateAndUploadFile
(
fileNames
);
// } catch (Exception e) {
}
catch
(
Exception
e
)
{
// throw new RuntimeException(e);
throw
new
RuntimeException
(
e
);
// }
}
// }, executor).exceptionally(ex -> {
},
executor
).
exceptionally
(
ex
->
{
// return new Plaintiff();
return
new
ArrayList
<
AIDataAuditMatchFileNameResponse
>();
// });
});
//
//
CompletableFuture
<
MinerUOcrResult
>
ocrFuture
=
CompletableFuture
.
supplyAsync
(()
->
{
// String url = fileUploadDtoList.get(0).getFileUrl();
try
{
//
return
ocrPrase
(
new
File
(
"1"
));
// CompletableFuture<MinerUOcrResult> ocrFuture = CompletableFuture.supplyAsync(() -> {
}
catch
(
Exception
e
)
{
// try {
throw
new
RuntimeException
(
e
);
// return ocrPrase(url);
}
// } catch (Exception e) {
},
executor
).
exceptionally
(
ex
->
{
// throw new RuntimeException(e);
return
new
MinerUOcrResult
();
// }
});
// }, 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
<>();
Map
<
String
,
String
>
fileNameMap
=
new
HashMap
<>();
...
@@ -122,57 +100,62 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
...
@@ -122,57 +100,62 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
fileNameMap
.
put
(
"DOC-18"
,
"Permit to Dig"
);
fileNameMap
.
put
(
"DOC-18"
,
"Permit to Dig"
);
fileNameMap
.
put
(
"DOC-19"
,
"Temporary Traffic Management Plan"
);
fileNameMap
.
put
(
"DOC-19"
,
"Temporary Traffic Management Plan"
);
//执行文件名匹配
List
<
AIDataAuditMatchFileNameResponse
>
otherList
=
new
ArrayList
<>();
//执行类型匹配
List
<
FileUploadReturnDto
>
fileUploadReturnDtoList
=
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
();
for
(
AIDataAuditMatchFileNameResponse
other:
otherList
)
{
fileUploadReturnDto
.
setOrginalTemplateName
(
"Work Permit Application Details"
);
FileUploadReturnDto
fileUploadReturnDto
=
new
FileUploadReturnDto
();
fileUploadReturnDto
.
setOrginalTemplateCode
(
"doc1"
);
fileUploadReturnDto
.
setOrginalTemplateName
(
"ohter"
);
fileUploadReturnDto
.
setUploadFileName
(
fileUploadDtoList
.
get
(
0
).
getFileName
());
fileUploadReturnDto
.
setOrginalTemplateCode
(
"ohter"
);
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto
);
fileUploadReturnDto
.
setUploadFileName
(
other
.
getUploadFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto
);
FileUploadReturnDto
fileUploadReturnDto1
=
new
FileUploadReturnDto
();
}
fileUploadReturnDto1
.
setOrginalTemplateName
(
"Work Method Statement"
);
fileUploadReturnDto1
.
setOrginalTemplateCode
(
"doc3"
);
fileUploadReturnDto1
.
setUploadFileName
(
fileUploadDtoList
.
get
(
1
).
getFileName
());
fileUploadReturnDtoList
.
add
(
fileUploadReturnDto1
);
return
fileUploadReturnDtoList
;
return
fileUploadReturnDtoList
;
}
}
@Override
public
List
<
AIDataAuditMatchFileNameResponse
>
matchOriginalTemplateAndUploadFile
(
List
<
String
>
fileNames
)
throws
Exception
{
public
List
matchOriginalTemplateAndUploadFile
()
{
// 获取对话提示词
return
new
ArrayList
();
String
promptCode
=
"AIDataAuditMatchFileName"
;
BizAgentApplicationGcConfigEntity
documentDialoguePrompt
=
bizAgentApplicationGcConfigService
.
getByConfigCode
(
promptCode
);
// // 获取对话提示词
if
(
documentDialoguePrompt
==
null
||
StringUtils
.
isBlank
(
documentDialoguePrompt
.
getConfigSystem
()))
{
// String promptCode = "AIDataAuditMatchFileName";
throw
new
BusinessException
(
"获取对话提示词失败"
);
// 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
);
//
// String prompt = documentDialoguePrompt.getConfigSystem().replace("${input}", "input");
//组装请求参数
//
List
<
Message
>
messages
=
buildMessages
(
""
,
null
,
prompt
);
//
LargeModelResponse
largeModelResponse
=
new
LargeModelResponse
();
// //组装请求参数
largeModelResponse
.
setModel
(
"deepseek-v3"
);
//获取模型);
// List<Message> messages = buildMessages(input, null, prompt);
largeModelResponse
.
setTopP
(
0.1f
);
//获取模型);
// LargeModelResponse largeModelResponse = new LargeModelResponse();
largeModelResponse
.
setTemperature
(
0.1f
);
//获取模型);
// largeModelResponse.setModel("deepseek-v3");//获取模型);
largeModelResponse
.
setMessages
(
messages
.
toArray
(
new
Message
[
0
]));
// largeModelResponse.setMessages(messages.toArray(new Message[0]));
largeModelResponse
.
setStream
(
false
);
// largeModelResponse.setStream(false);
LargeModelDemandResult
chat
=
llmService
.
chat
(
largeModelResponse
);
// LargeModelDemandResult chat = llmService.chat(largeModelResponse);
Plaintiff
plaintiff
=
new
Plaintiff
();
// Plaintiff plaintiff = new Plaintiff();
if
(
ObjectUtil
.
isEmpty
(
chat
)
||
!
chat
.
getCode
().
equals
(
"0"
))
{
// if (ObjectUtil.isEmpty(chat) || !chat.getCode().equals("0")) {
throw
new
BusinessException
(
"获取失败"
);
// throw new BusinessException("获取失败");
}
// }
String
message
=
chat
.
getMessage
().
replaceAll
(
"```json"
,
StringUtils
.
EMPTY
).
replaceAll
(
"```"
,
StringUtils
.
EMPTY
);
// String message = chat.getMessage().replaceAll("```json", StringUtils.EMPTY).replaceAll("```", StringUtils.EMPTY);
List
<
AIDataAuditMatchFileNameResponse
>
aIDataAuditMatchFileNameResponses
=
JSON
.
parseArray
(
message
,
AIDataAuditMatchFileNameResponse
.
class
);
// plaintiff = JsonUtils.deSerialize(message, Plaintiff.class);
if
(
ObjectUtil
.
isEmpty
(
plaintiff
))
{
// if (ObjectUtil.isEmpty(plaintiff)) {
throw
new
BusinessException
(
"提取失败"
);
// throw new BusinessException("提取失败");
}
// }
return
aIDataAuditMatchFileNameResponses
;
// return plaintiff;
}
}
private
List
<
Message
>
buildMessages
(
String
input
,
String
fileUrl
,
String
prompt
)
throws
Exception
{
private
List
<
Message
>
buildMessages
(
String
input
,
String
fileUrl
,
String
prompt
)
throws
Exception
{
...
@@ -209,7 +192,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
...
@@ -209,7 +192,7 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
// 用户输入
// 用户输入
Message
message
=
new
Message
();
Message
message
=
new
Message
();
message
.
setContent
(
"
请根据要求提取
"
);
message
.
setContent
(
""
);
message
.
setRole
(
LLMRoleEnum
.
USER
.
getRole
());
message
.
setRole
(
LLMRoleEnum
.
USER
.
getRole
());
messages
.
add
(
message
);
messages
.
add
(
message
);
// logger.info("--------- Build Messages dialogsId:{},messages:{}--------------", dialogsId, messages);
// logger.info("--------- Build Messages dialogsId:{},messages:{}--------------", dialogsId, messages);
...
@@ -217,7 +200,8 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
...
@@ -217,7 +200,8 @@ public class DataAuditTaskServiceImpl extends BaseServiceImpl
}
}
public
MinerUOcrResult
ocrPrase
(
File
file
)
{
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