hudong
2025-06-05 f3ad86fe50a0d2ba81b203517184264eea7bf0c0
api/WmsSpaHelper.cs
@@ -45,6 +45,34 @@
        }
        public static bool MaterPanduan(string ItemCode,double count) {
            bool panduan = true;
            var db = new SqlHelper<object>().GetInstance();
            var po = db.Queryable<TN_Material_KC>().Where(a => a.S_ITEM_CODE == ItemCode).First();
            var po1 = db.Queryable<CntrItemRel>().Where(a => a.S_ITEM_CODE == ItemCode).First();
            if (po != null)
            {
                if (po1!=null)
                {
                    double sl= po1.F_QTY + count;
                    if (sl>po.N_COUNT)
                    {
                        panduan = false;
                    }
                }
                if (count > po.N_COUNT)
                {
                    panduan = false;
                }
            }
            else
            {
                panduan = false;
            }
            return panduan;
        }
        /// <summary>
        /// 数据
        /// </summary>
@@ -1185,9 +1213,10 @@
                            po.Details = new List<TN_Inbound_Detail>();
                            if (itemwlpz.ITEM.Count > 0)
                            {
                                itemwlpz.ITEM.ForEach(a =>
                                foreach (var a in itemwlpz.ITEM)
                                {
                                    po.Details.Add(new TN_Inbound_Detail
                                    {
                                        S_IO_NO = itemwlpz.HEAD.WLPZH,
@@ -1209,7 +1238,7 @@
                                    });
                                    //}
                                });
                                }
                                db.Insertable<TN_Inbound_Order>(po).ExecuteCommand();
                                db.Insertable<TN_Inbound_Detail>(po.Details).ExecuteCommand();
                                db.CommitTran();
@@ -1223,7 +1252,7 @@
                            var Details = new List<TN_Inbound_Detail>();
                            if (itemwlpz.ITEM.Count > 0)
                            {
                                itemwlpz.ITEM.ForEach(a =>
                                foreach (var a in itemwlpz.ITEM)
                                {
                                    if (po.Details.Where(s => s.S_ITEM_CODE == a.WLBM).Count() > 0)
                                    {
@@ -1253,7 +1282,7 @@
                                        });
                                    }
                                });
                                }
                                db.Insertable<TN_Inbound_Detail>(Details).ExecuteCommand();
                                db.CommitTran();
@@ -1332,8 +1361,10 @@
                                po.Details = new List<TN_Inbound_Detail>();
                                if (itemwlpz.ITEM.Count > 0)
                                {
                                    itemwlpz.ITEM.ForEach(a =>
                                    foreach (var a in itemwlpz.ITEM)
                                    {
                                        #region 不需要
                                        //if (a.ITEM1.Select(s => s.XLH).Count() > 0)//判断序列号是否为多个
                                        //{
@@ -1385,7 +1416,7 @@
                                        });
                                        //}
                                    });
                                    }
                                    db.Insertable<TN_Inbound_Order>(po).ExecuteCommand();
                                    db.Insertable<TN_Inbound_Detail>(po.Details).ExecuteCommand();
                                    db.CommitTran();
@@ -1397,7 +1428,8 @@
                                var Details = new List<TN_Inbound_Detail>();
                                if (itemwlpz.ITEM.Count > 0)
                                {
                                    itemwlpz.ITEM.ForEach(a =>
                                    foreach (var a in itemwlpz.ITEM)
                                    {
                                        if (po.Details.Where(s => s.S_ITEM_CODE == a.WLBH).Count() > 0)
                                        {
@@ -1432,7 +1464,7 @@
                                            });
                                        }
                                    });
                                    }
                                    db.Insertable<TN_Inbound_Detail>(Details).ExecuteCommand();
                                    db.CommitTran();
