hudong
2025-05-12 0e2425d59ffe4c698182f134a47dc84585bc8439
成本中心退料出库接口实现
6个文件已修改
165 ■■■■■ 已修改文件
api/ApiModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsSapController.cs 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsSpaHelper.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ZSCM2_CBZX.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/TN_Ll_Order.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/TN_Outbound_Order.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApiModel.cs
@@ -348,7 +348,7 @@
            public string arrival_no { get; set; }
            public string item_code { get; set; }
            public string S_BATCH_NO { get; set; }
            public string S_SERIAL_NO { get; set; }
            //public string S_SERIAL_NO { get; set; }
            public string N_ROW_NO { get; set; }
            public float qty { get; set; }
        }
api/WmsSapController.cs
@@ -22,7 +22,48 @@
{
    public class WmsSapController : System.Web.Http.ApiController
    {
        /// <summary>
        /// 供应商接收接口获取
        /// </summary>
        /// <param name="xmlData"></param>
        /// <returns></returns>
        [HttpPost]
        public Orderback.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
        {
            #region xml数据接收转数组
     
            LogHelper.Info("供应商接收接口:" + JsonConvert.SerializeObject(xmlData));
            ////接收xml数据
            //XmlDocument xmlDoc = new XmlDocument();
            //xmlDoc.LoadXml(xmlData.ToString());
            //// 将 XmlDocument 转换为 JSON 字符串
            //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
            //// 处理特定字段,强制转换为数组
            //WmsSpaHelper.EnsureArrayFormats(jsonObject, "ITEM");
            //// 反序列化为RootWithArray
            //var data = JsonConvert.DeserializeObject<OrderDto.Root>(jsonObject.ToString());
            #endregion
            #region 外采入库业务流程
            Orderback.Root simpleResult = WmsSpaHelper.GYS_In(xmlData);
            //接收返回参数 生成sap对接文档返回格式
            //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg);
            #endregion
            #region  返回xml
            //string xml = JsonConvert.DeserializeXmlNode(json, "root").OuterXml;
            ////返回json
            //var response = new HttpResponseMessage()
            //{
            //    Content = new StringContent(xml, Encoding.UTF8, "application/xml")
            //};
            //return response;
            return simpleResult;
            #endregion
        }
        /// <summary>
api/WmsSpaHelper.cs
@@ -654,7 +654,87 @@
            }
            return simpleResults;
        }
        /// <summary>
        /// sap-wmsg供应商息添加SimpleResult
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static Orderback.Root GYS_In(GYSDto.Root model)
        {
            var orderResponse = new Orderback.Root
            {
                ROOT = new Orderback.ROOT
                {
                    ITEM = new List<Orderback.ITEM> { }
   
                }
            };
            List<Orderback.ITEM> tEMs = new List<Orderback.ITEM>();
            var db = new SqlHelper<object>().GetInstance();
            try
            {
                db.BeginTran();
                foreach (var item in model.ROOT.GYSXX)
                {
                    Orderback.ITEM iTEM = new Orderback.ITEM();
                    //创建入库单主子表
                    var po = WMSHelper.GetGYSBMOrder(item.JBXX.GYSBM);
                    if (po == null)
                    {
                        po = new TN_Supplier { S_GYSBM= item.JBXX.GYSBM , S_MDMBM = item.JBXX.MDMBM, };
                        po.Details = new List<TN_Supplier_detial>();
                        if (item.GYSHB.Count > 0)
                        {
                            item.GYSHB.ForEach(a =>
                            {
                                po.Details.Add(new TN_Supplier_detial
                                {
                                    S_DO_GYSBM = a.GYSBM,
                                    S_CGZZ = a.CGZZ,
                                    S_HB = a.HB,
                                });
                                //}
                            });
                            db.Insertable<TN_Supplier>(po).ExecuteCommand();
                            db.Insertable<TN_Supplier_detial>(po.Details).ExecuteCommand();
                        }
                    }
                    else
                    {
                        db.Deleteable<TN_Supplier>().Where(it => it.S_GYSBM == po.S_GYSBM).ExecuteCommand();
                        db.Deleteable<TN_Supplier_detial>().Where(it => it.S_DO_GYSBM == po.S_GYSBM).ExecuteCommand();
                        //iTEM.SCDDH = item.JBXX.GYSBM;
                        //iTEM.MSGCODE = "1";
                        //iTEM.MSGDESP = $"{item.JBXX.GYSBM}已存在";
                        //tEMs.Add(iTEM);
                    }
                    iTEM.SCDDH = item.JBXX.GYSBM;
                    iTEM.MSGCODE = "0";
                    iTEM.MSGDESP = $"成功";
                    tEMs.Add(iTEM);
                }
                orderResponse.ROOT.ITEM = tEMs;
                db.CommitTran();
            }
            catch (Exception e)
            {
                Orderback.ITEM iTEM = new Orderback.ITEM();
                iTEM.SCDDH = "";
                iTEM.GC = "";
                iTEM.MSGCODE = "1";
                iTEM.MSGDESP = e.Message;
                tEMs.Add(iTEM);
                orderResponse.ROOT.ITEM = tEMs;
                db.RollbackTran();
                return orderResponse;
                throw;
            }
            return orderResponse;
        }
        /// <summary>
        /// sap-wms生产订单信息添加SimpleResult
        /// </summary>
