using System.Linq.Expressions;
using JNPF.Common.Models.WorkFlow;
using JNPF.Systems.Entitys.System;
using JNPF.VisualDev.Entitys;
using JNPF.WorkFlow.Entitys.Dto.FlowBefore;
using JNPF.WorkFlow.Entitys.Dto.FlowLaunch;
using JNPF.WorkFlow.Entitys.Dto.FlowMonitor;
using JNPF.WorkFlow.Entitys.Entity;
using JNPF.WorkFlow.Entitys.Model;
using SqlSugar;
namespace JNPF.WorkFlow.Interfaces.Repository;
public interface IFlowTaskRepository
{
#region 流程列表
///
/// 列表(流程监控).
///
/// 请求参数.
///
Task GetMonitorList(FlowMonitorListQuery input);
///
/// 列表(我发起的).
///
/// 请求参数.
///
Task GetLaunchList(FlowLaunchListQuery input);
///
/// 列表(待我审批).
///
/// 请求参数.
///
Task GetWaitList(FlowBeforeListQuery input);
///
/// 列表(批量审批).
///
/// 请求参数.
///
Task GetBatchWaitList(FlowBeforeListQuery input);
///
/// 列表(我已审批).
///
/// 请求参数
///
Task GetTrialList(FlowBeforeListQuery input);
///
/// 列表(抄送我的).
///
/// 请求参数.
///
Task GetCirculateList(FlowBeforeListQuery input);
///
/// 批量流程列表.
///
///
Task BatchFlowSelector();
///
/// 根据分类获取审批意见.
///
///
///
///
///
Task> GetRecordListByCategory(string taskId, string category, string type = "0");
#endregion
#region 其他模块流程列表
///
/// 门户列表(待我审批).
///
///
Task> GetWaitList();
///
/// 门户列表(待我审批).
///
///
Task GetPortalWaitList();
///
/// 列表(我已审批).
///
///
Task> GetTrialList();
#endregion
#region Other
///
/// 流程信息.
///
///
///
FlowJsonModel GetFlowTemplateInfo(string id);
///
/// 流程json信息.
///
///
///
FlowTemplateJsonEntity GetFlowTemplateJsonInfo(Expression> expression);
///
/// 表单信息.
///
///
///
Task GetFlowFromModel(string formId);
///
/// 表单信息.
///
///
///
public FlowFormEntity GetFlowFromEntity(string formId);
///
/// 流程信息.
///
///
///
Task GetEngineInfo(string id);
///
/// 任务信息.
///
///
///
FlowEngineEntity GetEngineFirstOrDefault(string id);
///
/// 获取指定用户被委托人.
///
/// 指定用户.
/// 流程id.
///
Task> GetDelegateUserIds(List userIds, string flowId);
///
/// 获取指定用户被委托人.
///
/// 指定用户.
/// 流程id.
///
List GetToUserId(string userId, string flowId);
///
/// 获取功能开发.
///
/// 流程id.
///
Task GetVisualDevInfo(string flowId);
///
/// 获取数据连接.
///
/// id.
///
Task GetLinkInfo(string id);
///
/// 获取任务发起人信息.
///
/// id.
///
FlowUserEntity GetFlowUserEntity(string id);
///
/// 新增任务发起人信息.
///
/// 用户id.
/// 任务id.
void CreateFlowUser(string userId, string taskId);
///
/// 获取当前用户关系id.
///
///
List GetCurrentUserObjId();
///
/// 是否为功能流程.
///
///
///
bool IsDevFlow(string flowId);
#endregion
#region FlowTask
///
/// 任务列表.
///
///
Task> GetTaskList();
///
/// 任务列表.
///
/// 引擎id.
///
Task> GetTaskList(string flowId);
///
/// 任务列表.
///
/// 条件.
///
Task> GetTaskList(Expression> expression);
///
/// 任务信息.
///
///
///
Task GetTaskInfo(string id);
///
/// 任务信息.
///
///
///
FlowTaskEntity GetTaskFirstOrDefault(string id);
///
/// 是否存在任务.
///
/// id
///
Task AnyFlowTask(Expression> expression);
///
/// 任务删除.
///
///
///
Task DeleteTask(FlowTaskEntity entity);
///
/// 任务删除, 非异步.
///
///
///
int DeleteTaskNoAwait(FlowTaskEntity entity, bool isDel = true);
///
/// 任务创建.
///
///
///
Task CreateTask(FlowTaskEntity entity);
///
/// 任务更新.
///
///
///
Task UpdateTask(FlowTaskEntity entity);
///
/// 任务更新.
///
///
///
Task UpdateTask(FlowTaskEntity entity, Expression> Expression = null);
///
/// 打回流程删除所有相关数据.
///
///
/// 是否清除记录.
///
Task DeleteFlowTaskAllData(string taskId, bool isClearRecord = true, bool isClearCandidates = true);
///
/// 打回流程删除所有相关数据.
///
/// 任务di数组.
/// 是否清除记录.
///
Task DeleteFlowTaskAllData(List taskIds, bool isClearRecord = true);
///
/// 删除子流程.
///
///
///
Task DeleteSubTask(FlowTaskEntity flowTaskEntity);
#endregion
#region FlowTaskNode
///
/// 节点列表.
///
///
///
Task> GetTaskNodeList(string taskId);
///
/// 节点列表.
///
///
///
///
///
Task> GetTaskNodeList(Expression> expression, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc);
///
/// 节点信息.
///
///
///
Task GetTaskNodeInfo(string id);
///
/// 节点信息.
///
///
///
Task GetTaskNodeInfo(Expression> expression);
///
/// 节点创建.
///
///
///
Task CreateTaskNode(List entitys);
///
/// 节点更新.
///
///
///
Task UpdateTaskNode(FlowTaskNodeEntity entity);
///
/// 节点更新.
///
///
///
Task UpdateTaskNode(List entitys);
#endregion
#region FlowTaskOperator
///
/// 经办列表.
///
///
///
Task> GetTaskOperatorList(string taskId);
///
/// 经办列表.
///
///
///
///
///
Task> GetTaskOperatorList(Expression> expression, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc);
///
/// 依次审批经办列表.
///
///
///
///
///
Task> GetTaskOperatorUserList(Expression> expression, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc);
///
/// 经办信息.
///
///
///
Task GetTaskOperatorInfo(string id);
///
/// 经办信息.
///
///
///
Task GetTaskOperatorInfo(Expression> expression);
///
/// 经办删除.
///
///
///
Task DeleteTaskOperator(List ids);
///
/// 依次经办删除.
///
///
///
Task DeleteTaskOperatorUser(string taskId);
///
/// 经办创建.
///
///
///
Task CreateTaskOperator(List entitys);
///
/// 依次经办创建.
///
///
///
Task CreateTaskOperatorUser(List entitys);
///
/// 经办创建.
///
///
///
Task CreateTaskOperator(FlowTaskOperatorEntity entity);
///
/// 经办更新.
///
///
///
Task UpdateTaskOperator(FlowTaskOperatorEntity entity);
///
/// 经办更新.
///
///
///
Task UpdateTaskOperator(List entitys);
///
/// 是否存在依次审批经办.
///
///
///
bool AnyTaskOperatorUser(Expression> expression);
#endregion
#region FlowTaskOperatorRecord
///
/// 经办记录列表.
///
///
///
Task> GetTaskOperatorRecordList(string taskId);
///
/// 经办记录列表.
///
///
///
///
///
Task> GetTaskOperatorRecordList(Expression> expression, Expression> orderByExpression = null, OrderByType orderByType = OrderByType.Asc);
///
/// 经办记录列表.
///
///
///
Task> GetTaskOperatorRecordModelList(string taskId);
///
/// 经办记录信息.
///
///
///
Task GetTaskOperatorRecordInfo(string id);
///
/// 经办记录信息.
///
/// 条件.
///
Task GetTaskOperatorRecordInfo(Expression> expression);
///
/// 经办记录创建.
///
///
///
Task CreateTaskOperatorRecord(FlowTaskOperatorRecordEntity entity);
///
/// 经办记录作废.
///
///
///
Task DeleteTaskOperatorRecord(List ids);
///
/// 经办记录作废.
///
///
///
Task DeleteTaskOperatorRecord(Expression> expression);
#endregion
#region FlowTaskCirculate
///
/// 传阅创建.
///
///
///
Task CreateTaskCirculate(List entitys);
#endregion
#region FlowTaskCandidates
///
/// 候选人创建.
///
///
void CreateFlowCandidates(List entitys);
///
/// 候选人删除.
///
///
void DeleteFlowCandidates(Expression> expression);
///
/// 候选人获取.
///
///
List GetFlowCandidates(string nodeId);
#endregion
#region 系统表单
Task GetSysTableFromService(string enCode, object data, string id, int type);
#endregion
#region FlowTaskParamter
///
/// 根据任务id获取任务引擎参数.
///
///
///
///
Task GetTaskParamterByTaskId(string taskId, FlowHandleModel flowHandleModel);
///
/// 根据节点id获取任务引擎参数.
///
///
///
///
Task GetTaskParamterByNodeId(string nodeId, FlowHandleModel flowHandleModel);
///
/// 根据经办id获取任务引擎参数.
///
///
///
///
Task GetTaskParamterByOperatorId(string operatorId, FlowHandleModel flowHandleModel);
#endregion
#region FlowRejectData
///
/// 驳回数据信息.
///
///
///
Task GetRejectDataInfo(string id);
///
/// 驳回数据创建.
///
///
///
///
Task CreateRejectData(string taskId, string taskNodeId);
///
/// 驳回数据重启.
///
///
///
Task UpdateRejectData(FlowRejectDataEntity entity);
#endregion
}