hudong
2025-05-30 1483d0e74b4dde9eb22e022276390bfa1f24495b
api/WmsSpaHelper.cs
@@ -30,11 +30,11 @@
using System.Security.Policy;
using HH.WCS.Mobox3.pinggao.models;
using static HH.WCS.Mobox3.pinggao.wms.WMSHelper;
using WHTest;
using System.Net;
using SqlSugar;
using static HH.WCS.Mobox3.pinggao.models.SapRoot.GYSDto;
using System.Web.Services.Protocols;
using System.Web.Http.ValueProviders;
namespace HH.WCS.Mobox3.pinggao.api
{
@@ -1133,9 +1133,9 @@
                                            result.resultCode = 1;
                                            result.resultMsg = $"物料{a.WLBM}物料主数据不存在该物料";
                                            result.resultMsg = "失败";
                                            result.WLPZBH = itemwlpz.HEAD.WLPZH;
                                            result.WLPZND = itemwlpz.HEAD.ND;
                                            simpleResults.Add(result);
                                            continue;
                                            /*  throw new Exception($"物料{a.WLH}物料主数据不存在该物料")*/
                                            ;
@@ -1260,12 +1260,13 @@
                            }
                        }
                    }
                    result.resultMsg = "成功";
                    result.WLPZBH = itemwlpz.HEAD.WLPZH;
                    result.WLPZND = itemwlpz.HEAD.ND;
                    result.resultCode = 0;
                    result.resultMsg = "";
                    simpleResults.Add(result);
                    var result2 = new SimpleResult();
                    result2.resultMsg = "成功";
                    result2.WLPZBH = itemwlpz.HEAD.WLPZH;
                    result2.WLPZND = itemwlpz.HEAD.ND;
                    result2.resultCode = 0;
                    simpleResults.Add(result2);
                    db.CommitTran();
                }
            }
