///
/// 第三方应用发起审批
///
///
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);
}

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

被折叠的 条评论
为什么被折叠?



