1.生产订单流程联调完成
2.外采入库124逻辑修改,代码优化
3.物料凭证逻辑优化
8个文件已修改
338 ■■■■■ 已修改文件
HH.WCS.Mobox3.pinggao.sln 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/ApibackModel.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsSapController.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/WmsSpaHelper.cs 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
config/config.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/MaterialVoucher.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
models/SapRoot.cs 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
util/Settings.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.pinggao.sln
@@ -5,6 +5,8 @@
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.pinggao", "HH.WCS.Mobox3.pinggao.csproj", "{7EFDEFAC-5C32-42D9-A2B9-8AD22857852D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "pinggaoWebApi", "..\..\..\pinggaoWebApi\pinggaoWebApi.csproj", "{ACB15C30-580D-4CBF-810E-EF02D735F6D4}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@
        {7EFDEFAC-5C32-42D9-A2B9-8AD22857852D}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {7EFDEFAC-5C32-42D9-A2B9-8AD22857852D}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {7EFDEFAC-5C32-42D9-A2B9-8AD22857852D}.Release|Any CPU.Build.0 = Release|Any CPU
        {ACB15C30-580D-4CBF-810E-EF02D735F6D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {ACB15C30-580D-4CBF-810E-EF02D735F6D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {ACB15C30-580D-4CBF-810E-EF02D735F6D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {ACB15C30-580D-4CBF-810E-EF02D735F6D4}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
api/ApibackModel.cs
@@ -143,7 +143,7 @@
                /// <summary>
                /// 物料凭证号
                /// </summary>
                public string WLPZBH { get; set; }
                public string WLPZH { get; set; }
                /// <summary>
                /// 物料凭年度
                /// </summary>
api/WmsSapController.cs
@@ -28,7 +28,7 @@
        /// <param name="xmlData"></param>
        /// <returns></returns>
        [HttpPost]
        public Orderback.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
        public GYSReturnRoot.Root GYSReceiveXmlData([FromBody] GYSDto.Root xmlData)
        {
            #region xml数据接收转数组
@@ -48,7 +48,7 @@
            #endregion
            #region 外采入库业务流程
            Orderback.Root simpleResult = WmsSpaHelper.GYS_In(xmlData);
            GYSReturnRoot.Root simpleResult = WmsSpaHelper.GYS_In(xmlData);
            //接收返回参数 生成sap对接文档返回格式
            //var json = WmsSpaHelper.GetJsonResult(simpleResult.WLPZBH, simpleResult.resultCode.ToString(), simpleResult.resultMsg);
api/WmsSpaHelper.cs
@@ -382,7 +382,8 @@
                    //else
                    //{
                    //判断冲销凭证编号 是否为空 如果为空 则为冲销(审核前才能冲销,非待执行状态提示执行中不可冲销) 不为空 则为外采入库
                    if (items.HEAD.YDLX != "124")
                    {
                    if ((items.ITEM.Where(s => s.CXPZH != null && s.CXPZH != "").Count() > 0))
                    {
                        //判断冲销物料是否为同一个入库单
@@ -462,68 +463,8 @@
                                db.Updateable(po1).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
                            }
                        }
                        db.CommitTran();
                    }
                    else if ( items.HEAD.YDLX == "124")
                    {
                        
                        //冲销凭证单号
                        var cxpzbh = items.HEAD.WLPZH;
                        var po = WMSHelper.GetInboundOrder(cxpzbh);
                        //判断是否执行 执行中订单允许冲销
                        if (po == null)
                        {
                            result.resultMsg = "失败";
                            result.WLPZBH = items.HEAD.WLPZH;
                            result.WLPZND = items.HEAD.WLPZND;
                            result.resultCode = 1;
                            result.resultMsg = "未找到此订单";
                            simpleResults.Add(result);
                            continue;
                        }
                        if (po.N_B_STATE != 0 && po.N_B_STATE != 7)
                        {
                            result.resultMsg = "失败";
                            result.WLPZBH = items.HEAD.WLPZH;
                            result.resultCode = 1;
                            result.WLPZND = items.HEAD.WLPZND;
                            result.resultMsg = "执行中订单不允许操作";
                            simpleResults.Add(result);
                            continue;
                        }
                        foreach (var item in items.ITEM)
                        {
                            var rkdmx = po.Details.Where(s => s.S_ITEM_CODE == item.WLBM).ToList();
                            if (rkdmx.Where(s => s.F_QTY < item.SL).Count() > 0)//数量大于明细
                            {
                                result.resultMsg = "失败";
                                result.WLPZBH = items.HEAD.WLPZH;
                                result.WLPZND = items.HEAD.WLPZND;
                                result.resultMsg = $"退货物料{item.WLBM}数量{item.SL}大于存入数量";
                                simpleResults.Add(result);
                                continue;
                            }
                            else if (rkdmx.Where(s => s.F_QTY == item.SL).Count() == 1)//数量==明细  删除当下入库单物料数据
                            {
                                db.Deleteable<TN_Inbound_Detail>().Where(it => it.S_ITEM_CODE == item.WLBM && it.S_IO_NO == cxpzbh).ExecuteCommand();
                            }
                            else if (rkdmx.Where(s => s.F_QTY > item.SL).Count() > 0)//数量小于明细
                            {
                                //当前物料明细
                                var rkd = rkdmx.Where(s => s.F_QTY > item.SL).FirstOrDefault();
                                rkd.F_QTY = rkd.F_QTY - item.SL;
                                db.Updateable(rkd).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand();
                            }
                            var po1 = db.Queryable<TN_Inbound_Order>().Includes(a => a.Details).Where(a => a.S_NO == cxpzbh).First();
                            int ssss = po1.Details.Count();
                            if (po1.Details.Count() == 0)
                            {
                                po1.N_B_STATE = 7;
                                db.Updateable(po1).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
                            }
                        }
                        db.CommitTran();
                    }
                    else
                    {
                        //创建入库单主子表
@@ -565,7 +506,7 @@
                                });
                                db.Insertable<TN_Inbound_Order>(po).ExecuteCommand();
                                db.Insertable<TN_Inbound_Detail>(po.Details).ExecuteCommand();
                                db.CommitTran();
                            }
                        }
@@ -614,7 +555,7 @@
                                });
                                db.Insertable<TN_Inbound_Detail>(Details).ExecuteCommand();
                                db.CommitTran();
                            }
                            //result.resultMsg = "成功";
