From 65ecd34acf0a3d33e6c1e10c93e351716d749e2f Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 06 三月 2024 14:51:29 +0800 Subject: [PATCH] 修改出库单编辑页面 --- Wms/WMS.BLL/Logic/AllotLocation.cs | 75 ++++++++++++++++++++++++------------- 1 files changed, 49 insertions(+), 26 deletions(-) diff --git a/Wms/WMS.BLL/Logic/AllotLocation.cs b/Wms/WMS.BLL/Logic/AllotLocation.cs index a8dc8a5..960487f 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,true); 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,10 @@ /// 鑾峰彇鍚堥�傜┖鍌ㄤ綅淇℃伅锛堟牴鎹贩閬撻泦鍚堝垽鏂級 /// </summary> /// <param name="roadways">宸烽亾闆嗗悎</param> - /// <param name="areaNo">鍖哄煙鍙�(瀛愭瘝鎵樼洏鍖�)</param> + /// <param name="areaList">鍖哄煙闆嗗悎</param> + /// <param name="isRoadway">鏄惁鎸囧畾宸烽亾</param> /// <returns></returns> - private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways) + private SysStorageLocat GetLocateByRoadways(List<SysStorageRoadway> roadways,List<string> areaList,bool isRoadway = false) { try { @@ -175,13 +186,17 @@ //鍙栧悇宸烽亾鎵�鏈夋帓绗竴涓悎閫備綅 foreach (var l in roadways) { - //濡傛灉涓婃鏄綋鍓嶅贩閬撳垯璺冲嚭 - if (log != null && l.RoadwayNo == log.RoadwayNo) + if (!isRoadway) { - continue; + //濡傛灉涓婃鏄綋鍓嶅贩閬撳垯璺冲嚭 + if (log != null && l.RoadwayNo == log.RoadwayNo) + { + continue; + } } + //鍙栧綋鍓嶅贩鏈�浼樹綅缃� - locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight); + locate = GetLocateByRoadway(l.RoadwayNo, topOrBom, leftOrRight, areaList); //褰撳墠宸锋湁浣嶇疆鍒欓��鍑� if (locate != null) { @@ -189,11 +204,14 @@ } } //濡傛灉璺冲贩閬撳苟涓旀湭鎵惧埌鍚堥�傜┖鍌ㄤ綅,鍒欒烦鍒版渶鍚庝竴娆′娇鐢ㄧ殑宸烽亾鏌ヨ - if (locate == null) + if (!isRoadway) { - if (log != null) + if (locate == null) { - locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight); + if (log != null) + { + locate = GetLocateByRoadway(log.RoadwayNo, topOrBom, leftOrRight, areaList); + } } } } @@ -201,7 +219,11 @@ { foreach (var item in roadways) { - locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight); + locate = GetLocateByRoadway(item.RoadwayNo, topOrBom, leftOrRight, areaList); + if (locate != null) + { + break; + } } } @@ -221,34 +243,35 @@ /// <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, "; - sql += " Row desc; "; + sql += " Row desc, Depth desc; "; 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