C# 钉钉在C/S架构的软件中发起审批.

这篇博客介绍了如何在C/S架构的软件中利用C#编程语言调用钉钉API来发起审批流程。通过示例代码展示了如何初始化DingTalkClient并调用特定接口创建审批实例。

///
/// 第三方应用发起审批
///
///
public static void GetBillList()
{
DefaultDingTalkClient client = new DefaultDingTalkClient(“https://oapi.dingtalk.com/topapi/processinstance/create”);

        OapiProcessinstanceCreateRequest req = new OapiProcessinstanceCreateRequest();

        //IDingTalkClient client = new DefaultDingTalkClient("https://eco.taobao.com/router/rest");
        //SmartworkBpmsProcessinstanceCreateRequest req = new SmartworkBpmsProcessinstanceCreateRequest();
        //req.AgentId = 41605932L;//企业应用标识(ISV调用必须设置)
        req.ProcessCode = "PROC-UICK1E8W-R3VU0XSPTHABXAH1MQUT1-PSF52RGJ-3";//审批流的唯一码,process_code就在审批流编辑的页面URL中
        
        req.OriginatorUserId ="XXXX" ;// 发起人
        req.DeptId = XXX;//发起人所在的部门,如果发起人属于根部门,传-1
        //req.Approvers = "XXX";//审批人userid列表/最大列表长度:20。多个审批人用逗号分隔,dd_test,04053165015318
        //req.CcList = "XX";//抄送人userid列表,最大列表长度:20。多个抄送人用逗号分隔dd_test
        //req.CcPosition = "START";//抄送时间,分为(START, FINISH, START_FINISH)

        //List<SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain> formComponentValues=new List<SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain>();

        List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain> formComponentValues = new List<OapiProcessinstanceCreateRequest.FormComponentValueVoDomain>();

        //SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain vo1;
        //vo1 = new SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain();
        //formComponentValues.Add(vo1);
        //vo1.Name="订单编号";
        //vo1.Value = "ES1904G001234";
        //vo1 = new SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain();


        OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo1 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
        vo1.Name = "订单编号";
        vo1.Value = "ES1904G001234";


        OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo2 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
        vo2.Name = "业务员";
        vo2.Value = "张三";


        OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo3 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
        vo3.Name = "客户编号";
        vo3.Value = "G.GD.001";



        OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo4 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
        vo4.Name = "客户名称";
        vo4.Value = "于一";



        DataTable dtSoure = new DataTable();
        dtSoure.Columns.AddRange(new DataColumn[]
        {
            new DataColumn("商品编码",typeof(string)),
            new DataColumn("数量",typeof(decimal)),
            new DataColumn("单价",typeof(decimal)),
            new DataColumn("金额",typeof(decimal))
        });
        DataRow dr;
        for (int i = 0; i < 1; i++)
        {
            dr = dtSoure.NewRow();
            dr[0] = "3.1.2032-" + i.ToString();
            dr[1] = 2000 * (i + 1);
            dr[2] = 0.23 * (i + 1);
            dr[3] = 2000 * (i + 1) * 0.23 * (i + 1);
            dtSoure.Rows.Add(dr);
        }

        int r = dtSoure.Rows.Count;

        DataTable dt = new DataTable();
        dt.Columns.AddRange(new DataColumn[] { new DataColumn("name", typeof(string)), new DataColumn("value", typeof(string)) });
        DataRow dataRow;
        foreach (DataRow row in dtSoure.Rows)
        {
            for (int i = 0; i < dtSoure.Columns.Count; i++)
            {
                dataRow = dt.NewRow();
                dataRow[0] = dtSoure.Columns[i].ColumnName;
                dataRow[1] = row[i];
                dt.Rows.Add(dataRow);
            }

        }




        OapiProcessinstanceCreateRequest.FormComponentValueVoDomain vo5 = new OapiProcessinstanceCreateRequest.FormComponentValueVoDomain();
      
        vo5.Name = "明细";
        string billEntry = JsonConvert.SerializeObject(dt);
       
        int count = 0;
        for (int j = 0; j < dtSoure.Rows.Count; j++)
        {
            int index = billEntry.IndexOf(",", count);
            for (int i = 1; i < dtSoure.Columns.Count * 2; i++)
            {
                index = billEntry.IndexOf(",", index + i);
                count = index;

            }
      
            if (index != -1)//加入这个判断,不然会报错
            {
                billEntry = string.Format("{0}],[{1}", billEntry.Substring(0, index), billEntry.Substring(index + 1, billEntry.Length - index - 1));
                count += 2;
            }

        }
        




       

        vo5.Value = string.Format("[{0}]", billEntry);
        Console.WriteLine(vo5.Value);
        formComponentValues.Add(vo1);

        formComponentValues.Add(vo2);

        formComponentValues.Add(vo3);

        formComponentValues.Add(vo4);

        formComponentValues.Add(vo5);

        //foreach (SmartworkBpmsProcessinstanceCreateRequest.FormComponentValueVoDomain item in formComponentValues)
        //{
        //    Console.WriteLine(string.Format("{0}:{1}", item.Name, item.Value));
        //}

        string accessToken = Access_Token.UpdateAccessToken(CorpID, CorpSecret);

        req.FormComponentValues_ = formComponentValues;

        OapiProcessinstanceCreateResponse response = client.Execute(req, accessToken);

        //SmartworkBpmsProcessinstanceCreateResponse rsp = client.Execute(req, accessToken);
        MessageBox.Show(string.Format("errcode:{0}", response.Body));
        Console.WriteLine(response.Body);
    }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值