@@ -627,15 +568,77 @@
                        }
                    }
                    }else
                    {
                    //}
                        //冲销凭证单号
                        foreach (var item1 in items.ITEM)
                        {
                            var cxpzbh = item1.CKPZH;
                            var po = WMSHelper.GetInboundOrder(cxpzbh);
                            //判断是否执行 执行中订单允许冲销
                            if (po == null)
                            {
                                result.resultMsg = "失败";
                                result.WLPZBH = items.HEAD.WLPZH;
                                result.WLPZND = items.HEAD.WLPZND;
                                result.resultCode = 1;
                                result.resultMsg = "未找到此订单";
                                simpleResults.Add(result);
                                continue;
                            }
                            if (po.N_B_STATE != 0 && po.N_B_STATE != 7)
                            {
                                result.resultMsg = "失败";
                                result.WLPZBH = items.HEAD.WLPZH;
                                result.resultCode = 1;
                                result.WLPZND = items.HEAD.WLPZND;
                                result.resultMsg = "执行中订单不允许操作";
                                simpleResults.Add(result);
                                continue;
                            }
                            foreach (var item in items.ITEM)
                            {
                                //s.S_ITEM_CODE == item.WLBM&&
                                var rkdmx = po.Details.Where(s => s.S_CKPZXM == item.CKPZHXM).ToList();
                                if (rkdmx.Where(s => s.F_QTY < item.SL).Count() > 0)//数量大于明细
                                {
                                    result.resultMsg = "失败";
                                    result.WLPZBH = items.HEAD.WLPZH;
                                    result.WLPZND = items.HEAD.WLPZND;
                                    result.resultMsg = $"退货物料{item.WLBM}数量{item.SL}大于存入数量";
                                    simpleResults.Add(result);
                                    continue;
                                }
                                else if (rkdmx.Where(s => s.F_QTY == item.SL).Count() == 1)//数量==明细  删除当下入库单物料数据
                                {
                                    db.Deleteable<TN_Inbound_Detail>().Where(it => it.S_ITEM_CODE == item.WLBM && it.S_IO_NO == cxpzbh).ExecuteCommand();
                                }
                                else if (rkdmx.Where(s => s.F_QTY > item.SL).Count() > 0)//数量小于明细
                                {
                                    //当前物料明细
                                    var rkd = rkdmx.Where(s => s.F_QTY > item.SL).FirstOrDefault();
                                    rkd.F_QTY = rkd.F_QTY - item.SL;
                                    db.Updateable(rkd).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand();
                                }
                                var po1 = db.Queryable<TN_Inbound_Order>().Includes(a => a.Details).Where(a => a.S_NO == cxpzbh).First();
                                int ssss = po1.Details.Count();
                                if (po1.Details.Count() == 0)
                                {
                                    po1.N_B_STATE = 7;
                                    db.Updateable(po1).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand();
                                }
                            }
                        }
                    }
                    result.resultMsg = "成功";
                    result.WLPZBH = items.HEAD.WLPZH;
                    result.WLPZND = items.HEAD.WLPZND;
                    result.resultCode = 0;
                    result.resultMsg = "";
                    db.CommitTran();
                    simpleResults.Add(result);
                }
