using APT.BaseData.Domain.Entities;
using APT.Infrastructure.Core;
using APT.Infrastructure.Api;
using APT.BaseData.Domain.ApiModel.PF;
using System;
using System.Linq.Expressions;
using System.Collections.Generic;
using APT.BaseData.Domain.Entities.FM;
namespace APT.BaseData.Domain.IServices.FM
{
public interface IFMFlowPermitService : ICommonService
{
///
/// 审核后执行动作
///
/// 送审单ID
/// 当前审批执行的动作
void AfterPermit(string id, int flowPermitStatus);
///
/// 審批流數據保存
///
/// 審批流程
bool UpdateApprove(T_PF_APPROVE model, Action action, Guid? APPROVE_ID = null);
///
/// 審批流驳回申请人
///
/// 審批流程
bool RejectApprove(Guid id, bool is_send_message, Action action);
///
/// 发布审批流 wyw 添加自定义条件
///
/// 表单id
bool SendApprove(Guid id, Action action, Expression> expression = null, bool isShowCode = true, string approveTaskName = "");
///
/// 发布审批流
///
/// 审批流编号
/// 审批流模板配置中的编号(例:PF001)
/// 审批流模板配置中的自定义参数
/// 审批流对应主表ID(DATA_ID)
/// 审批流对应 APPROVE_CODE(例:FO017_SHOWPRINT)审批流页面对应名称
/// 待办ID(传入需要结束的待办ID)
/// 是否需要发送通知
///
/// 审批流ID(主表如果有存传值进来 )
/// 审批用户(主表如果有存传值进来 )
/// 自定义审批流程人员信息
/// 自定义审批流程人员部门信息
/// 审批流名称
///
void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? BSOperateEnum = null, Guid? DATA_ID_LOG = null, Guid? DATA_ID_SUB = null, DateTime? dtTaskEnd = null, List listDataIdSub = null, int? nextBSOperateEnum = null);
///
/// 发布审批流
///
/// 审批流编号
/// 审批流模板配置中的编号(例:PF001)
/// 审批流对应主表ID(DATA_ID)
/// 审批流对应 APPROVE_CODE(例:FO017_SHOWPRINT)点击时页面跳转配置项
/// 待办ID(传入需要结束的待办ID)
/// 是否需要发送通知
///
/// 审批流模板配置中的自定义参数
/// 审批流ID(主表如果有存传值进来 )
/// 审批用户(主表如果有存传值进来 )
///
void InsertApprove(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null);
///
/// 发布审批流 隐患上报
///
/// 审批流编号
/// 审批流模板配置中的编号(例:PF001)
/// 审批流对应主表ID(DATA_ID)
/// 审批流对应 APPROVE_CODE(例:FO017_SHOWPRINT)点击时页面跳转配置项
/// 待办ID(传入需要结束的待办ID)
/// 是否需要发送通知
///
/// 审批流模板配置中的自定义参数
/// 审批流ID(主表如果有存传值进来 )
/// 审批用户(主表如果有存传值进来 )
///
void InsertApproveRisk(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List ListDepIDNone = null, Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? RiskID = null, List listLevel = null, Dictionary> dicLevelSubID = null);
///
/// 获取 审批流信息
///
/// 审批流配置ID
/// 审批流配置参数
/// 审批数据ID
/// 审批流对应显示跳转页面
/// 需要结束的待办ID
/// 待办结束对应结束表单编号
/// 审批流编码(不传就按时间生成)
/// 审批人员
/// 预设审批流ID
/// 审批流名称
/// 返回提示信息
/// 结束的待办
/// 审批待办
/// 是否审批直接结束 如果是则无脑调用公共方法
/// 审批流结束时间获取方式
///
T_PF_APPROVE GetApproveInfo(string approveSetCode, string param, Guid DATA_ID, string approveShowCode, Guid? finishTaskId, string taskEndSourceFormCode, string approveCode, Dictionary dicApproveUser, Guid? approveId, string approveTaskName, ref string Msg, ref T_FM_NOTIFICATION_TASK finishTask, ref T_FM_NOTIFICATION_TASK nextTask, ref string CALLBACK_INTERFACE, ref List listDATA_ID, Enums.FMTASKTYPE? TASK_TYPE = Enums.FMTASKTYPE.Default);
//#region 审批流回调接口
//#region BS
/////
///// 隐患上报 审核通过 给每个通知负责人发送通知
/////
/////
/////
//bool Notice(string id);
//#endregion
//#endregion
}
}