Commit 54c1b683 authored by R10's avatar R10

获取单据结果修改

parent 6777bb2b
......@@ -17,4 +17,5 @@ public interface BizAiDataAuditTaskRest extends BaseRest {
BizAiDataAuditTaskDto getByTaskId(@RequestParam Integer taskId) throws Exception;
void delete(@RequestParam Integer taskId) throws Exception;
}
\ No newline at end of file
......@@ -46,4 +46,10 @@ public class BizAiDataAuditTaskRestImpl implements BizAiDataAuditTaskRest {
}
return BizAiDataAuditTaskConvert.entityToDto(bizAiDataAuditTaskEntity);
}
@Override
public void delete(Integer taskId) throws Exception {
Assert.notNull(taskId, "taskId can not be null");
bizAiDataAuditTaskService.delete(taskId);
}
}
\ No newline at end of file
......@@ -6,22 +6,13 @@ 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.service.BizAiDataAuditTaskService;
import cn.com.poc.common.service.BosConfigService;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.thirdparty.resource.demand.ai.aggregate.MinerUOcrService;
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.ai_data_audit.service.DataAuditService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @Author:Roger Wu
......@@ -35,62 +26,16 @@ public class DataAuditRestImpl implements DataAuditRest {
private BizAiDataAuditTaskService bizAiDataAuditTaskService;
@Resource
private MinerUOcrService minerUOcrService;
private DataAuditService dataAuditService;
@Override
public List<FileUploadReturnDto> fileUpload(List<FileUploadDto> fileUploadDtoList) throws Exception {
if (CollectionUtils.isEmpty(fileUploadDtoList)) {
throw new Exception("please upload files");
}
// 获取单个文件的文件名
List<String> fileNames = fileUploadDtoList.stream()
.map(item -> item.getFileName())
.collect(Collectors.toList());
Map<String, String> fileNameMap = new HashMap<>();
// fileNameMap.put("DOC-01","Work Permit Application Details");
// fileNameMap.put("DOC-02","Work Permit Extension Details");
fileNameMap.put("DOC-03", "Work Method Statement");
fileNameMap.put("DOC-04", "Safety Method Statement or Safety Plan");
fileNameMap.put("DOC-05", "Risk Assessment");
fileNameMap.put("DOC-06", "Work Programme");
fileNameMap.put("DOC-07", "Location Plan");
fileNameMap.put("DOC-08", "HKIA Contractor Safety (Construction & Maintenance) Training Record");
fileNameMap.put("DOC-09", "HKIA BRAAS Check Form or BRAAS Exemption Declaration Form");
fileNameMap.put("DOC-10", "Premises Endorser Declaration Form for Work Permit Application");
fileNameMap.put("DOC-11", "OCWIP");
fileNameMap.put("DOC-12", "Insurance");
fileNameMap.put("DOC-13", "Pay-in-Slip for Work Permit Processing Fee");
fileNameMap.put("DOC-14", "HKIA APM Safety Video Training and Examination Record");
fileNameMap.put("DOC-15", "Aerodrome Safety Risk Assessment");
fileNameMap.put("DOC-16", "System Change Request (SCR)");
fileNameMap.put("DOC-17", "CCTV Equipment Configuration Request Form");
fileNameMap.put("DOC-18", "Permit to Dig");
fileNameMap.put("DOC-19", "Temporary Traffic Management Plan");
return dataAuditService.fileUploadAndProcessing(fileUploadDtoList);
//执行文件名匹配
//执行类型匹配
MinerUOcrResponse minerUOcrResponse = new MinerUOcrResponse();
// minerUOcrResponse.setFile();
// minerUOcrResponse.setOutput_dir();
// minerUOcrResponse.setLang_list();
// minerUOcrResponse.setBackend();
// minerUOcrResponse.setParse_method();
// minerUOcrResponse.setFormula_enable();
// minerUOcrResponse.setTable_enable();
// minerUOcrResponse.setServer_url();
// minerUOcrResponse.setReturn_md();
// minerUOcrResponse.setReturn_middle_json();
// minerUOcrResponse.setReturn_model_output();
// minerUOcrResponse.setReturn_content_list();
// minerUOcrResponse.setReturn_images();
// minerUOcrResponse.setResponse_format_zip();
// minerUOcrResponse.setStart_page_id();
// minerUOcrResponse.setEnd_page_id();
MinerUOcrResult minerUOcrResult = minerUOcrService.fileParse(minerUOcrResponse);
return new ArrayList<FileUploadReturnDto>();
}
@Override
......
......@@ -11,6 +11,8 @@ public interface BizAiDataAuditTaskService extends BaseService {
BizAiDataAuditTaskEntity get(Integer id) throws Exception;
void delete(Integer id) throws Exception;
List<BizAiDataAuditTaskEntity> findByExample(BizAiDataAuditTaskEntity example, PagingInfo pagingInfo) throws Exception;
void createDataAuditTask(String taskName, FileUploadConfirmDto fileUploadConfirmDto) throws Exception;
......
package cn.com.poc.ai_data_audit.service;
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.entity.BizAiDataAuditTaskEntity;
import cn.com.yict.framemax.core.service.BaseService;
import cn.com.yict.framemax.data.model.PagingInfo;
import java.util.List;
public interface DataAuditService extends BaseService {
public List fileUploadAndProcessing(List<FileUploadDto> fileUploadDtoList);
public List matchOriginalTemplateAndUploadFile();
}
\ No newline at end of file
......@@ -36,8 +36,6 @@ public class BizAiDataAuditTaskServiceImpl extends BaseServiceImpl
@Resource
private BizAiDataAuditTaskRepository repository;
@Resource
private BosConfigService bosConfigService;
@Resource
private BizAiDataAuditFileService bizAiDataAuditFileService;
@Override
......@@ -56,6 +54,16 @@ public class BizAiDataAuditTaskServiceImpl extends BaseServiceImpl
return BizAiDataAuditTaskConvert.modelToEntity(model);
}
@Override
public void delete(Integer id) throws Exception {
Assert.notNull(id);
BizAiDataAuditTaskEntity bizAiDataAuditTaskEntity = get(id);
if (bizAiDataAuditTaskEntity == null) {
throw new Exception("the task can not be found");
}
deletedById(id);
}
@Override
public List<BizAiDataAuditTaskEntity> findByExample(BizAiDataAuditTaskEntity example, PagingInfo pagingInfo) throws Exception {
......
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.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.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 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.stream.Collectors;
@Service
public class DataAuditTaskServiceImpl extends BaseServiceImpl
implements DataAuditService {
@Resource
private MinerUOcrService minerUOcrService;
@Resource
private BizAgentApplicationGcConfigService bizAgentApplicationGcConfigService;
final private ThreadPoolExecutor executor = new ThreadPoolExecutor(16, 64, 10, TimeUnit.SECONDS, new LinkedBlockingDeque<>(100));
@Override
public List fileUploadAndProcessing(List<FileUploadDto> fileUploadDtoList) {
fileUploadDtoList.stream().collect(Collectors.groupingBy(item->item.getFileName()));
// 获取单个文件的文件名
List<String> fileNames = fileUploadDtoList.stream()
.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();
// });
Map<String, String> fileNameMap = new HashMap<>();
// fileNameMap.put("DOC-01","Work Permit Application Details");
// fileNameMap.put("DOC-02","Work Permit Extension Details");
fileNameMap.put("DOC-03", "Work Method Statement");
fileNameMap.put("DOC-04", "Safety Method Statement or Safety Plan");
fileNameMap.put("DOC-05", "Risk Assessment");
fileNameMap.put("DOC-06", "Work Programme");
fileNameMap.put("DOC-07", "Location Plan");
fileNameMap.put("DOC-08", "HKIA Contractor Safety (Construction & Maintenance) Training Record");
fileNameMap.put("DOC-09", "HKIA BRAAS Check Form or BRAAS Exemption Declaration Form");
fileNameMap.put("DOC-10", "Premises Endorser Declaration Form for Work Permit Application");
fileNameMap.put("DOC-11", "OCWIP");
fileNameMap.put("DOC-12", "Insurance");
fileNameMap.put("DOC-13", "Pay-in-Slip for Work Permit Processing Fee");
fileNameMap.put("DOC-14", "HKIA APM Safety Video Training and Examination Record");
fileNameMap.put("DOC-15", "Aerodrome Safety Risk Assessment");
fileNameMap.put("DOC-16", "System Change Request (SCR)");
fileNameMap.put("DOC-17", "CCTV Equipment Configuration Request Form");
fileNameMap.put("DOC-18", "Permit to Dig");
fileNameMap.put("DOC-19", "Temporary Traffic Management Plan");
//执行文件名匹配
//执行类型匹配
List<FileUploadReturnDto> fileUploadReturnDtoList = new ArrayList<>();
FileUploadReturnDto fileUploadReturnDto = new FileUploadReturnDto();
fileUploadReturnDto.setOrginalTemplateName("xxxxx");
fileUploadReturnDto.setOrginalTemplateCode("doc1");
fileUploadReturnDto.setUploadFileName("yyyyyyyy");
fileUploadReturnDtoList.add(fileUploadReturnDto);
FileUploadReturnDto fileUploadReturnDto1 = new FileUploadReturnDto();
fileUploadReturnDto1.setOrginalTemplateName("xxxxx");
fileUploadReturnDto1.setOrginalTemplateCode("doc2");
fileUploadReturnDto1.setUploadFileName("yyyyyyyy");
fileUploadReturnDtoList.add(fileUploadReturnDto1);
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;
}
private List<Message> buildMessages(String input, String fileUrl, String prompt) throws Exception {
// 加载文件
String fileContent = StringUtils.EMPTY;
if (StringUtils.isNoneBlank(fileUrl)) {
File file = DocumentLoad.downloadURLDocument(fileUrl);
fileContent = DocumentLoad.documentToText(file);
}
// 加载对话提示词
// String prompt = documentDialoguePrompt.getConfigSystem();
// if (CollectionUtils.isNotEmpty(knowledgeContentResults)) {
// String knowledgeContent = JsonUtils.serialize(knowledgeContentResults);
// prompt = prompt.replace("${knowledgeContent}", knowledgeContent);
// } else {
// prompt = prompt.replace("${knowledgeContent}", StringUtils.EMPTY);
// }
// if (toolFunction != null) {
// prompt = prompt.replace("${toolFunction}", JsonUtils.serialize(toolFunction));
// }
//
// prompt = prompt.replace("${question}", input).replace("${fileContent}", fileContent);
// 配置message
List<Message> messages = new ArrayList<>();
Message systemMessage = new Message();
systemMessage.setContent(prompt);
systemMessage.setRole(LLMRoleEnum.SYSTEM.getRole());
messages.add(systemMessage);
// 用户输入
Message message = new Message();
message.setContent("请根据要求提取");
message.setRole(LLMRoleEnum.USER.getRole());
messages.add(message);
// logger.info("--------- Build Messages dialogsId:{},messages:{}--------------", dialogsId, messages);
return messages;
}
public MinerUOcrResult ocrPrase(File file) {
return minerUOcrService.fileParse(file);
}
}
\ No newline at end of file
......@@ -3,6 +3,8 @@ package cn.com.poc.thirdparty.resource.demand.ai.aggregate;
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 java.io.File;
/**
* @author alex.yao
* @date 2025/7/28
......@@ -12,8 +14,8 @@ public interface MinerUOcrService {
/**
* 文件OCR
*
* @param response
* @param file
* @return
*/
MinerUOcrResult fileParse(MinerUOcrResponse response);
MinerUOcrResult fileParse(File file);
}
......@@ -9,11 +9,15 @@ import cn.com.poc.thirdparty.resource.demand.ai.entity.orc.minerU.MinerUOcrResul
import cn.com.poc.thirdparty.resource.demand.ai.route.DgtoolsApiRoute;
import cn.com.poc.thirdparty.resource.demand.dgTools.DgtoolsAbstractHttpClient;
import cn.com.poc.thirdparty.resource.demand.member.service.DemandAuthService;
import cn.com.poc.thirdparty.resource.minerU.MinerUResponse;
import cn.com.poc.thirdparty.resource.minerU.api.MinerUAPI;
import org.apache.http.Header;
import org.apache.http.message.BasicHeader;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
......@@ -24,20 +28,15 @@ import java.util.List;
@Service
public class MinerUOcrServiceImpl implements MinerUOcrService {
@Resource
private DgtoolsAbstractHttpClient dgToolsAbstractHttpClient;
@Resource
private DemandAuthService demandAuthService;
private MinerUAPI minerUAPI;
@Override
public MinerUOcrResult fileParse(MinerUOcrResponse response){
String url = DgtoolsApiRoute.DgtoolsAI.LEGAL_FILE;
List<Header> headers = new ArrayList<Header>() {{
add(DgtoolsApiRoute.JSON_HEADER);
add(DgtoolsApiRoute.AI_HEADER);
add(new BasicHeader(DgtoolsApiRoute.HEADER_X_PLATFORM_AUTHORIZATION, demandAuthService.getToken()));
}};
return null;
public MinerUOcrResult fileParse(File file){
MinerUResponse minerUResponse = new MinerUResponse();
minerUResponse.setFiles(file);
return (MinerUOcrResult)minerUAPI.parsePDF(minerUResponse);
}
}
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