Commit 0e02f609 authored by alex yao's avatar alex yao

feat: 合同对比添加配置选项

parent d9e06f2d
package cn.com.poc.covenant.dto;
import cn.com.poc.thirdparty.resource.baidu.entity.response.BaiduTextDiffResponse;
/**
* @author alex.yao
* @date 2025/6/30
*/
public class StartTextDiffDto {
private String baseFileURL;
private String compareFileURL;
private BaiduTextDiffResponse.Param param;
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 BaiduTextDiffResponse.Param getParam() {
return param;
}
public void setParam(BaiduTextDiffResponse.Param param) {
this.param = param;
}
}
package cn.com.poc.covenant.rest;
import cn.com.poc.covenant.dto.StartTextDiffDto;
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 org.springframework.web.multipart.MultipartFile;
......@@ -28,11 +30,10 @@ public interface TextDiffRest extends BaseRest {
/**
* 文本对比
*
* @param baseFileUrl 主版文件URL
* @param compareFileUrl 副版文件URL
* @param startTextDiffDto 对比参数
* @return 任务ID
*/
String textDiffByUrl(@RequestParam String baseFileUrl, @RequestParam String compareFileUrl);
String textDiffByUrl(@RequestBody StartTextDiffDto startTextDiffDto);
/**
......
......@@ -3,6 +3,7 @@ package cn.com.poc.covenant.rest.impl;
import cn.com.poc.common.utils.Assert;
import cn.com.poc.common.utils.BlContext;
import cn.com.poc.common.utils.FileUtils;
import cn.com.poc.covenant.dto.StartTextDiffDto;
import cn.com.poc.covenant.rest.TextDiffRest;
import cn.com.poc.support.security.oauth.entity.UserBaseEntity;
import cn.com.poc.thirdparty.resource.baidu.entity.response.text_diff.BaiduTextDiffQueryResult;
......@@ -31,20 +32,23 @@ public class TextDiffRestImpl implements TextDiffRest {
if (userBaseEntity != null) {
throw new BusinessException("用户未登录");
}
return baiduTextDiffService.textDiff(baseFile, compareFile, null, userBaseEntity.getUserId());
return baiduTextDiffService.textDiff(FileUtils.multipartFileToFile(baseFile), FileUtils.multipartFileToFile(compareFile), null, userBaseEntity.getUserId());
}
@Override
public String textDiffByUrl(String baseFileUrl, String compareFileUrl) {
Assert.notNull(baseFileUrl, "Base file cannot be null");
Assert.notNull(compareFileUrl, "Compare file cannot be null");
public String textDiffByUrl(StartTextDiffDto startTextDiffDto) {
Assert.notNull(startTextDiffDto, "Start text diff DTO cannot be null");
Assert.notNull(startTextDiffDto.getBaseFileURL(), "Base file cannot be null");
Assert.notNull(startTextDiffDto.getCompareFileURL(), "Compare file cannot be null");
Assert.notNull(startTextDiffDto.getParam(), "Param cannot be null");
UserBaseEntity userBaseEntity = BlContext.getCurrentUserNotException();
if (userBaseEntity != null) {
throw new BusinessException("用户未登录");
}
return baiduTextDiffService.textDiff(baseFileUrl, compareFileUrl, null, userBaseEntity.getUserId());
return baiduTextDiffService.textDiff(startTextDiffDto.getBaseFileURL(), startTextDiffDto.getCompareFileURL(), startTextDiffDto.getParam(), userBaseEntity.getUserId());
}
@Override
public String getRenderUrl(String taskId) {
Assert.notBlank(taskId, "Task ID cannot be blank");
......
......@@ -18,7 +18,7 @@ public class BaiduTextDiffResponse {
* 支持的文件大小:仅支持上传一篇文件,文件大小不超过10M。图像最短边至少15px,最长边最大4096px
* 优先级: baseFile > baseFileURL,当baseFile字段存在时,baseFileURL字段失效
*/
private MultipartFile baseFile;
private File baseFile;
/**
* 文件数据,副版比对文档
......@@ -28,7 +28,7 @@ public class BaiduTextDiffResponse {
* 支持的文件大小:仅支持上传一篇文件,文件大小不超过10M。图像最短边至少15px,最长边最大4096px
* 优先级: compareFile > compareFileURL,当compareFile字段存在时,compareFileURL字段失效
*/
private MultipartFile compareFile;
private File compareFile;
private String baseFileURL;
......@@ -39,19 +39,19 @@ public class BaiduTextDiffResponse {
*/
private Param param;
public MultipartFile getBaseFile() {
public File getBaseFile() {
return baseFile;
}
public void setBaseFile(MultipartFile baseFile) {
public void setBaseFile(File baseFile) {
this.baseFile = baseFile;
}
public MultipartFile getCompareFile() {
public File getCompareFile() {
return compareFile;
}
public void setCompareFile(MultipartFile compareFile) {
public void setCompareFile(File compareFile) {
this.compareFile = compareFile;
}
......@@ -84,7 +84,7 @@ public class BaiduTextDiffResponse {
* fullWidthHalfWidthRecognition 否 bool true/false 是否识别中英文符号差异。默认为false
* fontFamilyRecognition 否 bool true/false 是否识别字体差异。默认为false
* fontSizeRecognition 否 bool true/false 是否识别字号差异。默认为false
* handWritingRecognition
* handWritingRecognition 否 bool true/false 是否识别手写体信息。默认为false
*/
public static class Param {
private Boolean sealRecognition;
......
......@@ -3,6 +3,8 @@ package cn.com.poc.thirdparty.resource.baidu.service;
import cn.com.poc.thirdparty.resource.baidu.entity.response.BaiduTextDiffResponse;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
/**
* @author alex.yao
* @date 2025/6/25
......@@ -17,7 +19,7 @@ public interface BaiduTextDiffService {
* @param param 参数
* @return taskId - 任务ID
*/
String textDiff(MultipartFile baseFile, MultipartFile compareFile, BaiduTextDiffResponse.Param param, Long userId);
String textDiff(File baseFile, File compareFile, BaiduTextDiffResponse.Param param, Long userId);
/**
* 文档比对任务创建接口
......@@ -27,7 +29,6 @@ public interface BaiduTextDiffService {
* @param param 参数
* @return taskId - 任务ID
*/
@Deprecated
String textDiff(String baseFileUrl, String compareFileUrl, BaiduTextDiffResponse.Param param, Long userId);
/**
......
package cn.com.poc.thirdparty.resource.baidu.service.impl;
import cn.com.poc.common.constant.CommonConstant;
import cn.com.poc.common.entity.media.MediaType;
import cn.com.poc.common.service.BizFileUploadRecordService;
import cn.com.poc.common.utils.DocumentLoad;
import cn.com.poc.common.utils.FileUtils;
import cn.com.poc.common.utils.StringUtils;
import cn.com.poc.covenant.constants.ContractConstants;
import cn.com.poc.covenant.model.BizExtractionReviewTaskModel;
......@@ -14,6 +17,7 @@ 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.apache.commons.collections4.CollectionUtils;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
......@@ -21,6 +25,7 @@ import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.util.List;
/**
......@@ -45,14 +50,12 @@ public class BaiduTextDiffServiceImpl implements BaiduTextDiffService {
@Resource
private BaiduTokenService baiduTokenService;
@Resource
private BizFileUploadRecordService bizFileUploadRecordService;
@Resource
private BizExtractionReviewTaskService bizExtractionReviewTaskService;
@Override
public String textDiff(MultipartFile baseFile, MultipartFile compareFile, BaiduTextDiffResponse.Param param, Long userId) {
public String textDiff(File baseFile, File compareFile, BaiduTextDiffResponse.Param param, Long userId) {
BaiduTextDiffResponse baiduTextDiffResponse = new BaiduTextDiffResponse();
baiduTextDiffResponse.setBaseFile(baseFile);
baiduTextDiffResponse.setCompareFile(compareFile);
......@@ -63,7 +66,7 @@ public class BaiduTextDiffServiceImpl implements BaiduTextDiffService {
bizExtractionReviewTaskModel.setTaskId(taskId);
bizExtractionReviewTaskModel.setFileUrl(null);
bizExtractionReviewTaskModel.setUserId(userId);
bizExtractionReviewTaskModel.setFileName(baseFile.getOriginalFilename());
bizExtractionReviewTaskModel.setFileName(baseFile.getName());
bizExtractionReviewTaskModel.setActionType(ContractConstants.ActionType.textdiff);
bizExtractionReviewTaskModel.setReviewStatus("RUN");
bizExtractionReviewTaskModel.setContractType(ContractConstants.ContractType.contractTextdiff);
......@@ -77,28 +80,9 @@ public class BaiduTextDiffServiceImpl implements BaiduTextDiffService {
@Override
public String textDiff(String baseFileUrl, String compareFileUrl, BaiduTextDiffResponse.Param param, Long userId) {
BaiduTextDiffResponse baiduTextDiffResponse = new BaiduTextDiffResponse();
baiduTextDiffResponse.setBaseFileURL(baseFileUrl);
baiduTextDiffResponse.setCompareFileURL(compareFileUrl);
baiduTextDiffResponse.setParam(param);
String taskId = createTextDiffTask(baiduTextDiffResponse, baiduTokenService.getToken(clientId, clientSecret));
try {
BizExtractionReviewTaskModel bizExtractionReviewTaskModel = new BizExtractionReviewTaskModel();
bizExtractionReviewTaskModel.setTaskId(taskId);
bizExtractionReviewTaskModel.setFileUrl(baseFileUrl);
bizExtractionReviewTaskModel.setUserId(userId);
bizExtractionReviewTaskModel.setFileName(bizFileUploadRecordService.getFileNameByFileUrl(baseFileUrl));
bizExtractionReviewTaskModel.setActionType(ContractConstants.ActionType.textdiff);
bizExtractionReviewTaskModel.setReviewStatus("RUN");
bizExtractionReviewTaskModel.setContractType(ContractConstants.ContractType.contractTextdiff);
bizExtractionReviewTaskService.save(bizExtractionReviewTaskModel);
} catch (Exception e) {
logger.error("保存任务失败", e);
throw new BusinessException("保存任务失败");
}
return taskId;
File baseFile = DocumentLoad.downloadURLDocument(baseFileUrl);
File compareFile = DocumentLoad.downloadURLDocument(compareFileUrl);
return textDiff(baseFile, compareFile, param, userId);
}
private String createTextDiffTask(BaiduTextDiffResponse baiduTextDiffResponse, String token) {
......@@ -160,4 +144,5 @@ public class BaiduTextDiffServiceImpl implements BaiduTextDiffService {
baseUrl = baseUrl.replace("{taskId}", taskId).replace("{access_token}", token);
return baseUrl;
}
}
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