@@ -1736,6 +1737,7 @@
            using (var db = new SqlHelper<object>().GetInstance())
            {
                var locinfo = db.Queryable<Location>().Where(a => a.S_CODE == model.start).First();
                if (locinfo?.N_LOCK_STATE != 0)
                {
                    result.resultCode = 3;
@@ -1754,7 +1756,7 @@
                result.resultMsg = "成功";
                result.resultCode = 0;
                //校验入库单数量,不可以超,成功后插入托盘物料表,更新入库单累计数量
                result = AddInboundOrder(model.MaterList, model.cntr_code);
                result = AddInboundOrder(model.MaterList, model.cntr_code,model.cntr_type);
                #region MyRegion
@@ -1823,7 +1825,209 @@
            }
        }
        /// <summary>
        /// 分拣
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        internal static async Task<SimpleResult> KtSorting(KtSorting model)
        {
            var result = new SimpleResult();
            // var db = new SqlHelper<object>().GetInstance();
            using (var db = new SqlHelper<object>().GetInstance())
            {
                try
                {
                    result.resultMsg = "成功";
                    result.resultCode = 0;
                    var locinfo = db.Queryable<Location>().Where(a => a.S_CODE == model.start).First();
                    if (locinfo?.N_LOCK_STATE != 0)
                    {
                        result.resultCode = 3;
                        result.resultMsg = $"起始库位已锁/不存在";
                        return result;
                    }
                    //判断托盘是否已经生成任务,如果没有则生成
                    var wmsTaskcs = WMSHelper.GetWmsTaskByCntr(model.cntr_code);
                    if (wmsTaskcs != null)
                    {
                        result.resultCode = 3;
                        result.resultMsg = $"起点{model.start} 托盘{model.cntr_code}已经创建任务,请勿重复申请";
                        return result;
                    }
                    //出库
                    if (model.Type==2)
                    {
                        Location start = new Location();
                        if (!string.IsNullOrEmpty(model.cntr_code))
                        {
                           var loc= db.Queryable<LocCntrRel>().Where(it => it.S_CNTR_CODE == model.cntr_code).First();
                            if (loc==null)
                            {
                                LogHelper.Info($"容器{model.cntr_code}找不到对应货位");
                                result.resultMsg = $"容器{model.cntr_code}找不到对应货位";
                                result.resultCode = 1;
                                return result;
                            }
                            else
                            {
                                start= db.Queryable<Location>().Where(it => it.S_CODE == loc.S_LOC_CODE).First();
                            }
                        }
                        else
                        {
                            #region MyRegion
                            //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray();
                            //var S_LOC_CODElist =   db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray();
                            //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First();
                            //// 获取所有被占用的容器编码
                            //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList();
                            //// 获取未被占用的容器对应的货位编码
                            //var availableLocationCodes = db.Queryable<LocCntrRel>()
                            //    .Where(s => !usedContainerCodes.Contains(s.S_CNTR_CODE))
                            //    .Select(s => s.S_LOC_CODE)
                            //    .ToList();
                            //// 获取第一个可用货位(如果没有则返回null)
                            //var startLocation = db.Queryable<Location>()
                            //    .Where(it => availableLocationCodes.Contains(it.S_CODE))
                            //    .ToList().FirstOrDefault();
                            #endregion
                            start = db.Queryable<LocCntrRel>()
                                    .LeftJoin<CntrItemRel>((lcr, cir) => lcr.S_CNTR_CODE == cir.S_CNTR_CODE)
                                    .Where((lcr, cir) => cir.S_CNTR_CODE == null)  // 找出未被占用的容器
                                    .LeftJoin<Location>((lcr, cir, loc) => lcr.S_LOC_CODE == loc.S_CODE&&loc.S_AREA_CODE== "HJQ")
                                    .Select((lcr, cir, loc) => loc).ToList()  // 返回 Location 对象
                                    .FirstOrDefault();  // 或者 Take(1).ToList()[0]
                        }
                        if (start==null)
                        {
                            LogHelper.Info($"{model.cntr_code}未找到可用货位");
                            result.resultMsg = $"{model.cntr_code}未找到可用货位";
                            result.resultCode = 1;
                            return result;
                        }
                        //库位信息
                        var endinfo = db.Queryable<Location>().Where(it => it.S_CODE == model.start).First();
                        var wmsTask = new WMSTask
                        {
                            S_CNTR_CODE = model.cntr_code,
                            S_CODE = WMSHelper.GenerateTaskNo(),
                            S_START_LOC = start.S_CODE,
                            S_START_AREA = start.S_AREA_CODE,
                            S_START_WH = start.S_WH_CODE,
                            S_END_LOC = endinfo.S_CODE,
                            S_END_AREA = endinfo.S_AREA_CODE,
                            S_END_WH = endinfo.S_WH_CODE,
                            N_TYPE = 2,
                            // S_TYPE = WMSTask.GetTypeStr(1),
                            S_TYPE = "出库空托盘",
                            S_OP_DEF_CODE = "",
                            S_OP_DEF_NAME = "pda出库"
                        };
                        if (WMSHelper.CreateWmsTask(wmsTask))
                        {
                            LocationHelper.LockLoc(start.S_CODE, 2);
                            result.resultMsg = $"创建作业成功,作业号{wmsTask.S_CODE}";
                        }
                    }
                    else //入库
                    {
                        Location end = new Location();
                        if (!string.IsNullOrEmpty(model.cntr_code))
                        {
                            #region MyRegion
                            //var list = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToArray();
                            //var S_LOC_CODElist =   db.Queryable<LocCntrRel>().Where(s=>!list.Contains(s.S_CNTR_CODE)).Select(s=>s.S_LOC_CODE).ToArray();
                            //start = db.Queryable<Location>().Where(it => S_LOC_CODElist.Contains(it.S_CODE)).First();
                            //// 获取所有被占用的容器编码
                            //var usedContainerCodes = db.Queryable<CntrItemRel>().Select(s => s.S_CNTR_CODE).ToList();
                            // 获取未被占用的容器对应的货位编码
                            var availableLocationCodes = db.Queryable<LocCntrRel>()
                                .Select(s => s.S_LOC_CODE)
                                .ToList();
                            // 获取第一个可用货位(如果没有则返回null)
                            end = db.Queryable<Location>()
                               .Where(it => !availableLocationCodes.Contains(it.S_CODE)&&it.S_AREA_CODE== "HJQ")
                               .ToList().FirstOrDefault();
                            #endregion
                        }
                        else
                        {
                            LogHelper.Info($"入库 容器{model.cntr_code}不能为空");
                            result.resultMsg = $"入库 容器{model.cntr_code}不能为空";
                            result.resultCode = 1;
                            return result;
                        }
                        if (end==null)
                        {
                            LogHelper.Info($"{model.cntr_code}未找到可用货位");
                            result.resultMsg = $"{model.cntr_code}未找到可用货位";
                            result.resultCode = 1;
                            return result;
                        }
                        var sart = db.Queryable<Location>().Where(it => it.S_CODE == model.start).First();
                        var wmsTask = new WMSTask
                        {
                            S_CNTR_CODE = model.cntr_code,
                            S_CODE = WMSHelper.GenerateTaskNo(),
                            S_START_LOC = sart.S_CODE,
                            S_START_AREA = sart.S_AREA_CODE,
                            S_START_WH = sart.S_WH_CODE,
                            S_END_LOC = end.S_CODE,
                            S_END_AREA = end.S_AREA_CODE,
                            S_END_WH = end.S_WH_CODE,
                            N_TYPE = 1,
                            // S_TYPE = WMSTask.GetTypeStr(1),
                            S_TYPE = "入库空托盘",
                            S_OP_DEF_CODE = "",
                            S_OP_DEF_NAME = "pda入库"
                        };
                        if (WMSHelper.CreateWmsTask(wmsTask))
                        {
                            LocationHelper.LockLoc(end.S_CODE, 1);
                            result.resultMsg = $"创建作业成功,作业号{wmsTask.S_CODE}";
                        }
                    }
                    //通用接口 对容器货品的删减 和生成回库单 都要用的接口
                    return result;
                }
                catch (Exception e)
                {
                    result.resultMsg = e.Message;
                    db.RollbackTran();
                    return result;
                    throw;
                }
            }
        }
        /// <summary>
        /// 分拣
        /// </summary>
