using Learun.Util;
using Learun.Workflow.Engine;
using System.Collections.Generic;
using Learun.Application.TwoDevelopment.LR_LGManager;
namespace Learun.Application.WorkFlow
{
///
/// 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架
/// Copyright (c) 2013-2018 上海力软信息技术有限公司
/// 创建人:力软-框架开发组
/// 日 期:2018.12.09
/// 描 述:流程进程
///
public interface NWFProcessIBLL
{
#region 获取数据
///
/// 获取流程进程实体
///
/// 主键
///
NWFProcessEntity GetEntity(string keyValue);
///
/// 获取流程信息列表
///
/// 分页参数
/// 查询条件
///
IEnumerable GetPageList(Pagination pagination, string queryJson);
IEnumerable GetUseCar(Pagination pagination, string queryJson);
IEnumerable GetLeaveStatistics(Pagination pagination, string queryJson);
IEnumerable GetTransceiver(Pagination pagination, string queryJson);
string GetFirstTaskByProcessId(string processId);
IEnumerable GetAllList();
LC_hetongEntity GetHTInfo(string keyValue);
///
/// 获取我的流程信息列表
///
/// 用户主键
/// 分页参数
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyPageList(string userId, Pagination pagination, string queryJson, string schemeCode = null);
///
/// 获取我的流程信息列表
///
/// 用户主键
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyPageList(string userId, string queryJson, string schemeCode = null);
///
/// 获取未处理任务列表
///
/// 用户信息
/// 翻页信息
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode = null);
///
/// 获取未处理任务列表
///
/// 用户信息
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyTaskPageList(UserInfo userInfo, string queryJson, string schemeCode = null);
///
/// 获取未处理任务列表
///
/// 用户信息
/// 分页参数
/// 查询条件
/// 流程模板编码
/// true获取批量审核任务
///
IEnumerable GetMyTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, bool isBatchAudit, string schemeCode = null);
///
/// 获取未处理任务列表
///
/// 用户信息
/// 查询条件
/// 流程模板编码
/// true获取批量审核任务
///
IEnumerable GetMyTaskPageList(UserInfo userInfo, string queryJson, bool isBatchAudit, string schemeCode = null);
///
/// 获取已处理任务列表
///
/// 用户信息
/// 翻页信息
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyFinishTaskPageList(UserInfo userInfo, Pagination pagination, string queryJson, string schemeCode = null);
///
/// 获取已处理任务列表
///
/// 用户信息
/// 查询条件
/// 流程模板编码
///
IEnumerable GetMyFinishTaskPageList(UserInfo userInfo, string queryJson, string schemeCode = null);
List GetDelegateProcess(string userId);
#endregion
#region 保存更新删除
///
/// 删除流程进程实体
///
/// 流程进程主键
void DeleteEntity(string processId);
#endregion
#region 流程表单数据统计
///
/// 用印申请流程表单统计
///
/// 分页参数
/// 查询条件
///
IEnumerable GetPageListOfyyspd(Pagination pagination, string queryJson);
///
/// 会议室申请流程表单统计
///
/// 分页参数
/// 查询条件
///
IEnumerable GetPageListOfmeeting(Pagination pagination, string queryJson);
///
/// 党委会党委专题会申请流程表单统计
///
/// 分页参数
/// 查询条件
///
IEnumerable GetPageListOfdwhsq(Pagination pagination, string queryJson);
#endregion
#region 流程API
///
/// 获取下一节点审核人
///
/// 流程模板code
/// 流程进程主键
/// 流程任务主键
/// 流程节点Id
/// 流程操作代码
/// 用户信息
///
Dictionary> GetNextAuditors(string code, string processId, string taskId, string nodeId, string operationCode, UserInfo userInfo);
///
/// 获取流程进程信息
///
/// 进程主键
/// 任务主键
/// 当前人员信息
///
NWFProcessDetailsModel GetProcessDetails(string processId, string taskId, UserInfo userInfo);
///
/// 获取子流程详细信息
///
/// 父流程进程主键
/// 父流程子流程发起主键
/// 子流程流程模板编码
/// 父流程发起子流程节点Id
/// 当前用户操作信息
///
NWFProcessDetailsModel GetChildProcessDetails(string processId, string taskId, string schemeCode, string nodeId, UserInfo userInfo);
///
/// 保存草稿
///
/// 流程进程主键
/// 流程模板编码
/// 当前操作人信息
void SaveDraft(string processId, string schemeCode, UserInfo userInfo);
///
/// 删除草稿
///
/// 流程进程主键
/// 当前用户操作信息
void DeleteDraft(string processId, UserInfo userInfo);
///
/// 创建流程
///
/// 流程模板编码
/// 流程进程主键
/// 标题
/// 流程等级
/// 下一节点审核人
/// 当前操作人信息
void CreateFlow(string schemeCode, string processId, string title, int level, string auditors, UserInfo userInfo);
///
/// 创建流程(子流程)
///
/// 流程模板编码
/// 流程进程主键
/// 当前操作人信息
void CreateChildFlow(string schemeCode, string processId, string parentProcessId, string parentTaskId, UserInfo userInfo);
///
/// 重新创建流程
///
/// 流程进程主键
/// 当前操作人信息
void AgainCreateFlow(string processId, UserInfo userInfo);
///
/// 审批流程
///
/// 流程审批操作码agree 同意 disagree 不同意 lrtimeout 超时
/// 流程审批操名称
/// 流程进程主键
/// 流程任务主键
/// 审批意见
/// 下一节点指定审核人
/// 当前操作人信息
void AuditFlow(string operationCode, string operationName, string processId, string taskId, string des, string auditors, string stamp, string signUrl, UserInfo userInfo);
///
/// 批量审核(只有同意和不同意)
///
/// 操作码
/// 任务id串
/// 当前操作人信息
void AuditFlows(string operationCode, string taskIds, UserInfo userInfo);
///
/// 流程加签
///
/// 流程进程主键
/// 流程任务主键
/// 加签人员
/// 加签说明
/// 当前操作人信息
void SignFlow(string processId, string taskId, string userId, string des, UserInfo userInfo);
///
/// 流程加签
///
/// 流程进程主键
/// 流程任务主键
/// 加签人员(可多人)
/// 加签说明
/// 当前操作人信息
void SignFlowTwo(string processId, string taskId, string userId, string des, UserInfo userInfo);
///
/// 流程加签审核
///
/// 审核操作码
/// 流程进程主键
/// 流程任务主键
/// 加签说明
/// 当前操作人信息
void SignAuditFlow(string operationCode, string processId, string taskId, string des, UserInfo userInfo);
///
/// 确认阅读
///
/// 流程进程主键
/// 流程任务主键
/// 当前操作人信息
void ReferFlow(string processId, string taskId, UserInfo userInfo);
///
/// 催办流程
///
/// 流程进程主键
/// 当前操作人信息
void UrgeFlow(string processId, UserInfo userInfo);
///
/// 撤销流程(只有在该流程未被处理的情况下)
///
/// 流程进程主键
/// 当前操作人信息
void RevokeFlow(string processId, UserInfo userInfo);
///
/// 撤销审核(只有在下一个节点未被处理的情况下才能执行)
///
/// 流程进程主键
/// 任务主键
/// 当前操作人信息
bool RevokeAudit(string processId, string taskId, UserInfo userInfo);
///
/// 流程任务超时处理
///
void MakeTaskTimeout();
///
/// 获取流程当前任务需要处理的人
///
/// 流程进程主键
///
IEnumerable GetTaskUserList(string processId);
///
/// 指派流程审核人
///
/// 任务列表
/// 当前操作人信息
void AppointUser(IEnumerable list, UserInfo userInfo);
///
/// 作废流程
///
/// 流程进程主键
/// 当前操作人信息
void DeleteFlow(string processId, UserInfo userInfo);
///
/// 给指定的流程添加审核节点
///
/// 流程实例ID
/// 开始节点
/// 结束节点(审核任务的节点)
void AddTask(string processId, string bNodeId, string eNodeId, UserInfo userInfo);
#endregion
#region 获取sql语句
///
/// 获取我的流程信息列表SQL语句
///
///
string GetMySql();
///
/// 获取我的代办任务列表SQL语句
///
/// 用户信息
/// true获取批量审核任务
///
string GetMyTaskSql(UserInfo userInfo, bool isBatchAudit = false);
///
/// 获取我的已办任务列表SQL语句
///
///
string GetMyFinishTaskSql();
#endregion
}
}