[add] 安全、质量知识库接入畅写回调保存文件 [update] 修改斯巴达中获取文件名字方法
This commit is contained in:
@ -148,6 +148,9 @@ public class SpartaManager {
|
||||
private static String extractFilename(String url) {
|
||||
int start = url.lastIndexOf("/") + 1;
|
||||
int end = url.indexOf("?", start);
|
||||
if (end == -1) {
|
||||
return url.substring(start);
|
||||
}
|
||||
if (start > 0 && end > start) {
|
||||
return url.substring(start, end);
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@ public interface QltKnowledgeDocumentConstant {
|
||||
/**
|
||||
* 顶级目录前缀
|
||||
*/
|
||||
String TOP_FOLDER_PREFIX = "doc/safety/knowledge/";
|
||||
String TOP_FOLDER_PREFIX = "doc/quality/knowledge/";
|
||||
|
||||
/**
|
||||
* 顶级目录名称
|
||||
|
||||
@ -3,6 +3,8 @@ package org.dromara.quality.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -145,4 +147,14 @@ public class QltKnowledgeDocumentController extends BaseController {
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(qltKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 畅写在线修改保存回调
|
||||
*/
|
||||
@SaCheckPermission("quality:knowledgeDocument:edit")
|
||||
@PostMapping("/changxie/callback/{id}")
|
||||
public void singleFileUploads(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||
qltKnowledgeDocumentService.singleFileUploads(id, request, response);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package org.dromara.quality.service;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.quality.domain.QltKnowledgeDocument;
|
||||
@ -138,4 +140,13 @@ public interface IQltKnowledgeDocumentService extends IService<QltKnowledgeDocum
|
||||
* @return 文档对象视图
|
||||
*/
|
||||
Page<QltKnowledgeDocumentVo> getVoPage(Page<QltKnowledgeDocument> documentPage);
|
||||
|
||||
/**
|
||||
* 畅写在线文件修改
|
||||
*
|
||||
* @param id 文档id
|
||||
* @param request 请求
|
||||
* @param response 响应
|
||||
*/
|
||||
void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response);
|
||||
}
|
||||
|
||||
@ -5,10 +5,14 @@ import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.*;
|
||||
@ -16,6 +20,8 @@ import org.dromara.common.enums.DocumentStatusEnum;
|
||||
import org.dromara.common.enums.DocumentTypeEnum;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.oss.core.OssClient;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.quality.constant.QltKnowledgeDocumentConstant;
|
||||
@ -34,6 +40,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -321,6 +329,13 @@ public class QltKnowledgeDocumentServiceImpl extends ServiceImpl<QltKnowledgeDoc
|
||||
if (!result) {
|
||||
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
||||
}
|
||||
// 删除oss文件
|
||||
OssClient storage = OssFactory.instance();
|
||||
for (QltKnowledgeDocument document : documentList) {
|
||||
if (!document.getFileType().equals(DocumentTypeEnum.FOLDER.getValue())) {
|
||||
storage.delete(document.getFileUrl());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -418,6 +433,34 @@ public class QltKnowledgeDocumentServiceImpl extends ServiceImpl<QltKnowledgeDoc
|
||||
return documentVoPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 畅写在线文件修改
|
||||
*
|
||||
* @param id 文档id
|
||||
* @param request 请求
|
||||
* @param response 响应
|
||||
*/
|
||||
@Override
|
||||
public void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||
try {
|
||||
PrintWriter writer = response.getWriter();
|
||||
Scanner scanner = new Scanner(request.getInputStream(), "GBK").useDelimiter("\\A");
|
||||
String body = scanner.hasNext() ? scanner.next() : "";
|
||||
JSONObject jsonObj = JSONUtil.parseObj(body);
|
||||
if (jsonObj.getInt("status") == 2 || jsonObj.getInt("status") == 6) {
|
||||
String downloadUri = (String) jsonObj.get("url");
|
||||
QltKnowledgeDocument document = this.getById(id);
|
||||
String filePath = document.getFilePath();
|
||||
ossService.uploadFileUrlWithNoSave(downloadUri, filePath);
|
||||
} else if (jsonObj.getInt("status") == 3 || jsonObj.getInt("status") == 7) {
|
||||
writer.write("{\"error\":-1}");
|
||||
}
|
||||
writer.write("{\"error\":0}");
|
||||
} catch (IOException e) {
|
||||
throw new ServiceException("质量知识库在线修改文件失败," + e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验父级目录是否存在
|
||||
*
|
||||
|
||||
@ -3,6 +3,8 @@ package org.dromara.safety.controller;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
@ -145,4 +147,14 @@ public class HseKnowledgeDocumentController extends BaseController {
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(hseKnowledgeDocumentService.recoveryBatchById(List.of(ids)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 畅写在线修改保存回调
|
||||
*/
|
||||
@SaCheckPermission("safety:knowledgeDocument:edit")
|
||||
@PostMapping("/changxie/callback/{id}")
|
||||
public void singleFileUploads(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||
hseKnowledgeDocumentService.singleFileUploads(id, request, response);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,8 @@ package org.dromara.safety.service;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.safety.domain.HseKnowledgeDocument;
|
||||
@ -138,4 +140,13 @@ public interface IHseKnowledgeDocumentService extends IService<HseKnowledgeDocum
|
||||
* @return 文档对象视图
|
||||
*/
|
||||
Page<HseKnowledgeDocumentVo> getVoPage(Page<HseKnowledgeDocument> documentPage);
|
||||
|
||||
/**
|
||||
* 畅写在线文件修改
|
||||
*
|
||||
* @param id 文档id
|
||||
* @param request 请求
|
||||
* @param response 响应
|
||||
*/
|
||||
void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response);
|
||||
}
|
||||
|
||||
@ -5,10 +5,15 @@ import cn.hutool.core.io.FileUtil;
|
||||
import cn.hutool.core.lang.tree.Tree;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.*;
|
||||
@ -16,6 +21,8 @@ import org.dromara.common.enums.DocumentStatusEnum;
|
||||
import org.dromara.common.enums.DocumentTypeEnum;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.oss.core.OssClient;
|
||||
import org.dromara.common.oss.factory.OssFactory;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.service.IBusProjectService;
|
||||
import org.dromara.safety.constant.HseKnowledgeDocumentConstant;
|
||||
@ -34,6 +41,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -43,6 +52,7 @@ import java.util.stream.Collectors;
|
||||
* @author lcj
|
||||
* @date 2025-06-25
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDocumentMapper, HseKnowledgeDocument>
|
||||
implements IHseKnowledgeDocumentService {
|
||||
@ -320,6 +330,13 @@ public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDoc
|
||||
if (!result) {
|
||||
throw new ServiceException("文件删除失败", HttpStatus.ERROR);
|
||||
}
|
||||
// 删除oss文件
|
||||
OssClient storage = OssFactory.instance();
|
||||
for (HseKnowledgeDocument document : documentList) {
|
||||
if (!document.getFileType().equals(DocumentTypeEnum.FOLDER.getValue())) {
|
||||
storage.delete(document.getFileUrl());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -417,6 +434,33 @@ public class HseKnowledgeDocumentServiceImpl extends ServiceImpl<HseKnowledgeDoc
|
||||
return documentVoPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 畅写在线文件修改
|
||||
*
|
||||
* @param request 请求
|
||||
* @param response 响应
|
||||
*/
|
||||
@Override
|
||||
public void singleFileUploads(Long id, HttpServletRequest request, HttpServletResponse response) {
|
||||
try {
|
||||
PrintWriter writer = response.getWriter();
|
||||
Scanner scanner = new Scanner(request.getInputStream(), "GBK").useDelimiter("\\A");
|
||||
String body = scanner.hasNext() ? scanner.next() : "";
|
||||
JSONObject jsonObj = JSONUtil.parseObj(body);
|
||||
if (jsonObj.getInt("status") == 2 || jsonObj.getInt("status") == 6) {
|
||||
String downloadUri = (String) jsonObj.get("url");
|
||||
HseKnowledgeDocument document = this.getById(id);
|
||||
String filePath = document.getFilePath();
|
||||
ossService.uploadFileUrlWithNoSave(downloadUri, filePath);
|
||||
} else if (jsonObj.getInt("status") == 3 || jsonObj.getInt("status") == 7) {
|
||||
writer.write("{\"error\":-1}");
|
||||
}
|
||||
writer.write("{\"error\":0}");
|
||||
} catch (IOException e) {
|
||||
throw new ServiceException("安全知识库在线修改文件失败," + e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验父级目录是否存在
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user