feat(iwork): 扩展iWork集成功能支持通用流程创建和回调处理

- 添加通用流程创建接口支持透传任意业务参数
- 实现流程创建日志记录功能包括requestId、workflowId等关键信息
- 增强文件回调处理记录日志并发送MQ通知业务系统
- 添加iWork业务回调消息测试消费者用于验证回调机制
- 在模板模块合同详情中增加业务附件列表展示功能
- 更新应用配置忽略缓存新增iWork印章日志表配置项
This commit is contained in:
wuzongyong
2026-01-29 14:53:18 +08:00
parent 891bfad529
commit 0fd7756d17
16 changed files with 489 additions and 5 deletions

View File

@@ -15,6 +15,7 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.infra.api.businessfile.BusinessFileApi;
import com.zt.plat.module.infra.api.file.FileApi;
import com.zt.plat.module.infra.api.file.dto.FileRespDTO;
import com.zt.plat.module.system.api.dept.DeptApi;
import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
import com.zt.plat.module.system.api.permission.PermissionApi;
@@ -128,7 +129,12 @@ public class DemoContractController extends AbstractFileUploadController impleme
@Parameter(name = "id", description = "编号", required = true, example = "1024")
public CommonResult<DemoContractRespVO> getDemoContract(@RequestParam("id") Long id) {
DemoContractDO demoContract = demoContractService.getDemoContract(id);
return success(BeanUtils.toBean(demoContract, DemoContractRespVO.class));
DemoContractRespVO respVO = BeanUtils.toBean(demoContract, DemoContractRespVO.class);
// 查询业务附件
if (respVO != null && respVO.getId() != null) {
respVO.setFiles(demoContractService.getContractFiles(respVO.getId()));
}
return success(respVO);
}
@GetMapping("/page")

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.template.controller.admin.contract.vo;
import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@@ -77,4 +78,7 @@ public class DemoContractRespVO {
@ExcelProperty("岗位ID")
private Long postId;
@Schema(description = "附件列表")
private List<BusinessFileWithUrlRespDTO> files;
}

View File

@@ -6,6 +6,7 @@ import com.zt.plat.module.template.controller.admin.contract.vo.*;
import com.zt.plat.module.template.dal.dataobject.contract.DemoContractDO;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO;
/**
* 合同 Service 接口
@@ -59,4 +60,12 @@ public interface DemoContractService {
*/
PageResult<DemoContractDO> getDemoContractPage(DemoContractPageReqVO pageReqVO);
/**
* 获取合同附件列表
*
* @param contractId 合同ID
* @return 附件列表
*/
List<BusinessFileWithUrlRespDTO> getContractFiles(Long contractId);
}

View File

@@ -4,6 +4,9 @@ import cn.hutool.core.collection.CollUtil;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.infra.api.businessfile.BusinessFileApi;
import com.zt.plat.module.infra.api.businessfile.dto.BusinessFilePageReqDTO;
import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileWithUrlRespDTO;
import com.zt.plat.module.system.api.sequence.SequenceApi;
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractPageReqVO;
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractRespVO;
@@ -34,6 +37,9 @@ public class DemoContractServiceImpl implements DemoContractService {
@Resource
private SequenceApi sequenceApi;
@Resource
private BusinessFileApi businessFileApi;
@Override
public DemoContractRespVO createDemoContract(DemoContractSaveReqVO createReqVO) {
// 插入
@@ -93,4 +99,20 @@ public class DemoContractServiceImpl implements DemoContractService {
return demoContractMapper.selectPage(pageReqVO);
}
@Override
public List<BusinessFileWithUrlRespDTO> getContractFiles(Long contractId) {
if (contractId == null) {
return List.of();
}
BusinessFilePageReqDTO reqDTO = new BusinessFilePageReqDTO();
reqDTO.setBusinessId(contractId);
reqDTO.setPageNo(1);
reqDTO.setPageSize(100);
CommonResult<PageResult<BusinessFileWithUrlRespDTO>> result = businessFileApi.getBusinessFilePageWithUrl(reqDTO);
if (result == null || !result.isSuccess() || result.getData() == null) {
return List.of();
}
return result.getData().getList();
}
}