chengsc
2025-05-10 3d6ef3897a77dec54be7057299e1be1d10589336
Wms/WMS.BLL/Logic/AllotLocation.cs
@@ -56,7 +56,6 @@
            //获取库存内已有物料的巷道
            var dataStockRoad = db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.WareHouseNo == house).GroupBy(m => m.RoadwayNo).OrderBy(m => m.RoadwayNo).Select(m => m.RoadwayNo).ToList();
            //排除掉已有物料的巷道
            roadways = roadways.Where(m => !dataStockRoad.Contains(m)).ToList();
            foreach (var l in roadways)
            {
@@ -105,16 +104,16 @@
        /// <param name="areaList">区域集合</param>
        /// <param name="lotNo">批次号</param>
        /// <returns></returns>
        public SysStorageLocat GetMiJiSuiTableLocate(SysStorageRoadway roadway, List<string> areaList, string sku, string lotNo = "")
        public SysStorageLocat GetMiJiSuiTableLocate(string roadwayNo, List<string> areaList)
        {
            var db = DataContext.Db;
            
            // 判断当前巷道(组)是否有空余储位
            var locateList = db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.RoadwayNo == roadway.RoadwayNo && areaList.Contains(m.AreaNo)).ToList();
            var locateList = db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.RoadwayNo == roadwayNo && areaList.Contains(m.AreaNo)).ToList();
            if (locateList.Count(m => m.Status == "0") > 0)
            {
                var bl = GetLocateASCOrDesc(roadway.RoadwayNo);
                var bl = GetLocateASCOrDesc(roadwayNo);
                var locate = locateList.OrderBy(m => m.LocatNo).First();
@@ -191,6 +190,102 @@
        }
        /// <summary>
        /// 根据起始组获取位置最优的四项车取货工位
        /// </summary>
        /// <param name="straRoadway">起始组</param>
        /// <param name="outModel">出库口工位 9、 17、 18</param>
        /// <returns></returns>
        public string RoadwayToStationNum(string straRoadway, string outModel)
        {
            var db = DataContext.Db;
            string stationNum = "";
            string[] lists = straRoadway.Split("MR");
            var model = db.Queryable<SysStorageLocat>().First(m => m.RoadwayNo == straRoadway && m.IsDel == "0");
            string stat = model.AisleOne;
            if (model.Layer == 1)
            {   // 一层
                switch (outModel)       // 申请的入库口
                {
                    case "9":
                        var path13 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(6 - int.Parse(stat.Substring(2, 2)));
                        var path14 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                        if (path13 <= path14)
                        {
                            stationNum = "190601";
                        }
                        else
                        {
                            stationNum = "191201";
                        }
                        break;
                    case "17":
                        stationNum = "030401";
                        break;
                    case "18":
                        var path03 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(06 - int.Parse(stat.Substring(2, 2)));
                        var path05 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                        if (path03 <= path05)
                        {
                            stationNum = "030601";
                        }
                        else
                        {
                            stationNum = "031201";
                        }
                        break;
                    default: break;
                }
            }
            else
            {  // 二层
                switch (outModel)       // 申请的入库口
                {
                    case "9":
                        var path15 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(6 - int.Parse(stat.Substring(2, 2)));
                        var path16 = Math.Abs(19 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                        if (path15 <= path16)
                        {
                            stationNum = "190602";
                        }
                        else
                        {
                            stationNum = "191202";
                        }
                        break;
                    case "17":
                        stationNum = "030402";
                         break;
                    case "18":
                        var path03 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(06 - int.Parse(stat.Substring(2, 2)));
                        var path05 = Math.Abs(03 - int.Parse(stat.Substring(0, 2))) + Math.Abs(12 - int.Parse(stat.Substring(2, 2)));
                        if (path03 <= path05)
                        {
                            stationNum = "030602";
                        }
                        else
                        {
                            stationNum = "031202";
                        }
                        break;
                    default: break;
                }
            }
            return stationNum;
        }
        /// <summary>
        /// 获取合适的库位
        /// </summary>
        /// <param name="houseNo">仓库号</param>