BpmRuntimeFeignClient.java 15.4 KB
package com.hotent.Feign;

import com.hotent.Feign.exception.BpmRuntimeFeignFallbackException;
import com.hotent.entity.AssignParamObject;
import com.hotent.entity.CommonResult;
import com.hotent.entity.DefaultBpmTask;
import com.hotent.entity.DoNextParamObject;
import com.hotent.entity.query.QueryFilter;
import com.hotent.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.Optional;

/**
 * @Author: Cola
 * @Date: 2021/08/20/11:16
 * @Description:
 **/

@FeignClient(name="${eip.feignClient.bpmRuntime:eip-bpm-runtime}",contextId = "api-manager-eip-bpm-runtime",fallbackFactory = BpmRuntimeFeignFallbackException.class)
public interface BpmRuntimeFeignClient {

    // 客户端启动流程
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/start", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public StartResult start(@RequestBody StartFlowParamObjectVo startFlowParamObjectVo)
            throws Exception;

    // 获取用户的待办事宜(对外接口)
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/getTodoList", method = RequestMethod.POST, produces = {"application/json; charset=utf-8"})
    public CommonResult getTodoList(@RequestBody QueryFilter<DefaultBpmTask> queryFilter) throws Exception;

    // 查询新建流程列表
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/newProcess", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public CommonResult newProcess(@RequestBody QueryFilter queryFilter)
            throws Exception;

    // 根据流程定义id或流程实例id或任务id或BPMN实例ID获取流程图
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getBpmImage", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public String getBpmImage(@RequestBody BpmImageParamObjectVo bpmImageParamObjectVo)
            throws Exception;

    // 处理任务
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/complete",method=RequestMethod.POST,produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> complete( @RequestBody DoNextParamObjectVo doNextParamObjectVo) throws Exception;