@@ -1732,6 +1764,15 @@
        internal static SimpleResult InboundOrderSorting(MPSorting model)
        {
            var result = new SimpleResult();
            foreach (var a in model.MaterList)
            {
                bool v = MaterPanduan(a.item_code, a.qty);
                if (v)
                {
                    result.resultMsg = $"物料{a.item_code}数量超过 库存总数";
                    return result;
                }
            }
            //判断起始库位是否锁定
            // var db = new SqlHelper<object>().GetInstance();
            using (var db = new SqlHelper<object>().GetInstance())
@@ -1854,13 +1895,17 @@
                        return result;
                    }
                    //判断托盘是否已经生成任务,如果没有则生成
                    var wmsTaskcs = WMSHelper.GetWmsTaskByCntr(model.cntr_code);
                    if (wmsTaskcs != null)
                    if (!string.IsNullOrEmpty(model.cntr_code))
                    {
                        result.resultCode = 3;
                        result.resultMsg = $"起点{model.start} 托盘{model.cntr_code}已经创建任务,请勿重复申请";
                        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)
                    {
@@ -1881,6 +1926,16 @@
                            {
                                start= db.Queryable<Location>().Where(it => it.S_CODE == loc.S_LOC_CODE).First();
                            }
                        }
                        else if (!string.IsNullOrEmpty(model.item_code))
                        {
                            start = db.Queryable<LocCntrRel>()
                                   .LeftJoin<CntrItemRel>((lcr, cir) => lcr.S_CNTR_CODE == cir.S_CNTR_CODE&&cir.S_CNTR_TYPE=="半托")
                                   .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")
                                    .OrderBy((lcr, cir) => cir.T_CREATE)
                                   .Select((lcr, cir, loc) => loc).ToList()  // 返回 Location 对象
                                   .FirstOrDefault();  // 或者 Take(1).ToList()[0]
                        }
                        else
                        {
@@ -1908,7 +1963,7 @@
                            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")
                                    .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]
                        }
@@ -1952,6 +2007,7 @@
                        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();
@@ -3088,7 +3144,7 @@
        [ApiExplorerSettings(IgnoreApi = true)]
        public static SimpleResult AddInboundOrder(List<Mater> MaterList, string cntr_code,string S_CNTR_TYPE)
        {
            var result = new SimpleResult();
            var result = new SimpleResult();
            //  var db = new SqlHelper<object>().GetInstance();
            using (var db = new SqlHelper<object>().GetInstance())
            {
@@ -3236,7 +3292,7 @@
                                        lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                        iTEMs.Add(lLDReturnRoots);
                                        break ;
                                        continue;
                                    }
                                    po.Details.Add(new TN_Ll_detail
                                    {
@@ -3244,7 +3300,7 @@
                                        S_AREA_CODE = "HJQ",
                                        N_ROW_NO = "",
                                        S_ITEM_CODE = a.WLBM,
                                        S_ITEM_NAME = item.S_ITEM_NAME,
                                        S_ITEM_NAME = item?.S_ITEM_NAME,
                                        F_QTY = a.XQSL,
                                        S_ZJBM = a.ZJBM,
                                        S_YLBH = a.YLBH,
@@ -3264,8 +3320,23 @@
                                }
                                if (po.Details.Count()>0)
                                {
                                    LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM();
                                    lLDReturnRoot1.GC = itemscddll.GC;
                                    lLDReturnRoot1.LLDH = itemscddll.LLDH;
                                    lLDReturnRoot1.MSGCODE = 0;
                                    lLDReturnRoot1.MSGDESP = $"成功";
                                    iTEMs.Add(lLDReturnRoot1);
                                    var result1 = db.Insertable<TN_Ll_Order>(po).ExecuteCommand() > 0;
                                    db.Insertable<TN_Ll_detail>(po.Details).ExecuteCommand();
                                }
                                else
                                {
                                    LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM();
                                    lLDReturnRoot1.GC = itemscddll.GC;
                                    lLDReturnRoot1.LLDH = itemscddll.LLDH;
                                    lLDReturnRoot1.MSGCODE = 0;
                                    lLDReturnRoot1.MSGDESP = $"成功,无数据添加";
                                    iTEMs.Add(lLDReturnRoot1);
                                }
                            }
@@ -3288,7 +3359,7 @@
                                        lLDReturnRoots.MSGCODE = 1;
                                        lLDReturnRoots.MSGDESP = $"执行中领料单,物料{a.WLBM}物料不允许删除";
                                        iTEMs.Add(lLDReturnRoots);
                                        break;
                                        continue;
                                    }
                                    var po1 = po.Details.Where(s => a.WLBM == s.S_ITEM_CODE).ToList();
                                    if (po1.Count() == 0)  //无则新增物料明细
