feat(REQ-3769) - 调整 WPSUtil 工具类

This commit is contained in:
wangli 2025-04-17 23:11:58 +08:00
parent 70e008b6a9
commit dcafaeb145
5 changed files with 30 additions and 10 deletions

View File

@ -10,17 +10,19 @@ import java.util.Objects;
* @since 2025-03-27 09:55
*/
public enum FileTypeEnum {
WORD("word", "文本"),
EXCEL("excel", "表格"),
HIPRINT("hiprint", "智能文档"),
PDF("pdf", "PDF"),
WORD("word", "文本", ".docx"),
EXCEL("excel", "表格", ".xlsx"),
HIPRINT("hiprint", "智能文档", ""),
PDF("pdf", "PDF", ".pdf"),
;
private final String type;
private final String desc;
private final String suffix;
FileTypeEnum(String type, String desc) {
FileTypeEnum(String type, String desc, String suffix) {
this.type = type;
this.desc = desc;
this.suffix = suffix;
}
public String getType() {
@ -31,6 +33,10 @@ public enum FileTypeEnum {
return desc;
}
public String getSuffix() {
return suffix;
}
public static FileTypeEnum valueOfType(String type) {
return Arrays.stream(FileTypeEnum.values())
.filter(i -> Objects.equals(i.getType().toUpperCase(), type.toUpperCase()))

View File

@ -28,6 +28,16 @@ public class SignFileDTO implements Serializable {
*/
private Long id;
/**
* 文件名称,可能会包含变量
*/
private String fileName;
/**
* 模板名称
*/
private String templateName;
/**
* 文件的标签
*/

View File

@ -52,7 +52,7 @@ public class WpsUtil {
* @return 返回替换变量后的文件oss fileKey
*/
public String wpsFileVariableReplace(List<VariableObjectDTO> wpsVariables,
String fileCode, String fileKey) {
String fileCode, String fileKey, String fileName) {
List<FileReplaceContent> fileReplaceContents = BeanMapper.copyList(wpsVariables.stream()
.filter(i -> Objects.equals(i.getType().name(), "img") || Objects.equals(i.getType().name(), "text"))
@ -76,7 +76,7 @@ public class WpsUtil {
return RpcExternalUtil.rpcProcessor(() -> fileTemplateApi.replaceWordText(request), "替换 WPS 文档变量", request);
} else {
SimpleFileTemplateReplaceRequest request = new SimpleFileTemplateReplaceRequest();
request.setFileName(null);
request.setFileName(fileName);
request.setFileKey(fileKey);
request.setReplaceContentList(fileReplaceContents);
return RpcExternalUtil.rpcProcessor(() -> fileTemplateApi.replaceWordTextForFileKey(request), "替换 WPS 文档变量(simple)", request);

View File

@ -58,7 +58,7 @@ public class TempFileArchiveActivityEvent_101_Listener extends AbstractBpmnEvent
processSign.getFileArchive().stream().filter(i -> Objects.equals(i.getFileType(), FileTypeEnum.WORD)
|| Objects.equals(i.getFileType(), FileTypeEnum.EXCEL))
.forEach(docBaseVO -> {
String newFileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, docBaseVO.getFileCode(), docBaseVO.getFileKey());
String newFileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, docBaseVO.getFileCode(), docBaseVO.getFileKey(), docBaseVO.getTemplateName() + docBaseVO.getFileType().getSuffix());
docBaseVO.setFileKey(newFileKey);
});
extAxProcessSignService.updateById(processSign);

View File

@ -117,11 +117,13 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
docTemplates.forEach(template -> {
SignFileDTO signFileDTO = new SignFileDTO();
signFileDTO.setId(template.getId());
signFileDTO.setFileName(template.getFileName());
signFileDTO.setTemplateName(template.getTemplateName());
signFileDTO.setFileTag(template.getFileTag());
signFileDTO.setFileType(template.getFileType());
signFileDTO.setFileCode(template.getFileCode());
if (Objects.equals(template.getFileType(), FileTypeEnum.WORD) || Objects.equals(template.getFileType(), FileTypeEnum.EXCEL)) {
String fileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, template.getFileCode(), null);
String fileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, template.getFileCode(), null, template.getTemplateName() + template.getFileType().getSuffix());
signFileDTO.setFileKey(fileKey);
}
archives.add(signFileDTO);
@ -135,6 +137,8 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
SignFileDTO signFileDTO = new SignFileDTO();
// 原始文档 ID
signFileDTO.setId(doc.getId());
signFileDTO.setFileName(doc.getFileName());
signFileDTO.setTemplateName(doc.getFileName());
signFileDTO.setFileTag(doc.getTag());
signFileDTO.setFileType(doc.getFileType());
switch (doc.getFileType()) {
@ -183,7 +187,7 @@ public class FileArchiveProcessEventListener extends AbstractBpmnEventListener<P
processSign.getFileArchive().stream().filter(i -> Objects.equals(i.getFileType(), FileTypeEnum.WORD)
|| Objects.equals(i.getFileType(), FileTypeEnum.EXCEL))
.forEach(docBaseVO -> {
String newFileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, null, docBaseVO.getFileKey());
String newFileKey = wpsUtil.wpsFileVariableReplace(wpsReplaceVariables, null, docBaseVO.getFileKey(), docBaseVO.getTemplateName() + docBaseVO.getFileType().getSuffix());
docBaseVO.setFileKey(newFileKey);
});
// 删除非 WPS 的临时文档