使用说明

使用说明

  1. 审批扩展写在 [表Service.cs]Audit 中。

审批

/// <summary>
/// 审批
/// </summary>
/// <param name="keys"></param>
/// <param name="auditStatus"></param>
/// <param name="auditReason"></param>
/// <returns></returns>

public override WebResponseContent Audit(object[] keys, int? auditStatus, string auditReason)
{
    WebResponseContent webResponse = new WebResponseContent();
    //status当前审批状态,lastAudit是否最后一个审批节点
    AuditWorkFlowExecuting = (表 order, AuditStatus status, bool lastAudit) =>
    {
        //1.获取当前数据完整的审批信息
        // Sys_WorkFlowTable flow = order.GetTableWorkflow();
        // //所有审批节点信息
        // var steps= flow.Sys_WorkFlowTableStep;

        // //2.获取正在审批的节点信息
        // List<Sys_WorkFlowTableStep> steps1= order.GetTableCurrentFlowStep();

        // //3.获取上一个审批节点信息
        // List<Sys_WorkFlowTableStep> steps2 = order.GetTablePreFlowStep();

        // //4.获取下一个审批节点信息
        // List<Sys_WorkFlowTableStep> steps3 = order.GetTablePreFlowStep();

        return webResponse.OK();
    };
    //status当前审批状态,nextUserIds下一个节点审批人的帐号id(可以从sys_user表中查询用户具体信息)
    //lastAudit是否最后一个审批节点
    AuditWorkFlowExecuted = (表 order, AuditStatus status,
        List<int> nextUserIds, bool lastAudit) =>
    {
        //获取审批节点信息看上面[AuditWorkFlowExecuting]

        //lastAudit=true时,流程已经结束
        if (!lastAudit)
        {
            //这里可以给下一批审批发送邮件通知
            //var userInfo = repository.DbContext.Set<Sys_User>()
            //.Where(x => nextUserIds.Contains(x.User_Id))
            //.Select(s => new { s.User_Id, s.UserTrueName, s.Email, s.PhoneNo }).ToList();
        }

        //审批流程回退功能,回到第一个审批人重新审批(重新生成审批流程)
        //if (status==AuditStatus.审批未通过||status==AuditStatus.驳回)
        //{
        //    base.RewriteFlow(order);
        //}
        return webResponse.OK();
    };
    return base.Audit(keys, auditStatus, auditReason);
}

审批(异步 async)

/// <summary>
/// 审批异步
/// </summary>
/// <param name="keys"></param>
/// <param name="auditStatus"></param>
/// <param name="auditReason"></param>
/// <returns></returns>
public override async Task<WebResponseContent> AuditAsync(object[] keys, 
   int? auditStatus, string auditReason)
{
    WebResponseContent webResponse = new WebResponseContent();

    //审批流程审批前异步,配置同上Audit方法AuditWorkFlowExecuting
    AuditWorkFlowExecutingAsync = async (表 order, AuditStatus status, bool lastAudit) =>
    {
        //await xxx异步操作
        return webResponse.OK();
    };

    //审批流程审批后,参数配置获取同上Audit方法
    //status当前审批状态,nextUserIds下一个节点审批人的帐号id(可以从sys_user表中查询用户具体信息)
    //lastAudit是否最后一个审批节点
    AuditWorkFlowExecuted = (表 order, AuditStatus status,
      List<int> nextUserIds, bool lastAudit) =>
    {
        return webResponse.OK();
    };
    //审批流程审批后异步,配置同上AuditWorkFlowExecuted
    AuditWorkFlowExecutedAsync = async (表 order, AuditStatus status, 
      List<int> nextUserIds, bool lastAudit) =>
    {
        //await xxx异步操作
        return webResponse.OK();
    };

    //审批保存前处理(不是审批流程)
    //AuditOnExecuting = (List<表> order) =>
    //{
    //    return webResponse.OK();
    //};
    ////审批后处理(不是审批流程)
    //AuditOnExecuted = (List<表> order) =>
    //{
    //    return webResponse.OK();
    //};

    return await base.AuditAsync(keys, auditStatus, auditReason);
}
Last Updated 2026/5/12 17:18:25