@@ -3304,7 +3375,7 @@
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"物料{a.WLBM}物料主数据不存在该物料";
                                            iTEMs.Add(lLDReturnRoots);
                                            break;
                                            continue;
                                        }
                                        TN_Ll_detail tN_Outbound_Detail = new TN_Ll_detail
                                        {
@@ -3348,7 +3419,7 @@
                                            lLDReturnRoots.MSGCODE = 1;
                                            lLDReturnRoots.MSGDESP = $"更新失败,更新数量必须大于当前物料数量{a.WLBM}";
                                            iTEMs.Add(lLDReturnRoots);
                                            break;
                                            continue;
                                        }
                                    }
                                }
@@ -3433,16 +3504,26 @@
                            //添加数据
                            if (listtn.Count() > 0)
                            {
                                LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM();
                                lLDReturnRoot1.GC = itemscddll.GC;
                                lLDReturnRoot1.LLDH = itemscddll.LLDH;
                                lLDReturnRoot1.MSGCODE = 0;
                                lLDReturnRoot1.MSGDESP = $"成功";
                                iTEMs.Add(lLDReturnRoot1);
                                db.Insertable<TN_Ll_detail>(listtn).ExecuteCommand();
                            }
                            else
                            {
                                LLDReturnRoot.ITEM lLDReturnRoot1 = new LLDReturnRoot.ITEM();
                                lLDReturnRoot1.GC = itemscddll.GC;
                                lLDReturnRoot1.LLDH = itemscddll.LLDH;
                                lLDReturnRoot1.MSGCODE = 0;
                                lLDReturnRoot1.MSGDESP = $"成功,无数据添加";
                                iTEMs.Add(lLDReturnRoot1);
                            }
                        }
                        lLDReturnRoots.GC = itemscddll.GC;
                        lLDReturnRoots.LLDH = itemscddll.LLDH;
                        lLDReturnRoots.MSGCODE = 0;
                        lLDReturnRoots.MSGDESP = $"成功";
                        iTEMs.Add(lLDReturnRoots);
                        db.CommitTran();
                    }
