iwork 用印改动 未完成
This commit is contained in:
@@ -16,12 +16,13 @@ import com.zt.plat.module.bpm.api.task.BpmTaskApi;
|
||||
import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailReqDTO;
|
||||
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.template.controller.admin.contract.vo.DemoContractPageReqVO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractRespVO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractSaveReqVO;
|
||||
import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
|
||||
import com.zt.plat.module.system.api.permission.PermissionApi;
|
||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.*;
|
||||
import com.zt.plat.module.template.dal.dataobject.contract.DemoContractDO;
|
||||
import com.zt.plat.module.template.service.contract.DemoContractIWorkService;
|
||||
import com.zt.plat.module.template.service.contract.DemoContractService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@@ -67,6 +68,14 @@ public class DemoContractController extends AbstractFileUploadController impleme
|
||||
private BpmProcessInstanceApi bpmInsApi;
|
||||
@Resource
|
||||
private FileApi fileApi;
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
|
||||
@Resource
|
||||
private PermissionApi permissionApi;
|
||||
|
||||
@Resource
|
||||
private DemoContractIWorkService demoContractIWorkService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建合同")
|
||||
@@ -75,6 +84,13 @@ public class DemoContractController extends AbstractFileUploadController impleme
|
||||
return success(demoContractService.createDemoContract(createReqVO));
|
||||
}
|
||||
|
||||
@PostMapping("/iwork/create")
|
||||
@Operation(summary = "发起合同 iWork 用印")
|
||||
@PreAuthorize("@ss.hasPermission('template:demo-contract:create')")
|
||||
public CommonResult<IWorkOperationRespDTO> createIWorkWorkflow(@Valid @RequestBody DemoContractIWorkCreateReqVO reqVO) {
|
||||
return success(demoContractIWorkService.createWorkflow(reqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新合同")
|
||||
@PreAuthorize("@ss.hasPermission('template:demo-contract:update')")
|
||||
@@ -92,6 +108,13 @@ public class DemoContractController extends AbstractFileUploadController impleme
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@PostMapping("/iwork/void")
|
||||
@Operation(summary = "作废合同 iWork 用印")
|
||||
@PreAuthorize("@ss.hasPermission('template:demo-contract:update')")
|
||||
public CommonResult<IWorkOperationRespDTO> voidIWorkWorkflow(@Valid @RequestBody DemoContractIWorkVoidReqVO reqVO) {
|
||||
return success(demoContractIWorkService.voidWorkflow(reqVO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete-list")
|
||||
@Parameter(name = "ids", description = "编号", required = true)
|
||||
@Operation(summary = "批量删除合同")
|
||||
@@ -104,7 +127,6 @@ public class DemoContractController extends AbstractFileUploadController impleme
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得合同")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('template:demo-contract:query')")
|
||||
public CommonResult<DemoContractRespVO> getDemoContract(@RequestParam("id") Long id) {
|
||||
DemoContractDO demoContract = demoContractService.getDemoContract(id);
|
||||
return success(BeanUtils.toBean(demoContract, DemoContractRespVO.class));
|
||||
@@ -112,7 +134,6 @@ public class DemoContractController extends AbstractFileUploadController impleme
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得合同分页")
|
||||
@PreAuthorize("@ss.hasPermission('template:demo-contract:query')")
|
||||
public CommonResult<PageResult<DemoContractRespVO>> getDemoContractPage(@Valid DemoContractPageReqVO pageReqVO) {
|
||||
CommonResult<FileRespDTO> file = fileApi.getFile(1968928810422521857L);
|
||||
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.zt.plat.module.template.controller.admin.contract.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 发起合同 iWork 用印请求 VO
|
||||
*/
|
||||
@Data
|
||||
public class DemoContractIWorkCreateReqVO {
|
||||
|
||||
@Schema(description = "合同 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "10086")
|
||||
@NotNull(message = "合同 ID 不能为空")
|
||||
private Long contractId;
|
||||
|
||||
@Schema(description = "用印申请人(iWork 人员 ID)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "用印申请人不能为空")
|
||||
private String jbr;
|
||||
|
||||
@Schema(description = "用印部门 ID", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "用印部门不能为空")
|
||||
private String yybm;
|
||||
|
||||
@Schema(description = "用印单位(分部 ID)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "用印单位不能为空")
|
||||
private String fb;
|
||||
|
||||
@Schema(description = "申请时间,格式 yyyy-MM-dd", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "申请时间不能为空")
|
||||
private String sqsj;
|
||||
|
||||
@Schema(description = "用印去向")
|
||||
private String yyqx;
|
||||
|
||||
@Schema(description = "用印依据附件 URL")
|
||||
private String yyfkUrl;
|
||||
|
||||
@Schema(description = "用印事由或内容摘要", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "用印事由不能为空")
|
||||
private String yysy;
|
||||
|
||||
@Schema(description = "用印事项", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "用印事项不能为空")
|
||||
private String yysx;
|
||||
|
||||
@Schema(description = "业务系统单据编号(用于派生流程标题)")
|
||||
private String ywxtdjbh;
|
||||
|
||||
@Schema(description = "配置的 iWork 凭证 appId;为空时使用默认凭证")
|
||||
private String appId;
|
||||
|
||||
@Schema(description = "iWork 操作人用户编号")
|
||||
private String operatorUserId;
|
||||
|
||||
@Schema(description = "是否强制刷新 token")
|
||||
private Boolean forceRefreshToken;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.zt.plat.module.template.controller.admin.contract.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 作废 / 干预 iWork 用印流程请求 VO
|
||||
*/
|
||||
@Data
|
||||
public class DemoContractIWorkVoidReqVO {
|
||||
|
||||
@Schema(description = "流程请求编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotBlank(message = "流程请求编号不能为空")
|
||||
private String requestId;
|
||||
|
||||
@Schema(description = "作废原因")
|
||||
private String reason;
|
||||
|
||||
@Schema(description = "额外参数")
|
||||
private Map<String, Object> extraParams;
|
||||
|
||||
@Schema(description = "额外 Form 数据")
|
||||
private Map<String, String> formExtras;
|
||||
|
||||
@Schema(description = "配置的 iWork 凭证 appId;为空时使用默认凭证")
|
||||
private String appId;
|
||||
|
||||
@Schema(description = "iWork 操作人用户编号")
|
||||
private String operatorUserId;
|
||||
|
||||
@Schema(description = "是否强制刷新 token")
|
||||
private Boolean forceRefreshToken;
|
||||
}
|
||||
@@ -6,12 +6,17 @@ import com.zt.plat.module.infra.api.config.ConfigApi;
|
||||
import com.zt.plat.module.infra.api.file.FileApi;
|
||||
import com.zt.plat.module.infra.api.websocket.WebSocketSenderApi;
|
||||
import com.zt.plat.module.system.api.dept.DeptApi;
|
||||
import com.zt.plat.module.system.api.iwork.IWorkIntegrationApi;
|
||||
import com.zt.plat.module.system.api.permission.PermissionApi;
|
||||
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
||||
import com.zt.plat.module.system.api.sms.SmsSendApi;
|
||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration(value = "templateRpcConfiguration", proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, ConfigApi.class, DeptApi.class, SequenceApi.class, BpmTaskApi.class, BpmProcessInstanceApi.class, SmsSendApi.class})
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, FileApi.class, WebSocketSenderApi.class,
|
||||
ConfigApi.class, DeptApi.class, SequenceApi.class, BpmTaskApi.class, BpmProcessInstanceApi.class,
|
||||
SmsSendApi.class, PermissionApi.class, IWorkIntegrationApi.class})
|
||||
public class RpcConfiguration {
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.zt.plat.module.template.service.contract;
|
||||
|
||||
import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractIWorkCreateReqVO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractIWorkVoidReqVO;
|
||||
|
||||
/**
|
||||
* 合同 iWork 集成 Service
|
||||
*/
|
||||
public interface DemoContractIWorkService {
|
||||
|
||||
/**
|
||||
* 发起 iWork 用印流程
|
||||
*/
|
||||
IWorkOperationRespDTO createWorkflow(DemoContractIWorkCreateReqVO reqVO);
|
||||
|
||||
/**
|
||||
* 作废 / 干预 iWork 用印流程
|
||||
*/
|
||||
IWorkOperationRespDTO voidWorkflow(DemoContractIWorkVoidReqVO reqVO);
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package com.zt.plat.module.template.service.contract;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.zt.plat.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.system.api.iwork.IWorkIntegrationApi;
|
||||
import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
|
||||
import com.zt.plat.module.system.api.iwork.dto.IWorkWorkflowCreateReqDTO;
|
||||
import com.zt.plat.module.system.api.iwork.dto.IWorkWorkflowVoidReqDTO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractIWorkCreateReqVO;
|
||||
import com.zt.plat.module.template.controller.admin.contract.vo.DemoContractIWorkVoidReqVO;
|
||||
import com.zt.plat.module.template.dal.dataobject.contract.DemoContractDO;
|
||||
import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.zt.plat.module.template.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 合同 iWork 集成 Service 实现
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@Validated
|
||||
public class DemoContractIWorkServiceImpl implements DemoContractIWorkService {
|
||||
|
||||
private static final String BIZ_CALLBACK_KEY = "demo-contract-seal";
|
||||
|
||||
@Resource
|
||||
private DemoContractService demoContractService;
|
||||
|
||||
@Resource
|
||||
private IWorkIntegrationApi iWorkIntegrationApi;
|
||||
|
||||
@Override
|
||||
public IWorkOperationRespDTO createWorkflow(DemoContractIWorkCreateReqVO reqVO) {
|
||||
DemoContractDO contract = demoContractService.getDemoContract(reqVO.getContractId());
|
||||
if (contract == null) {
|
||||
throw exception(DEMO_CONTRACT_NOT_EXISTS);
|
||||
}
|
||||
if (StrUtil.isBlank(contract.getFileUrl())) {
|
||||
throw exception(DEMO_CONTRACT_FILE_URL_NOT_EXISTS);
|
||||
}
|
||||
|
||||
IWorkWorkflowCreateReqDTO reqDTO = BeanUtils.toBean(reqVO, IWorkWorkflowCreateReqDTO.class);
|
||||
reqDTO.setXyywjUrl(contract.getFileUrl());
|
||||
reqDTO.setBizCallbackKey(BIZ_CALLBACK_KEY);
|
||||
if (StrUtil.isBlank(reqDTO.getYwxtdjbh())) {
|
||||
reqDTO.setYwxtdjbh(contract.getCode());
|
||||
}
|
||||
|
||||
CommonResult<IWorkOperationRespDTO> result = iWorkIntegrationApi.createWorkflow(reqDTO);
|
||||
IWorkOperationRespDTO data = extractDataOrThrow(result, DEMO_CONTRACT_IWORK_CREATE_FAILED, "发起用印", reqVO.getContractId());
|
||||
Long requestId = data.getPayload() != null && data.getPayload().getData() != null
|
||||
? data.getPayload().getData().getRequestId() : null;
|
||||
log.info("[bizKey={}] 发起 iWork 用印成功,contractId={}, requestId={}, message={}",
|
||||
BIZ_CALLBACK_KEY, reqVO.getContractId(), requestId, data.getMessage());
|
||||
return data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IWorkOperationRespDTO voidWorkflow(DemoContractIWorkVoidReqVO reqVO) {
|
||||
IWorkWorkflowVoidReqDTO reqDTO = BeanUtils.toBean(reqVO, IWorkWorkflowVoidReqDTO.class);
|
||||
CommonResult<IWorkOperationRespDTO> result = iWorkIntegrationApi.voidWorkflow(reqDTO);
|
||||
IWorkOperationRespDTO data = extractDataOrThrow(result, DEMO_CONTRACT_IWORK_VOID_FAILED, "作废用印", null);
|
||||
Long requestId = data.getPayload() != null && data.getPayload().getData() != null
|
||||
? data.getPayload().getData().getRequestId() : null;
|
||||
log.info("[bizKey={}] 作废 iWork 用印成功,requestId={}, message={}",
|
||||
BIZ_CALLBACK_KEY, requestId != null ? requestId : reqVO.getRequestId(), data.getMessage());
|
||||
return data;
|
||||
}
|
||||
|
||||
private IWorkOperationRespDTO extractDataOrThrow(CommonResult<IWorkOperationRespDTO> result,
|
||||
com.zt.plat.framework.common.exception.ErrorCode errorCode,
|
||||
String action,
|
||||
Long contractId) {
|
||||
if (result == null) {
|
||||
log.warn("[bizKey={}] {}失败,contractId={},原因=响应为空", BIZ_CALLBACK_KEY, action, contractId);
|
||||
throw ServiceExceptionUtil.exception(errorCode, "响应为空");
|
||||
}
|
||||
if (result.isError() || result.getData() == null) {
|
||||
log.warn("[bizKey={}] {}失败,contractId={},code={},msg={}",
|
||||
BIZ_CALLBACK_KEY, action, contractId, result.getCode(), result.getMsg());
|
||||
throw ServiceExceptionUtil.exception(errorCode, result.getMsg());
|
||||
}
|
||||
return result.getData();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user