Files
number_zj/20220330_Vote/Ewide.RoadFlow/Data/FlowTask/IFlowTask.cs
2022-03-30 17:54:33 +08:00

254 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}