api/WmsSpaHelper.cs
@@ -33,6 +33,7 @@
using WHTest;
using System.Net;
using SqlSugar;
using static HH.WCS.Mobox3.pinggao.models.SapRoot.GYSDto;
namespace HH.WCS.Mobox3.pinggao.api
{
@@ -654,6 +655,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>
        /// <param name="model"></param>
@@ -706,7 +788,7 @@
                        iTEM.SCDDH = item.SCDDH;
                        iTEM.GC = item.GC;
                        iTEM.MSGCODE = "1";
                        iTEM.MSGDESP = $"{item.SCDDH}不存在";
                        iTEM.MSGDESP = $"{item.SCDDH}已存在";
                        tEMs.Add(iTEM);
                    }
                    iTEM.SCDDH = item.SCDDH;
@@ -739,17 +821,28 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static SimpleResult Mater_In(MaterDto.Root model)
        internal static WLReturnRoot.Root Mater_In(MaterDto.Root model)
        {
            var db = new SqlHelper<object>().GetInstance();
            var result = new SimpleResult();
            result.resultMsg = "成功";
            try
            var response = new WLReturnRoot.Root
            {
                db.BeginTran();
                List<TN_Material> list = new List<TN_Material>();
                foreach (var item in model.ROOT.ITEM)
                ROOT = new WLReturnRoot.ROOT
                {
                    ITEM = new List<WLReturnRoot.ITEM>
                    {
                    }
                }
            };
            db.BeginTran();
            List<WLReturnRoot.ITEM> list = new List<WLReturnRoot.ITEM>();
            foreach (var item in model.ROOT.ITEM)
            {
                try
                {
                    var result = new WLReturnRoot.ITEM();
                    var materlist = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == item.WLBM).First();
                    if (materlist == null)
                    {
@@ -767,20 +860,54 @@
                        tN_Material.S_CPZ = item.CPZ;
                        tN_Material.S_CPZMS = item.CPZMS;
                        tN_Material.S_ITEM_NAME = item.VTEXT;
                        list.Add(tN_Material);
                        db.Insertable<TN_Material>(tN_Material).ExecuteCommand();
                        result.MSGDESP = "成功";
                        result.MSGCODE = 0;
                        result.GCBM = item.GCBM;
                        result.WLBM = item.WLBM;
                        list.Add(result);
                    }
                    else
                    {
                        materlist.S_ITEM_CODE = item.WLBM;
                        materlist.S_GCBM = item.GCBM;
                        materlist.S_WLZBM = item.WLZBM;
                        materlist.S_WLZMS = item.WLZMS;
                        materlist.S_WLLX = item.WLLX;
                        materlist.S_WLMS = item.WLMS;
                        materlist.S_WLCMS = item.WLCMS;
                        materlist.S_DWBM = item.DWBM;
                        materlist.S_DWMS = item.DWMS;
                        materlist.S_JBM = item.JBM;
                        materlist.S_CPZ = item.CPZ;
                        materlist.S_CPZMS = item.CPZMS;
                        materlist.S_ITEM_NAME = item.VTEXT;
                        db.Updateable<TN_Material>(materlist).ExecuteCommand();
                        result.MSGDESP = "成功";
                        result.MSGCODE = 0;
                        result.GCBM = item.GCBM;
                        result.WLBM = item.WLBM;
                        list.Add(result);
                    }
                }
                db.Insertable<TN_Material>(list).ExecuteCommand();
                db.CommitTran();
                catch (Exception e)
                {
                    var result = new WLReturnRoot.ITEM();
                    result.MSGDESP = e.Message;
                    result.MSGCODE = 1;
                    result.GCBM = item.GCBM;
                    result.WLBM = item.WLBM;
                    list.Add(result);
                    db.RollbackTran();
                    throw;
                }
            }
            response.ROOT.ITEM = list;
            //db.Insertable<TN_Material>(list).ExecuteCommand();
            db.CommitTran();
            }
            catch (Exception e)
            {
                db.RollbackTran();
                throw;
            }
            return result;
            return response;
        }