@@ -1861,7 +2065,7 @@
                        return result;
                    }
                    LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}");
                    //根据不同出库类型 回调sap
                    if (po.S_OUT_TYPE == "冲销出库")
                    {
@@ -1870,7 +2074,7 @@
                    else
                    if (po.S_OUT_TYPE == "出库")//普通出库
                    {
                        LogHelper.Info($"S_OUT_TYPE{po.S_OUT_TYPE}");
                        result = await AddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.start);
                    }
                    else if (po.S_OUT_TYPE == "计划外发料出库")
@@ -1883,7 +2087,11 @@
                    }
                    //通用接口 对容器货品的删减 和生成回库单 都要用的接口
                    result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, model.start, po.S_OUT_TYPE);
                    result = await TYAddOutboundOrder(db, model.MaterList, model.arrival_no, model.cntr_code, model.IsHK, model.start, po.S_OUT_TYPE,model.cntr_type);
                    if (result.resultCode==1)
                    {
                        return result;
                    }
                    #region 升降量
                    bool adds = true;
@@ -1901,32 +2109,40 @@
                        if (string.IsNullOrEmpty(po.S_WH_CODE))
                        {
                            S_WH_CODE = util.Settings.WHCode;
                        }
                        }
                        else
                        {
                            S_WH_CODE = po.S_WH_CODE;
                        }
                        if (string.IsNullOrEmpty(po.S_AREA_CODE))
                        {
                            S_AREA_CODE = util.Settings.AREACode;
                        }
                        model.MaterList.ForEach(a =>
                        else
                        {
                            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
                            S_AREA_CODE = po.S_AREA_CODE;
                        }
                            model.MaterList.ForEach(a =>
                            {
                                wh_code = S_WH_CODE,
                                item_code = a.item_code,
                                item_name = "",
                                qty = 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 = S_WH_CODE,
                                    item_code = a.item_code,
                                    item_name = "",
                                    qty = a.qty
                                });
                                LogHelper.Info($"减库区量表数据 库区{po.S_AREA_CODE} 物料编码{a.item_code} 物料名称 数量{a.qty}");
                                req2.item_info.Add(new AddChangeModel.itemModel
                                {
                                    wh_code = S_WH_CODE,
                                    area_code = S_AREA_CODE,
                                    item_code = a.item_code,
                                    item_name = "",
                                    qty = a.qty
                                });
                            });
                            LogHelper.Info($"减库区量表数据 库区{po.S_AREA_CODE} 物料编码{a.item_code} 物料名称 数量{a.qty}");
                            req2.item_info.Add(new AddChangeModel.itemModel
                            {
                                wh_code = S_WH_CODE,
                                area_code = S_AREA_CODE,
                                item_code = a.item_code,
                                item_name = "",
                                qty = a.qty
                            });
                        });
                        var reqData = JsonConvert.SerializeObject(req);
                        var AppKey = Settings.AppKey;
                        var AppSecret = Settings.AppSecret;
