订单管理相关
This commit is contained in:
@@ -39,4 +39,19 @@ public class OnlyOfficeCallbackController {
|
||||
response.put("error", 0);
|
||||
return new ResponseEntity<>(response, HttpStatus.OK);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理OnlyOffice文档编辑服务发送的回调
|
||||
*/
|
||||
@PostMapping("/contract /callback/{id}")
|
||||
@PermitAll
|
||||
@TenantIgnore
|
||||
public ResponseEntity<Map<String, Integer>> handleContractCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id,@RequestParam("fileName") String fileName) {
|
||||
// 处理回调逻辑
|
||||
callbackService.processContractCallback(callback,id,fileName);
|
||||
// 返回必须的响应,否则OnlyOffice会显示错误
|
||||
Map<String, Integer> response = new HashMap<>();
|
||||
response.put("error", 0);
|
||||
return new ResponseEntity<>(response, HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,4 +9,11 @@ public interface OnlyOfficeCallbackService {
|
||||
* @param callback 回调数据
|
||||
*/
|
||||
void processCallback(OnlyOfficeCallback callback,String id,String fileName);
|
||||
|
||||
|
||||
/**
|
||||
* 处理OnlyOffice回调
|
||||
* @param callback 回调数据
|
||||
*/
|
||||
void processContractCallback(OnlyOfficeCallback callback,String id,String fileName);
|
||||
}
|
||||
|
||||
@@ -209,4 +209,159 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void processContractCallback(OnlyOfficeCallback callback, String id, String fileName) {
|
||||
log.info("收到OnlyOffice文档回调: {}", callback.getKey());
|
||||
log.info("回调状态: {}", callback.getStatus());
|
||||
|
||||
// 根据不同的状态处理回调
|
||||
switch (callback.getStatus()) {
|
||||
case 1:
|
||||
handleContractEditingStatus(callback, id,fileName);
|
||||
break;
|
||||
case 2:
|
||||
handleContractDocumentSaved(callback, id,fileName);
|
||||
break;
|
||||
case 3:
|
||||
handleContractSaveError(callback, id,fileName);
|
||||
break;
|
||||
case 4:
|
||||
handleContractDocumentClosedWithoutChanges(callback, id,fileName);
|
||||
break;
|
||||
case 6:
|
||||
handleContractForcedSave(callback, id,fileName);
|
||||
break;
|
||||
case 7:
|
||||
handleContractForcedSaveError(callback, id,fileName);
|
||||
break;
|
||||
default:
|
||||
log.warn("收到未知的回调状态: {}", callback.getStatus());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理文档正在编辑的状态
|
||||
*/
|
||||
private void handleContractEditingStatus(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.info("文档 {} 正在被以下用户编辑: {}",
|
||||
callback.getKey(), callback.getUsers());
|
||||
|
||||
// 处理用户操作(连接或断开连接)
|
||||
if (callback.getActions() != null) {
|
||||
for (Action action : callback.getActions()) {
|
||||
String actionType = switch (action.getType()) {
|
||||
case 0 -> "断开了连接";
|
||||
case 1 -> "连接成功";
|
||||
case 2 -> "在中点击了强制保存";
|
||||
default -> "在中执行了未知操作";
|
||||
};
|
||||
log.info("用户 {} {}", action.getUserId(), actionType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理文档已保存的状态
|
||||
*/
|
||||
private void handleContractDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.info("文档 {} 已准备好保存", callback.getKey());
|
||||
saveContractDocument(callback, id,fileName);
|
||||
|
||||
// 处理历史记录
|
||||
// handleHistoryChanges(callback,id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理保存错误的状态
|
||||
*/
|
||||
private void handleContractSaveError(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.error("保存文档 {} 时出错", callback.getKey());
|
||||
// 可以在这里添加错误处理逻辑,如发送通知等
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理文档关闭且无更改的状态
|
||||
*/
|
||||
private void handleContractDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.info("文档 {} 已关闭,未做任何更改", callback.getKey());
|
||||
// 可以在这里添加清理资源等逻辑
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理强制保存的状态
|
||||
*/
|
||||
private void handleContractForcedSave(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.info("文档 {} 执行强制保存。类型: {}",
|
||||
callback.getKey(), callback.getForceSaveType());
|
||||
saveContractDocument(callback, id,fileName);
|
||||
|
||||
// 处理历史记录
|
||||
handleHistoryChanges(callback, id);
|
||||
|
||||
// 如果是表单提交,处理表单数据
|
||||
if (callback.getForceSaveType() == 3 && callback.getFormsDataUrl() != null) {
|
||||
handleFormSubmission(callback, id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 处理强制保存错误的状态
|
||||
*/
|
||||
private void handleContractForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
log.error("文档 {} 强制保存时出错", callback.getKey());
|
||||
// 可以在这里添加错误处理逻辑
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存文档到存储
|
||||
*/
|
||||
private void saveContractDocument(OnlyOfficeCallback callback, String id,String fileName) {
|
||||
if (callback.getUrl() == null) {
|
||||
log.error("文件路径为空");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
MultipartFile file = downloadFileAsMultipart(callback.getUrl());
|
||||
// 1. 验证文件是否为空
|
||||
|
||||
String directory = "模版实例";
|
||||
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
|
||||
fileCreateReqDTO.setName(fileName);
|
||||
fileCreateReqDTO.setContent(file.getBytes());
|
||||
fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型
|
||||
fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录
|
||||
if (file.getSize() <=0){
|
||||
log.error("文件大小为0");
|
||||
return;
|
||||
}
|
||||
// 7. 调用文件服务创建文件
|
||||
CommonResult<FileRespDTO> result = fileApi.createFileWithReturn(fileCreateReqDTO);
|
||||
if (result.isSuccess()) {
|
||||
// 创建文件成功,处理结果
|
||||
result.getData().setContent(null);
|
||||
log.info("文件创建成功,文件ID:{}", result.getData());
|
||||
// 创建文件成功,处理结果
|
||||
FileRespDTO fileRespDTO = result.getData();
|
||||
Map<String, Object> fileInfo = new HashMap<>();
|
||||
fileInfo.put("id",String.valueOf(fileRespDTO.getId()));
|
||||
fileInfo.put("name", fileRespDTO.getName());
|
||||
fileInfo.put("directory", fileRespDTO.getDirectory());
|
||||
templateInstanceService.updateTemplateInstanceFileUrlByInstanceId(id, JSONObject.toJSONString(fileInfo));
|
||||
} else {
|
||||
// 创建文件失败,处理错误
|
||||
log.error("文件创建失败,错误信息:{}", result.getMsg());
|
||||
}
|
||||
log.info("文件创建结果:{}", result);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -68,4 +68,11 @@ public interface TmplInscBsnRelService {
|
||||
* @param tmplInscBsnRelRespVO 类
|
||||
*/
|
||||
void getTmplInscBsnRelDetails(TmplInscBsnRelRespVO tmplInscBsnRelRespVO);
|
||||
|
||||
/**
|
||||
* 跟新cntt
|
||||
*
|
||||
* @param bsnId ,params
|
||||
*/
|
||||
void updateCntt(Long bsnId,String params);
|
||||
}
|
||||
|
||||
@@ -145,6 +145,20 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateCntt(Long bsnId, String params) {
|
||||
List<TmplInscBsnRelDO> tmplInscBsnRelDOS = tmplInscBsnRelMapper.selectList(new LambdaQueryWrapper<TmplInscBsnRelDO>()
|
||||
.eq(TmplInscBsnRelDO::getBsnId, bsnId).orderByDesc(TmplInscBsnRelDO::getVer)
|
||||
);
|
||||
if (tmplInscBsnRelDOS.isEmpty()) {
|
||||
throw exception(TEMPLATE_INSTANCE_FILE_NOT_EXISTS);
|
||||
}
|
||||
TmplInscBsnRelDO tmplInscBsnRelDO = tmplInscBsnRelDOS.get(0);
|
||||
tmplInscBsnRelDO.setCntt( params);
|
||||
tmplInscBsnRelMapper.updateById(tmplInscBsnRelDO);
|
||||
log.info("更新业务实例cntt字段值成功");
|
||||
}
|
||||
|
||||
//业务条款
|
||||
private List<TmplInscItmBsnRespVO> setTmplInscItmBsnRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) {
|
||||
List<TmplInscItmBsnRespVO> tmplInscItmBsnRespVOS = BeanUtils.toBean(SpringUtil.getBean(TmplInscItmBsnMapper.class).selectList(new LambdaQueryWrapper<TmplInscItmBsnDO>()
|
||||
@@ -152,7 +166,7 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
|
||||
), TmplInscItmBsnRespVO.class);
|
||||
tmplInscItmBsnRespVOS.forEach(tmplInscItmBsnRespVO -> {
|
||||
tmplInscBsnRelRespVO.getInstanceItemRespVOS().forEach(instanceItemRespVO -> {
|
||||
if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())){
|
||||
if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())) {
|
||||
tmplInscItmBsnRespVO.setItmName(instanceItemRespVO.getItmName());
|
||||
}
|
||||
});
|
||||
@@ -273,4 +287,6 @@ public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService {
|
||||
log.info("删除业务实例条款值【{}】", ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user