using System.Collections.Generic; using System.Threading.Tasks; using GxPress.Entity; using GxPress.Entity.WorkFlow; using GxPress.Entity.WorkFlowDto; using GxPress.Entity.WorkProcessDto; using GxPress.Request.App.Flow; using GxPress.Result.App.Flow; namespace GxPress.Service.Interface { public interface IFlowService : IService { Task DeleteAsync(int flowId); Task<int> AddAsync(FlowDto flow); Task<FlowDto> GetAsync(int flowId); Task<(string Title, List<string> Summaries)> GetFlowTitleAndSummaryAsync(User user, int processId, int flowId); Task<FlowResult> GetFlowResult(int flowId,int userId=0); Task<int> GetTodoCountAsync(int userId); Task<ListResult> ListAllAsync(int page, int perPage, int processId, string state, string startDate, string endDate); Task<ListResult> ListMyCheckingAsync(int userId, FlowListRequest request,string source=""); Task<ListResult> ListMyCheckedAsync(int userId, FlowListRequest request,string source=""); Task<ListResult> ListSubmittedCheckingAsync(int userId, FlowListRequest request,string source=""); Task<ListResult> ListSubmittedCheckedAsync(int userId, FlowListRequest request); Task<ListResult> ListCcUnreadAsync(int userId, FlowListRequest request); Task<ListResult> ListCcAllAsync(int userId, FlowListRequest request,string source=""); Task<IEnumerable<FlowTodo>> GetTodoListAsync(int userId, int page, int perPage, int processId); Task<List<ProcessNodeDto>> GetNodesAsync(FlowDto flow, List<ProcessNodeDto> nodes); Task NodeExecuteAsync(FlowDto flow, ProcessNodeDto node); Task CheckAsync(int todoId, bool isChecked, string message); Task TransferCheckAsync(int todoId, List<int> transferUserIds, string message, List<int> fileIds); Task<string> DownloadAsync(int flowId); Task<int> ReAddAsync(int flowId); /// <summary> /// 上会等待 /// </summary> /// <param name="flowId"></param> /// <param name="userId"></param> /// <returns></returns> Task<bool> ActionsWait(int flowId, int userId); /// <summary> /// 获取用户ID /// </summary> /// <param name="node"></param> /// <returns></returns> Task<List<int>> GetListUserAsync(ProcessNodeDto node); Task<bool> RemindAsync(int flowId, int userId); /// <summary> /// 工作流程条件判断 /// </summary> /// <param name="flow"></param> /// <returns></returns> Task NodeExecuteSwitchAsync(FlowDto flow, ProcessNodeDto processNode); Task<bool> AddInboxAsyc(FlowDto flow); } }