254 lines
12 KiB
C#
254 lines
12 KiB
C#
using Ewide.Core;
|
||
using Microsoft.Extensions.Localization;
|
||
using Newtonsoft.Json.Linq;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace RoadFlow.Data
|
||
{
|
||
public interface IFlowTask : IRoadFlowRepository<RoadFlow.Model.rf_flowtask>
|
||
{
|
||
// <summary>
|
||
/// 根据组ID查询列表
|
||
/// </summary>
|
||
/// <param name="groupId"></param>
|
||
/// <returns></returns>
|
||
List<Model.rf_flowtask> GetListByGroupId(string groupId);
|
||
/// <summary>
|
||
/// 得到获取动态步骤的任务实体
|
||
/// </summary>
|
||
/// <param name="groupId">组ID</param>
|
||
/// <param name="taskId">当前任务ID,如果为空,则返回的Model.FlowTask当前任务实体也为空</param>
|
||
/// <returns>(动态任务, 当前任务, 任务组List)</returns>
|
||
public (Model.rf_flowtask, Model.rf_flowtask, List<Model.rf_flowtask>) GetDynamicTask(string groupId, string? taskId = null);
|
||
/// <summary>
|
||
/// 判断人员是否可以打开任务
|
||
/// </summary>
|
||
/// <param name="userId"></param>
|
||
/// <returns>返回 -1表示不能打开 0任务为空 1任务处理人 2实例管理人</returns>
|
||
public int IsOpenTask(string userId, Model.rf_flowtask flowTaskModel, Model.FlowRun flowRunModel = null);
|
||
/// <summary>
|
||
/// 更新状态
|
||
/// </summary>
|
||
/// <param name="taskId">任务id</param>
|
||
/// <param name="status">状态</param>
|
||
/// <param name="executeType">处理类型 int.MinValue表示不更新</param>
|
||
/// <param name="openTime">打开时间 null表示不更新</param>
|
||
/// <returns></returns>
|
||
public int UpdateStatus(string taskId, int status, int executeType = int.MinValue, DateTime? openTime = null);
|
||
|
||
/// <summary>
|
||
/// 判断一个任务是否可以催办
|
||
/// </summary>
|
||
/// <param name="flowTask"></param>
|
||
/// <param name="isWithdraw">是否可以收回</param>
|
||
/// <returns>isWithdraw 是否可以收回</returns>
|
||
public bool IsHasten(string taskId, out bool isWithdraw);
|
||
|
||
/// <summary>
|
||
/// 得到当前任务的后续接收步骤选择HTML
|
||
/// </summary>
|
||
/// <param name="flowRunModel">流程运行时实体</param>
|
||
/// <param name="stepId">步骤ID</param>
|
||
/// <param name="groupId">组ID</param>
|
||
/// <param name="taskId">任务ID</param>
|
||
/// <param name="instanceId">实例ID</param>
|
||
/// <param name="userId">当前人员ID</param>
|
||
/// <param name="sendSteps">可以发送的步骤</param>
|
||
/// <param name="isFreeSend">是否是自由发送</param>
|
||
/// <param name="isMobile">是否是移动端</param>
|
||
/// <param name="groupTasks">组任务集合,为空则在方法中查询</param>
|
||
/// <param name="localizer">多语言包</param>
|
||
/// <returns>步骤选择html, 提醒信息, 可以发送的步骤集合</returns>
|
||
public (string html, string message, List<Model.FlowRunModel.Step> sendSteps) GetNextSteps(Model.FlowRun flowRunModel, Guid stepId, string groupId, string taskId, string instanceId, string userId, bool isFreeSend, bool isMobile = false, List<Model.rf_flowtask> groupTasks = null, IStringLocalizer localizer = null);
|
||
|
||
/// <summary>
|
||
/// 从字段值得到动态步骤
|
||
/// <para>字段值格式:{flowtype:0 流转类型0并且 1串行,runedit:0 是否运行时编辑,steps:[{name:'test1',members:'u_EB03262C-AB60-4BC6-A4C0-96E66A4229FE'},{name:'test2',members:'u_954DC69A-30FF-4484-9234-3C9272B6893F'}]}</para>
|
||
/// </summary>
|
||
/// <param name="flowRunModel"></param>
|
||
/// <param name="step"></param>
|
||
/// <param name="instanceId"></param>
|
||
/// <returns></returns>
|
||
public JObject GetDynamicStepFromFieldValue(Model.FlowRun flowRunModel, Model.FlowRunModel.Step step, string instanceId);
|
||
|
||
/// <summary>
|
||
/// 抄送任务
|
||
/// </summary>
|
||
/// <param name="currentTask">当前任务</param>
|
||
/// <param name="users">接收人</param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns>返回1表示成功,其它为错误信息</returns>
|
||
public string CopyFor(Model.rf_flowtask currentTask, List<SysUser> users, IStringLocalizer localizer = null);
|
||
/// <summary>
|
||
/// 征求意见
|
||
/// </summary>
|
||
/// <param name="currentTask"></param>
|
||
/// <param name="users"></param>
|
||
/// <param name="visibility">意见可见性 20自己可见 21流程参与人可见</param>
|
||
/// <param name="note">备注</param>
|
||
/// <returns></returns>
|
||
public string SolicitOpinion(Model.rf_flowtask currentTask, List<SysUser> users, int visibility, string note = "", IStringLocalizer localizer = null);
|
||
|
||
/// <summary>
|
||
/// 查询待办事项
|
||
/// </summary>
|
||
/// <param name="flowId"></param>
|
||
/// <param name="title"></param>
|
||
/// <param name="startDate"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <param name="isBatch">是否批量 0不是,1是</param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetWaitTask(int size, int number, string userId, string flowId, string title, string startDate, string endDate, string order, out int count, int isBatch = 0);
|
||
|
||
/// <summary>
|
||
/// 判断一个任务是否可以作废
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <returns></returns>
|
||
public bool IsDelete(string taskId, Model.FlowRun flowRunModel = null);
|
||
|
||
/// <summary>
|
||
/// 得到任务类型标题
|
||
/// </summary>
|
||
/// <param name="taskType">任务类型</param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns></returns>
|
||
public string GetTaskTypeTitle(int taskType, IStringLocalizer localizer = null);
|
||
/// <summary>
|
||
/// 查询已办事项
|
||
/// </summary>
|
||
/// <param name="flowId"></param>
|
||
/// <param name="title"></param>
|
||
/// <param name="startDate"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetCompletedTask(int size, int number, string userId, string flowId, string title, string startDate, string endDate, string order, out int count);
|
||
|
||
/// <summary>
|
||
/// 查询我发起的流程
|
||
/// </summary>
|
||
/// <param name="flowId"></param>
|
||
/// <param name="title"></param>
|
||
/// <param name="startDate"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <param name="status">""全部 "0"未完成 "1" 已完成</param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetMyStartList(int size, int number, string userId, string flowId, string title, string startDate, string endDate, string status, string order, out int count);
|
||
|
||
/// <summary>
|
||
/// 查询已委托事项
|
||
/// </summary>
|
||
/// <param name="flowId"></param>
|
||
/// <param name="title"></param>
|
||
/// <param name="startDate"></param>
|
||
/// <param name="endDate"></param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetEntrustTask(int size, int number, string userId, string flowId, string title, string startDate, string endDate, string order, out int count);
|
||
|
||
/// <summary>
|
||
/// 得到处理类别显示标题
|
||
/// </summary>
|
||
/// <param name="executeType"></param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns></returns>
|
||
public string GetExecuteTypeTitle(int executeType, IStringLocalizer localizer = null);
|
||
|
||
/// <summary>
|
||
/// 自动执行一个任务
|
||
/// </summary>
|
||
/// <param name="taskId"></param>
|
||
/// <param name="type">执行类型</param>
|
||
/// <param name="comment">处理意见</param>
|
||
/// <returns></returns>
|
||
public Model.FlowRunModel.ExecuteResult AutoSubmit(Guid taskId, string type = "submit", string comment = "");
|
||
/// <summary>
|
||
/// 删除
|
||
/// </summary>
|
||
/// <param name="flowTaskModels">任务实体</param>
|
||
/// <returns></returns>
|
||
public int DeleteByGroupId(string groupid);
|
||
/// <summary>
|
||
/// 更新任务
|
||
/// </summary>
|
||
/// <param name="removeTasks">要删除的列表</param>
|
||
/// <param name="updateTasks">要更新的列表</param>
|
||
/// <param name="addTasks">要添加的列表</param>
|
||
/// <param name="executeSqls">要执行的sql列表(sql,参数,0提交退回前 1提交退回后)</param>
|
||
/// <returns></returns>
|
||
public int Update(List<Model.rf_flowtask> removeTasks, List<Model.rf_flowtask> updateTasks, List<Model.rf_flowtask> addTasks, List<(string, object[], int)> executeSqls);
|
||
|
||
/// <summary>
|
||
/// 发送待办消息
|
||
/// </summary>
|
||
/// <param name="nextTasks"></param>
|
||
/// <param name="sender"></param>
|
||
/// <param name="sendModel">发送方式 0站内短信 1手机短信 2微信 3公众号 4邮件</param>
|
||
/// <param name="contents">消息内容</param>
|
||
public void SendMessage(List<Model.rf_flowtask> nextTasks, SysUser sender, string sendModel = "", string contents = "", IStringLocalizer localizer = null);
|
||
|
||
/// <summary>
|
||
/// 判断人员是否可以查看处理过程
|
||
/// </summary>
|
||
/// <param name="userId"></param>
|
||
/// <param name="groupTasks">组任务列表</param>
|
||
/// <returns>返回 -1表示不能打开 1任务参与人 2实例管理人</returns>
|
||
public int IsOpenProcess(string userId, List<Model.rf_flowtask> groupTasks, Model.FlowRun flowRunModel = null);
|
||
/// <summary>
|
||
/// 得到步骤由流程处理人设置的后续步骤处理人员
|
||
/// </summary>
|
||
/// <param name="groupTasks">实例组列表</param>
|
||
/// <returns></returns>
|
||
public Dictionary<Guid, string> GetNextStepsHandle(List<Model.rf_flowtask> groupTasks);
|
||
/// <summary>
|
||
/// 根据子流程组ID查询主流程任务
|
||
/// </summary>
|
||
/// <param name="groupId"></param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetListBySubFlowGroupId(string groupId);
|
||
/// <summary>
|
||
/// 查询实例列表
|
||
/// </summary>
|
||
/// <param name="size"></param>
|
||
/// <param name="number"></param>
|
||
/// <param name="flowId"></param>
|
||
/// <param name="title"></param>
|
||
/// <param name="receiveId"></param>
|
||
/// <param name="receiveDate1"></param>
|
||
/// <param name="receiveDate2"></param>
|
||
/// <param name="order"></param>
|
||
/// <param name="count"></param>
|
||
/// <returns></returns>
|
||
public List<Model.rf_flowtask> GetInstanceList(int size, int number, string flowId, string title, string receiveId, string receiveDate1, string receiveDate2, string order, out int count);
|
||
|
||
/// <summary>
|
||
/// 指派任务
|
||
/// </summary>
|
||
/// <param name="currentTask">当前任务</param>
|
||
/// <param name="users">要指派的人员</param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns>返回1表示成功,其它为错误信息</returns>
|
||
public string Designate(Model.rf_flowtask currentTask, List<SysUser> users, IStringLocalizer localizer = null);
|
||
/// <summary>
|
||
/// 跳转任务
|
||
/// </summary>
|
||
/// <param name="currentTask">当前任务</param>
|
||
/// <param name="steps">要跳转到的步骤</param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns>返回1表示成功,其它为错误信息</returns>
|
||
public string GoTo(Model.rf_flowtask currentTask, Dictionary<Guid, List<SysUser>> steps, IStringLocalizer localizer = null);
|
||
/// <summary>
|
||
/// 根据JSON字符串参数执行流程
|
||
/// </summary>
|
||
/// <param name="json">
|
||
/// <para>{id:'任务id',flowId:'流程ID',instanceId:'实例id',title:'任务标题',comment:'处理意见',type:'处理类型',note:'备注',</para>
|
||
/// <para> senderId:'发送人id',sign:'是否签章 0|1',steps:[{id:'接收步骤id',name:'接收步骤名称',member:'接收人',completedtime:'要求完成时间'}]}</para>
|
||
/// </param>
|
||
/// <param name="localizer">语言包</param>
|
||
/// <returns></returns>
|
||
public Model.FlowRunModel.ExecuteResult ExecuteFromJSON(string json, IStringLocalizer localizer = null);
|
||
}
|
||
} |