Commit 366b81d9 authored by R10's avatar R10

AI data audit 修改上传

parent 540e566d
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;
}
}
...@@ -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
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 DataAuditTaskServiceImpl 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();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment