获取流程实例所有驳回意见的示例代码

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

获取流程实例所有驳回意见的示例代码

需求说明: 用户需要在单据中显示所有驳回的审批意见。

二开分析: 虽然流程节点审核后可以反写审批意见到单据字段,但是只能反写到固定字段,所以只能看到最后一次的审批意见。

次之,反写审批意见不会触发单据的值更新,所以不能用配置实现。

二开时,尽量使用系统提供的函数来实现自己的功能,尽量不要直接读写数据库。

代码说明:

1. 根据formId和单据内码获取运行中的流程。


2. 根据流程实例Id获取审批路线,并筛选符合条件的记录。


3. 完整代码

[HotUpdate]
public class AuditDispositionPlugIn : AbstractBillPlugIn
{
    public override void BarItemClick(BarItemClickEventArgs e)
    {
        if (e.BarItemKey.EqualsIgnoreCase("btnDisposition"))
        {
            this.View.Model.SetValue("FNote", GetAllDisposition());
        }
    }
    /// <summary>
    /// 获取单据运行中的流程实例Id
    /// </summary>
    /// <param name="formId">单据FormId</param>
    /// <param name="keyValue">单据内码</param>
    /// <returns></returns>
    private string GetProcInstId(string formId, string keyValue)
    {
        string sql = @"select T0.FPROCINSTID from t_wf_pibimap T0 inner join T_WF_PROCINST T1 on T0.FPROCINSTID =T1.FPROCINSTID 
where (ISNULL(T1.FSTATUS,'0') not in ('1','4')) and T0.FOBJECTTYPEID=@FOBJECTTYPEID and T0.FKEYVALUE=@FKEYVALUE";
        return Kingdee.BOS.ServiceHelper.DBServiceHelper.ExecuteScalar<string>(this.Context, sql, string.Empty, new[] { new SqlParam("FOBJECTTYPEID", KDDbType.AnsiString, formId), new SqlParam("FKEYVALUE", KDDbType.AnsiString, keyValue) });
    }
private string GetAllDisposition()
    {
        StringBuilder str = new StringBuilder();
        string formId = this.View.BillBusinessInfo.GetForm().Id;
        string keyValue = ObjectUtils.Object2String(this.View.Model.GetPKValue());
        string procInstId = GetProcInstId(formId, keyValue);
        if (string.IsNullOrWhiteSpace(procInstId)) return string.Empty;
//获取审批路线
        var activityInfos = Kingdee.BOS.Workflow.ServiceHelper.WorkflowChartServiceHelper.GetProcessRouter(this.View.Context, procInstId);
        int rowIndex = 0;
        foreach (Kingdee.BOS.Workflow.Models.Chart.ChartActivityInfo activityDetail in activityInfos)
        {
            for (int j = 0; j < activityDetail.ActionDetails.Count; j++)
            {
                if (activityDetail.ActivityStateType != Kingdee.BOS.Workflow.Kernel.MapStateResult.Idled && !activityDetail.ActionDetails[j].IsCompleted)
                {
                    continue;//过滤不需要的数据
                }
                Kingdee.BOS.Workflow.Models.Chart.ChartActionInfo action = activityDetail.ActionDetails[j];
                if (action.ActionResultId == "Reject")
                {
                    str.AppendLine(action.DisPosition);
                }
            }
            rowIndex++;
        }
        return str.ToString();
    }
}


获取流程实例所有驳回意见的示例代码

需求说明: 用户需要在单据中显示所有驳回的审批意见。二开分析: 虽然流程节点审核后可以反写审批意见到单据字段,但是只能反写到固定字...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息