@@ -1972,7 +2188,7 @@
                            LogHelper.Info($"mobox 库区降量接口返回为空");
                        }
                        if (adds) addOnShelves(po, model.cntr_code, 2);
                        //if (adds) addOnShelves(po, model.cntr_code, 2);
                    }
                    else LogHelper.Info($"托盘{model.cntr_code}无需要升降量的物料");
@@ -1983,6 +2199,7 @@
                }
                catch (Exception e)
                {
                    LogHelper.Info($"报错{e.Message}");
                    result.resultMsg = e.Message;
                    db.RollbackTran();
                    return result;
@@ -1991,7 +2208,7 @@
            }
        }
        public static async Task<SimpleResult> TYAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, bool isHK, string start, string S_OUT_TYPE)
        public static async Task<SimpleResult> TYAddOutboundOrder(SqlSugarClient db, List<Mater> MaterList, string arrival_no, string cntr_code, bool isHK, string start, string S_OUT_TYPE,string cntr_type)
        {
            // var db = new SqlHelper<object>().GetInstance();
            //using (var db = new SqlHelper<object>().GetInstance())
@@ -2022,6 +2239,7 @@
                        if (cir != null)
                        {
                            cir.F_QTY -= item.qty;
                            cir.S_CNTR_TYPE = cntr_type;
                            cir.F_ALLOC_QTY -= item.qty;
                            cir.T_MODIFY = DateTime.Now;
                            if (cir.F_QTY == 0)
@@ -2030,10 +2248,8 @@
                            }
                            else
                            {
                                db.Updateable(cir).UpdateColumns(it => new { it.F_QTY, it.F_ALLOC_QTY, it.T_MODIFY }).ExecuteCommand();
                                db.Updateable(cir).UpdateColumns(it => new { it.F_QTY,it.S_CNTR_TYPE, it.F_ALLOC_QTY, it.T_MODIFY }).ExecuteCommand();
                                //添加回库作业
                            }
                        }
                        else
@@ -2044,31 +2260,7 @@
                            LogHelper.Info($"物料不存在{item.item_code}");
                            return result;
                        }
                        if (isHK)
                        {
                            var wmsTask = new WMSTask
                            {
                                S_CNTR_CODE = cntr_code,
                                S_CODE = WMSHelper.GenerateTaskNo(),
                                S_START_LOC = start,
                                S_START_AREA = startinfo.S_AREA_CODE,
                                S_START_WH = startinfo.S_WH_CODE,
                                S_END_LOC = startinfo.S_CODE,
                                S_END_AREA = startinfo.S_AREA_CODE,
                                S_END_WH = startinfo.S_WH_CODE,
                                N_TYPE = 1,
                                // S_TYPE = WMSTask.GetTypeStr(1),
                                S_TYPE = "回库",
                                S_OP_DEF_CODE = "",
                                S_OP_DEF_NAME = "pda入库"
                            };
                            if (WMSHelper.CreateWmsTask(wmsTask))
                            {
                                LocationHelper.LockLoc(start, 1);
                                result.resultMsg = $"创建作业成功,作业号{wmsTask.S_CODE}";
                            }
                        }
                        OutboundRecord outboundRecord = new OutboundRecord();
                        outboundRecord.S_WLPZBH = pz?.S_WLPZBH;
                        outboundRecord.S_WLPZND = pz?.S_WLPZND;