@@ -1735,6 +1815,7 @@
                    result.resultCode = 1;
                    return result;
                }
                //人工分拣 容器货品表数量、分配量升降
                //出库单详情
                var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == model.arrival_no).First();
@@ -1745,7 +1826,6 @@
                    return result;
                }
                po.S_OUT_TYPE = "成本中心出库";
                //根据不同出库类型 回调sap
                if (po.S_OUT_TYPE == "冲销出库")
                {
@@ -1923,21 +2003,36 @@
                    //回参物料信息
                    List<CBcenterBackDto.HEADItem> iTEMs = new List<CBcenterBackDto.HEADItem>();
                    List<OutboundRecord> records = new List<OutboundRecord>();
                    string GZRQ = "";
                    string PZZDRQ = "";
                    if (po.BUDAT != null)
                    {
                        GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd");
                    }
                    if (po.BLDAT != null)
                    {
                        PZZDRQ = DateTime.Parse(po.BLDAT.ToString()).ToString("yyyyMMdd");
                    }
                    foreach (var item in MaterList)
                    {
                        var podetail = po.Details.Where(s => s.S_ITEM_CODE == item.item_code).FirstOrDefault();
                        CBcenterBackDto.HEADItem ckbitem = new CBcenterBackDto.HEADItem();
                        ckbitem.KEY = arrival_no;
                        ckbitem.WLBH = item.item_code;
                        ckbitem.SL = item.qty;
                        ckbitem.CBZX = po.S_CBZX;
                        ckbitem.SL = item.qty;
                        ckbitem.KCDD = podetail?.S_KCDD;
                        ckbitem.ZZKM = po.S_ZZKM;
                        ckbitem.GC = po.S_FACTORY;
                        ckbitem.GZRY = po.S_CREATOR_NAME;
                        ckbitem.PZRQ = DateTime.Now.ToString();
                        ckbitem.KCDD = podetail?.S_KCDD;
                        ckbitem.PC = podetail?.S_BATCH_NO;
                        ckbitem.PZRQ = PZZDRQ;
                        ckbitem.GZRQ = GZRQ;
                        CBcenterBackDto.ITEM listitem1 = new CBcenterBackDto.ITEM();
@@ -1947,7 +2042,7 @@
                        //                .Where(s => s.S_ITEM_CODE == item.item_code)
                        //                .Select(s => s.S_SERIAL_NO));
                        //string[] xlhValues = serialNos.Split(',');
                        string[] xlhValues = item.S_SERIAL_NO.Split(',');
                       // string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        listitem1.XLH= podetail?.S_SERIAL_NO.Split(',').ToList();
                        //foreach (var xlhValue in xlhValues)
                        //{
@@ -2001,9 +2096,12 @@
                    xmlDoc.LoadXml(responses.Output.ToString());
                    JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                    var data = JsonConvert.DeserializeObject<ReturnWcBcak.Root>(jsonObject.ToString());
                    //添加凭证记录表
                    result.resultMsg = data.ROOT.ITEM.MSGDESP;
                    result.resultCode = data.ROOT.ITEM.MSGCODE;
                    if (data.ROOT.ITEM.MSGCODE == 0)
                    {
                    MaterialVoucher materialVoucher = new MaterialVoucher();
                    materialVoucher.S_NO = po.S_NO;
                    materialVoucher.S_TYPE = po.S_OUT_TYPE;
@@ -2011,6 +2109,7 @@
                    materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                    materialVoucher.STATUS = 0;
                    db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    }
                    #endregion
                    db.CommitTran();
@@ -2018,7 +2117,7 @@
                catch (Exception ex)
                {
                    db.RollbackTran();
                    LogHelper.Info("计划外退料回调报错" + ex.Message);
                    LogHelper.Info("成本中心回调报错" + ex.Message);
                    Console.WriteLine(ex.Message);
                    throw;
@@ -2570,8 +2669,8 @@
                                    }
                                    else
                                    {
                                        //2.插入新的容器物料信息(容器号不变)
                                        cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = item.S_BATCH_NO, S_SERIAL_NO = item.S_SERIAL_NO, N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no };
                                        //2.插入新的容器物料信息(容器号不变S_SERIAL_NO = item.S_SERIAL_NO,)
                                        cir = new CntrItemRel { S_CNTR_CODE = cntr.S_CODE.Trim(), S_BATCH_NO = item.S_BATCH_NO,  N_BS_ROW_NO = item.N_ROW_NO, F_QTY = item.qty, S_ITEM_CODE = item.item_code, S_BS_NO = item.arrival_no };
                                        db.Insertable<CntrItemRel>(cir).ExecuteCommand();
                                    }
                                    var count = db.Queryable<CntrItemRel>().Count(a => a.S_CNTR_CODE == cntr.S_CODE);
api/ZSCM2_CBZX.cs
@@ -32,7 +32,7 @@
    
    /// <remarks/>
    public ZSCM2_CBZX() {
        this.Url = "http://ceerptest.cee.com.cn:8000/sap/bc/srt/rfc/sap/zscm2_cbzx/110/zscm2_cbzx/bin" +
        this.Url = "http://10.89.33.217:8000/sap/bc/srt/rfc/sap/zscm2_cbzx/110/zscm2_cbzx/bin" +
            "ding";
    }
    
models/TN_Ll_Order.cs
@@ -16,7 +16,7 @@
        /// 年份
        /// </summary>
        public string S_WLPZNF { get; set; }
        public int S_WLPZND { get; set; }
        public string S_WLPZND { get; set; }
        /// <summary>
        /// 仓库编码
        /// </summary>
models/TN_Outbound_Order.cs
@@ -23,7 +23,7 @@
        public string S_WLPZNF { get; set; }
        public string S_WLPZHXM { get; set; }
        public string S_WLPZ { get; set; }
        public int S_WLPZND { get; set; }
        public string S_WLPZND { get; set; }
        /// <summary>
        /// 仓库编码
        /// </summary>
@@ -66,6 +66,7 @@
        /// 工厂
        /// </summary>
        public string S_FACTORY { get; set; }
        //public string S_GZRY { get; set; }
        public string S_CBZX { get; set; }
        public string S_LRZX { get; set; }
        public string S_ZZKM { get; set; }