feat: 在线编辑已有标准寻找文件返回对应在线编辑文件记录接口
This commit is contained in:
+6
@@ -325,6 +325,12 @@ public class OnlyOfficeController {
|
||||
return Result.OK(busProcessModelHisService.saveEditFileWithOss(ossFileId));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据传入的标准编号返回对应的在线编辑文件信息")
|
||||
@GetMapping("/findEditFileByStandardNo")
|
||||
public Result<BusProcessModelHis> findEditFileByStandardNo(String standardNo) {
|
||||
return Result.OK(busProcessModelHisService.findEditFileByStandardNo(standardNo));
|
||||
}
|
||||
|
||||
@ApiOperation(value = "根据路径下载文件")
|
||||
@GetMapping("/downLoadFile")
|
||||
public void downLoadFile(@RequestParam(name = "path") String path, HttpServletResponse response) {
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.jero.modules.onlyoffice.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* @author: Mzaxd
|
||||
* @Date: 2024/2/2 14:25
|
||||
*/
|
||||
@Getter
|
||||
public enum StandardFileType {
|
||||
|
||||
FILE_PUBLISH_OF_ORIGINAL("发布稿", "publish_of_original", 1), // 发布稿
|
||||
FILE_MODIFICATION_LIST("修改单", "modification_list", 2), // 修改单
|
||||
FILE_DRAFT_FOR_REVIEW("报批稿", "draft_for_review", 3), // 报批稿
|
||||
FILE_DRAFT_FOR_APPROVAL("送审稿", "draft_for_approval", 4), // 送审稿
|
||||
FILE_DRAFT_FOR_COMMENT("征求意见稿", "draft_for_comment", 5), // 征求意见稿
|
||||
FILE_DRAFT("草稿", "draft", 6); // 草稿
|
||||
|
||||
private final String name;
|
||||
|
||||
private final String value;
|
||||
|
||||
private final Integer order;
|
||||
|
||||
StandardFileType(String name, String value, Integer order) {
|
||||
this.name = name;
|
||||
this.value = value;
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+1
@@ -41,4 +41,5 @@ public interface IBusProcessModelHisService extends IService<BusProcessModelHis>
|
||||
|
||||
String saveProcessFileToOss(String hisId);
|
||||
|
||||
BusProcessModelHis findEditFileByStandardNo(String standardNo);
|
||||
}
|
||||
|
||||
+53
-7
@@ -3,20 +3,20 @@ package com.jero.modules.onlyoffice.service.impl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.util.CommonUtils;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.oConvertUtils;
|
||||
import com.jero.modules.laws.common.constant.FieldCommon;
|
||||
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
|
||||
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
|
||||
import com.jero.modules.onlyoffice.entity.BusProcessModelHis;
|
||||
import com.jero.modules.onlyoffice.entity.OnlineFileLog;
|
||||
import com.jero.modules.onlyoffice.entity.StandardFileType;
|
||||
import com.jero.modules.onlyoffice.mapper.BusProcessModelHisMapper;
|
||||
import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao;
|
||||
import com.jero.modules.onlyoffice.service.IBusProcessModelHisService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.sys.controller.SysCommonController;
|
||||
import io.minio.errors.*;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.slf4j.Logger;
|
||||
@@ -25,17 +25,14 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.nio.file.Files;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -72,6 +69,9 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
|
||||
@Value(value = "${jero.uploadType}")
|
||||
private String uploadType;
|
||||
|
||||
@Resource
|
||||
private ILawsEnterpriseStandardService eSService;
|
||||
|
||||
@Override
|
||||
public BusProcessModelHis saveEditFile(String model) {
|
||||
BusProcessModelHis modelHis = new BusProcessModelHis();
|
||||
@@ -426,6 +426,52 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
|
||||
return ossFile.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public BusProcessModelHis findEditFileByStandardNo(String standardNo) {
|
||||
OSSFile lastDocFileByStandardNo = this.findLastDocFileByStandardNo(standardNo);
|
||||
if (lastDocFileByStandardNo == null) {
|
||||
// 没有docx文件则自动生成并返回
|
||||
return this.saveEditFile(standardNo);
|
||||
}
|
||||
// 有的话需要转换为在线编辑的文件
|
||||
return this.saveEditFileWithOss(lastDocFileByStandardNo.getId());
|
||||
}
|
||||
|
||||
private OSSFile findLastDocFileByStandardNo(String standardNo) {
|
||||
LambdaQueryWrapper<LawsEnterpriseStandard> esWrapper = new LambdaQueryWrapper<>();
|
||||
esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNo);
|
||||
LawsEnterpriseStandard es = eSService.getOne(esWrapper);
|
||||
// 根据企标编号
|
||||
LambdaQueryWrapper<OSSFile> ossWrapper = new LambdaQueryWrapper<>();
|
||||
ossWrapper.eq(OSSFile::getStandardId, es.getId());
|
||||
// 发布稿>修改单>报批稿>送审稿>征求意见稿>草稿
|
||||
String[] fileTypeArr = {FieldCommon.FILE_PUBLISH_OF_ORIGINAL, FieldCommon.FILE_MODIFICATION_LIST,
|
||||
FieldCommon.FILE_DRAFT_FOR_REVIEW, FieldCommon.FILE_DRAFT_FOR_APPROVAL,
|
||||
FieldCommon.FILE_DRAFT_FOR_COMMENT, FieldCommon.FILE_DRAFT};
|
||||
ossWrapper.in(OSSFile::getStandardFileType, Arrays.asList(fileTypeArr));
|
||||
List<OSSFile> fileList = ossFileService.list(ossWrapper);
|
||||
// 根据fileName筛选出doc或docx
|
||||
fileList = fileList.stream().filter(ossFile -> {
|
||||
String fileName = ossFile.getFileName();
|
||||
return fileName.endsWith(".doc") || fileName.endsWith(".docx");
|
||||
}).collect(Collectors.toList());
|
||||
if (fileList.isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
// 按照创建时间倒序排序
|
||||
fileList.sort(Comparator.comparing(OSSFile::getCreateTime).reversed());
|
||||
// 创建映射:枚举的value到order的映射
|
||||
Map<String, Integer> orderMap = java.util.Arrays.stream(StandardFileType.values())
|
||||
.collect(Collectors.toMap(StandardFileType::getValue, StandardFileType::getOrder));
|
||||
// 根据映射结果排序集合
|
||||
fileList.sort((file1, file2) -> {
|
||||
Integer order1 = orderMap.get(file1.getStandardFileType());
|
||||
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",
|
||||
|
||||
Reference in New Issue
Block a user