@@ -2088,14 +2280,65 @@
                        return result;
                    }
                }
                db.Insertable<OutboundRecord>(records).ExecuteCommand();
                if (isHK)
                {
                    var locs= db.Queryable<WCSTask>().Where(a =>a.S_TYPE.Contains("出库")&& a.S_CNTR_CODE == cntr_code&&a.N_B_STATE==3).OrderByDescending(s=>s.T_END_TIME).First();
                    if (locs!=null)
                    {
                        var cntr= db.Queryable<TN_Distribution_CNTR>().Where(a => a.S_DC_NO== locs.S_BS_NO).First();
                        if (cntr!=null)
                        {
                            cntr.S_SORT_TYPE = "已分拣";
                            db.Updateable(cntr).UpdateColumns(it => new { it.S_SORT_TYPE }).ExecuteCommand();
                        }
                        else
                        {
                            result.resultCode = 1;
                            result.resultMsg += $"任务{locs.S_CODE}来源号{locs.S_BS_NO}找不到配盘信息";
                            return result;
                        }
                            //var location = db.Queryable<Location>().Where(a => a.S_CODE == locs.S_LOC_CODE).First();
                            var wmsTask = new WMSTask
                            {
                                S_CNTR_CODE = cntr_code,
                                S_CODE = WMSHelper.GenerateTaskNo(),
                                S_START_LOC = start,
                                S_START_AREA = startinfo.S_AREA_CODE,
                                S_START_WH = startinfo.S_WH_CODE,
                                S_END_LOC = locs?.S_START_LOC,
                                S_END_AREA = locs?.S_START_AREA,
                                S_END_WH = locs?.S_START_WH,
                                N_TYPE = 1,
                                // S_TYPE = WMSTask.GetTypeStr(1),
                                S_TYPE = "回库",
                                S_OP_DEF_CODE = "",
                                S_OP_DEF_NAME = "pda入库"
                            };
                        if (WMSHelper.CreateWmsTask(wmsTask))
                        {
                            LocationHelper.LockLoc(start, 1);
                            result.resultMsg = $"创建作业成功,作业号{wmsTask.S_CODE}";
                        }
                    }
                    else
                    {
                        result.resultCode = 1;
                        result.resultMsg += $"找不到容器对应任务信息{cntr_code}";
                        return result;
                    }
                }
               var sss= db.Insertable<OutboundRecord>(records).ExecuteCommand();
                //db.CommitTran();
            }
            catch (Exception ex)
            {
                //db.RollbackTran();
                LogHelper.Info("物料信息绑定到满容器上" + ex.Message);
                result.resultCode = 1;
                result.resultMsg += ex.Message;
                Console.WriteLine(ex.Message);
                throw;
@@ -2677,15 +2920,15 @@
                var po = db.Queryable<TN_Outbound_Order>().Includes(s => s.Details).Where(a => a.S_NO == arrival_no).First();
                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");
                //if (po.Details[0].S_CJRQ != null)
                //{
                //    GZRQ = DateTime.Parse(po.Details[0].S_CJRQ.ToString()).ToString("yyyyMMdd");
                //}
                //if (po.Details[0].S_XQRQ != null)
                //{
                //    PZZDRQ = DateTime.Parse(po.Details[0].S_XQRQ.ToString()).ToString("yyyyMMdd");
                }
                //}
                CkBcakDto.Root myRoot = new CkBcakDto.Root
                {
                    ROOT = new CkBcakDto.ROOT
@@ -2693,10 +2936,10 @@
                        WLPZ = new CkBcakDto.WLPZ
                        {
                            KEY = po.S_NO,
                            ZYWLX = "业务类型值",
                            PZRQ = PZZDRQ,
                            GZRQ = GZRQ, // 假设日期格式为"年-月-日"
                            GZRY = po.UNAME,
                            ZYWLX = "2",
                            PZRQ = DateTime.Now.ToString("yyyyMMdd"),
                            GZRQ =DateTime.Now.ToString("yyyyMMdd"), // 假设日期格式为"年-月-日"
                            GZRY = po.S_CREATOR_NAME,
                            ITEM = new List<CkBcakDto.ITEM>
                            {
                            }
@@ -2730,7 +2973,7 @@
                    //var serialNos = string.Join(",", CntrItemRels
                    //                    .Where(s => s.S_ITEM_CODE == item.item_code)
                    //                    .Select(s => s.S_SERIAL_NO));
                    listitem1.XLH = podetail?.S_SERIAL_NO.Split(',').ToList();
                    listitem1.XLH = podetail?.S_SERIAL_NO==null?null: podetail?.S_SERIAL_NO.Split(',').ToList();
                    //foreach (var xlhValue in xlhValues)
                    //{
                    //    CkBcakDto.ITEM1 newItem = new CkBcakDto.ITEM1 { XLH = xlhValue };
@@ -2740,6 +2983,10 @@
                    iTEMs.Add(ckbitem);
                }
                myRoot.ROOT.WLPZ.ITEM = iTEMs;
                if (myRoot.ROOT.WLPZ.ITEM.Where(s=>!string.IsNullOrEmpty(s.SCDD) && !string.IsNullOrEmpty(s.YLBH) && !string.IsNullOrEmpty(s.YLXMH)).Count()==0)
                {
                    myRoot.ROOT.WLPZ.ZYWLX = "2";
                }
                //db.Insertable<OutboundRecord>(records).ExecuteCommand();
                #region wms-sap回调
                //类转json
@@ -2839,7 +3086,7 @@
        /// <param name="cntr_code"></param>
        /// <returns></returns>
        [ApiExplorerSettings(IgnoreApi = true)]
        public static SimpleResult AddInboundOrder(List<Mater> MaterList, string cntr_code)
        public static SimpleResult AddInboundOrder(List<Mater> MaterList, string cntr_code,string S_CNTR_TYPE)
        {
            var result = new SimpleResult();
            //  var db = new SqlHelper<object>().GetInstance();
@@ -2884,12 +3131,13 @@
                                    if (cir != null)
                                    {
                                        cir.F_QTY += item.qty;
                                        db.Updateable(cir).UpdateColumns(it => new { it.F_QTY }).ExecuteCommand();
                                        cir.S_CNTR_TYPE = S_CNTR_TYPE;
                                        db.Updateable(cir).UpdateColumns(it => new { it.F_QTY,it.S_CNTR_TYPE }).ExecuteCommand();
                                    }
                                    else
                                    {
                                        //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 };
                                        cir = new CntrItemRel { S_CNTR_TYPE= S_CNTR_TYPE, 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);
@@ -2988,7 +3236,7 @@
                                        lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                        iTEMs.Add(lLDReturnRoots);
                                        continue;
                                        break ;
                                    }
                                    po.Details.Add(new TN_Ll_detail
                                    {
@@ -2998,14 +3246,27 @@
                                        S_ITEM_CODE = a.WLBM,
                                        S_ITEM_NAME = item.S_ITEM_NAME,
                                        F_QTY = a.XQSL,
                                        S_ZJBM = a.ZJBM,
                                        S_YLBH = a.YLBH,
                                        S_YLXMH = a.YLHXM,
                                        S_BATCH_NO = "",
                                        S_ERP_WH_CODE = a.KCDD,
                                        S_ZJWLTH = a.ZJWLTH,
                                        S_ZJWLMS = a.ZJWLMS,
                                        S_ZHFHBS = a.ZHFHBS,
                                        S_CJRQ = a.CJRQ,
                                        S_LLDSCBS = a.LLDSCBS,
                                        S_SCGLY = a.SCGLY,
                                        S_GXH = a.GXH,
                                        S_XQRQ = a.XQRQ,
                                        N_ITEM_STATE = 1
                                    });
                                }
                                var result1 = db.Insertable<TN_Ll_Order>(po).ExecuteCommand() > 0;
                                db.Insertable<TN_Ll_detail>(po.Details).ExecuteCommand();
                                if (po.Details.Count()>0)
                                {
                                    var result1 = db.Insertable<TN_Ll_Order>(po).ExecuteCommand() > 0;
                                    db.Insertable<TN_Ll_detail>(po.Details).ExecuteCommand();
                                }
                            }
                        }