@@ -1040,8 +1167,6 @@
                        var po = WMSHelper.GetInboundOrder(itemwlpz.HEAD.WLPZH);
                        if (po == null)
                        {
                            #region MyRegion
                            po = new TN_Inbound_Order { S_NO = itemwlpz.HEAD.WLPZH, S_WLPZND = itemwlpz.HEAD.ND, S_FACTORY = itemwlpz.ITEM[0].GC, S_IN_TYPE = "内采入库", S_BS_TYPE = itemwlpz.HEAD.YDLX };
                            po.Details = new List<TN_Inbound_Detail>();
@@ -1049,28 +1174,7 @@
                            {
                                itemwlpz.ITEM.ForEach(a =>
                                {
                                    //if (a.ITEM1.Select(s => s.XLH).Count() > 0)//判断序列号是否为多个
                                    //{
                                    //    foreach (var item in a.ITEM1.Select(s => s.XLH))
                                    //    {
                                    //        po.Details.Add(new TN_Inbound_Detail
                                    //        {
                                    //            S_IO_NO = model.ROOT.WLPZ.HEAD.WLPZBH,
                                    //            N_ROW_NO = po.Details.Count + 1,
                                    //            S_ITEM_CODE = a.WLH,
                                    //            F_QTY = a.SL,
                                    //            S_ITEM_STATE = "物料",
                                    //            S_ITEM_NAME = "物料",
                                    //            F_ACC_B_QTY = 0,
                                    //            S_KCDD = a.KCDD,
                                    //            S_UOM = a.JBJLDW,//计量单位
                                    //            S_SERIAL_NO = item,
                                    //            S_BATCH_NO = a.PC,
                                    //        });
                                    //    }
                                    //}
                                    //else
                                    //{
                                    po.Details.Add(new TN_Inbound_Detail
                                    {
                                        S_IO_NO = itemwlpz.HEAD.WLPZH,
@@ -1112,7 +1216,6 @@
                                    {
                                        var poq = po.Details.Where(s => s.S_ITEM_CODE == a.WLBM).FirstOrDefault();
                                        poq.F_QTY = a.SL;
                                        db.Updateable(poq).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand();
                                    }
                                    else
@@ -1123,7 +1226,7 @@
                                            N_ROW_NO = a.WLPZHXM,
                                            S_ITEM_CODE = a.WLBM,
                                            F_QTY = a.SL,
                                            S_ITEM_STATE = "物料",
                                            S_ITEM_STATE = "正常",
                                            S_ITEM_NAME = "物料",
                                            S_CKPZKJND = a.CKPZND,
                                            F_ACC_B_QTY = 0,
@@ -1144,9 +1247,6 @@
                            }
                        }
                    }
                    result.resultMsg = "成功";
                    result.WLPZBH = itemwlpz.HEAD.WLPZH;
                    result.WLPZND = itemwlpz.HEAD.ND;
@@ -1159,7 +1259,6 @@
            catch (Exception e)
            {
                var result = new SimpleResult();
                result.resultMsg = "失败";
                result.WLPZBH = "";
                result.WLPZND = "0";
@@ -1695,7 +1794,7 @@
                    S_START_AREA = locinfo.S_AREA_CODE,
                    S_START_WH = locinfo.S_WH_CODE,
                    S_END_LOC = model.start,
                    //S_BS_NO = model.arrival_no,
                    S_BS_NO = model.MaterList[0].arrival_no,
                    N_TYPE = 1,
                    S_TYPE = WMSTask.GetTypeStr(1),
                    S_OP_DEF_CODE = "",
@@ -1733,6 +1832,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();
@@ -1743,7 +1843,7 @@
                    return result;
                }
                //根据不同出库类型 回调sap
                if (po.S_OUT_TYPE == "冲销出库")
                {
@@ -1783,7 +1883,8 @@
                    var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First();
                    //出库单详情
                    var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First();
                    //分拣单
                    //var popp = db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_BS_NO == arrival_no&&a.S_SORT_TYPE=="未分类" && a.N_B_STATE == 2).First();
                    //回参物料信息
                    List<OutboundRecord> records = new List<OutboundRecord>();
@@ -1795,8 +1896,8 @@
                        if (cntr.Count() > 0)
                        {
                            db.BeginTran();
                            //1.查看是否有相同物料批次的信息,如果有要累减少,不同批次的可以分开
                            var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code && a.S_ITEM_CODE == item.item_code && a.N_BS_ROW_NO == item.N_ROW_NO).First();//&& a.S_BATCH_NO == item.S_BATCH_NO
                            //1.查看是否有相同物料批次的信息,如果有要累减少,不同批次的可以分开&& a.N_BS_ROW_NO == item.N_ROW_NO
                            var cir = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == cntr_code && a.S_ITEM_CODE == item.item_code ).First();//&& a.S_BATCH_NO == item.S_BATCH_NO
                            if (cir != null)
                            {
                                cir.F_QTY -= item.qty;
@@ -1921,35 +2022,52 @@
                    //回参物料信息
                    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.WLBH = item.item_code;
                        ckbitem.KEY = arrival_no;
                        ckbitem.SL = item.qty;
                        ckbitem.CBZX = po.S_CBZX;
                        ckbitem.WLBH = item.item_code;
                        ckbitem.SL = item.qty;
                        ckbitem.KCDD = podetail?.S_KCDD;
                        ckbitem.LRZX = po.S_LRZX;
                        ckbitem.ZZKM = po.S_ZZKM;
                        ckbitem.GC = po.S_FACTORY;
                        ckbitem.GZRY = po.S_CREATOR_NAME;
                        ckbitem.PZRQ = DateTime.Now.ToString();
                        ckbitem.GZRY = po.UNAME;
                        ckbitem.KCDD = podetail?.S_KCDD;
                        ckbitem.PC = podetail?.S_BATCH_NO;
                        ckbitem.PZRQ = PZZDRQ;
                        ckbitem.GZRQ = GZRQ;
                        List<CBcenterBackDto.ITEM> listitem1 = new List<CBcenterBackDto.ITEM>();
                        CBcenterBackDto.ITEM listitem1 = new CBcenterBackDto.ITEM();
                      //  List<CBcenterBackDto.ITEM> listitem1 = new List<CBcenterBackDto.ITEM>();
                        //string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        //var serialNos = string.Join(",", CntrItemRels
                        //                .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(',');
                        foreach (var xlhValue in xlhValues)
                        {
                            CBcenterBackDto.ITEM newItem = new CBcenterBackDto.ITEM { XLH = xlhValue };
                            listitem1.Add(newItem);
                        }
                       // string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        listitem1.XLH= podetail?.S_SERIAL_NO.Split(',').ToList();
                        //foreach (var xlhValue in xlhValues)
                        //{
                        //    CBcenterBackDto.ITEM newItem = new CBcenterBackDto.ITEM { XLH = xlhValue };
                        //    listitem1.Add(newItem);
                        //}
                        ckbitem.ITEM = listitem1;
                        iTEMs.Add(ckbitem);
@@ -1964,33 +2082,53 @@
                    string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml;
                    LogHelper.Info($"成本中心出库xml数据{xml}");
                    // 创建 StringContent 并指定媒体类型为 "text/xml"
                    HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml");
                    string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData";
                    string responseXml = "";
                    using (HttpClient client = new HttpClient())
                    {
                        // 发送 POST 请求并接收响应
                        HttpResponseMessage responsess = await client.PostAsync(url, content);
                        responseXml = await responsess.Content.ReadAsStringAsync();
                    //// 创建 StringContent 并指定媒体类型为 "text/xml"
                    //HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml");
                    //string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData";
                    //string responseXml = "";
                    //using (HttpClient client = new HttpClient())
                    //{
                    //    // 发送 POST 请求并接收响应
                    //    HttpResponseMessage responsess = await client.PostAsync(url, content);
                    //    responseXml = await responsess.Content.ReadAsStringAsync();
                    }
                    //}
                    #region sap回调
                    // 创建Web Service代理类实例
                    ZSCM2_CBZX service = new ZSCM2_CBZX();
                    //  service.Credentials = new NetworkCredential("CONN_RFC", "Init.1234");
                    // 准备请求参数
                    ZfmScm2CbzxMm001 request = new ZfmScm2CbzxMm001();
                    request.Input = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + xml;
                    LogHelper.Info($"成本中心出库SAP回调");
                    // 调用Web Service
                    ZfmScm2CbzxMm001Response responses = service.ZfmScm2CbzxMm001(request);
                    // 处理响应
                    LogHelper.Info("SAP返回结果: " + responses.Output);
                    // 解析Output中的凭证号等信息
                    #endregion
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(responseXml.ToString());
                    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;
                    MaterialVoucher materialVoucher = new MaterialVoucher();
                    materialVoucher.S_NO = po.S_NO;
                    materialVoucher.S_TYPE = po.S_OUT_TYPE;
                    materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
                    materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                    materialVoucher.STATUS = 0;
                    db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    if (data.ROOT.ITEM.MSGCODE == 0)
                    {
                        MaterialVoucher materialVoucher = new MaterialVoucher();
                        materialVoucher.S_NO = po.S_NO;
                        materialVoucher.S_TYPE = po.S_OUT_TYPE;
                        materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
                        materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                        materialVoucher.STATUS = 0;
                        db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    }
                    #endregion
                    db.CommitTran();
@@ -1998,7 +2136,7 @@
                catch (Exception ex)
                {
                    db.RollbackTran();
                    LogHelper.Info("计划外退料回调报错" + ex.Message);
                    LogHelper.Info("成本中心回调报错" + ex.Message);
                    Console.WriteLine(ex.Message);
                    throw;
@@ -2050,14 +2188,7 @@
                        {
                            HEAD = new JHWBackDto.HEAD
                            {
                                //KEY = "KeyExample",
                                //GZRQ = "2023-04-01",
                                //PZZDRQ = "2023-04-02",
                                //YHM = "Username",
                                //PZTTWB = "HeaderText",
                                //YDLX = "MovementType",
                                //TSKCBS = "SpecialStock"
                                KEY = po.S_NO,
                                GZRQ = GZRQ,
                                PZZDRQ = PZZDRQ,
@@ -2082,9 +2213,7 @@
                        JHWBackDto.ITEM ckbitem = new JHWBackDto.ITEM();
                        ckbitem.WLBH = item.item_code;
                        ckbitem.GC = po.S_FACTORY;
                        //ckbitem.PH = podetail?.S_PH;
                        //ckbitem.TSKCBS = podetail?.S_TSKCBS;
                        ckbitem.XSDD = podetail?.S_XSDD;
                        ckbitem.XSDDHXM = podetail?.S_XSDDXMBH;
@@ -2095,7 +2224,6 @@
                        ckbitem.WBS = podetail?.S_WBS;
                        ckbitem.KCDD = podetail?.S_KCDD;
                        ckbitem.PC = podetail?.S_BATCH_NO;
                        JHWBackDto.ITEM1 listitem1 = new JHWBackDto.ITEM1();
                        //string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        //var serialNos = string.Join(",", CntrItemRels
@@ -2134,34 +2262,56 @@
                    //json转xml
                    string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml;
                    LogHelper.Info($"出计划外发料出库xml数据{xml}");
                    LogHelper.Info($"计划外发料出库xml数据{xml}");
                    // 创建 StringContent 并指定媒体类型为 "text/xml"
                    HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml");
                    string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData";
                    string responseXml = "";
                    using (HttpClient client = new HttpClient())
                    {
                        // 发送 POST 请求并接收响应
                        HttpResponseMessage responsess = await client.PostAsync(url, content);
                        responseXml = await responsess.Content.ReadAsStringAsync();
                    //HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml");
                    //string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData";
                    //string responseXml = "";
                    //using (HttpClient client = new HttpClient())
                    //{
                    //    // 发送 POST 请求并接收响应
                    //    HttpResponseMessage responsess = await client.PostAsync(url, content);
                    //    responseXml = await responsess.Content.ReadAsStringAsync();
                    }
                    //}
                    #region sap回调
                    // 创建Web Service代理类实例
                    ZSCM2_SCFLJHW service = new ZSCM2_SCFLJHW();
                    //  service.Credentials = new NetworkCredential("CONN_RFC", "Init.1234");
                    // 准备请求参数
                    ZscmScflJhw request = new ZscmScflJhw();
                    request.Input = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + xml;
                    LogHelper.Info($"计划外SAP回调");
                    // 调用Web Service
                    ZscmScflJhwResponse responses = service.ZscmScflJhw(request);
                    // 处理响应
                    LogHelper.Info("SAP返回结果: " + responses.Output);
                    // 解析Output中的凭证号等信息
                    #endregion
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(responseXml.ToString());
                    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;
                    MaterialVoucher materialVoucher = new MaterialVoucher();
                    materialVoucher.S_NO = po.S_NO;
                    materialVoucher.S_TYPE = po.S_OUT_TYPE;
                    materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH;
                    materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND;
                    materialVoucher.STATUS = 0;
                    db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    foreach (var item in MaterList)
                    {
                        MaterialVoucher materialVoucher = new MaterialVoucher();
                        materialVoucher.S_NO = po.S_NO;
                        materialVoucher.S_TYPE = po.S_OUT_TYPE;
                        materialVoucher.S_WLBM = item.item_code;
                        materialVoucher.S_WLH = item.N_ROW_NO;
                        materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH;
                        materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND;
                        materialVoucher.STATUS = 0;
                        db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    }
                    #endregion
                    db.CommitTran();
@@ -2200,6 +2350,13 @@
                    var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == start).First();
                    //出库单详情
                    var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First();
                    string GZRQ = "";
                    if (po.BUDAT != null)
                    {
                        GZRQ = DateTime.Parse(po.BUDAT.ToString()).ToString("yyyyMMdd");
                    }
                    //来源冲销凭证对应的物料凭证信息
                    //var poIn = db.Queryable<TN_Inbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == po.S_BS_NO).First();
                    //根据入库查看凭证编号信息
@@ -2209,71 +2366,102 @@
                    {
                        ROOT = new CXCkBackDto.ROOT
                        {
                            HEAD = new CXCkBackDto.HEAD
                            HEAD = new List<CXCkBackDto.HEAD>
                            {
                                WLPZ = po.S_WLPZ,
                                WLPZNF = po.S_WLPZNF,
                                WLPZXM = MaterList[0].N_ROW_NO,
                                GZRQ = "2025-03-20",
                                SRRQ = "2025-03-19",
                                GZRY = "过账人员姓名"
                                //GZRQ = GZRQ,
                                //SRRQ = PZZDRQ,
                                //WLPZ = po.S_WLPZ,
                                //WLPZNF = po.S_WLPZNF,
                                //WLPZXM = MaterList[0].N_ROW_NO,
                                //GZRY = po.UNAME
                            }
                        }
                    };
                    //回参物料信息
                    //List<OutboundRecord> records = new List<OutboundRecord>();
                    //foreach (var item in MaterList)
                    //{
                    List<CXCkBackDto.HEAD> listhead = new List<CXCkBackDto.HEAD>();
                    foreach (var item in po.Details)
                    {
                        CXCkBackDto.HEAD hEAD = new CXCkBackDto.HEAD();
                        hEAD.GZRQ = GZRQ;
                        hEAD.SRRQ = DateTime.Now.ToString("yyyyMMdd");
                        hEAD.WLPZ = po.S_NO;
                        hEAD.WLPZNF = po.S_WLPZND;
                        hEAD.WLPZXM = item.N_ROW_NO;
                        hEAD.GZRY = po.UNAME;
                        listhead.Add(hEAD);
                    }
                    myRoot.ROOT.HEAD = listhead;
                    //    db.BeginTran();
                    //    //出库记录
                    //    var pz = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == arrival_no).First();
                    //    OutboundRecord outboundRecord = new OutboundRecord();
                    //    outboundRecord.S_WLPZBH = pz.S_WLPZBH;
                    //    outboundRecord.S_WLPZND = pz.S_WLPZND;
                    //    outboundRecord.S_NO = arrival_no;
                    //    outboundRecord.S_WLBM = item.item_code;
                    //    outboundRecord.S_SL = item.qty;
                    //    outboundRecord.S_CNTR_CODE = cntr_code;
                    //    records.Add(outboundRecord);
                    //}
                    //db.Insertable<OutboundRecord>(records).ExecuteCommand();
                    #region wms-sap回调
                    //类转json
                    var json = JsonConvert.SerializeObject(myRoot.ROOT);
                    //json转xml
                    string xml = JsonConvert.DeserializeXmlNode(json, "ROOT").OuterXml;
                    LogHelper.Info($"冲销出库回调xml数据{xml}");
                    // 创建 StringContent 并指定媒体类型为 "text/xml"
                    HttpContent content = new StringContent(xml, Encoding.UTF8, "application/xml");
                    string url = Settings.WCSSeverUrl + "/api/WmsSap/cesReceiveXmlData";
                    string responseXml = "";
                    using (HttpClient client = new HttpClient())
                    {
                        // 发送 POST 请求并接收响应
                        HttpResponseMessage responsess = await client.PostAsync(url, content);
                        responseXml = await responsess.Content.ReadAsStringAsync();
                    }
                    ZSCM2_CXPZ service = new ZSCM2_CXPZ();
                    //  service.Credentials = new NetworkCredential("CONN_RFC", "Init.1234");
                    // 准备请求参数
                    ZfmScm2CxpzMm001 request = new ZfmScm2CxpzMm001();
                    request.Input = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + xml;
                    LogHelper.Info($"通用冲销SAP回调");
                    // 调用Web Service
                    ZfmScm2CxpzMm001Response responses = service.ZfmScm2CxpzMm001(request);
                    // 处理响应
                    LogHelper.Info("通用冲销SAP返回结果: " + responses.Output);
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(responseXml.ToString());
                    xmlDoc.LoadXml(responses.Output.ToString());
                    JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                    var data = JsonConvert.DeserializeObject<ReturnWcBcak.Root>(jsonObject.ToString());
                    var data = JsonConvert.DeserializeObject<ReturnTYBcak.Root>(jsonObject.ToString());
                    var resmeg = "";
                    int rescode = 0;
                    //添加凭证记录表
                    result.resultMsg = data.ROOT.ITEM.MSGDESP;
                    result.resultCode = data.ROOT.ITEM.MSGCODE;
                    MaterialVoucher materialVoucher = new MaterialVoucher();
                    materialVoucher.S_NO = po.S_NO;
                    materialVoucher.S_TYPE = po.S_OUT_TYPE;
                    materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH;
                    materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND;
                    materialVoucher.STATUS = 0;
                    db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                    if (data!=null)
                    {
                        List<MaterialVoucher> materiallist = new List<MaterialVoucher>();
                        foreach (var item in data.ROOT.ITEM)
                        {
                            if (item.MSGCODE == 0)
                            {
                                MaterialVoucher materialVoucher = new MaterialVoucher();
                                materialVoucher.S_NO = po.S_NO;
                                materialVoucher.S_TYPE = po.S_OUT_TYPE;
                                materialVoucher.S_WLPZBH = item?.WLPZBH;
                                materialVoucher.S_WLPZND = item?.WLPZND;
                                materialVoucher.S_WLPZHXM = item?.WLPZHXM;
                                materialVoucher.S_YWLPZBH = item?.YWLPZBH;
                                materialVoucher.S_YWLPZND = item?.YWLPZND;
                                materialVoucher.S_YWLPZHXM = item?.YWLPZHXM;
                                materialVoucher.STATUS = 0;
                                resmeg += item?.MSGDESP;
                                materiallist.Add(materialVoucher);
                            }
                            else {
                                rescode = 1;
                            }
                        }
                        if (materiallist.Count()>0)
                        {
                            db.Insertable<MaterialVoucher>(materiallist).ExecuteCommand();
                        }
                    }
                    result.resultMsg = resmeg;
                    result.resultCode = rescode;
                    #endregion
                    db.CommitTran();
@@ -2391,18 +2579,18 @@
                        ckbitem.GC = po.S_FACTORY;
                        ckbitem.KCDD = podetail?.S_KCDD;
                        List<CkBcakDto.ITEM1> listitem1 = new List<CkBcakDto.ITEM1>();
                        CkBcakDto.ITEM1 listitem1 = new CkBcakDto.ITEM1();
                        //var CntrItemRels = db.Queryable<CntrItemRel>().Where(a => a.S_ITEM_CODE == item.item_code&&a.N_ROW_NO==item.N_ROW_NO).ToList();
                        ////string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        //var serialNos = string.Join(",", CntrItemRels
                        //                    .Where(s => s.S_ITEM_CODE == item.item_code)
                        //                    .Select(s => s.S_SERIAL_NO));
                        string[] xlhValues = item.S_SERIAL_NO.Split(',');
                        foreach (var xlhValue in xlhValues)
                        {
                            CkBcakDto.ITEM1 newItem = new CkBcakDto.ITEM1 { XLH = xlhValue };
                            listitem1.Add(newItem);
                        }
                        listitem1.XLH = podetail?.S_SERIAL_NO.Split(',').ToList();
                        //foreach (var xlhValue in xlhValues)
                        //{
                        //    CkBcakDto.ITEM1 newItem = new CkBcakDto.ITEM1 { XLH = xlhValue };
                        //    listitem1.Add(newItem);
                        //}
                        ckbitem.ITEM1 = listitem1;
                        iTEMs.Add(ckbitem);
@@ -2507,7 +2695,10 @@
                try
                {
                    if (MaterList.Count()<1)
                    {
                        throw new Exception("累计码盘数量物料数据为空");
                    }
                    foreach (var item in MaterList)
                    {
                        var allInfolist = db.Queryable<TN_Inbound_Detail>()
@@ -2544,8 +2735,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_UOM=info.S_UOM, 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);
@@ -2874,7 +3065,7 @@
                    else
                    {
                        //var az = db.Queryable<AZInventory>().ToList();
                        var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(), S_FACTORY = po.S_FACTORY, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO };
                        var po1 = new TN_Outbound_Order { S_NO = WMSHelper.GenerateShippNo(),UNAME=po.UNAME, S_FACTORY = po.S_FACTORY,S_CBZX=po.S_CBZX,S_ZZKM=po.S_ZZKM,S_LRZX=po.S_LRZX, BLDAT = po.BLDAT, BUDAT=po.BUDAT, S_OUT_TYPE = po.S_OUT_TYPE, S_BS_TYPE = po.S_BS_TYPE, S_AREA_CODE = po.S_AREA_CODE, S_BS_NO = po.S_NO };
                        po1.Details = new List<TN_Outbound_Detail>();
                        if (po.Details.Count() > 0)
@@ -2888,8 +3079,10 @@
                                        S_DO_NO = po1.S_NO,
                                        S_AREA_CODE = "HJQ",
                                        N_ROW_NO = a.N_ROW_NO,
                                        S_KCDD = a.S_KCDD,
                                        S_ITEM_CODE = a.S_ITEM_CODE,
                                        S_ITEM_NAME = a.S_ITEM_NAME,
                                        S_UOM = a.S_UOM,
                                        F_QTY = a.F_QTY - a.F_ACC_D_QTY,
                                        S_BATCH_NO = a.S_BATCH_NO,
                                        S_SERIAL_NO = a.S_SERIAL_NO,
@@ -3531,15 +3724,13 @@
                            JHWBackDto.ITEM ckbitem = new JHWBackDto.ITEM();
                            ckbitem.WLBH = item.S_ITEM_CODE;
                            ckbitem.GC = po.S_FACTORY;
                           //ckbitem.PH = podetail?.S_PH;
                           // ckbitem.TSKCBS = podetail?.S_TSKCBS;
                            ckbitem.XSDD = podetail?.S_XSDD;
                            ckbitem.XSDDHXM = podetail?.S_XSDDXMBH;
                            ckbitem.SL = item.F_QTY;
                            ckbitem.DW = podetail?.S_UOM;
                            ckbitem.DDH = podetail?.S_DDH;
                            //ckbitem.PH = podetail?.S_PH;
                            // ckbitem.TSKCBS = podetail?.S_TSKCBS;
                            //ckbitem.DDHXM = (podetail?.N_ROW_NO);
                            ckbitem.WBS = podetail?.S_WBS;
                            ckbitem.KCDD = podetail?.S_KCDD;
@@ -3769,14 +3960,14 @@
                        {
                            ROOT = new CXCkBackDto.ROOT
                            {
                                HEAD = new CXCkBackDto.HEAD
                                HEAD = new List<CXCkBackDto.HEAD>
                                {
                                    WLPZ = materpz.S_WLPZ,
                                    WLPZNF = materpz.S_WLPZNF,
                                    WLPZXM = null,
                                    GZRQ = "2025-03-20",
                                    SRRQ = DateTime.Now.ToString(),
                                    GZRY = "过账人员姓名"
                                    //WLPZ = materpz.S_WLPZ,
                                    //WLPZNF = materpz.S_WLPZNF,
                                    //WLPZXM = null,
                                    //GZRQ = "2025-03-20",
                                    //SRRQ = DateTime.Now.ToString(),
                                    //GZRY = "过账人员姓名"
                                }
                            }
                        };
@@ -3825,7 +4016,7 @@
                }
                catch (Exception ex)
                {
                    LogHelper.Info($"入库回调报错{ex.Message}");
                    LogHelper.Info($"冲销回库回调报错{ex.Message}");
                    db.RollbackTran();
                    throw;
                }