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