@@ -3027,7 +3288,7 @@
                                        lLDReturnRoots.MSGCODE = 1;
                                        lLDReturnRoots.MSGDESP = $"执行中领料单,物料{a.WLBM}物料不允许删除";
                                        iTEMs.Add(lLDReturnRoots);
                                        continue;
                                        break;
                                    }
                                    var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList();
                                    if (po1.Count() == 0)  //无则新增物料明细
@@ -3043,7 +3304,7 @@
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                            break;
                                        }
                                        TN_Ll_detail tN_Outbound_Detail = new TN_Ll_detail
                                        {
@@ -3053,6 +3314,17 @@
                                            S_ITEM_CODE = a.WLBM,
                                            S_ITEM_NAME = item.S_ITEM_NAME,
                                            F_QTY = a.XQSL,
                                            S_ZJBM = a.ZJBM,
                                            S_YLBH = a.YLBH,
                                            S_YLXMH = a.YLHXM,
                                            S_ZJWLTH = a.ZJWLTH,
                                            S_ZJWLMS = a.ZJWLMS,
                                            S_ZHFHBS = a.ZHFHBS,
                                            S_CJRQ = a.CJRQ,
                                            S_LLDSCBS = a.LLDSCBS,
                                            S_GXH = a.GXH,
                                            S_XQRQ = a.XQRQ,
                                            S_SCGLY = a.SCGLY,
                                            S_BATCH_NO = "无",
                                            S_ERP_WH_CODE = a.KCDD,
                                            N_ITEM_STATE = 1
@@ -3076,7 +3348,7 @@
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"更新失败,更新数量必须大于当前物料数量{a.WLBM}";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                            break;
                                        }
                                    }
                                }