@@ -660,32 +663,51 @@
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static Orderback.Root GYS_In(GYSDto.Root model)
        internal static GYSReturnRoot.Root GYS_In(GYSDto.Root model)
        {
            var orderResponse = new Orderback.Root
            var orderResponse = new GYSReturnRoot.Root
            {
                ROOT = new Orderback.ROOT
                ROOT = new GYSReturnRoot.ROOT
                {
                    ITEM = new List<Orderback.ITEM> { }
                    ITEM = new List<GYSReturnRoot.ITEM> { }
                }
            };
            List<Orderback.ITEM> tEMs = new List<Orderback.ITEM>();
            List<GYSReturnRoot.ITEM> tEMs = new List<GYSReturnRoot.ITEM>();
            var db = new SqlHelper<object>().GetInstance();
            try
            {
                db.BeginTran();
                foreach (var item in model.ROOT.GYSXX)
                {
                    Orderback.ITEM iTEM = new Orderback.ITEM();
                    GYSReturnRoot.ITEM iTEM = new GYSReturnRoot.ITEM();
                   
                    //创建入库单主子表
                    var po = WMSHelper.GetGYSBMOrder(item.JBXX.GYSBM);
                    if (po == null)
                   // var po = WMSHelper.GetGYSBMOrder(item.JBXX.GYSBM);
                    var po= db.Queryable<TN_Supplier>().Includes(a => a.Details).Where(a => a.S_GYSBM == item.JBXX.GYSBM).First();
                    if (po != null)
                    {
                        po = new TN_Supplier { S_GYSBM= item.JBXX.GYSBM , S_MDMBM = item.JBXX.MDMBM, };
                        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();
                    }
                    po = new TN_Supplier { S_GYSBM = item.JBXX.GYSBM, S_MDMBM = item.JBXX.MDMBM, S_GYSMC=item.JBXX.GYSMC, S_YHGJ=item.JBXX.YHGJ, S_YHDM = item.JBXX.YHDM ,
                        S_KHH = item.JBXX.KHH,
                        S_YHJD = item.JBXX.YHJD,
                        S_YHCS = item.JBXX.YHCS,
                        S_KHHZH = item.JBXX.KHHZH,
                        S_DZ = item.JBXX.DZ,
                        S_YZBM = item.JBXX.YZBM,
                        S_CS = item.JBXX.CS,
                        S_GJDM = item.JBXX.GJDM,
                        S_GJ = item.JBXX.GJ,
                        S_DQDM = item.JBXX.DQDM,
                        S_DQMC = item.JBXX.DQMC,
                        S_SH = item.JBXX.SH,
                        S_ZZSDJH = item.JBXX.ZZSDJH,
                    };
                        po.Details = new List<TN_Supplier_detial>();
                        if (item.GYSHB.Count > 0)
                        {
@@ -703,18 +725,8 @@
                            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.GYSBM = item.JBXX.GYSBM;
                    iTEM.MSGCODE = 0;
                    iTEM.MSGDESP = $"成功";
                    tEMs.Add(iTEM);
                }
@@ -723,10 +735,9 @@
            }
            catch (Exception e)
            {
                Orderback.ITEM iTEM = new Orderback.ITEM();
                iTEM.SCDDH = "";
                iTEM.GC = "";
                iTEM.MSGCODE = "1";
                GYSReturnRoot.ITEM iTEM = new GYSReturnRoot.ITEM();
                iTEM.GYSBM = "";
                iTEM.MSGCODE = 1;
                iTEM.MSGDESP = e.Message;
                tEMs.Add(iTEM);
                orderResponse.ROOT.ITEM = tEMs;
@@ -768,6 +779,7 @@
                    {
                        TN_GENERATE_ORDER tnorder = new TN_GENERATE_ORDER();
                        tnorder.S_GC = item.GC;
                        tnorder.S_SCDDH = item.SCDDH;
                        tnorder.S_SCDDH = item.SCDDH;
                        tnorder.S_DZMC = item.DZMC;
                        tnorder.S_SCDDCMS = item.SCDDCMS;
@@ -1819,6 +1831,7 @@
        /// <returns></returns>
        internal static async Task<SimpleResult> OutboundOrderSorting(FJSorting model)
        {
            var result = new SimpleResult();
          
            // var db = new SqlHelper<object>().GetInstance();
@@ -1883,13 +1896,23 @@
                    var req = new AddChangeModel { op_type = 4 };
                    //库区量表升量
                    var req2 = new AddChangeModel { op_type = 7 };
                        var S_WH_CODE = "";
                        var S_AREA_CODE = "";
                        if (string.IsNullOrEmpty(po.S_WH_CODE))
                        {
                            S_WH_CODE = util.Settings.WHCode;
                        }
                        if (string.IsNullOrEmpty(po.S_AREA_CODE))
                        {
                            S_AREA_CODE = util.Settings.AREACode;
                        }
                    model.MaterList.ForEach(a =>
                    {
                        LogHelper.Info($"填充数据");
                        LogHelper.Info($"减仓库量表数据 仓库{po.S_WH_CODE} 物料编码{a.item_code} 物料名称 数量{a.qty}");
                            LogHelper.Info($"填充数据{util.Settings.WHCode}");
                            LogHelper.Info($"减仓库量{util.Settings.AREACode}表数据 仓库{po.S_WH_CODE} 物料编码{a.item_code} 物料名称 数量{a.qty}");
                        req.item_info.Add(new AddChangeModel.itemModel
                        {
                            wh_code = po.S_WH_CODE,
                                wh_code = S_WH_CODE,
                            item_code = a.item_code,
                            item_name = "",
                            qty = a.qty
@@ -1897,8 +1920,8 @@
                        LogHelper.Info($"减库区量表数据 库区{po.S_AREA_CODE} 物料编码{a.item_code} 物料名称 数量{a.qty}");
                        req2.item_info.Add(new AddChangeModel.itemModel
                        {
                            wh_code = po.S_WH_CODE,
                            area_code = po.S_AREA_CODE,
                                wh_code = S_WH_CODE,
                                area_code = S_AREA_CODE,
                            item_code = a.item_code,
                            item_name = "",
                            qty = a.qty
@@ -1939,6 +1962,7 @@
                        LogHelper.Info($"mobox 库区降量接口返回 {res2}");
                        var moboxres = JsonConvert.DeserializeObject<moboxres>(res);
                        if (moboxres.err_code != 0)
                        {
                            adds = false;
                        }
@@ -1958,7 +1982,8 @@
                  
                }
                catch (Exception e)
                {result.resultMsg=e.Message;
                {
                    result.resultMsg = e.Message;
                    db.RollbackTran();
                    return result;
                    throw;
@@ -2227,12 +2252,14 @@
                            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_WLPZBH = data.ROOT.ITEM?.WLPZH;
                            materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND; 
                        materialVoucher.S_WH_CODE = po.S_WH_CODE;
                        materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                        materialVoucher.F_QTY = item.qty;
                        materialVoucher.STATUS = 0;
                        materialVoucher.S_GZRQ = po.BUDAT;
                        materialVoucher.UNAME = po.UNAME;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                        }
                        //MaterialVoucher materialVoucher = new MaterialVoucher();
@@ -2428,6 +2455,8 @@
                            materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND;
                        materialVoucher.S_WH_CODE = po.S_WH_CODE;
                        materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                        materialVoucher.S_GZRQ = po.BUDAT;
                        materialVoucher.UNAME = po.UNAME;
                        materialVoucher.F_QTY = item.qty;
                        materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
@@ -2501,7 +2530,7 @@
                    };
                    List<CXCkBackDto.HEAD> listhead = new List<CXCkBackDto.HEAD>();
                    //出库单详情
                    var porecord = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == po.S_BS_NO).ToList();
                var porecord = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == po.S_BS_NO&&a.STATUS==0).ToList();
                    foreach (var item in MaterList)
                    {
                        CXCkBackDto.HEAD hEAD = new CXCkBackDto.HEAD();
@@ -2514,8 +2543,8 @@
                    //hEAD.WLPZ = porecord.First()?.S_WLPZBH;
                    //hEAD.WLPZNF = porecord.First()?.S_WLPZND;
                    hEAD.WLPZ = po.S_WLPZ;
                    hEAD.WLPZNF = po.S_WLPZND;
                    hEAD.WLPZ = porecord.FirstOrDefault()?.S_WLPZBH;
                    hEAD.WLPZNF = porecord.FirstOrDefault()?.S_WLPZND;
                    hEAD.WLPZXM = item.N_ROW_NO;
                        hEAD.GZRY = po.UNAME;
                        listhead.Add(hEAD);
@@ -2550,6 +2579,7 @@
                    XmlDocument xmlDoc = new XmlDocument();
                    xmlDoc.LoadXml(responses.Output.ToString());
                    JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                EnsureArrayFormat(jsonObject, "ITEM", "");
                    var data = JsonConvert.DeserializeObject<ReturnTYBcak.Root>(jsonObject.ToString());
                    var resmeg = "";
                    int rescode = 0;
@@ -2562,7 +2592,7 @@
                            if (item.MSGCODE == 0)
                        {
                            var onr = MaterList.Where(s => s.N_ROW_NO == item.WLPZHXM).First();
                            var onr = MaterList.Where(s => s.N_ROW_NO == item.WLPZHXM).FirstOrDefault();
                                MaterialVoucher materialVoucher = new MaterialVoucher();
                                materialVoucher.S_NO = po.S_NO;
@@ -2576,15 +2606,21 @@
                                materialVoucher.S_YWLPZHXM = item?.YWLPZHXM;
                                materialVoucher.S_WH_CODE = po.S_WH_CODE;
                                materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                            materialVoucher.F_QTY = onr.qty;
                            materialVoucher.S_GZRQ = po.BUDAT;
                            materialVoucher.UNAME = po.UNAME;
                            materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                            materialVoucher.F_QTY = onr == null ? 0 : onr.qty;
                                //materialVoucher.STATUS = 0;
                                resmeg += item?.MSGDESP;
                                materiallist.Add(materialVoucher);
                          
                      
                            }
                            else {
                        else
                        {
                                rescode = 1;
                            resmeg += item?.MSGDESP;
                            }
                          
                         
@@ -2758,6 +2794,8 @@
                            materialVoucher.S_WH_CODE = po.S_WH_CODE;
                            materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                            materialVoucher.F_QTY = item.qty;
                        materialVoucher.S_GZRQ = po.BUDAT;
                        materialVoucher.UNAME = po.UNAME;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                        }
@@ -3547,7 +3585,7 @@
                MaterialVoucher materialVoucher = new MaterialVoucher();
                materialVoucher.S_NO = model.S_NO;
                materialVoucher.S_TYPE = po.S_IN_TYPE;
                materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
                materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                materialVoucher.STATUS = 0;
                db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
@@ -3654,7 +3692,6 @@
                    }
                    else LogHelper.Info($"入库单明细无值");
                    #endregion
                    var CntrItemRels = db.Queryable<CntrItemRel>().Where(a => a.S_BS_NO == model.S_NO).ToList();
                    if (po == null)
                    {
@@ -3788,7 +3825,7 @@
                        {
                            materialVoucher.S_NO = model.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                            materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
@@ -3926,7 +3963,7 @@
                            MaterialVoucher materialVoucher = new MaterialVoucher();
                            materialVoucher.S_NO = po.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZBH;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                            materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
@@ -4057,7 +4094,9 @@
                            MaterialVoucher materialVoucher = new MaterialVoucher();
                            materialVoucher.S_NO = model.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZBH;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM?.WLPZH;
                            LogHelper.Info("值1: " + data.ROOT.ITEM?.WLPZH);
                            LogHelper.Info("值2: " + materialVoucher.S_WLPZBH);
                            materialVoucher.S_WLPZND = data.ROOT.ITEM?.WLPZND;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
@@ -4077,7 +4116,7 @@
                    else if (po.S_IN_TYPE == "冲销入库")
                    {
                        //var materpz = db.Queryable<TN_Inbound_Order>().Where(s => s.S_NO == po.S_NO).First();
                        var materpz = db.Queryable<TN_Inbound_Order>().Where(s => s.S_NO == po.S_NO).First();
                        string GZRQ = "";
                        LogHelper.Info($"冲销入库入库{po.BUDAT}");
                        if (po.BUDAT != null)
@@ -4150,12 +4189,17 @@
                        // 处理响应
                        LogHelper.Info("通用冲销SAP返回结果: " + responses.Output);
                        //string xmlqqq = "<ROOT>\r\n\t<ITEM>\r\n\t\t<YWLPZBH>490062947</YWLPZBH>\r\n\t\t<YWLPZND>2025</YWLPZND>\r\n\t\t<YWLPZHXM>001</YWLPZHXM>\r\n\t\t<WLPZBH>490062949</WLPZBH>\r\n\t\t<WLPZND>\r\n\t\t</WLPZND>\r\n\t\t<WLPZHXM>D0001</WLPZHXM>\r\n\t\t<MSGCODE>0</MSGCODE>\r\n\t\t<MSGDESP>数据接收成功,并冲中销成功!</MSGDESP>\r\n\t</ITEM>\r\n</ROOT>";
                        // 将 XmlDocument 转换为 JSON 字符串
                        //JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                        XmlDocument xmlDoc = new XmlDocument();
                        xmlDoc.LoadXml(responses.Output.ToString());
                        JObject jsonObject = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeXmlNode(xmlDoc));
                        EnsureArrayFormat(jsonObject, "ITEM", "");
                        //var data = JsonConvert.DeserializeObject<ReturnJHWBcak.Root>(jsonObject.ToString());
                        var data = JsonConvert.DeserializeObject<ReturnTYBcak.Root>(jsonObject.ToString());
                        var resmeg = "";
@@ -4169,7 +4213,7 @@
                                if (item.MSGCODE == 0)
                                {
                                    var onr = po.Details.Where(s => s.N_ROW_NO == item.WLPZHXM).First();
                                    var onr = po.Details.Where(s => s.N_ROW_NO == item.WLPZHXM).FirstOrDefault();
                                    MaterialVoucher materialVoucher = new MaterialVoucher();
                                    materialVoucher.S_NO = po.S_NO;
@@ -4183,7 +4227,7 @@
                                    materialVoucher.S_YWLPZHXM = item?.YWLPZHXM;
                                    materialVoucher.S_WH_CODE = po.S_WH_CODE;
                                    materialVoucher.S_AREA_CODE = po.S_AREA_CODE;
                                    materialVoucher.F_QTY = onr.F_QTY;
                                    materialVoucher.F_QTY = onr != null ? onr.F_QTY : 0;
                                    //materialVoucher.STATUS = 0;
                                    resmeg += item?.MSGDESP;
                                    materiallist.Add(materialVoucher);
@@ -4192,7 +4236,7 @@
                                }
                                else
                                {
                                    rescode = 1;
                                    rescode = 1; resmeg += item?.MSGDESP;
                                }
config/config.json
@@ -13,6 +13,7 @@
  "ApiPort": 8801,
  "FacCode": "0000",
  "WHCode": "HNPG",
  "AreaCode": "HNPG",
  "DeviceInfo": [
    {
      "address": "127.0.0.11",
models/MaterialVoucher.cs
@@ -23,6 +23,8 @@
        /// </summary>
        public string S_WLPZBH { get; set; }
        public string S_WLPZND { get; set; }
        public string S_GZRQ { get; set; }
        public string UNAME { get; set; }
        public string S_WLPZHXM  { get; set; }
        public string S_YWLPZBH { get; set; }
        public string S_YWLPZND { get; set; }
models/SapRoot.cs
@@ -290,6 +290,52 @@
            }
        }
        #endregion
        #region 供应商收货回参
        /// <summary>
        /// 供应商收货回参
        /// </summary>
        public class GYSReturnRoot
        {
            public class ITEM
            {
                /// <summary>
                /// 物料凭证号
                /// </summary>
                public string GYSBM { get; set; }
                /// <summary>
                /// 返回结果标识(0成功或者1失败)字符长
                /// </summary>
                public int MSGCODE { get; set; }
                /// <summary>
                /// 失败原因或者成功信息字符长度255
                /// </summary>
                public string MSGDESP { get; set; }
            }
            public class ROOT
            {
                /// <summary>
                ///
                /// </summary>
                public List<ITEM> ITEM { get; set; }
            }
            public class Root
            {
                /// <summary>
                ///
                /// </summary>
                public ROOT ROOT { get; set; }
            }
        }
        #endregion
        #region 领料单回参
        public class LLDReturnRoot {
@@ -712,6 +758,11 @@
                /// 王慧君
                /// </summary>
                public string GYSMC { get; set; }
                public string YHGJ { get; set; }
                public string YHDM { get; set; }
                public string KHH { get; set; }
                public string YHJD { get; set; }
                public string YHCS { get; set; }
                /// <summary>
                /// 
                /// </summary>
@@ -740,6 +791,7 @@
                /// 
                /// </summary>
                public string DQDM { get; set; }
                public string DQMC { get; set; }
                /// <summary>
                /// 
                /// </summary>
util/Settings.cs
@@ -23,6 +23,7 @@
        public static int port { get; set; }
        public static string WHCode { get; set; }
        public static string AREACode { get; set; }
        public static string FacCode { get; set; }
        public static void Init()
@@ -59,6 +60,10 @@
                            {
                                SapUrl = keyValue.Value.ToString();
                            }
                            if (keyValue.Name == "AreaCode")
                            {
                                AREACode = keyValue.Value.ToString();
                            }
                            if (keyValue.Name == "AppKey")
                            {
                                AppKey = keyValue.Value.ToString();