@@ -4000,6 +4081,10 @@
                        result.resultMsg = "数据不存在";
                        return result;
                    }
                    po.Details= po.Details.Where(d => model.Wlist.Any(w =>
                                w.S_ITEM_CODE == d.S_ITEM_CODE &&
                                w.N_ROW_NO == d.N_ROW_NO))
                            .ToList();
                    if (po.S_IN_TYPE == "内采入库")
                    {
                        List<NcRkDto.ITEM> listitem = new List<NcRkDto.ITEM>();
@@ -4121,22 +4206,39 @@
                        //添加凭证记录表
                        result.resultMsg = data.ROOT.ITEM.MSGDESP;
                        result.resultCode = data.ROOT.ITEM.MSGCODE;
                        MaterialVoucher materialVoucher = new MaterialVoucher();
                        //MaterialVoucher materialVoucher = new MaterialVoucher();
                        if (data.ROOT.ITEM.MSGCODE == 0)
                        {
                            materialVoucher.S_NO = model.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                            materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                            //materialVoucher.S_NO = model.S_NO;
                            //materialVoucher.S_TYPE = po.S_IN_TYPE;
                            //materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                            //materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                            //materialVoucher.STATUS = 0;
                            //db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                            List<MaterialVoucher> materials = new List<MaterialVoucher>();
                            foreach (var item in model.Wlist)
                            {
                                MaterialVoucher materialVoucher = new MaterialVoucher();
                                materialVoucher.S_NO = po.S_NO;
                                materialVoucher.S_WLBM = item.S_ITEM_CODE;
                                materialVoucher.S_WLH = item.N_ROW_NO;
                                materialVoucher.S_TYPE = po.S_IN_TYPE;
                                materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                                materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                                materialVoucher.STATUS = 0;
                                materials.Add(materialVoucher);
                            }
                            if (materials.Count() > 0)
                            {
                                db.Insertable<MaterialVoucher>(materials).ExecuteCommand();
                            }
                        }
                    }
                    else
                    if (po.S_IN_TYPE == "计划外退料入库")
                    else if (po.S_IN_TYPE == "计划外退料入库")
                    {
                        DateTime dateTime;
                        DateTime dateTime1;
@@ -4261,13 +4363,25 @@
                        result.resultCode = data.ROOT.ITEM.MSGCODE;
                        if (data.ROOT.ITEM.MSGCODE == 0)
                        {
                            MaterialVoucher materialVoucher = new MaterialVoucher();
                            materialVoucher.S_NO = po.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                            materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                            materialVoucher.STATUS = 0;
                            db.Insertable<MaterialVoucher>(materialVoucher).ExecuteCommand();
                            List< MaterialVoucher > materials = new List< MaterialVoucher >();
                            foreach (var item in model.Wlist)
                            {
                                MaterialVoucher materialVoucher = new MaterialVoucher();
                                materialVoucher.S_NO = po.S_NO;
                                materialVoucher.S_WLBM = item.S_ITEM_CODE;
                                materialVoucher.S_WLH = item.N_ROW_NO;
                                materialVoucher.S_TYPE = po.S_IN_TYPE;
                                materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                                materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                                materialVoucher.STATUS = 0;
                                materials.Add( materialVoucher );
                            }
                            if (materials.Count() > 0)
                            {
                                db.Insertable<MaterialVoucher>(materials).ExecuteCommand();
                            }
                        }
                        #endregion
@@ -4392,15 +4506,34 @@
                        result.resultCode = data.ROOT.ITEM.MSGCODE;
                        if (data.ROOT.ITEM.MSGCODE == 0)
                        {
                            MaterialVoucher materialVoucher = new MaterialVoucher();
                            materialVoucher.S_NO = model.S_NO;
                            materialVoucher.S_TYPE = po.S_IN_TYPE;
                            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();
                            //MaterialVoucher materialVoucher = new MaterialVoucher();
                            //materialVoucher.S_NO = model.S_NO;
                            //materialVoucher.S_TYPE = po.S_IN_TYPE;
                            //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();
                            List<MaterialVoucher> materials = new List<MaterialVoucher>();
                            foreach (var item in model.Wlist)
                            {
                                MaterialVoucher materialVoucher = new MaterialVoucher();
                                materialVoucher.S_NO = po.S_NO;
                                materialVoucher.S_WLBM = item.S_ITEM_CODE;
                                materialVoucher.S_WLH = item.N_ROW_NO;
                                materialVoucher.S_TYPE = po.S_IN_TYPE;
                                materialVoucher.S_WLPZBH = data.ROOT.ITEM.WLPZH;
                                materialVoucher.S_WLPZND = data.ROOT.ITEM.WLPZND;
                                materialVoucher.STATUS = 0;
                                materials.Add(materialVoucher);
                            }
                            if (materials.Count() > 0)
                            {
                                db.Insertable<MaterialVoucher>(materials).ExecuteCommand();
                            }
                        }
                        //else
                        //{
@@ -4613,17 +4746,18 @@
                    var po = db.Queryable<CntrItemRel>().Where(a => a.S_CNTR_CODE == S_CNTR_CODE && a.S_BS_NO == taskno).ToList();
                    LogHelper.Info("添加入库记录表po" + po.Count());
                    var pz = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == taskno).First();
                    var ass = pz == null;
                    var pzs = db.Queryable<MaterialVoucher>().Where(a => a.S_NO == taskno).ToList();
                    var ass = pzs == null;
                    LogHelper.Info("添加入库记录表pz" + ass);
                    List<OutboundRecord> records = new List<OutboundRecord>();
                    foreach (var item in po)
                    {
                        var pz= pzs.Where(s=>s.S_WLBM==item.S_ITEM_CODE&&s.S_WLH==item.N_BS_ROW_NO).First();
                        OutboundRecord outboundRecord = new OutboundRecord();
                        outboundRecord.S_NO = item.S_BS_NO;
                        outboundRecord.S_TYPE = pz?.S_TYPE;
                        outboundRecord.S_WLPZBH = pz?.S_WLPZBH;
                        outboundRecord.S_WLPZBH = pz?.S_WLBM;
                        outboundRecord.S_WLPZND = pz?.S_WLPZND;
                        outboundRecord.S_WLBM = item.S_ITEM_CODE;
                        outboundRecord.S_SL = item.F_QTY;