@@ -3103,7 +3375,7 @@
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料数据不存在 无法删除";
                                            iTEMs.Add(lLDReturnRoots);
                                            continue;
                                            break;
                                        }
                                    }
                                    else
@@ -3122,7 +3394,7 @@
                                                lLDReturnRoots.MSGCODE = 1;
                                                lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                                iTEMs.Add(lLDReturnRoots);
                                                continue;
                                                break;
                                            }
                                            TN_Ll_detail tN_Outbound_Detail = new TN_Ll_detail
                                            {
@@ -3132,6 +3404,17 @@
                                                S_ITEM_CODE = a.WLBM,
                                                S_ITEM_NAME = item.S_ITEM_NAME,
                                                F_QTY = a.XQSL,
                                                S_ZJBM = a.ZJBM,
                                                S_YLBH = a.YLBH,
                                                S_YLXMH = a.YLHXM,
                                                S_ZJWLTH = a.ZJWLTH,
                                                S_ZJWLMS = a.ZJWLMS,
                                                S_ZHFHBS = a.ZHFHBS,
                                                S_CJRQ = a.CJRQ,
                                                S_LLDSCBS = a.LLDSCBS,
                                                S_SCGLY = a.SCGLY,
                                                S_GXH = a.GXH,
                                                S_XQRQ = a.XQRQ,
                                                S_BATCH_NO = "无",
                                                S_ERP_WH_CODE = a.KCDD,
                                                N_ITEM_STATE = 1
@@ -3153,6 +3436,13 @@
                                db.Insertable<TN_Ll_detail>(listtn).ExecuteCommand();
                            }
                        }
                        lLDReturnRoots.GC = itemscddll.GC;
                        lLDReturnRoots.LLDH = itemscddll.LLDH;
                        lLDReturnRoots.MSGCODE = 0;
                        lLDReturnRoots.MSGDESP = $"成功";
                        iTEMs.Add(lLDReturnRoots);
                        db.CommitTran();
                    }
@@ -3240,6 +3530,17 @@
                                        S_BATCH_NO = a.S_BATCH_NO,
                                        S_SERIAL_NO = a.S_SERIAL_NO,
                                        S_CGPZH = a.S_CGPZH,
                                        S_ZJBM = a.S_ZJBM,
                                        S_YLBH = a.S_YLBH,
                                        S_ZJWLTH = a.S_ZJWLTH,
                                        S_ZJWLMS = a.S_ZJWLMS,
                                        S_ZHFHBS = a.S_ZHFHBS,
                                        S_CJRQ = a.S_CJRQ,
                                        S_LLDSCBS = a.S_LLDSCBS,
                                        S_SCGLY = a.S_SCGLY,
                                        S_GXH = a.S_GXH,
                                        S_XQRQ = a.S_XQRQ,
                                        S_YLXMH = a.S_YLXMH,
                                        S_CGPZXMBH = a.S_CGPZXMBH,
                                        S_ERP_WH_CODE = a.S_ERP_WH_CODE,
                                        N_ITEM_STATE = a.N_ITEM_STATE
@@ -3802,7 +4103,7 @@
                        // 准备请求参数
                        ZscmNc request = new ZscmNc();
                        request.Input = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + xml;
                        LogHelper.Info($"内采SAP回调");
                        LogHelper.Info($"内采SAP回调{service.Url}");
                        // 调用Web Service
                        ZscmNcResponse responses = service.ZscmNc(request);