feat: 企标制修订在线编辑最终保存发布稿

This commit is contained in:
2024-01-24 18:40:04 +08:00
parent ad75b54cf5
commit 80df6f05b5
5 changed files with 89 additions and 2 deletions
@@ -282,6 +282,12 @@ public class ProcessEsChange implements Serializable {
@ApiModelProperty(value = "更改单号")
private String modifyOrderNum;
/**
* 在线编辑文件id
*/
@ApiModelProperty(value = "在线编辑文件id")
private String onEditFile;
/**
* 修改意见内容列表
*/
@@ -291,6 +291,13 @@ public class ProcessEsRevision implements Serializable {
@ApiModelProperty(value = "编制说明")
private String compIllustration;
/**
* 在线编辑文件id
*/
@ApiModelProperty(value = "在线编辑文件id")
private String onEditFile;
public void setOtherDrafterUploadFileJson(String otherDrafterUploadFileJson) {
this.otherDrafterUploadFileJson = otherDrafterUploadFileJson;
}
@@ -21,6 +21,7 @@ import com.jero.modules.laws.enterprise.service.EnterpriseStandardReviewMeetingR
import com.jero.modules.laws.enterprise.service.EnterpriseStandardRmrEvaluateDetailService;
import com.jero.modules.laws.enterprise.util.BeanCopyUtils;
import com.jero.modules.laws.enterprise.util.EnterpriseStandardUtil;
import com.jero.modules.onlyoffice.service.IBusProcessModelHisService;
import com.jero.modules.tag.enums.TableNameEnum;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.ExecutionListener;
@@ -52,6 +53,9 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
@Resource
private ILawsCommonService lawsCommonService;
@Resource
private IBusProcessModelHisService busProcessModelHisService;
@Override
public void notify(DelegateExecution delegateExecution) {
// 获取流程实例Id
@@ -96,6 +100,9 @@ public class ProcessESRevisionEndListener implements ExecutionListener {
variables.put(FieldCommon.MODULE, TableNameEnum.ENTERPRISE_STANDARDS.getValue());
String standardId = IdWorker.getIdStr();
variables.put(FieldCommon.ID, standardId);
// minio上传在线编辑文件
String fileId = busProcessModelHisService.saveProcessFileToOss(data.getOnEditFile());
variables.put(FieldCommon.FILE_PUBLISH_OF_ORIGINAL, fileId);
// 发布企标
lawsCommonService.commonAdd(variables);
String espId = data.getEspId();
@@ -34,4 +34,7 @@ public interface IBusProcessModelHisService extends IService<BusProcessModelHis>
OnlineFileLog selectOnlineFile(String onlineFileId);
void downLoadFile(String path, HttpServletResponse response);
String saveProcessFileToOss(String hisId);
}
@@ -1,24 +1,39 @@
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.onlyoffice.entity.BusProcessModelHis;
import com.jero.modules.onlyoffice.entity.OnlineFileLog;
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 io.minio.errors.*;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
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.util.List;
import java.util.UUID;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <p>
@@ -46,6 +61,15 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
@Value("${file.sourceFilePath}")
private String sourceFilePath;
@Resource
private OnlineFileLogDao onlineFileLogDao;
@Resource
private IOSSFileService ossFileService;
@Value(value = "${jero.uploadType}")
private String uploadType;
@Override
public BusProcessModelHis saveEditFile(String model) {
BusProcessModelHis modelHis = new BusProcessModelHis();
@@ -276,4 +300,44 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
wrapper.eq("P_ID", pid);
return this.baseMapper.selectList(wrapper);
}
@Override
public String saveProcessFileToOss(String hisId) {
BusProcessModelHis his = this.getById(hisId);
// 找到最新的文件记录 上传到minio
LambdaQueryWrapper<OnlineFileLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OnlineFileLog::getHisId, hisId);
wrapper.eq(OnlineFileLog::getValidFlag, "0");
wrapper.orderByDesc(OnlineFileLog::getCreateTime);
List<OnlineFileLog> onlineFileLogList = onlineFileLogDao.selectList(wrapper);
OnlineFileLog onlineFileLog = onlineFileLogList.get(0);
OSSFile ossFile = ossFileService.getById(onlineFileLog.getAttFileId());
// 获取文件
String path = filePath + ossFile.getUrl();
// 获取上传文件对象
File file = new File(path);
MultipartFile multipartFile = BusProcessModelHisServiceImpl.convert(file);
String savePath = CommonUtils.upload(multipartFile, "", uploadType);
if (oConvertUtils.isNotEmpty(savePath)) {
// 文件名
String fileName = his.getFileName();
fileName = CommonUtils.getFileName(fileName);
ossFile.setFileName(fileName);
ossFile.setUrl(savePath);
ossFileService.updateById(ossFile);
}
return ossFile.getId();
}
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;
}
}