chengsc
2025-03-10 d7fe0f4c66b134fca43bca44b1161c0e4aa28bcb
Wms/WMS.BLL/Logic/AllotLocation.cs
@@ -239,7 +239,7 @@
                            //查询该巷道并且标志为正常的的储位
                            roadwayList.Add(roadway);
                            var locate = GetLocateByRoadways(roadwayList,areaList,true);
                            var locate = GetLocateByRoadways(roadwayList,areaList,true,houseNo);
                            if (locate == null)
                            {
                                throw new Exception($"{roadwayNo}巷道没有合适的空储位");
@@ -251,38 +251,10 @@
                        {
                            var roadwayList = db.Queryable<SysStorageRoadway>().Where(m => m.WareHouseNo == houseNo && m.Status == "0" && roadList.Contains(m.RoadwayNo)).OrderBy(m => new { m.Priority, m.RoadwayNo }).ToList();
                            var locate = GetLocateByRoadways(roadwayList,areaList);
                            var locate = GetLocateByRoadways(roadwayList,areaList,false, houseNo);
                            if (locate == null)
                            {
                                throw new Exception($"{houseNo}仓库已启用的巷道中没有合适的空储位");
                            }
                            return locate;
                        }
                    //指定巷道
                    case "密集库" when !string.IsNullOrWhiteSpace(roadwayNo):
                        {
                            var roadwayList = new List<SysStorageRoadway>();
                            var roadway = db.Queryable<SysStorageRoadway>().First(m => m.RoadwayNo == roadwayNo);
                            if (roadway == null)
                            {
                                throw new Exception($"未查询到{roadwayNo}巷道信息");
                            }
                            if (!roadList.Contains(roadwayNo))
                            {
                                throw new Exception("当前物料存放区域未在指定巷道中");
                            }
                            if (roadway.Status == "1")
                            {
                                throw new Exception($"{roadwayNo}巷道已停用");
                            }
                            //查询该巷道并且标志为正常的的储位
                            roadwayList.Add(roadway);
                            var locate = GetLocateByRoadways(roadwayList, areaList, true);
                            if (locate == null)
                            {
                                throw new Exception($"{roadwayNo}巷道没有合适的空储位");
                            }
                            return locate;
                        }
@@ -313,7 +285,7 @@
        /// <param name="areaList">区域集合</param>
        /// <param name="isRoadway">是否指定巷道</param>
        /// <returns></returns>
        private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList,bool isRoadway = false)
        private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList,bool isRoadway = false ,string houseNo = "W01")
        {
            try
            {
@@ -378,14 +350,14 @@
                SysStorageLocat locate = null; // 储位信息
                //SysStorageLocat log = db.Ado.SqlQuerySingle<SysStorageLocat>("select * from SysStorageLocat where LocatNo = (select Top(1) LocatNo from BllPalletBind order by CreateTime desc)"); //巷道最后一次使用记录
                SysRoadwayUseLog log= db.Ado.SqlQuerySingle<SysRoadwayUseLog>("select Top(1) * from SysRoadwayUseLog where IsDel=0 order by CreateTime desc"); //巷道最后一次使用记录
                SysRoadwayUseLog log= db.Ado.SqlQuerySingle<SysRoadwayUseLog>($"select Top(1) * from SysRoadwayUseLog where IsDel=0 and WareHouseNo ='{houseNo}' order by CreateTime desc"); //巷道最后一次使用记录
                if (laneAllot == 0)//跳巷道平均分配
                {
                    //如果同级巷道有多条则查上次位置日志
                    if (roadways.Count > 1)
                    {
                        log = db.Queryable<SysRoadwayUseLog>().OrderByDescending(l => l.Id).First();
                        log = db.Queryable<SysRoadwayUseLog>().Where(m=>m.WareHouseNo == houseNo).OrderByDescending(l => l.Id).First();
                    }
                    //取各巷道所有排第一个合适位
                    foreach (var l in roadways)
@@ -405,21 +377,25 @@
                            locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count);
                            if (locate != null)
                            {
                                list.Add(locate.LocatNo);
                                var isOk = LocateIsOk(locate);
                                if (!isOk)
                                {
                                    locate = null;
                                }
                                if (isOk)
                                {
                                    break;
                                }
                                break;
                                //list.Add(locate.LocatNo);
                                //var isOk = LocateIsOk(locate);
                                //if (!isOk)
                                //{
                                //    locate = null;
                                //}
                                //if (isOk)
                                //{
                                //    break;
                                //}
                            }
                        } while (count != 0 && locate == null);//当查询储位数量不等0 并且储位为空时,再次循环巷道、区域查找储位
                        if (locate!=null)
                        {
                            break;
                        }
                    }
                    //如果跳巷道并且未找到合适空储位,则跳到最后一次使用的巷道查询
                    if (!isRoadway)
@@ -435,12 +411,13 @@
                                    locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count);
                                    if (locate != null)
                                    {
                                        list.Add(locate.LocatNo);
                                        var isOk = LocateIsOk(locate);
                                        if (!isOk)
                                        {
                                            locate = null;
                                        }
                                        break;
                                        //list.Add(locate.LocatNo);
                                        //var isOk = LocateIsOk(locate);
                                        //if (!isOk)
                                        //{
                                        //    locate = null;
                                        //}
                                    }
                                    
                                    
@@ -462,21 +439,25 @@
                            locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight, areaList, list, ref count);
                            if (locate != null)
                            {
                                list.Add(locate.LocatNo);
                                var isOk = LocateIsOk(locate);
                                if (!isOk)
                                {
                                    locate = null;
                                }
                                if (isOk)
                                {
                                    break;
                                }
                                break;
                                //list.Add(locate.LocatNo);
                                //var isOk = LocateIsOk(locate);
                                //if (!isOk)
                                //{
                                //    locate = null;
                                //}
                                //if (isOk)
                                //{
                                //    break;
                                //}
                            }
                        } while (count != 0 && locate == null);//当查询储位数量不等0 并且储位为空时,再次循环巷道、区域查找储位
                        if (locate != null)
                        {
                            break;
                        }
                    }
                }
@@ -543,7 +524,7 @@
        }
        /// <summary>
        /// 验证储位是否可入库
        /// 验证储位是否可入库 双深位验证
        /// </summary>
        /// <param name="locate"></param>
        /// <returns></returns>