c# 發起釘釘審批

發起審批前,要知道是發起審批的哪一個模板,需要模板的ID,下面是獲取方法:

在設計界面的URL裏面獲取。我是多個模板的ID統一保存到後臺的,所以有一個類

namespace ReviewOrderEntity
{
    public class ExaminnationEntity
    {
        private string _exa001;
        private string _exa002;

        /// <summary>
        /// 審批表單名
        /// </summary>
        public string EXA001
        {
            get
            {
                return _exa001;
            }

            set
            {
                _exa001 = value;
            }
        }

        /// <summary>
        /// 審批ID
        /// </summary>
        public string EXA002
        {
            get
            {
                return _exa002;
            }

            set
            {
                _exa002 = value;
            }
        }
    }
}

發起審批的結果怎樣,需要根據審批結果判斷是否成功

namespace DDHelper
{
    public class ApprovalResult
    {

        /// <summary>
        /// 接口開啓或關閉狀態
        /// </summary>
        public int ding_open_errcode
        {
            get;
            set;
        } = 0;

        /// <summary>
        /// 發送審批消息是否成功
        /// </summary>
        public bool is_success
        {
            get;
            set;
        } = false;

        /// <summary>
        /// 審批實例id
        /// </summary>
        public string process_instance_id
        {
            get;
            set;
        }

        /// <summary>
        /// 
        /// </summary>
        public string request_id
        {
            get;
            set;
        }

    }
}
 /// <summary>
        /// 消息送審,並得到送審的消息
        /// </summary>
        void getOrderForPara ( string accessToken )
        {
            try
            {
                if ( string . IsNullOrEmpty ( AppSetting . corpid ) )
                    return;
                if ( modelExa == null )
                    return;
                //獲取審批人、終審人等
                if ( getUserData ( ) == false )
                    return;

                appResult = new List<ApprovalResult> ( );

                //headerList  發起審批的表單實體
                foreach ( OrderHeaderEntity header in headerList )
                {
                    if ( header . PRO009 != null || header . PRO009 != string . Empty )
                    {

                        UserEntity user = userList . Find ( ( k ) =>
                        {
                            return k . DBB005 == header . PRO009;
                        } );

                        if ( user != null )
                        {
                                #region 送審
                                IDingTalkClient client = new DefaultDingTalkClient ( Urls . get_Examination_and_approval );
                                SmartworkBpmsProcessinstanceCreateRequest req = new SmartworkBpmsProcessinstanceCreateRequest ( );

                                //審批ID
                                req . AgentId = string . IsNullOrEmpty ( AppSetting . Approvers ) == true ? 0 : Convert . ToInt64 ( AppSetting . Approvers );
                                //審批表單ID
                                req . ProcessCode = modelExa . EXA002;
                                //發起人ID
                                req . OriginatorUserId = user . DBB001;
                                //發起人所在部門ID
                                req . DeptId = string . IsNullOrEmpty ( user . DBB003 ) == true ? 0 : Convert . ToInt64 ( user . DBB003 );
                                //審批人  多人用逗號隔開  按順序審批
                                req . Approvers = getUserForAppro ( header . PRO001 );

                                List<SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain> list = new List<SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain> ( );

                                //審批單頭內容
                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj1 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj1 . Name = "ERP單號";
                                obj1 . Value = header . PRO001;
                                list . Add ( obj1 );

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj2 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj2 . Name = "項目名稱";
                                obj2 . Value = header . PRO002;
                                list . Add ( obj2 );

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj3 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj3 . Name = "填表日期";
                                obj3 . Value = header . PRO003;
                                list . Add ( obj3 );


                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj4 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj4 . Name = "簽訂單位";
                                obj4 . Value = header . PRO004;
                                list . Add ( obj4 );

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj5 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj5 . Name = "申請人";
                                obj5 . Value = header . PRO005;
                                list . Add ( obj5 );

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj6 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj6 . Name = "備註";
                                obj6 . Value = header . PRO006;
                                list . Add ( obj6 );

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj7 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj7 . Name = "交貨日期";
                                obj7 . Value = header . PRO007;
                                list . Add ( obj7 );


                                object [ ] obj = new object [ bodyList . FindAll ( ( k ) =>
                                {
                                    return k . PRP001 == header . PRO001;
                                } ) . Count ];

                                int l = 0;
                                
                                //審批單身內容
                                foreach ( OrderBodyEntity body in bodyList . FindAll ( ( k ) =>
                                      {
                                          return k . PRP001 == header . PRO001;
                                      } ) )
                                {
                                    
                                    SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj9 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                    obj9 . Name = "生產設備名稱";
                                    obj9 . Value = body . PRP003;


                                    SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj10 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                    obj10 . Name = "型號";
                                    obj10 . Value = body . PRP004;

                                    SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj11 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                    obj11 . Name = "數量";
                                    obj11 . Value = body . PRP005 . ToString ( );

                                    SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj12 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                    obj12 . Name = "生產類型";
                                    obj12 . Value = body . PRP006;

                                    SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj13 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                    obj13 . Name = "方向";
                                    obj13 . Value = body . PRP007;

                                    obj [ l ] = new object [ ] { obj9 ,obj10 ,obj11 ,obj12 ,obj13 };
                                    l++;
                                }

                                SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj14 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj14 . Name = "序號:00";
                                obj14 . Value = FastJSON . JSON . ToJSON ( obj );
                                list . Add ( obj14 );

                                req . FormComponentValues_ = list;

                                SmartworkBpmsProcessinstanceCreateResponse rsp = client . Execute ( req ,accessToken );
                                ApprovalResult result = XmlUtil . ReadXmlToApprovalResult ( rsp . Body );
                                result . request_id = header . PRO001;
                                appResult . Add ( result );

                                #endregion
                            }
                        }
                    }
                }
            catch ( Exception ex )
            {
                Utility . LogHelper . WriteException ( "錯誤:" + ex . StackTrace + "警告:" + ex . Message ,ex );
                throw new Exception ( ex . Message );
            }
        }

注意:裏面

SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain obj1 = new SmartworkBpmsProcessinstanceCreateRequest . FormComponentValueVoDomain ( );
                                obj1 . Name = "ERP單號";
                                obj1 . Value = header . PRO001;
                                list . Add ( obj1 );

中的obj1 . Name = "ERP單號"; 就是你設計表單的欄位名子

      obj1 . Value = header . PRO001;是具體的值

到此處,釘釘送審就算完成了。後面就是根據回調函數,獲取審批結果,會寫數據庫單據狀態。由於本人學識有限,回調一直調試不通,所以通過循環獲取單據狀態的辦法完成此步驟,此處就不寫了,如果有詳細的說明博客,幫忙推薦,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章