    // 流程审批历史(页面数据)
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/instanceFlowOpinions", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult opinionHistory(
             @RequestParam(value = "instId") Optional<String> instId,
             @RequestParam(value = "taskId") Optional<String> taskId,
             @RequestParam(value = "isCommu") Optional<Boolean> isCommu,
             @RequestParam(value = "isRelFlow") Optional<Boolean> isRelFlow,
             @RequestParam(value = "isRequest") Optional<Boolean> isRequest)
            throws Exception;

    // 获取用户的已办事宜
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getDoneList", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getDoneList(
            @RequestBody QueryFilter queryFilter,
            @RequestParam(required = false,value = "status") String status,
            @RequestParam(value = "isCheckRevoke")Optional<Boolean> isCheckRevoke) throws Exception;

    // 人工终止流程
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/doEndProcess", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> doEndProcess(@RequestBody DoEndParamObjectVo doEndParamObject) throws Exception;

    // 获取有权限的流程并将其按照分类名称进行分组
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getHasAuthFlowList", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getHasAuthFlowList( @RequestBody QueryFilter queryFilter)throws Exception;

    // 获取我的常用流程
    @RequestMapping(value = "/getMyOftenFlow",method = RequestMethod.GET)
    public CommonResult getMyOftenFlow() throws Exception;

    // 我的请求
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getMyRequestList", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getMyRequestList(@RequestBody QueryFilter queryFilter) throws Exception;

    // 查询我的请求列表
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/myRequest", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public CommonResult myRequest(@RequestBody QueryFilter queryFilter) throws Exception;

    // 获取用户的已办事宜,参数status表示流程状态,不填表示查询所有
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getDoneInstList", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getDoneInstList(@RequestBody QueryFilter queryFilter, @RequestParam(required = false,value = "status") String status) throws Exception;

    // 获取任务的详情
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/taskDetailBo",method=RequestMethod.GET,produces = {
            "application/json; charset=utf-8" })
    public CommonResult taskDetailBo( @RequestParam(value = "taskId") String taskId, @RequestParam(value = "reqParams") String reqParams,
                                      @RequestParam(required = false,value = "leaderId") Optional<String> leaderId) throws Exception;

    // 根据任务ID获取审批按钮
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getButtonsBytaskId",method=RequestMethod.GET,produces = {
            "application/json; charset=utf-8" })
    public CommonResult getButtonsBytaskId(@RequestParam(value = "taskId") String taskId,@RequestParam(value ="leaderId" ) Optional<String> leaderId) throws Exception;

    // 获取任务是否能锁定,返回当前任务的可操作状态:0:任务已经处理,1:可以锁定,2:不需要解锁 ,3:可以解锁,4,被其他人锁定,5:这种情况一般是管理员操作,所以不用出锁定按钮
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/canLock",method=RequestMethod.GET, produces = { "application/json; charset=utf-8" })
   public CommonResult canLock( @RequestParam(value = "taskId") String taskId,@RequestParam(value = "leaderId") Optional<String> leaderId) throws Exception;

    // 保存草稿
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/saveDraft",method=RequestMethod.POST,produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> saveDraft(@RequestBody DoNextParamObject doNextParamObject) throws Exception;

    // 删除草稿
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/removeDraftById", method = RequestMethod.DELETE, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> removeDraftById(@RequestParam(value = "ids") String ids) throws Exception;

    // 保存草稿
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/saveDraft", method = RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public StartResult saveDraft(@RequestBody StartFlowParamObjectVo startFlowParamObjectVo) throws Exception;

    // 获取流程实例的表单和数据
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getInstFormAndBO", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getInstFormAndBO(
             @RequestParam(value = "proInstId") Optional<String> proInstId,
             @RequestParam(value = "nodeId") Optional<String> nodeId,
             @RequestParam(value = "formId") Optional<String> formId,
             @RequestParam(value = "getStartForm") Optional<Boolean> getStartForm,
             @RequestParam(value = "includData") Optional<Boolean> includData)
            throws Exception;

    // 根据实例id撤回流程(撤销)
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/revokeInstance", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> revokeInstance(@RequestBody RevokeParamObjectVo revokeParamObjectVo) throws Exception;

    // 根据节点配置获取后续可跳转节点
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getAfterJumpNodes",method=RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public CommonResult getAfterJumpNodes(@RequestBody FlowManagerVo flowManagerVo ) throws Exception;

    // 根据流程实例ID终止流程
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/doEndProcessById", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
   public CommonResult<String> doEndProcessById( @RequestParam(value = "id") String id, @RequestParam(value = "reason") Optional<String> reason) throws Exception;

    // 任务转办
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/delegate", method = RequestMethod.POST, produces = {"application/json; charset=utf-8"})
    public CommonResult<String> delegate(@RequestBody AssignParamObject assignParamObject, @RequestParam(required = false,value = "leaderId")String leaderId) throws Exception;

    // 取回委托/转办流程
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/retrieveBpmTask", method = RequestMethod.GET, produces = {"application/json; charset=utf-8"})
    public CommonResult<String> retrieveBpmTask(@RequestParam(value = "taskId") String taskId);

    // 获取用户的已办事宜,参数status表示流程状态,不填表示查询所有
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getDoneInstCount", produces = {
            "application/json; charset=utf-8" },method = RequestMethod.POST)
    public CommonResult getDoneInstCount( @RequestBody QueryFilter queryFilter,@RequestParam(required = false,value = "status") String status) throws Exception;

    // 获取待办数目
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/getTodoCount", produces = {"application/json; charset=utf-8"},method = RequestMethod.POST)
    public CommonResult getTodoCount( @RequestBody QueryFilter queryFilter) throws Exception;

    // 获取待阅任务(知会任务)数量
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getNoticeDoneReadCount", produces = { "application/json; charset=utf-8" },method = RequestMethod.POST)
    public CommonResult getNoticeDoneReadCount(@RequestBody QueryFilter queryFilter) throws Exception;

    // 获取已阅任务(知会任务)
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getNoticeDoneReadList",method=RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public CommonResult getNoticeDoneReadList(@RequestBody QueryFilter queryFilter) throws Exception;

    // 获取待阅任务(知会任务)数量
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getNoticeTodoReadCount", produces = { "application/json; charset=utf-8" },method = RequestMethod.POST)
    public CommonResult getNoticeTodoReadCount(@RequestBody QueryFilter queryFilter) throws Exception;

    // 获取待阅任务(知会任务)
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getNoticeTodoReadList",method=RequestMethod.POST, produces = { "application/json; charset=utf-8" })
    public CommonResult getNoticeTodoReadList(@RequestBody QueryFilter queryFilter) throws Exception;

    // 批量处理任务
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/batchHandle", method = RequestMethod.POST, produces = {"application/json; charset=utf-8"})
    public CommonResult batchHandle(@RequestBody Map<String,String> requestMap) throws Exception;

    /**
     * 根据流程实例ID获取当前实例的所有节点和审批人
     * @param instId
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getExcutorNameByInstId", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
   public CommonResult getExcutorNameByInstId(@RequestParam(value = "instId") String instId) throws Exception;

    /**
     * 通过流程实例id取消挂起流程实例
     * @param instId 实例id
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/unForbiddenInstance", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
   public CommonResult<String> unForbiddenInstance(@RequestParam(value = "instId") String instId) throws Exception;

    /**
     * 通过流程实例id挂起流程实例
     * @param instId 实例id
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/forbiddenInstance", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> forbiddenInstance(@RequestParam(value = "instId") String instId) throws Exception;

    /**
     * 根据实例id获取实例对象
     * @param instId
     * @return 实例id
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getInstanceByInstId", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getInstanceByInstId(@RequestParam(value = "instId") String instId) throws Exception;

    /**
     * 通过businessKey获取运行实例
     * @param businessKey 业务主键
     * @param sysCode 业务系统编码
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/getInstancetByBizKeySysCode", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult getInstancetByBizKeySysCode(@RequestParam(value = "businessKey") String businessKey,@RequestParam(value = "sysCode") String sysCode) throws Exception;

    /**
     * 终止恢复
     * @param id 流程实例id
     * @param reason 终止原因
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/instance/v1/renewProcess", method = RequestMethod.GET, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> renewProcess(@RequestParam(value = "id") String id,@RequestParam(value = "reason") String reason) throws Exception;

    /**
     * 通过实例id获取任务列表
     * @param instId 实例id
     * @return
     * @throws Exception
     */
    @RequestMapping(value="/${openApi.prefix}/runtime/task/v1/getTasksByInstId",method=RequestMethod.GET,produces = {
            "application/json; charset=utf-8" })
    public CommonResult getTasksByInstId(@RequestParam(value = "instId") String instId) throws Exception;

    /**
     * 修改任务执行人
     * @param modifyExecutorsParamObjectVo 修改执行人对象
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/${openApi.prefix}/runtime/task/v1/setTaskExecutors", method = RequestMethod.POST, produces = {
            "application/json; charset=utf-8" })
    public CommonResult<String> setTaskExecutors(@RequestBody ModifyExecutorsParamObjectVo modifyExecutorsParamObjectVo)throws Exception;

}