不引用金蝶的sdk接口开发
目录
3.在金蝶云添加一个工单,然后通过 下推形成工单入库(暂存)
1.准备工作
创建一个自己的类
public class HttpClient
{
/// <summary>
/// Seivice URL
/// </summary>
public string Url { get; set; }
/// <summary>
/// 内容
/// </summary>
public string Content { get; set; }
/// <summary>
/// Cookie,保证登录后,所有访问持有一个Cookie;
/// </summary>
static CookieContainer Cookie = new CookieContainer();
/// <summary>
/// HTTP访问
/// </summary>
public string AsyncRequest()
{
HttpWebRequest httpRequest = HttpWebRequest.Create(Url) as HttpWebRequest;
httpRequest.Method = "POST";
httpRequest.ContentType = "application/json";
httpRequest.CookieContainer = Cookie;
httpRequest.Timeout = 1000 * 60 * 10;//10min
using (Stream reqStream = httpRequest.GetRequestStream())
{
JObject jObj = new JObject();
jObj.Add("format", 1);
jObj.Add("useragent", "ApiClient");
jObj.Add("rid", Guid.NewGuid().ToString().GetHashCode().ToString());
jObj.Add("parameters", Content);
jObj.Add("timestamp", DateTime.Now);
jObj.Add("v", "1.0");
string sContent = jObj.ToString();
var bytes = UnicodeEncoding.UTF8.GetBytes(sContent);
reqStream.Write(bytes, 0, bytes.Length);
reqStream.Flush();
}
using (var repStream = httpRequest.GetResponse().GetResponseStream())
{
using (var reader = new StreamReader(repStream))
{
return ValidateResult(reader.ReadToEnd());
}
}
}
private static string ValidateResult(string responseText)
{
if (responseText.StartsWith("response_error:"))
{
return responseText.TrimStart("response_error:".ToCharArray());
}
return responseText;
}
}
2.下面为登录接口调用加查询物料接口
HttpClient httpClient = new HttpClient();
httpClient.Url = "http://192.168.3.5/k3cloud/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc";
List<object> Parameters = new List<object>();
Parameters.Add("658537121f1222");//帐套Id 到金蝶的web api里面可以查到
Parameters.Add("demo3");//用户名
Parameters.Add("111111");//密码
Parameters.Add(2052);//语言编码
httpClient.Content = JsonConvert.SerializeObject(Parameters);
var iResult = JObject.Parse(httpClient.AsyncRequest())["LoginResultType"].Value<int>();
if (iResult == 1)
{
HttpClient httpClient1 = new HttpClient();
httpClient1.Url = "http://192.168.3.5/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.View.common.kdsvc";
List<object> Parameters1 = new List<object>();
//业务对象Id
String formid = "BD_MATERIAL";//发票
Parameters1.Add(formid);
//Json字串
string data = "{\"NUMBER\":\"0101010030007\"}";
Parameters1.Add(data);
httpClient1.Content = JsonConvert.SerializeObject(Parameters1);
var result = httpClient1.AsyncRequest();
MessageBox.Show(result);
//todo:验证成功,处理业务
}
3.在金蝶云添加一个工单,然后通过 下推形成工单入库(暂存)
HttpClient httpClient1 = new HttpClient();
httpClient1.Url = "http://192.168.3.5/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Push.common.kdsvc";
List<object> Parameters1 = new List<object>();
//业务对象Id
String formid = "PRD_MO";//发票
Parameters1.Add(formid);
//Json字串 下推时需开启IsDraftWhenSaveFail=true,不然失败就无法生成单子
//RuleId:需要星空云开发的文件-》规则转换的单据转换的主界面
string data = "{\"TargetOrgId\":\"101\",\"Numbers\":[\"101-MO240120233580\"],\"RuleId\":\"PRD_MO2DIRECTSENDTOINSTOCK\",\"IsDraftWhenSaveFail\":\"true\"}";
Parameters1.Add(data);
httpClient1.Content = JsonConvert.SerializeObject(Parameters1);
var result = httpClient1.AsyncRequest();
if (!HttpClient.islogin) {
kh.LoginKinde();//登录接口调用的封装
result = httpClient1.AsyncRequest();
}
MessageBox.Show(result);
4.将暂存的工单入库修改
这一步有点出乎意料,因为金蝶接口是没有修改的接口的,只能通过保存接口实现
HttpClient httpClient1 = new HttpClient();
httpClient1.Url = "http://192.168.3.5/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc";
List<object> Parameters1 = new List<object>();
//业务对象Id
String formid = "PRD_INSTOCK";//生产入库
Parameters1.Add(formid);
//Json字串
string data = "{\"NeedUpDateFields\":[],\"Model\":{\"FID\":105510,\"FDate\":\"2024-01-22\" ,\"FEntity\":[{\"FEntryID\": 106509,"+
"\"FLot\":{\"FNumber\":\"202401240001\"},\"FStockId\":{\"FNumber\":\"004\"},\"FStockLocId\": {\"FSTOCKLOCID__FF100002\": {\"FNumber\": \"002-A01\"}}, \"FRealQty\": 50,}]" +
"}}";
/*
String data1 = "{\"NeedUpDateFields\":[],\"NeedReturnFields\":[],\"IsDeleteEntry\":\"true\",\"SubSystemId\":\"\","+
"\"IsVerifyBaseDataField\":\"false\",\"IsEntryBatchFill\":\"true\",\"ValidateFlag\":\"true\",\"NumberSearch\""+
":\"true\",\"IsAutoAdjustField\":\"false\",\"InterationFlags\":\"\",\"IgnoreInterationFlag\":\"\","+
"\"IsControlPrecision\":\"false\",\"ValidateRepeatJson\":\"false\",\"Model\":{\"FID\":105503,\"FBillType\":" +
"{\"FNUMBER\":\"\"},\"FDate\":\"2024-01-22\",\"FStockOrgId\":{\"FNumber\":\"\"},\"FStockId0\":{\"FNumber\":"+
"\"\"},\"FPrdOrgId\":{\"FNumber\":\"\"},\"FWorkShopId\":{\"FNumber\":\"\"},\"FOwnerTypeId0\":\"\",\"FOwnerId0\""+
":{\"FNumber\":\"\"},\"FSTOCKERID\":{\"FNAME\":\"\"},\"FDescription\":\"\",\"FIsEntrust\":\"false\",\"FCurrId\""+
":{\"FNumber\":\"\"},\"FEntrustInStockId\":0,\"FScanBox\":\"\",\"FEntity\":[{\"FEntryID\":106502,\"FSrcEntryId\":0," +
"\"FIsNew\":\"false\",\"FMaterialId\":{\"FNumber\":\"\"},\"FCheckProduct\":\"false\",\"FProductType\":\"\","+
"\"FInStockType\":\"\",\"FUnitID\":{\"FNumber\":\"\"},\"FMustQty\":0,\"FRealQty\":0,\"FCostRate\":0,"+
"\"FBaseUnitId\":{\"FNumber\":\"\"},\"FBaseMustQty\":0,\"FBaseRealQty\":0,\"FOwnerTypeId\":\"\",\"FOwnerId\":"+
"{\"FNumber\":\"\"},\"FStockId\":{\"FNumber\":\"\"},\"FStockLocId\":{\"FSTOCKLOCID__FF100002\":{\"FNumber\":\"\"}"+
",\"FSTOCKLOCID__FF102001\":{\"FNumber\":\"\"}},\"FBomId\":{\"FNumber\":\"\"},\"FLot\":{\"FNumber\":\"\"},"+
"\"FISBACKFLUSH\":\"false\",\"FMtoNo\":\"\",\"FProjectNo\":\"\",\"FWorkShopId1\":{\"FNumber\":\"\"},\"FLINEID\":"+
"{\"FNUMBER\":\"\"},\"FShiftGroupId\":{\"FNumber\":\"\"},\"FMoBillNo\":\"\",\"FMoId\":0,\"FMoEntryId\":0,"+
"\"FMoEntrySeq\":0,\"FAuxpropId\":{\"FAUXPROPID__FF100001\":{\"FNumber\":\"\"},\"FAUXPROPID__FF100002\":"+
"{\"FNumber\":\"\"}},\"FMemo\":\"\",\"FStockUnitId\":{\"FNumber\":\"\"},\"FStockRealQty\":0,\"FSecUnitId\":"+
"{\"FNumber\":\"\"},\"FSecRealQty\":0,\"FSrcBillType\":\"\",\"FSrcInterId\":0,\"FSrcBillNo\":\"\","+
"\"FBasePrdRealQty\":0,\"FIsFinished\":\"false\",\"FStockStatusId\":{\"FNumber\":\"\"},\"FSrcEntrySeq\":0,"+
"\"FMOMAINENTRYID\":0,\"FKeeperTypeId\":\"\",\"FKeeperId\":{\"FNumber\":\"\"},\"FProduceDate\":\"1900-01-01\","+
"\"FExpiryDate\":\"1900-01-01\",\"FSelReStkQty\":0,\"FBaseSelReStkQty\":0,\"FSrcBusinessType\":\"\","+
"\"FIsOverLegalOrg\":\"false\",\"FSendRowId\":\"\",\"F_POH\":\"\",\"F_XQDJWL\":{\"FNUMBER\":\"\"},\"F_OEMH\":\"\","+
"\"F_KHXH\":\"\",\"F_PINPAI\":\"\",\"F_ZDKGRQ\":\"1900-01-01\",\"F_HZDKGRQ\":\"1900-01-01\",\"FSerialSubEntity\":"+
"[{\"FDetailID\":0,\"FSerialNo\":\"\",\"FSerialId\":{\"FNumber\":\"\"},\"FQty\":0,\"FBaseSNQty\":0,\"FSerialNote\":"+
"\"\"}]}]}}";*/
Parameters1.Add(data);
httpClient1.Content = JsonConvert.SerializeObject(Parameters1);
var result = httpClient1.AsyncRequest();
if (!HttpClient.islogin)
{
kh.LoginKinde();
result = httpClient1.AsyncRequest();
}
MessageBox.Show(result);
5.工单入库提交
将上诉的保存接口改成
"http://192.168.3.5/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc";
将string data = "{\"CreateOrgId\":101,\"Ids\":\"105510\"}"; 即可
以上是自己测试可用