From 9884fc2f90c19cd67a7aa840345978b72da2397d Mon Sep 17 00:00:00 2001
From: Demo <Demo@DESKTOP-CPA90BF>
Date: 星期日, 04 二月 2024 13:25:16 +0800
Subject: [PATCH] 申请储位

---
 Wms/WMS.BLL/Logic/AllotLocation.cs |   51 +++++++++++++++++++++++++++++++--------------------
 1 files changed, 31 insertions(+), 20 deletions(-)

diff --git a/Wms/WMS.BLL/Logic/AllotLocation.cs b/Wms/WMS.BLL/Logic/AllotLocation.cs
index a8dc8a5..4e7f3a8 100644
--- a/Wms/WMS.BLL/Logic/AllotLocation.cs
+++ b/Wms/WMS.BLL/Logic/AllotLocation.cs
@@ -18,9 +18,10 @@
         /// 鑾峰彇鍚堥�傜殑搴撲綅
         /// </summary>
         /// <param name="houseNo">浠撳簱鍙�</param>
+        /// <param name="areaList">鍖哄煙闆嗗悎</param>
         /// <param name="roadwayNo">宸烽亾鍙�(鍙┖)</param>
         /// <returns></returns>
-        public SysStorageLocat GetSuiTableLocate(string houseNo, string roadwayNo = "")
+        public SysStorageLocat GetSuiTableLocate(string houseNo, List<string> areaList,string roadwayNo = "")
         {
             try
             {
@@ -33,6 +34,10 @@
                 {
                     throw new Exception($"鏈煡璇㈠埌{houseNo}浠撳簱淇℃伅");
                 }
+
+                var roadList = db.Queryable<SysStorageLocat>().Where(m => m.WareHouseNo == houseNo && areaList.Contains(m.AreaNo) )
+                    .GroupBy(m=>m.RoadwayNo).Select(m=>m.RoadwayNo).ToList();
+
                 //鏁版嵁瀛楀吀(鑾峰彇瀛楀吀涓粨搴撶被鍨�)
                 var dic = db.Queryable<SysDictionary>().First(m => m.Id.ToString() == house.Type);
                 switch (dic.DictName)
@@ -46,6 +51,11 @@
                             {
                                 throw new Exception($"鏈煡璇㈠埌{roadwayNo}宸烽亾淇℃伅");
                             }
+
+                            if (!roadList.Contains(roadwayNo))
+                            {
+                                throw new Exception("褰撳墠鐗╂枡瀛樻斁鍖哄煙鏈湪鎸囧畾宸烽亾涓�");
+                            }
                             if (roadway.Status == "1")
                             {
                                 throw new Exception($"{roadwayNo}宸烽亾宸插仠鐢�");
@@ -53,7 +63,7 @@
 
                             //鏌ヨ璇ュ贩閬撳苟涓旀爣蹇椾负姝e父鐨勭殑鍌ㄤ綅
                             roadwayList.Add(roadway);
-                            var locate = GetLocateByRoadways(roadwayList);
+                            var locate = GetLocateByRoadways(roadwayList,areaList);
                             if (locate == null)
                             {
                                 throw new Exception($"{roadwayNo}宸烽亾娌℃湁鍚堥�傜殑绌哄偍浣�");
@@ -63,9 +73,9 @@
                     //绔嬩綋搴撴病鏈夋寚瀹氬贩閬擄紙寰幆宸烽亾鏍规嵁浼樺厛绾у垎閰嶏級
                     case "绔嬩綋搴�" when string.IsNullOrWhiteSpace(roadwayNo):
                         {
-                            var roadwayList = db.Queryable<SysStorageRoadway>().Where(m => m.WareHouseNo == houseNo && m.Status == "0").OrderBy(m => new { m.Priority, m.RoadwayNo }).ToList();
+                            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);
+                            var locate = GetLocateByRoadways(roadwayList,areaList);
                             if (locate == null)
                             {
                                 throw new Exception($"{houseNo}浠撳簱宸插惎鐢ㄧ殑宸烽亾涓病鏈夊悎閫傜殑绌哄偍浣�");
@@ -96,9 +106,9 @@
         /// 鑾峰彇鍚堥�傜┖鍌ㄤ綅淇℃伅锛堟牴鎹贩閬撻泦鍚堝垽鏂級
         /// </summary>
         /// <param name="roadways">宸烽亾闆嗗悎</param>
-        /// <param name="areaNo">鍖哄煙鍙�(瀛愭瘝鎵樼洏鍖�)</param>
+        /// <param name="areaList">鍖哄煙闆嗗悎</param>
         /// <returns></returns>
-        private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways)
+        private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList)
         {
             try
             {
@@ -181,7 +191,7 @@
                             continue;
                         }
                         //鍙栧綋鍓嶅贩鏈�浼樹綅缃�
-                        locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight);
+                        locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight, areaList);
                         //褰撳墠宸锋湁浣嶇疆鍒欓��鍑�
                         if (locate != null)
                         {
@@ -193,7 +203,7 @@
                     {
                         if (log != null)
                         {
-                            locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight);
+                            locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight, areaList);
                         }
                     }
                 }
@@ -201,7 +211,7 @@
                 {
                     foreach (var item in roadways)
                     {
-                        locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight);
+                        locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight, areaList);
                     }
                 }
 
@@ -221,17 +231,18 @@
         /// <param name="roadwayNo">宸烽亾鍙�</param>
         /// <param name="topOrBom">鍌ㄤ綅鍒嗛厤涓婁笅 0 涓� 1 涓�</param>
         /// <param name="leftOrRight">鍌ㄤ綅鍒嗛厤涓婁笅 0 宸� 1 鍙�</param>
-        /// <param name="areaNo">鍖哄煙鍙�(瀛愭瘝鎵樼洏鍖�)</param>
+        /// <param name="areaList">鍖哄煙闆嗗悎</param>
         /// <returns></returns>
-        private SysStorageLocat GetLocateByRoadway(string roadwayNo, int topOrBom, int leftOrRight)
+        private SysStorageLocat GetLocateByRoadway(string roadwayNo, int topOrBom, int leftOrRight,List<string> areaList)
         {
             var db = DataContext.Db;
             var str = "''";
             //鏌ヨ璇ュ贩閬撳苟涓旀爣蹇椾负姝e父鐨勭殑鍌ㄤ綅
-            do
+            SysStorageLocat data;
+            
+            foreach (var area in areaList)
             {
-                var sql = $@"select * from SysStorageLocat where IsDel = 0 and Flag = 0 and [Status] = 0 and RoadwayNo = '{roadwayNo}' and LocatNo not in({str}) ";
-                //sql += !string.IsNullOrWhiteSpace(areaNo) ? $"and AreaNo = '{areaNo}' " : "";
+                var sql = $@"select * from SysStorageLocat where IsDel = 0 and Flag = 0 and [Status] = 0 and RoadwayNo = '{roadwayNo}' and AreaNo = '{area}' and LocatNo not in({str}) ";
                 sql += "order by ";
                 sql += topOrBom == 0 ? "Layer desc, " : "Layer, ";
                 sql += leftOrRight == 0 ? "[Column], " : "[Column] desc, ";
@@ -239,16 +250,16 @@
 
 
                 var locateList = db.Ado.SqlQuery<SysStorageLocat>(sql);
-                var data = locateList.FirstOrDefault();
+                data = locateList.FirstOrDefault();
                 if (data != null)
                 {
                     return data;
                 }
-                else
-                {
-                    return null;
-                }
-            } while (true);
+            }
+
+            return null;
+
+           
 
         }
     }

--
Gitblit v1.8.0