模版编制相关实现

This commit is contained in:
潘荣晟
2025-09-26 17:13:10 +08:00
parent abf9607c43
commit fa7c08a493
3 changed files with 20 additions and 21 deletions

View File

@@ -31,9 +31,9 @@ public class OnlyOfficeCallbackController {
@PostMapping("/callback/{id}") @PostMapping("/callback/{id}")
@PermitAll @PermitAll
@TenantIgnore @TenantIgnore
public ResponseEntity<Map<String, Integer>> handleCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id) { public ResponseEntity<Map<String, Integer>> handleCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id,@RequestParam("fileName") String fileName) {
// 处理回调逻辑 // 处理回调逻辑
callbackService.processCallback(callback,id); callbackService.processCallback(callback,id,fileName);
// 返回必须的响应否则OnlyOffice会显示错误 // 返回必须的响应否则OnlyOffice会显示错误
Map<String, Integer> response = new HashMap<>(); Map<String, Integer> response = new HashMap<>();
response.put("error", 0); response.put("error", 0);

View File

@@ -8,5 +8,5 @@ public interface OnlyOfficeCallbackService {
* 处理OnlyOffice回调 * 处理OnlyOffice回调
* @param callback 回调数据 * @param callback 回调数据
*/ */
void processCallback(OnlyOfficeCallback callback,String id); void processCallback(OnlyOfficeCallback callback,String id,String fileName);
} }

View File

@@ -31,29 +31,29 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
private final TemplateInstanceService templateInstanceService; private final TemplateInstanceService templateInstanceService;
@Override @Override
public void processCallback(OnlyOfficeCallback callback, String id) { public void processCallback(OnlyOfficeCallback callback, String id,String fileName) {
log.info("收到OnlyOffice文档回调: {}", callback.getKey()); log.info("收到OnlyOffice文档回调: {}", callback.getKey());
log.info("回调状态: {}", callback.getStatus()); log.info("回调状态: {}", callback.getStatus());
// 根据不同的状态处理回调 // 根据不同的状态处理回调
switch (callback.getStatus()) { switch (callback.getStatus()) {
case 1: case 1:
handleEditingStatus(callback, id); handleEditingStatus(callback, id,fileName);
break; break;
case 2: case 2:
handleDocumentSaved(callback, id); handleDocumentSaved(callback, id,fileName);
break; break;
case 3: case 3:
handleSaveError(callback, id); handleSaveError(callback, id,fileName);
break; break;
case 4: case 4:
handleDocumentClosedWithoutChanges(callback, id); handleDocumentClosedWithoutChanges(callback, id,fileName);
break; break;
case 6: case 6:
handleForcedSave(callback, id); handleForcedSave(callback, id,fileName);
break; break;
case 7: case 7:
handleForcedSaveError(callback, id); handleForcedSaveError(callback, id,fileName);
break; break;
default: default:
log.warn("收到未知的回调状态: {}", callback.getStatus()); log.warn("收到未知的回调状态: {}", callback.getStatus());
@@ -63,7 +63,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理文档正在编辑的状态 * 处理文档正在编辑的状态
*/ */
private void handleEditingStatus(OnlyOfficeCallback callback, String id) { private void handleEditingStatus(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 正在被以下用户编辑: {}", log.info("文档 {} 正在被以下用户编辑: {}",
callback.getKey(), callback.getUsers()); callback.getKey(), callback.getUsers());
@@ -84,9 +84,9 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理文档已保存的状态 * 处理文档已保存的状态
*/ */
private void handleDocumentSaved(OnlyOfficeCallback callback, String id) { private void handleDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 已准备好保存", callback.getKey()); log.info("文档 {} 已准备好保存", callback.getKey());
saveDocument(callback, id); saveDocument(callback, id,fileName);
// 处理历史记录 // 处理历史记录
// handleHistoryChanges(callback,id); // handleHistoryChanges(callback,id);
@@ -95,7 +95,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理保存错误的状态 * 处理保存错误的状态
*/ */
private void handleSaveError(OnlyOfficeCallback callback, String id) { private void handleSaveError(OnlyOfficeCallback callback, String id,String fileName) {
log.error("保存文档 {} 时出错", callback.getKey()); log.error("保存文档 {} 时出错", callback.getKey());
// 可以在这里添加错误处理逻辑,如发送通知等 // 可以在这里添加错误处理逻辑,如发送通知等
} }
@@ -103,7 +103,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理文档关闭且无更改的状态 * 处理文档关闭且无更改的状态
*/ */
private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id) { private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 已关闭,未做任何更改", callback.getKey()); log.info("文档 {} 已关闭,未做任何更改", callback.getKey());
// 可以在这里添加清理资源等逻辑 // 可以在这里添加清理资源等逻辑
} }
@@ -111,10 +111,10 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理强制保存的状态 * 处理强制保存的状态
*/ */
private void handleForcedSave(OnlyOfficeCallback callback, String id) { private void handleForcedSave(OnlyOfficeCallback callback, String id,String fileName) {
log.info("文档 {} 执行强制保存。类型: {}", log.info("文档 {} 执行强制保存。类型: {}",
callback.getKey(), callback.getForceSaveType()); callback.getKey(), callback.getForceSaveType());
saveDocument(callback, id); saveDocument(callback, id,fileName);
// 处理历史记录 // 处理历史记录
handleHistoryChanges(callback, id); handleHistoryChanges(callback, id);
@@ -128,7 +128,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 处理强制保存错误的状态 * 处理强制保存错误的状态
*/ */
private void handleForcedSaveError(OnlyOfficeCallback callback, String id) { private void handleForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) {
log.error("文档 {} 强制保存时出错", callback.getKey()); log.error("文档 {} 强制保存时出错", callback.getKey());
// 可以在这里添加错误处理逻辑 // 可以在这里添加错误处理逻辑
} }
@@ -136,7 +136,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
/** /**
* 保存文档到存储 * 保存文档到存储
*/ */
private void saveDocument(OnlyOfficeCallback callback, String id) { private void saveDocument(OnlyOfficeCallback callback, String id,String fileName) {
if (callback.getUrl() == null) { if (callback.getUrl() == null) {
log.error("文件路径为空"); log.error("文件路径为空");
return; return;
@@ -147,8 +147,6 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
// 1. 验证文件是否为空 // 1. 验证文件是否为空
// 2. 获取并验证文件名
String fileName = file.getOriginalFilename();
String directory = "模版实例"; String directory = "模版实例";
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
@@ -161,6 +159,7 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO); CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO);
if (result.isSuccess()) { if (result.isSuccess()) {
// 创建文件成功,处理结果 // 创建文件成功,处理结果
result.getData().setContent(null);
log.info("文件创建成功文件ID{}", result.getData()); log.info("文件创建成功文件ID{}", result.getData());
// 创建文件成功,处理结果 // 创建文件成功,处理结果
FileRespDTO fileRespDTO = result.getData(); FileRespDTO fileRespDTO = result.getData();