api接口添加实体类Json

定义实体类并实例化

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
    {
        //"applicationCode": "SRM提供",
        public string applicationCode { get; set; }

        //"applicationGroupCode": "SRM提供",
        public string applicationGroupCode { get; set; }
        //"batchCount": "此批次数据条数",
        public string batchCount { get; set; }
        //"batchNum": "递增且唯一的少于20位的数字,建议时间戳",
        public string batchNum { get; set; } = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds().ToString();
        //"externalSystemCode": "SRM提供外部系统CODE",
        public string externalSystemCode { get; set; }
        //"interfaceCode": "HMDM_ITEM_IMP",
        public string interfaceCode { get; set; } = "HMDM_ITEM_IMP";
        //"userName": "SRM子账户名"
        public string userName { get; set; }


    }
    public class Body
    {
        //esCategoryCode String	30	Y erp品类编码 唯一判断依据字段,不可重复
        public string applicationCode { get; set; }
        //categoryName    String	360	Y 品类名称    二级类
        public string categoryName { get; set; }
        //esParentCategoryCode    String	30	N erp父品类编码    通过父品类字段,实现多层级品类定义,目前二级分类,传一级大类编码
        public string esParentCategoryCode { get; set; }
        //esOuCode    String	30	N erp实体编码 对应ERP子公司
        public string esOuCode { get; set; }
        //erpCreationDate Date N   erp创建时间
        public DateTime erpCreationDate { get; set; }= DateTime.Now;
        //erpLastUpdateDate   Date N   erp更新时间
        public DateTime erpLastUpdateDate { get; set; } = DateTime.Now;
        //enabledFlag Integer Y   启用标识,默认1	1:启用    0:禁用
        public int enabledFlag { get; set; }
        //sourceCode  String	30	Y 来源系统    来源系统,如erp
        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);

            //读取全部的单据,for循环,转换成DynamicObject类型
            foreach (DynamicObject entity in e.DataEntitys)
            {   //如果不为空,开始循环
                if (entity != null)
                {
                    ctx = this.Context;


                    //                 //获取fid
                    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)
        {

            //把用户传过来的数据转成“UTF-8”的字节流
            Encoding encoding = Encoding.UTF8;
            //先根据用户请求的uri构造请求地址
            //创建Web访问对象
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Method = "POST";
            //request.Accept = "application/json";
            request.ContentType = "application/json; charset=UTF-8";
            //request.Headers["Accept-Encoding"] = "gzip, deflate";
            request.AutomaticDecompression = DecompressionMethods.GZip;
            //HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies["admin"];  //若是需要登录过后再能访问获取url的数据,需要在请求头中设置cookie值
            //if (Cookie != null)
            //    request.Headers.Add("Cookie", Cookie.Value.ToString());

            byte[] buffer = encoding.GetBytes(body);
            request.ContentLength = buffer.Length;
            request.GetRequestStream().Write(buffer, 0, buffer.Length);
            //通过Web访问对象获取响应内容
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            //通过响应内容流创建StreamReader对象,因为StreamReader更高级更快
            using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
            {
                return reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾
            }
        }
        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);
            //List<Hearder> hearderList = new List<Hearder>();
            //List<Body> bodyList = new List<Body>();        
            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);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值