feat: 在线编辑文件相关

This commit is contained in:
2024-10-09 12:02:32 +08:00
parent 6e92938904
commit 75436cf57b
2 changed files with 20 additions and 25 deletions
@@ -3,6 +3,8 @@ package com.jero.modules.onlyoffice.controller;
import cn.hutool.core.io.IoUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.api.vo.ResultCommon;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.obs.ObsBootUtil;
import com.jero.modules.onlyoffice.entity.ProcessFile;
import com.jero.modules.onlyoffice.service.IProcessFileService;
@@ -75,19 +77,19 @@ public class OnlyOfficeController {
return ProcessFileService.processEditFile(id);
}
@ApiOperation(value = "|model| 传入 模板文档名称(不带后缀)默认 docx")
@ApiOperation(value = "模板文档名称(不带后缀)默认 docx")
@GetMapping("/saveEditFile")
public Result<String> saveEditFile(String model) {
return Result.OK(ProcessFileService.saveEditFile(model));
return Result.OK(MessageUtils.getMessage(ResultCommon.OK), ProcessFileService.saveEditFile(model));
}
@ApiOperation(value = "根据传入的标准编号返回对应的在线编辑文件信息")
@GetMapping("/findEditFileByStandardNo")
public Result<String> findEditFileByStandardNo(String standardNo) {
return Result.OK(ProcessFileService.findEditFileByStandardNo(standardNo));
return Result.OK(MessageUtils.getMessage(ResultCommon.OK), ProcessFileService.findEditFileByStandardNo(standardNo));
}
@ApiOperation(value = "根据路径下载文件(罗马数字页码)")
@ApiOperation(value = "下载文件(罗马数字页码)")
@GetMapping("/downLoadFileRoma")
public void downLoadFileRoma(@RequestParam(name = "id") String fileId, HttpServletResponse response) {
OSSFile file = ossFileService.getById(fileId);
@@ -98,9 +100,7 @@ public class OnlyOfficeController {
response.reset();
// 从文件服务器下载指定文件
try (InputStream inputStream = ObsBootUtil.getOssFile(file.getUrl());
OutputStream outputStream = response.getOutputStream()
) {
try (InputStream inputStream = ObsBootUtil.getOssFile(file.getUrl())) {
// 编码文件名
response.setCharacterEncoding(StandardCharsets.UTF_8.name());
response.setHeader("Content-Disposition", "attachment;filename=file.docx");
@@ -21,8 +21,11 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import java.net.URL;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -50,9 +53,10 @@ public class ProcessFileServiceImpl implements IProcessFileService {
public String saveEditFile(String model) {
OSSFile ossFile = new OSSFile();
try {
File file = new File("wordTemplate/DOCX.docx");
URL fileUrl = getClass().getClassLoader().getResource("wordTemplate/DOCX.docx");
File file = new File(fileUrl.getFile());
FileInputStream fileInputStream = new FileInputStream(file);
MultipartFile multipartFile = new MockMultipartFile("file", file.getName(), "application/octet-stream", fileInputStream);
MultipartFile multipartFile = new MockMultipartFile("file", model + ".docx", "application/octet-stream", fileInputStream);
String savePath = CommonUtils.upload(multipartFile, "onlyoffice", uploadType);
if (oConvertUtils.isNotEmpty(savePath)) {
// 文件名
@@ -67,7 +71,7 @@ public class ProcessFileServiceImpl implements IProcessFileService {
} catch (Exception e) {
log.error(e.getMessage());
}
return "";
return ossFile.getId();
}
@Override
@@ -118,18 +122,9 @@ public class ProcessFileServiceImpl implements IProcessFileService {
Integer order2 = orderMap.get(file2.getStandardFileType());
return Integer.compare(order1, order2);
});
return fileList.get(0);
}
public static MultipartFile convert(File file) {
try (FileInputStream input = new FileInputStream(file)) {
return new MockMultipartFile("file",
file.getName(),
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
input);
} catch (IOException e) {
// 处理异常
}
return null;
OSSFile ossFile = fileList.get(0);
ossFile.setOnlId(UUIDUtils.randomUUID(10));
ossFileService.updateById(ossFile);
return ossFile;
}
}