定义实体类并实例化
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SY_HR.API.Believer.ServicePlugln
{
public class MaterialClassification
{
public List<Hearder> hearder { get; set; }
public List<Body> body { get; set; }
public MaterialClassification()
{
this.hearder = new List<Hearder>();
this.body = new List<Body>();
}
}
public class Hearder
{
public string applicationCode { get; set; }
public string applicationGroupCode { get; set; }
public string batchCount { get; set; }
public string batchNum { get; set; } = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds().ToString();
public string externalSystemCode { get; set; }
public string interfaceCode { get; set; } = "HMDM_ITEM_IMP";
public string userName { get; set; }
}
public class Body
{
public string applicationCode { get; set; }
public string categoryName { get; set; }
public string esParentCategoryCode { get; set; }
public string esOuCode { get; set; }
public DateTime erpCreationDate { get; set; }= DateTime.Now;
public DateTime erpLastUpdateDate { get; set; } = DateTime.Now;
public int enabledFlag { get; set; }
public string sourceCode { get; set; }
}
}
调用实体类
using System;
using System.ComponentModel;
using System.Data;
using System.Text;
using Newtonsoft.Json.Linq;
using Kingdee.BOS.WebApi.Client;
using Kingdee.BOS.Util;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using System.Net;
using System.IO;
using System.Web.Script.Serialization;
namespace SY_HR.API.Believer.ServicePlugln
{
[Description("ERP物料导入至SRM物料")]
[HotUpdate]
public class MaterialSynchronousInterfaceToSRM: AbstractOperationServicePlugIn
{
private string url;
Context ctx;
public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e)
{
base.AfterExecuteOperationTransaction(e);
foreach (DynamicObject entity in e.DataEntitys)
{
if (entity != null)
{
ctx = this.Context;
var materialId = Convert.ToString(entity["Id"]);
var sqlCust = string.Format(@"/*dialect*/ select FMATERIALID from T_BD_MATERIAL where FMATERIALID = '{0}'", materialId);
DynamicObjectCollection dynamicObjects = DBServiceHelper.ExecuteDynamicObject(ctx, sqlCust);
foreach (var item in dynamicObjects)
{
MaterialSynchronous(item["FMATERIALID"].ToString());
}
}
}
}
public string HttpPost2(string url, string body)
{
Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json; charset=UTF-8";
request.AutomaticDecompression = DecompressionMethods.GZip;
byte[] buffer = encoding.GetBytes(body);
request.ContentLength = buffer.Length;
request.GetRequestStream().Write(buffer, 0, buffer.Length);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}
public void MaterialSynchronous(string materialId)
{
var sqlMterial = string.Format(@"select t1.FNUMBER,t1_L.FNAME,unit1.FNUMBER baseUnit,unit2.FNUMBER auxUnit from T_BD_MATERIAL t1
left join T_BD_MATERIAL_L t1_L on t1.FMATERIALID=t1_L.FMATERIALID and t1_L.FLOCALEID=2052
left join T_BD_MATERIALBASE t1_B on t1.FMATERIALID=t1_B.FMATERIALID
left join t_BD_MaterialStock t1_S on t1.FMATERIALID=t1_S.FMATERIALID
left join T_BD_UNIT unit1 on unit1.FUNITID=t1_B.FBASEUNITID
left join T_BD_UNIT unit2 on unit2.FUNITID=t1_S.FAuxUnitID
where t1.FMATERIALID='{0}'", materialId);
DynamicObjectCollection materialObject = DBServiceHelper.ExecuteDynamicObject(ctx, sqlMterial);
SY_HR.API.Believer.ServicePlugln.Material.Body body = new SY_HR.API.Believer.ServicePlugln.Material.Body();
SY_HR.API.Believer.ServicePlugln.Material.Hearder hearder = new SY_HR.API.Believer.ServicePlugln.Material.Hearder();
Material materialSave = new Material();
foreach (var item in materialObject)
{
hearder.externalSystemCode = "";
hearder.batchCount = "";
hearder.applicationGroupCode = "";
hearder.userName = "demo";
hearder.applicationCode = "";
materialSave.hearder.Add(hearder);
body.esItemCode = item["FNUMBER"].ToString();
body.itemName = item["FNAME"].ToString();
body.esPrimaryUomCode = item["baseUnit"].ToString();
body.esSecondaryUomCode = item["auxUnit"] == null ? string.Empty : item["auxUnit"].ToString();
materialSave.Bodys.Add(body);
}
JavaScriptSerializer javaScript = new JavaScriptSerializer();
var obj = materialSave.GetType().GetProperties();
string json = javaScript.Serialize(materialSave);
url = "https://demo-api.apipost.cn/api/demo/collect_news";
HttpPost2(url, json);
}
}
}