using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EMIS.ViewModel.SystemView;
using Bowin.Common.Linq.Entity;
using System.Linq.Expressions;
using EMIS.Entities;
using EMIS.ViewModel.WorkflowManage;
namespace EMIS.CommonLogic.SystemServices
{
public interface IWorkflowServices
{
///
/// 查询对应的接入流程表开始流程环节的Pid(对应的流程环节Pid)
///
///
///
int? GetStartStatus(string tableName);
///
/// 查询对应的接入流程表已退回流程环节Pid(注:不包含开始环节、结束环节且为[BP]标识)
///
///
///
int? GetSendBackStatus(string tableName);
///
/// 查询对应的接入流程表已通过流程环节Pid(注:不包含开始环节、结束环节且为[PASS]标识)
///
///
///
int? GetPassNoEndStatus(string tableName);
///
/// 查询对应的结束流程环节Pid
///
///
///
List GetEndStatus(string tableName);
///
/// 查询对应的接入流程表结束流程环节且正常结束的流程环节Pid(注:结束环节且不为[BP]标识的)
///
///
///
int? GetCorrectEndStatus(string tableName);
///
/// 查询对应的接入流程表非正常结束的流程环节Pid(注:通常为结束环节且为[BP]标识的)
///
///
///
List GetBackpointStatus(string tableName);
///
/// 查询对应的接入流程表中开始环节、审核流程环节Pid(注:不包含结束、非正常[BP]结束环节)
///
///
///
List GetStartApproveStatusList(string tableName);
///
/// 查询对应的接入流程表中全部流程环节信息(WorkflowStatusView)
///
/// 主表表名
///
List GetStatusViewList(string tableName);
///
/// 查询对应的接入流程表中审核流程环节信息(WorkflowStatusView,不包含开始、结束、非正常[BP]结束环节)
///
/// 主表表名
///
List GetApproveStatusViewList(string tableName);
///
/// 查询重录待审,重新录入环节Pid(用于期末设定学生名单背景颜色)
///
///
///
List GetRebutStatus(string tableName);
///
/// 查询对应的接入流程表中全部非开始流程环节信息(WorkflowStatusView,不包含开始环节)
///
/// 主表表名
///
List GetNoStartStatusViewList(string tableName);
///
/// 查询对应的接入流程表中全部结束流程环节信息
///
///
///
List GetEndStatusViewList(string tableName);
///
/// 查询工作流程中是否有对应的操作权限——动作(根据对应的信息-处理人、处理人标识)
///
/// 主表表名
/// 用户ID
/// 审核动作ID(路由ID)
/// 表单ID列表
/// 获取数据范围用户的方法
///
bool IsCanApprove(string tableName, Guid userID, Guid actionID, List formIDs, Func, Guid, bool> dataRangeUserFunc = null);
///
/// 查询工作流程中是否有对应的操作权限——动作(根据对应的信息-处理人、处理人标识)
///
/// 主表表名
/// 用户ID
/// 审核动作ID(路由ID)
/// 表单ID列表
/// 获取数据范围用户的方法
///
List IsCanApprove(string tableName, Guid userID, List formIDs);
///
/// 重载方法,启动对应的流程并执行指定的动作至下一环节(提交),适用于开始节点有两个以上动作时
///
/// 主表表名
/// 需要提交的记录主键ID
/// 提交人ID
/// 动作ID
/// 提交意见
/// 获取数据范围用户的方法
void StartUp(string tableName, Guid formID, Guid userID, Guid actionID, string comment = "", Func, Guid, bool> dataRangeUserFunc = null);
///
/// 启动对应的流程并执行指定的动作至下一环节(提交)
///
/// 主表表名
/// 需要提交的记录主键ID
/// 提交人ID
/// 提交意见
/// 获取数据范围用户的方法
void StartUp(string tableName, Guid formID, Guid userID, string comment = "", Func, Guid, bool> dataRangeUserFunc = null);
///
///
///
///
///
///
///
///
void BatchStartUp(string tableName, List formIDList, Guid userID, string comment, Func, Guid, bool> dataRangeUserFunc = null);
///
/// 审核流程(不包括提交——不包含流程启动)
///
/// 主表表名
/// 需要审核的记录主键ID
/// 审核人ID
/// 审核动作ID
/// 提交意见
/// 获取数据范围用户的方法
void Approve(string tableName, Guid formID, Guid userID, Guid actionID, string comment = "", Func, Guid, bool> dataRangeUserFunc = null);
///
///
///
///
///
///
///
///
///
void BatchApprove(string tableName, List formIDList, Guid userID, Guid actionID, string comment = "", Func, Guid, bool> dataRangeUserFunc = null);
///
/// 工作流流程状态修改(通常用于取消申请、撤销等环节)
///
/// 主表表名
/// 表单ID
/// 状态:A为活动,D为结束、其他的自己定义
/// 描述改变内容
void ModifyProcessState(string tableName, Guid formID, string status, string description);
///
/// 根据当前流程环节ID获取下一步审批动作
///
/// 主表表名
/// 表单ID
/// 当前用户ID
///
List GetActionView(string tableName, Guid formID, Guid userID);
///
/// 重载方法,根据当前流程环节ID获取全部审批动作
///
/// 主表表名
///
List GetActionView(string tableName);
///
/// 查询开始流程环节的动作列表List
///
/// 主表表名
///
List GetStartActionView(string tableName);
///
/// 查询对应的审核历史信息列表List(WorkflowApproveHistoryView)
///
/// 主表表名
/// 需要获取的记录主键ID
///
IList GetApproveHistoryViewList(string tableName, Guid formID);
///
/// 获取待办列表
///
///
/// 主表表名
/// 查询视图,指定一个IQueryable决定如何获取表单记录
/// 待办用户ID
/// 指定主键列
/// 页码
/// 每页行数
///
IGridResultSet QueryByPendingJob(string tableName, IQueryable query, Guid userID,
Expression> pkSelector, Expression> orderby, bool isDescending = false,
int? pageIndex = null, int? pageSize = null);
}
}