From 7e21272dca5e79de6d35d679efad8ca36d77467d Mon Sep 17 00:00:00 2001 From: caihaohan Date: Fri, 2 Feb 2024 15:26:47 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E7=BA=BF=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E5=B7=B2=E6=9C=89=E6=A0=87=E5=87=86=E5=AF=BB=E6=89=BE=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=BF=94=E5=9B=9E=E5=AF=B9=E5=BA=94=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E6=96=87=E4=BB=B6=E8=AE=B0=E5=BD=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OnlyOfficeController.java | 6 ++ .../onlyoffice/entity/StandardFileType.java | 32 ++++++++++ .../service/IBusProcessModelHisService.java | 1 + .../impl/BusProcessModelHisServiceImpl.java | 60 ++++++++++++++++--- 4 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 laws-modules/src/main/java/com/jero/modules/onlyoffice/entity/StandardFileType.java diff --git a/laws-modules/src/main/java/com/jero/modules/onlyoffice/controller/OnlyOfficeController.java b/laws-modules/src/main/java/com/jero/modules/onlyoffice/controller/OnlyOfficeController.java index 30e0ba13..e48581fc 100644 --- a/laws-modules/src/main/java/com/jero/modules/onlyoffice/controller/OnlyOfficeController.java +++ b/laws-modules/src/main/java/com/jero/modules/onlyoffice/controller/OnlyOfficeController.java @@ -325,6 +325,12 @@ public class OnlyOfficeController { return Result.OK(busProcessModelHisService.saveEditFileWithOss(ossFileId)); } + @ApiOperation(value = "根据传入的标准编号返回对应的在线编辑文件信息") + @GetMapping("/findEditFileByStandardNo") + public Result findEditFileByStandardNo(String standardNo) { + return Result.OK(busProcessModelHisService.findEditFileByStandardNo(standardNo)); + } + @ApiOperation(value = "根据路径下载文件") @GetMapping("/downLoadFile") public void downLoadFile(@RequestParam(name = "path") String path, HttpServletResponse response) { diff --git a/laws-modules/src/main/java/com/jero/modules/onlyoffice/entity/StandardFileType.java b/laws-modules/src/main/java/com/jero/modules/onlyoffice/entity/StandardFileType.java new file mode 100644 index 00000000..003b26e9 --- /dev/null +++ b/laws-modules/src/main/java/com/jero/modules/onlyoffice/entity/StandardFileType.java @@ -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; + } + + +} diff --git a/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/IBusProcessModelHisService.java b/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/IBusProcessModelHisService.java index fa775813..cf308520 100644 --- a/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/IBusProcessModelHisService.java +++ b/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/IBusProcessModelHisService.java @@ -41,4 +41,5 @@ public interface IBusProcessModelHisService extends IService String saveProcessFileToOss(String hisId); + BusProcessModelHis findEditFileByStandardNo(String standardNo); } diff --git a/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/impl/BusProcessModelHisServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/impl/BusProcessModelHisServiceImpl.java index 8bc2a9b6..10b77651 100644 --- a/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/impl/BusProcessModelHisServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/onlyoffice/service/impl/BusProcessModelHisServiceImpl.java @@ -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; /** *

@@ -72,6 +69,9 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl esWrapper = new LambdaQueryWrapper<>(); + esWrapper.eq(LawsEnterpriseStandard::getStandardNumber, standardNo); + LawsEnterpriseStandard es = eSService.getOne(esWrapper); + // 根据企标编号 + LambdaQueryWrapper 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 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 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",