ci: 在线编辑调整1

This commit is contained in:
2024-09-23 16:54:30 +08:00
parent 0bd92a76eb
commit 2446a51741
7 changed files with 143 additions and 217 deletions
@@ -8,15 +8,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.CommonUtils;
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.entity.OnlineFileLog;
import com.jero.modules.onlyoffice.mapper.BusProcessModelHisMapper; import com.jero.modules.onlyoffice.entity.ProcessFile;
import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao; import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao;
import com.jero.modules.onlyoffice.service.IBusProcessModelHisService; import com.jero.modules.onlyoffice.mapper.ProcessFileMapper;
import com.jero.modules.onlyoffice.service.IProcessFileService;
import com.jero.modules.onlyoffice.service.LawsUserInfoService; import com.jero.modules.onlyoffice.service.LawsUserInfoService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.oss.service.IOSSFileService;
import com.sini.com.spire.doc.Document; import com.sini.com.spire.doc.Document;
import com.sini.com.spire.doc.documents.PageNumberStyle; import com.sini.com.spire.doc.documents.PageNumberStyle;
@@ -26,12 +23,8 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -55,45 +48,37 @@ import java.util.*;
@Slf4j @Slf4j
public class OnlyOfficeController { public class OnlyOfficeController {
private static final Logger logger = LoggerFactory.getLogger(OnlyOfficeController.class);
@Value("${file.path}")
private String standEditFilePath;//文件存储路径
@Resource @Resource
private IBusProcessModelHisService busProcessModelHisService; private IProcessFileService ProcessFileService;
@Resource @Resource
private LawsUserInfoService lawsUserInfoService; private LawsUserInfoService lawsUserInfoService;
@Resource @Resource
private BusProcessModelHisMapper busProcessModelHisMapper; private ProcessFileMapper ProcessFileMapper;
@Resource @Resource
private IOSSFileService ossFileService; private IOSSFileService ossFileService;
@Resource @Resource
private OnlineFileLogDao onlineFileLogDao; private OnlineFileLogDao onlineFileLogDao;
@Value("#{'${onlyoffice.replaceUrl:}'.split(',')}") @Value("#{'${onlyoffice.replaceUrl:}'.split(',')}")
private List<String> replaceUrlList; private List<String> replaceUrlList;
@Value("#{'${onlyoffice.toUrl:}'}") @Value("#{'${onlyoffice.toUrl:}'}")
private String toUrl; private String toUrl;
/**
* 文件后缀黑名单
*/
@Value(value = "${jero.fileSuffixLimits}")
private String[] fileSuffixLimits;
@Value("${file.path}") @Value("${file.path}")
private String filePath;//文件存储路径 private String filePath;//文件存储路径
@ApiOperation(value = "分页查询") @ApiOperation(value = "分页查询")
@GetMapping("/pageList") @GetMapping("/pageList")
public Result<IPage<BusProcessModelHis>> pageList(HttpServletRequest req, BusProcessModelHis processModelHis, public Result<IPage<ProcessFile>> pageList(HttpServletRequest req, ProcessFile processModelHis,
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
QueryWrapper<BusProcessModelHis> queryWrapper = QueryGenerator.initQueryWrapper(processModelHis, req.getParameterMap()); QueryWrapper<ProcessFile> queryWrapper = QueryGenerator.initQueryWrapper(processModelHis, req.getParameterMap());
Page<BusProcessModelHis> page = new Page<>(pageNo, pageSize); Page<ProcessFile> page = new Page<>(pageNo, pageSize);
IPage<BusProcessModelHis> pageList = busProcessModelHisService.page(page, queryWrapper); IPage<ProcessFile> pageList = ProcessFileService.page(page, queryWrapper);
return Result.OK(pageList); return Result.OK(pageList);
} }
@@ -107,7 +92,7 @@ public class OnlyOfficeController {
if (StringUtils.isBlank(id)) { if (StringUtils.isBlank(id)) {
return Result.error("参数不识别!"); return Result.error("参数不识别!");
} }
boolean ok = busProcessModelHisService.removeById(id); boolean ok = ProcessFileService.removeById(id);
if (ok) { if (ok) {
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
@@ -124,7 +109,7 @@ public class OnlyOfficeController {
if (StringUtils.isBlank(ids)) { if (StringUtils.isBlank(ids)) {
return Result.error("参数不识别!"); return Result.error("参数不识别!");
} else { } else {
this.busProcessModelHisService.removeByIds(Arrays.asList(ids.split(","))); this.ProcessFileService.removeByIds(Arrays.asList(ids.split(",")));
return Result.OK("删除成功!"); return Result.OK("删除成功!");
} }
} }
@@ -140,7 +125,7 @@ public class OnlyOfficeController {
return Result.error("id不能为空!"); return Result.error("id不能为空!");
} }
HashMap<String, String> map = new HashMap<>(); HashMap<String, String> map = new HashMap<>();
BusProcessModelHis his = busProcessModelHisService.getById(id); ProcessFile his = ProcessFileService.getById(id);
if (his == null) { if (his == null) {
log.error("在线编辑queryById:{}", id); log.error("在线编辑queryById:{}", id);
throw new JeroBootException("获取在线编辑文件记录错误,请检查"); throw new JeroBootException("获取在线编辑文件记录错误,请检查");
@@ -154,12 +139,12 @@ public class OnlyOfficeController {
@ApiOperation(value = "|onlyOffice接收文件") @ApiOperation(value = "|onlyOffice接收文件")
@PostMapping("/receiveFile") @PostMapping("/receiveFile")
public void receiveFile(HttpServletRequest request, HttpServletResponse response, String fileNm, String standNo, String fileId, String standName, String key) { public void receiveFile(HttpServletRequest request, HttpServletResponse response, String fileNm, String standNo, String fileId, String standName, String key) {
logger.info("**********进入receiveFile接收文档接口************"); log.info("**********进入receiveFile接收文档接口************");
logger.info("**********fileNm************" + fileNm + "======="); log.info("**********fileNm************" + fileNm + "=======");
logger.info("**********standNo************" + standNo + "======="); log.info("**********standNo************" + standNo + "=======");
logger.info("**********fileId************" + fileId + "======="); log.info("**********fileId************" + fileId + "=======");
logger.info("**********standName************" + standName + "======="); log.info("**********standName************" + standName + "=======");
logger.info("**********key************" + key + "======="); log.info("**********key************" + key + "=======");
try { try {
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
String body = ""; String body = "";
@@ -179,7 +164,7 @@ public class OnlyOfficeController {
} }
net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body); net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body);
logger.info("**********onlyoffice接收文档接口获得结果body************" + body); log.info("**********onlyoffice接收文档接口获得结果body************" + body);
int status = (Integer) jsonObj.get("status"); int status = (Integer) jsonObj.get("status");
int saved = 0; int saved = 0;
@@ -188,57 +173,59 @@ public class OnlyOfficeController {
String downloadUri = (String) jsonObj.get("url"); String downloadUri = (String) jsonObj.get("url");
try { try {
logger.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri); log.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri);
if (StringUtils.isNotEmpty(downloadUri)) { if (StringUtils.isNotEmpty(downloadUri)) {
for (String replaceUrl : replaceUrlList) { for (String replaceUrl : replaceUrlList) {
downloadUri = downloadUri.replace(replaceUrl, toUrl); downloadUri = downloadUri.replace(replaceUrl, toUrl);
} }
BusProcessModelHis modelHis = busProcessModelHisService.getById(fileId); ProcessFile modelHis = ProcessFileService.getById(fileId);
String editFilePath = modelHis.getEditFilePath(); String editFilePath = modelHis.getEditFilePath();
String saveFileUrl = standEditFilePath + editFilePath; // String saveFileUrl = standEditFilePath + editFilePath;
logger.info("**********onlyoffice文档下载路径************" + downloadUri); // TODO
logger.info("**********onlyoffice文档保存本地路径************" + saveFileUrl); String saveFileUrl = editFilePath;
log.info("**********onlyoffice文档下载路径************" + downloadUri);
log.info("**********onlyoffice文档保存本地路径************" + saveFileUrl);
HttpUtil.downloadFileFromUrl(downloadUri, saveFileUrl); HttpUtil.downloadFileFromUrl(downloadUri, saveFileUrl);
File file = new File(saveFileUrl); File file = new File(saveFileUrl);
downloadNetFile(downloadUri, file); downloadNetFile(downloadUri, file);
// 更新在线编辑当前节点编辑状态 // 更新在线编辑当前节点编辑状态
busProcessModelHisService.modelHisOneUpdStatusById(fileId); ProcessFileService.modelHisOneUpdStatusById(fileId);
Object keyObj = jsonObj.get("key"); Object keyObj = jsonObj.get("key");
if (keyObj != null) { if (keyObj != null) {
key = keyObj.toString(); key = keyObj.toString();
logger.info("**********key************" + key + "======="); log.info("**********key************" + key + "=======");
} }
lawsUserInfoService.selectOnlineFile(fileId, standName, key); lawsUserInfoService.selectOnlineFile(fileId, standName, key);
} }
} catch (Exception ex) { } catch (Exception ex) {
saved = 1; saved = 1;
logger.info("**********onlyoffice接收文档接口异常************" + ex.getMessage()); log.info("**********onlyoffice接收文档接口异常************" + ex.getMessage());
logger.error(ex.getMessage(), ex); log.error(ex.getMessage(), ex);
} }
} else if (status == 4) { } else if (status == 4) {
logger.info("**********onlyoffice接收文档接口开始修改文件状态状态4************"); log.info("**********onlyoffice接收文档接口开始修改文件状态状态4************");
logger.info("**********onlyoffice接收文档接口修改文件状态成功状态4************"); log.info("**********onlyoffice接收文档接口修改文件状态成功状态4************");
} }
logger.info("onlyoffice编辑完成--------------"); log.info("onlyoffice编辑完成--------------");
writer.write("{\"error\":" + saved + "}"); writer.write("{\"error\":" + saved + "}");
} catch (IOException e) { } catch (IOException e) {
logger.info("**********onlyoffice接收文档接口异常************" + e.getMessage()); log.info("**********onlyoffice接收文档接口异常************" + e.getMessage());
logger.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }
@ApiOperation(value = "|onlyOffice接收文件") @ApiOperation(value = "|onlyOffice接收文件")
@PostMapping("/receiveFileBefore") @PostMapping("/receiveFileBefore")
public void receiveFileBefore(HttpServletRequest request, HttpServletResponse response, String key, String fileNm, String standNo, String pid, String taskId, String standName) { public void receiveFileBefore(HttpServletRequest request, HttpServletResponse response, String key, String fileNm, String standNo, String pid, String taskId, String standName) {
logger.info("**********进入receiveFileBefore接收文档接口************"); log.info("**********进入receiveFileBefore接收文档接口************");
logger.info("**********fileNm************" + fileNm + "======="); log.info("**********fileNm************" + fileNm + "=======");
logger.info("**********standNo************" + standNo + "======="); log.info("**********standNo************" + standNo + "=======");
logger.info("**********pid************" + pid + "======="); log.info("**********pid************" + pid + "=======");
logger.info("**********taskId************" + taskId + "======="); log.info("**********taskId************" + taskId + "=======");
logger.info("**********standName************" + standName + "======="); log.info("**********standName************" + standName + "=======");
logger.info("**********key************" + key + "======="); log.info("**********key************" + key + "=======");
try { try {
PrintWriter writer = response.getWriter(); PrintWriter writer = response.getWriter();
@@ -259,7 +246,7 @@ public class OnlyOfficeController {
} }
net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body); net.sf.json.JSONObject jsonObj = net.sf.json.JSONObject.fromObject(body);
logger.info("**********onlyoffice接收文档接口获得结果body************" + body); log.info("**********onlyoffice接收文档接口获得结果body************" + body);
int status = (Integer) jsonObj.get("status"); int status = (Integer) jsonObj.get("status");
int saved = 0; int saved = 0;
@@ -268,44 +255,43 @@ public class OnlyOfficeController {
String downloadUri = (String) jsonObj.get("url"); String downloadUri = (String) jsonObj.get("url");
try { try {
logger.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri); log.info("**********onlyoffice接收文档接口获得downloadUri************" + downloadUri);
if (StringUtils.isNotEmpty(downloadUri)) { if (StringUtils.isNotEmpty(downloadUri)) {
String saveFileUrl = standEditFilePath + // TODO
standNo + "/" + String saveFileUrl = standNo + "/" + fileNm;
fileNm;
File file = new File(saveFileUrl); File file = new File(saveFileUrl);
downloadNetFile(downloadUri, file); downloadNetFile(downloadUri, file);
// 更新在线编辑当前节点编辑状态 // 更新在线编辑当前节点编辑状态
busProcessModelHisService.modelHisOneUpdStatus(pid, taskId); ProcessFileService.modelHisOneUpdStatus(pid, taskId);
QueryWrapper<BusProcessModelHis> objectQueryWrapper = new QueryWrapper<>(); QueryWrapper<ProcessFile> objectQueryWrapper = new QueryWrapper<>();
objectQueryWrapper.eq("P_ID", pid); objectQueryWrapper.eq("P_ID", pid);
objectQueryWrapper.eq("TASK_ID", taskId); objectQueryWrapper.eq("TASK_ID", taskId);
BusProcessModelHis busProcessModelHis = busProcessModelHisMapper.selectOne(objectQueryWrapper); ProcessFile ProcessFile = ProcessFileMapper.selectOne(objectQueryWrapper);
if (busProcessModelHis != null) { if (ProcessFile != null) {
Object keyObj = jsonObj.get("key"); Object keyObj = jsonObj.get("key");
if (keyObj != null) { if (keyObj != null) {
key = keyObj.toString(); key = keyObj.toString();
logger.info("**********key************" + key + "======="); log.info("**********key************" + key + "=======");
} }
lawsUserInfoService.selectOnlineFile(busProcessModelHis.getId(), standName, key); lawsUserInfoService.selectOnlineFile(ProcessFile.getId(), standName, key);
} }
} }
} catch (Exception ex) { } catch (Exception ex) {
saved = 1; saved = 1;
logger.info("**********onlyoffice接收文档接口异常************" + ex.getMessage()); log.info("**********onlyoffice接收文档接口异常************" + ex.getMessage());
logger.error(ex.getMessage(), ex); log.error(ex.getMessage(), ex);
} }
} else if (status == 4) { } else if (status == 4) {
logger.info("**********onlyoffice接收文档接口开始修改文件状态状态4************"); log.info("**********onlyoffice接收文档接口开始修改文件状态状态4************");
logger.info("**********onlyoffice接收文档接口修改文件状态成功状态4************"); log.info("**********onlyoffice接收文档接口修改文件状态成功状态4************");
} }
logger.info("onlyoffice编辑完成--------------"); log.info("onlyoffice编辑完成--------------");
writer.write("{\"error\":" + saved + "}"); writer.write("{\"error\":" + saved + "}");
} catch (IOException e) { } catch (IOException e) {
logger.info("**********onlyoffice接收文档接口异常************" + e.getMessage()); log.info("**********onlyoffice接收文档接口异常************" + e.getMessage());
logger.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
} }
@@ -323,37 +309,38 @@ public class OnlyOfficeController {
fileOutputStream.close(); fileOutputStream.close();
inputStream.close(); inputStream.close();
} catch (IOException e) { } catch (IOException e) {
logger.error("download error ! url :{}, exception:{}", downloadUrl, e); log.error("download error ! url :{}", downloadUrl);
log.error(e.getMessage(), e);
} }
} }
@GetMapping("/processEditFile") @GetMapping("/processEditFile")
public BusProcessModelHis processEditFile(String id) { public ProcessFile processEditFile(String id) {
return busProcessModelHisService.processEditFile(id); return ProcessFileService.processEditFile(id);
} }
@ApiOperation(value = "|model| 传入 模板文档名称(不带后缀)默认 docx") @ApiOperation(value = "|model| 传入 模板文档名称(不带后缀)默认 docx")
@GetMapping("/saveEditFile") @GetMapping("/saveEditFile")
public Result<BusProcessModelHis> saveEditFile(String model) { public Result<ProcessFile> saveEditFile(String model) {
return Result.OK(busProcessModelHisService.saveEditFile(model)); return Result.OK(ProcessFileService.saveEditFile(model));
} }
@ApiOperation(value = "传入ossFileId获取在线编辑文件相关信息") @ApiOperation(value = "传入ossFileId获取在线编辑文件相关信息")
@GetMapping("/saveEditFileWithOss") @GetMapping("/saveEditFileWithOss")
public Result<BusProcessModelHis> saveEditFileWithOss(String ossFileId) { public Result<ProcessFile> saveEditFileWithOss(String ossFileId) {
return Result.OK(busProcessModelHisService.saveEditFileWithOss(ossFileId)); return Result.OK(ProcessFileService.saveEditFileWithOss(ossFileId));
} }
@ApiOperation(value = "根据传入的标准编号返回对应的在线编辑文件信息") @ApiOperation(value = "根据传入的标准编号返回对应的在线编辑文件信息")
@GetMapping("/findEditFileByStandardNo") @GetMapping("/findEditFileByStandardNo")
public Result<BusProcessModelHis> findEditFileByStandardNo(String standardNo) { public Result<ProcessFile> findEditFileByStandardNo(String standardNo) {
return Result.OK(busProcessModelHisService.findEditFileByStandardNo(standardNo)); return Result.OK(ProcessFileService.findEditFileByStandardNo(standardNo));
} }
@ApiOperation(value = "根据路径下载文件") @ApiOperation(value = "根据路径下载文件")
@GetMapping("/downLoadFile") @GetMapping("/downLoadFile")
public void downLoadFile(@RequestParam(name = "path") String path, HttpServletResponse response) { public void downLoadFile(@RequestParam(name = "path") String path, HttpServletResponse response) {
busProcessModelHisService.downLoadFile(path, response); ProcessFileService.downLoadFile(path, response);
} }
@ApiOperation(value = "根据路径下载文件(罗马数字页码)") @ApiOperation(value = "根据路径下载文件(罗马数字页码)")
@@ -388,7 +375,10 @@ public class OnlyOfficeController {
File downloadDocxFileTempUrlFile = new File(downloadDocxFileTempUrl); File downloadDocxFileTempUrlFile = new File(downloadDocxFileTempUrl);
if (!downloadDocxFileTempUrlFile.exists()) { if (!downloadDocxFileTempUrlFile.exists()) {
downloadDocxFileTempUrlFile.mkdirs(); boolean mkdirs = downloadDocxFileTempUrlFile.mkdirs();
if (!mkdirs) {
log.info("创建临时文件目录失败:{}", downloadDocxFileTempUrl);
}
} }
String newFileName = UUID.randomUUID().toString().replace("-", "") + ".docx"; String newFileName = UUID.randomUUID().toString().replace("-", "") + ".docx";
String newFileUrl = downloadDocxFileTempUrl + "/" + newFileName; String newFileUrl = downloadDocxFileTempUrl + "/" + newFileName;
@@ -404,12 +394,12 @@ public class OnlyOfficeController {
is.close(); is.close();
if (newFile.delete()) { if (newFile.delete()) {
logger.info("在线编辑下载-临时文件删除成功: " + newFileUrl); log.info("在线编辑下载-临时文件删除成功: " + newFileUrl);
} else { } else {
logger.info("在线编辑下载-临时文件删除失败: " + newFileUrl); log.info("在线编辑下载-临时文件删除失败: " + newFileUrl);
} }
} catch (IOException e) { } catch (IOException e) {
logger.error(e.getMessage(), e); log.error(e.getMessage(), e);
} finally { } finally {
IOUtils.closeQuietly(is); IOUtils.closeQuietly(is);
IOUtils.closeQuietly(os); IOUtils.closeQuietly(os);
@@ -417,28 +407,28 @@ public class OnlyOfficeController {
} }
@GetMapping("/processModelHisOneUpdStatus") @GetMapping("/processModelHisOneUpdStatus")
public BusProcessModelHis modelHisOneUpdStatus(String pid, String taskId) { public ProcessFile modelHisOneUpdStatus(String pid, String taskId) {
return busProcessModelHisService.modelHisOneUpdStatus(pid, taskId); return ProcessFileService.modelHisOneUpdStatus(pid, taskId);
} }
@GetMapping("/processModelHisOneCount") @GetMapping("/processModelHisOneCount")
public BusProcessModelHis modelHisOneCount(String pid) { public ProcessFile modelHisOneCount(String pid) {
return busProcessModelHisService.modelHisOneCount(pid); return ProcessFileService.modelHisOneCount(pid);
} }
@GetMapping("/processModelHisOne") @GetMapping("/processModelHisOne")
public BusProcessModelHis modelHisOne(String pid, String taskId) { public ProcessFile modelHisOne(String pid, String taskId) {
return busProcessModelHisService.modelHisOne(pid, taskId); return ProcessFileService.modelHisOne(pid, taskId);
} }
@GetMapping("/processModelHisList") @GetMapping("/processModelHisList")
public List<BusProcessModelHis> evaluationHisList(String pid) { public List<ProcessFile> evaluationHisList(String pid) {
return busProcessModelHisService.modelHisList(pid); return ProcessFileService.modelHisList(pid);
} }
@PostMapping("/selectOnlineFile") @PostMapping("/selectOnlineFile")
public OnlineFileLog selectOnlineFile(@RequestParam("onlineFileId") String onlineFileId) { public OnlineFileLog selectOnlineFile(@RequestParam("onlineFileId") String onlineFileId) {
return busProcessModelHisService.selectOnlineFile(onlineFileId); return ProcessFileService.selectOnlineFile(onlineFileId);
} }
@ApiOperation(value = "根据在线文件Id查询所有onlyoffice历史文件") @ApiOperation(value = "根据在线文件Id查询所有onlyoffice历史文件")
@@ -466,63 +456,5 @@ public class OnlyOfficeController {
} }
return Result.error("历史文件为空"); return Result.error("历史文件为空");
} }
/**
* 文件上传统一方法
*
* @param request
* @param response
* @return
*/
@PostMapping(value = "/upload")
@CrossOrigin(origins = "*", maxAge = 3600)
public Result<OSSFile> upload(HttpServletRequest request, HttpServletResponse response) {
Result<OSSFile> result = new Result<>();
String savePath = "";
String bizPath = request.getParameter("biz");
//sys/common/upload接口存在任意文件上传漏洞
if (oConvertUtils.isNotEmpty(bizPath) && (bizPath.contains("../") || bizPath.contains("..\\"))) {
throw new JeroBootException("上传目录bizPath,格式非法!");
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获取上传文件对象
MultipartFile file = multipartRequest.getFile("file");
if (file == null) {
return result;
}
// 文件类型是否处于黑名单
if (CommonUtils.limitFileSuffix(file.getOriginalFilename(), fileSuffixLimits)) {
result.setMessage("该文件类型不允许上传");
result.setSuccess(false);
result.setCode(0);
return result;
}
if (oConvertUtils.isEmpty(bizPath)) {
bizPath = "";
}
// 本地上传
savePath = CommonUtils.uploadLocal(file, bizPath, standEditFilePath);
if (oConvertUtils.isNotEmpty(savePath)) {
//上传成功 进行数据库存储
OSSFile ossFile = new OSSFile();
// 文件名
String fileName = file.getOriginalFilename();
fileName = CommonUtils.getFileName(fileName);
ossFile.setFileName(fileName);
ossFile.setUrl(savePath);
ossFileService.save(ossFile);
result.setMessage(savePath);
result.setResult(ossFile);
result.setSuccess(true);
} else {
result.setMessage("上传失败!");
result.setSuccess(false);
}
return result;
}
} }
@@ -16,7 +16,7 @@ import java.util.Date;
/** /**
* <p> * <p>
* 流程模块历史表 TODO 等在线编辑正式上线时,把该部分去掉,此部分在正式功能中无用 * 流程文件表
* </p> * </p>
* *
* @author super_liu * @author super_liu
@@ -25,8 +25,8 @@ import java.util.Date;
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value="BusProcessModelHis对象", description="流程模块历史表") @ApiModel(value="ProcessFile对象", description="流程文件")
public class BusProcessModelHis implements Serializable { public class ProcessFile implements Serializable {
private static final long serialVersionUID=1L; private static final long serialVersionUID=1L;
@@ -1,7 +1,7 @@
package com.jero.modules.onlyoffice.mapper; package com.jero.modules.onlyoffice.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jero.modules.onlyoffice.entity.BusProcessModelHis; import com.jero.modules.onlyoffice.entity.ProcessFile;
/** /**
* <p> * <p>
@@ -11,6 +11,6 @@ import com.jero.modules.onlyoffice.entity.BusProcessModelHis;
* @author super_liu * @author super_liu
* @since 2021-09-17 * @since 2021-09-17
*/ */
public interface BusProcessModelHisMapper extends BaseMapper<BusProcessModelHis> { public interface ProcessFileMapper extends BaseMapper<ProcessFile> {
} }
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jero.modules.onlyoffice.mapper.BusProcessModelHisMapper"> <mapper namespace="com.jero.modules.onlyoffice.mapper.ProcessFileMapper">
</mapper> </mapper>
@@ -1,7 +1,7 @@
package com.jero.modules.onlyoffice.service; package com.jero.modules.onlyoffice.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.onlyoffice.entity.BusProcessModelHis; import com.jero.modules.onlyoffice.entity.ProcessFile;
import com.jero.modules.onlyoffice.entity.OnlineFileLog; import com.jero.modules.onlyoffice.entity.OnlineFileLog;
import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.entity.OSSFile;
@@ -16,25 +16,25 @@ import java.util.List;
* @author super_liu * @author super_liu
* @since 2021-09-17 * @since 2021-09-17
*/ */
public interface IBusProcessModelHisService extends IService<BusProcessModelHis> { public interface IProcessFileService extends IService<ProcessFile> {
BusProcessModelHis modelHisOneUpdStatusById(String id); ProcessFile modelHisOneUpdStatusById(String id);
BusProcessModelHis modelHisOneUpdStatus(String pid,String taskId); ProcessFile modelHisOneUpdStatus(String pid,String taskId);
BusProcessModelHis modelHisOneCount(String pid); ProcessFile modelHisOneCount(String pid);
BusProcessModelHis processEditFile(String id); ProcessFile processEditFile(String id);
BusProcessModelHis modelHisOne(String pid,String taskId); ProcessFile modelHisOne(String pid,String taskId);
BusProcessModelHis saveEditFile(String model); ProcessFile saveEditFile(String model);
BusProcessModelHis saveEditFileWithOss(String ossFileId); ProcessFile saveEditFileWithOss(String ossFileId);
void replaceFile(String hisId, String replaceId); void replaceFile(String hisId, String replaceId);
List<BusProcessModelHis> modelHisList(String pid); List<ProcessFile> modelHisList(String pid);
OnlineFileLog selectOnlineFile(String onlineFileId); OnlineFileLog selectOnlineFile(String onlineFileId);
@@ -42,7 +42,7 @@ public interface IBusProcessModelHisService extends IService<BusProcessModelHis>
String saveProcessFileToOss(String hisId); String saveProcessFileToOss(String hisId);
BusProcessModelHis findEditFileByStandardNo(String standardNo); ProcessFile findEditFileByStandardNo(String standardNo);
OSSFile findLastDocFileByStandardNo(String standardNo); OSSFile findLastDocFileByStandardNo(String standardNo);
} }
@@ -1,14 +1,9 @@
package com.jero.modules.onlyoffice.service; package com.jero.modules.onlyoffice.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.util.MinioUtil;
import com.jero.common.util.UUIDUtils; import com.jero.common.util.UUIDUtils;
import com.jero.modules.onlyoffice.entity.AttFileEO;
import com.jero.modules.onlyoffice.entity.AttFileVo;
import com.jero.modules.onlyoffice.entity.OnlineFileLog; import com.jero.modules.onlyoffice.entity.OnlineFileLog;
import com.jero.modules.onlyoffice.mapper.AttFileEODao;
import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao; import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao;
import com.jero.modules.onlyoffice.service.impl.AttFileEOServiceImpl;
import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.oss.service.IOSSFileService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -36,7 +31,7 @@ public class LawsUserInfoService {
private String standEditFilePath; private String standEditFilePath;
@Resource @Resource
private IBusProcessModelHisService busProcessModelHisService; private IProcessFileService busProcessModelHisService;
@Resource @Resource
private OnlineFileLogDao onlineFileLogDao; private OnlineFileLogDao onlineFileLogDao;
@@ -3,7 +3,6 @@ package com.jero.modules.onlyoffice.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.util.CommonUtils; import com.jero.common.util.CommonUtils;
@@ -13,12 +12,12 @@ import com.jero.common.util.oConvertUtils;
import com.jero.modules.laws.common.constant.FieldCommon; import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard; import com.jero.modules.laws.standard.entity.LawsEnterpriseStandard;
import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService; import com.jero.modules.laws.standard.service.ILawsEnterpriseStandardService;
import com.jero.modules.onlyoffice.entity.BusProcessModelHis; import com.jero.modules.onlyoffice.entity.ProcessFile;
import com.jero.modules.onlyoffice.entity.OnlineFileLog; import com.jero.modules.onlyoffice.entity.OnlineFileLog;
import com.jero.modules.onlyoffice.entity.StandardFileType; import com.jero.modules.onlyoffice.entity.StandardFileType;
import com.jero.modules.onlyoffice.mapper.BusProcessModelHisMapper; import com.jero.modules.onlyoffice.mapper.ProcessFileMapper;
import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao; import com.jero.modules.onlyoffice.mapper.OnlineFileLogDao;
import com.jero.modules.onlyoffice.service.IBusProcessModelHisService; import com.jero.modules.onlyoffice.service.IProcessFileService;
import com.jero.modules.onlyoffice.utils.OnlyOfficePdfUtil; import com.jero.modules.onlyoffice.utils.OnlyOfficePdfUtil;
import com.jero.modules.oss.entity.OSSFile; import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService; import com.jero.modules.oss.service.IOSSFileService;
@@ -48,9 +47,9 @@ import java.util.stream.Collectors;
* @since 2021-09-17 * @since 2021-09-17
*/ */
@Service @Service
public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHisMapper, BusProcessModelHis> implements IBusProcessModelHisService { public class ProcessFileServiceImpl extends ServiceImpl<ProcessFileMapper, ProcessFile> implements IProcessFileService {
private static final Logger logger = LoggerFactory.getLogger(BusProcessModelHisServiceImpl.class); private static final Logger logger = LoggerFactory.getLogger(ProcessFileServiceImpl.class);
@Value("${file.path}") @Value("${file.path}")
@@ -81,8 +80,8 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
private OnlyOfficePdfUtil onlineOfficePdfUtil; private OnlyOfficePdfUtil onlineOfficePdfUtil;
@Override @Override
public BusProcessModelHis saveEditFile(String model) { public ProcessFile saveEditFile(String model) {
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
try { try {
String preUuid2 = UUID.randomUUID().toString(); String preUuid2 = UUID.randomUUID().toString();
String changUuid = preUuid2.substring(0, 8); String changUuid = preUuid2.substring(0, 8);
@@ -124,9 +123,9 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis saveEditFileWithOss(String ossFileId) { public ProcessFile saveEditFileWithOss(String ossFileId) {
OSSFile ossFile = ossFileService.getById(ossFileId); OSSFile ossFile = ossFileService.getById(ossFileId);
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
try { try {
String taskId = generateTaskId(); String taskId = generateTaskId();
@@ -190,13 +189,13 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
@Override @Override
public OnlineFileLog selectOnlineFile(String onlineFileId) { public OnlineFileLog selectOnlineFile(String onlineFileId) {
BusProcessModelHis busProcessModelHis = baseMapper.selectById(onlineFileId); ProcessFile ProcessFile = baseMapper.selectById(onlineFileId);
OnlineFileLog onlineFileLog = new OnlineFileLog(); OnlineFileLog onlineFileLog = new OnlineFileLog();
byte[] bytes = new byte[0]; byte[] bytes = new byte[0];
if (busProcessModelHis != null) { if (ProcessFile != null) {
//获取当前文件路径 返回文件路径的数字组 //获取当前文件路径 返回文件路径的数字组
try { try {
String editFilePath = busProcessModelHis.getEditFilePath(); String editFilePath = ProcessFile.getEditFilePath();
File file = new File(filePath + editFilePath); File file = new File(filePath + editFilePath);
FileInputStream fileInputStream = new FileInputStream(file); FileInputStream fileInputStream = new FileInputStream(file);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(1024);
@@ -209,14 +208,14 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
onlineFileLog.setHisId(busProcessModelHis.getId()); onlineFileLog.setHisId(ProcessFile.getId());
onlineFileLog.setFilePath(busProcessModelHis.getEditFilePath()); onlineFileLog.setFilePath(ProcessFile.getEditFilePath());
if (StringUtils.isNotBlank(busProcessModelHis.getEditFilePath())) { if (StringUtils.isNotBlank(ProcessFile.getEditFilePath())) {
String[] split = busProcessModelHis.getEditFilePath().split("\\."); String[] split = ProcessFile.getEditFilePath().split("\\.");
onlineFileLog.setFileSuffix(split[1]); onlineFileLog.setFileSuffix(split[1]);
} }
if (StringUtils.isNotBlank(busProcessModelHis.getEditFilePath())) { if (StringUtils.isNotBlank(ProcessFile.getEditFilePath())) {
String[] split = busProcessModelHis.getEditFilePath().split("/"); String[] split = ProcessFile.getEditFilePath().split("/");
String[] split1 = split[2].split("\\."); String[] split1 = split[2].split("\\.");
onlineFileLog.setOldFileName(split1[0]); onlineFileLog.setOldFileName(split1[0]);
} }
@@ -303,8 +302,8 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis modelHisOneUpdStatusById(String id) { public ProcessFile modelHisOneUpdStatusById(String id) {
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
modelHis.setId(id); modelHis.setId(id);
modelHis.setEditStatus("1"); modelHis.setEditStatus("1");
this.baseMapper.updateById(modelHis); this.baseMapper.updateById(modelHis);
@@ -312,12 +311,12 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis modelHisOneUpdStatus(String pid, String taskId) { public ProcessFile modelHisOneUpdStatus(String pid, String taskId) {
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
QueryWrapper wrapper = new QueryWrapper(); QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID", pid); wrapper.eq("P_ID", pid);
wrapper.eq("TASK_ID", taskId); wrapper.eq("TASK_ID", taskId);
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper); List<ProcessFile> hisList = this.baseMapper.selectList(wrapper);
if (!hisList.isEmpty()) { if (!hisList.isEmpty()) {
modelHis = hisList.get(0); modelHis = hisList.get(0);
modelHis.setEditStatus("1"); modelHis.setEditStatus("1");
@@ -327,12 +326,12 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis modelHisOneCount(String pid) { public ProcessFile modelHisOneCount(String pid) {
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
QueryWrapper wrapper = new QueryWrapper(); QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID", pid); wrapper.eq("P_ID", pid);
wrapper.eq("EDIT_TYPE", "count"); wrapper.eq("EDIT_TYPE", "count");
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper); List<ProcessFile> hisList = this.baseMapper.selectList(wrapper);
if (!hisList.isEmpty()) { if (!hisList.isEmpty()) {
modelHis = hisList.get(0); modelHis = hisList.get(0);
StringBuffer downloadFileUrl = new StringBuffer(); StringBuffer downloadFileUrl = new StringBuffer();
@@ -343,8 +342,8 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis processEditFile(String id) { public ProcessFile processEditFile(String id) {
BusProcessModelHis modelHis = this.baseMapper.selectById(id); ProcessFile modelHis = this.baseMapper.selectById(id);
if (StringUtils.isNotBlank(modelHis.getId())) { if (StringUtils.isNotBlank(modelHis.getId())) {
StringBuffer downloadFileUrl = new StringBuffer(); StringBuffer downloadFileUrl = new StringBuffer();
downloadFileUrl.append(downloadUrl).append(modelHis.getEditFilePath() == null ? "" : modelHis.getEditFilePath()); downloadFileUrl.append(downloadUrl).append(modelHis.getEditFilePath() == null ? "" : modelHis.getEditFilePath());
@@ -354,12 +353,12 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis modelHisOne(String pid, String taskId) { public ProcessFile modelHisOne(String pid, String taskId) {
BusProcessModelHis modelHis = new BusProcessModelHis(); ProcessFile modelHis = new ProcessFile();
QueryWrapper wrapper = new QueryWrapper(); QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID", pid); wrapper.eq("P_ID", pid);
wrapper.eq("TASK_ID", taskId); wrapper.eq("TASK_ID", taskId);
List<BusProcessModelHis> hisList = this.baseMapper.selectList(wrapper); List<ProcessFile> hisList = this.baseMapper.selectList(wrapper);
if (!hisList.isEmpty()) { if (!hisList.isEmpty()) {
modelHis = hisList.get(0); modelHis = hisList.get(0);
StringBuffer downloadFileUrl = new StringBuffer(); StringBuffer downloadFileUrl = new StringBuffer();
@@ -370,7 +369,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public List<BusProcessModelHis> modelHisList(String pid) { public List<ProcessFile> modelHisList(String pid) {
QueryWrapper wrapper = new QueryWrapper(); QueryWrapper wrapper = new QueryWrapper();
wrapper.eq("P_ID", pid); wrapper.eq("P_ID", pid);
return this.baseMapper.selectList(wrapper); return this.baseMapper.selectList(wrapper);
@@ -379,7 +378,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
@Override @Override
public void replaceFile(String hisId, String replaceId) { public void replaceFile(String hisId, String replaceId) {
// 找到修改后的文件上传到minio后 将相关信息替换原本的ossFile记录 // 找到修改后的文件上传到minio后 将相关信息替换原本的ossFile记录
BusProcessModelHis his = this.getById(hisId); ProcessFile his = this.getById(hisId);
// 找到最新的文件记录 上传到minio // 找到最新的文件记录 上传到minio
LambdaQueryWrapper<OnlineFileLog> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OnlineFileLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OnlineFileLog::getHisId, hisId); wrapper.eq(OnlineFileLog::getHisId, hisId);
@@ -395,7 +394,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
String path = filePath + ossFile.getUrl(); String path = filePath + ossFile.getUrl();
// 获取上传文件对象 // 获取上传文件对象
File file = new File(path); File file = new File(path);
MultipartFile multipartFile = BusProcessModelHisServiceImpl.convert(file); MultipartFile multipartFile = ProcessFileServiceImpl.convert(file);
String savePath = CommonUtils.upload(multipartFile, "", uploadType); String savePath = CommonUtils.upload(multipartFile, "", uploadType);
OSSFile replaceFile = ossFileService.getById(replaceId); OSSFile replaceFile = ossFileService.getById(replaceId);
if (oConvertUtils.isNotEmpty(savePath) && replaceFile != null) { if (oConvertUtils.isNotEmpty(savePath) && replaceFile != null) {
@@ -413,7 +412,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
@Override @Override
public String saveProcessFileToOss(String hisId) { public String saveProcessFileToOss(String hisId) {
BusProcessModelHis his = this.getById(hisId); ProcessFile his = this.getById(hisId);
// 找到最新的文件记录 上传到minio // 找到最新的文件记录 上传到minio
LambdaQueryWrapper<OnlineFileLog> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<OnlineFileLog> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(OnlineFileLog::getHisId, hisId); wrapper.eq(OnlineFileLog::getHisId, hisId);
@@ -426,7 +425,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
String path = filePath + ossFile.getUrl(); String path = filePath + ossFile.getUrl();
// 获取上传文件对象 // 获取上传文件对象
File file = new File(path); File file = new File(path);
MultipartFile multipartFile = BusProcessModelHisServiceImpl.convert(file); MultipartFile multipartFile = ProcessFileServiceImpl.convert(file);
String savePath = CommonUtils.upload(multipartFile, "", uploadType); String savePath = CommonUtils.upload(multipartFile, "", uploadType);
if (oConvertUtils.isNotEmpty(savePath)) { if (oConvertUtils.isNotEmpty(savePath)) {
// 文件名 // 文件名
@@ -444,7 +443,7 @@ public class BusProcessModelHisServiceImpl extends ServiceImpl<BusProcessModelHi
} }
@Override @Override
public BusProcessModelHis findEditFileByStandardNo(String standardNo) { public ProcessFile findEditFileByStandardNo(String standardNo) {
OSSFile lastDocFileByStandardNo = this.findLastDocFileByStandardNo(standardNo); OSSFile lastDocFileByStandardNo = this.findLastDocFileByStandardNo(standardNo);
if (lastDocFileByStandardNo == null) { if (lastDocFileByStandardNo == null) {
// 没有docx文件则自动生成并返回 // 没有docx文件则自动生成并返回