From f493448ee02fd2f92cf4ed17a48957c4c84532e9 Mon Sep 17 00:00:00 2001 From: yuyou_x <2336760928@qq.com> Date: 星期三, 06 三月 2024 14:21:26 +0800 Subject: [PATCH] 增加指定储位传参,增加对应dto模型和视图模型,修改指定储位获取数据源代码,修改pda托盘绑定判断,修改指定储位后台逻辑代码 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 388 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 317 insertions(+), 71 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index c15510f..59a7019 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -199,7 +199,7 @@ { try { - var notice = Db.Queryable<BllExportNotice>().First(m => m.Id == id&& m.IsDel == "0"); + var notice = Db.Queryable<BllExportNotice>().First(m => m.Id == id && m.IsDel == "0"); if (notice == null) { throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅"); @@ -290,8 +290,8 @@ .LeftJoin<SysLogisticsInfo>((a, b) => a.LogisticsId == b.Id) .LeftJoin<SysUserInfor>((a, b, c) => a.CreateUser == c.Id) .LeftJoin<SysUserInfor>((a, b, c, d) => a.CreateUser == d.Id) - .LeftJoin<SysUserInfor>((a, b, c, d,e) => a.CheckUser == e.Id) - .Select((a, b, c, d,e) => new ExportNoticeDto() + .LeftJoin<SysUserInfor>((a, b, c, d, e) => a.CheckUser == e.Id) + .Select((a, b, c, d, e) => new ExportNoticeDto() { Id = a.Id, SONo = a.SONo, @@ -308,15 +308,15 @@ IsWave = a.IsWave, WaveNo = a.WaveNo, IsDespatch = a.IsDespatch, - Demo=a.Demo, + Demo = a.Demo, CreateUserName = c.RealName, UpdateUserName = c.RealName, CreateTime = a.CreateTime, UpdateTime = a.UpdateTime, - CheckUserName=e.RealName, - CheckTime=a.CheckTime + CheckUserName = e.RealName, + CheckTime = a.CheckTime }) .OrderByDescending(a => a.CreateTime) .ToOffsetPage(page, limit, ref total); @@ -408,7 +408,7 @@ SkuName = it.SkuName, LotNo = it.LotNo, Standard = it.Standard, - Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty + Qty = type == "4" ? it.Qty : it.Qty - it.LockQty - it.FrozenQty }).ToList(); @@ -459,7 +459,7 @@ var skuNos = model.Detail.Select(a => a.SkuNo).Distinct().ToList(); //鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭�佸簱瀛樻槑缁嗕腑鑾峰彇鎵规鎻忚堪渚涜揣鎵规绛� var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList(); - var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty-s.FrozenQty-s.LockQty) > 0).ToList(); + var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList(); //var palletList = contextDb.Queryable<DataStockDetail>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList(); //瀹㈡埛淇℃伅 var customer = Db.Queryable<SysCustomer>().Where(m => m.IsDel == "0" && m.CustomerNo == model.CustomerNo).ToList(); @@ -531,12 +531,12 @@ CompleteQty = 0, PackagNo = sku.PackagNo, Price = sku.Price, - Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price*d.Qty, + Money = string.IsNullOrWhiteSpace(sku.Price.ToString()) ? null : sku.Price * d.Qty, IsBale = d.IsBale, IsBelt = d.IsBelt, SupplierLot = stocks.First().SupplierLot, IsWave = "0", - WaveNo= "", + WaveNo = "", CreateUser = userId, }; @@ -558,7 +558,7 @@ LogisticsId = model.LogisticsId, IsWave = "0", WaveNo = "", - IsDespatch="0", + IsDespatch = "0", CreateUser = userId, }; @@ -630,7 +630,7 @@ var stockCount = 0.00m; //st.StockQuantity.Value if (s != null) { - stockCount = s.Qty-s.FrozenQty-s.LockQty+d.Qty; + stockCount = s.Qty - s.FrozenQty - s.LockQty + d.Qty; } var dm = new SelectStockSkuDto() @@ -805,7 +805,7 @@ } else if (old.Qty != d.Qty || old.IsBale != d.IsBale || old.IsBelt != d.IsBelt) { - if (d.Qty > (stock.Qty-stock.FrozenQty-stock.LockQty) + old.Qty) + if (d.Qty > (stock.Qty - stock.FrozenQty - stock.LockQty) + old.Qty) { throw new Exception("鐗╁搧搴撳瓨鏁伴噺涓嶈冻"); } @@ -1121,8 +1121,8 @@ .AndIF(!string.IsNullOrWhiteSpace(skuName), m => m.SkuName.Contains(skuName.Trim())) .AndIF(!string.IsNullOrWhiteSpace(palletNo), m => m.PalletNo.Contains(palletNo.Trim())) .AndIF(!string.IsNullOrWhiteSpace(lotNo), m => m.LotNo.Contains(lotNo.Trim())) - .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark==inspectMark) - .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark== bitPalletMark) + .AndIF(!string.IsNullOrWhiteSpace(inspectMark), m => m.InspectMark == inspectMark) + .AndIF(!string.IsNullOrWhiteSpace(bitPalletMark), m => m.BitPalletMark == bitPalletMark) .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo)) .And(a => a.Status == "0") .And(a => a.WareHouseNo == "W01") @@ -1154,7 +1154,7 @@ var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚� str = ""; var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0").ToList(); - + if (stockDetailList.Count == 0) { throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); @@ -1169,7 +1169,7 @@ } //鍒ゆ柇鎵樼洏搴撳瓨淇℃伅鍒嗙粍鍚庢槸鍚﹀ぇ浜�1鏉� var detailGroup = stockDetailList.GroupBy(m => new { m.SkuNo, m.PalletNo, m.WareHouseNo, m.LocatNo }).ToList(); - if (detailGroup.Count>1) + if (detailGroup.Count > 1) { throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); } @@ -1252,7 +1252,7 @@ throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅宸叉崯鍧忥紝涓嶈兘鍑哄簱锛岃鏍稿疄"); } - if (locate.Status !="1") + if (locate.Status != "1") { throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅鐘舵�佷笉鏄湁鐗╁搧锛屼笉鑳藉嚭搴擄紝璇锋牳瀹�"); } @@ -1308,10 +1308,10 @@ Db.Updateable(de).ExecuteCommand(); Db.Updateable(stocka).ExecuteCommand(); } - + locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 Db.Updateable(locate).ExecuteCommand(); - + #endregion @@ -1385,7 +1385,9 @@ { #region 闆嗗悎 - var outDtoList = new List<OutCommandDto>(); //鍑哄簱鏁版嵁鐨勯泦鍚� + var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級 + var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級 + var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎 //璁板綍閿欒淇℃伅鐨勯泦鍚� var flagList = new List<int>();//1:褰撳墠瑕佸嚭搴撶殑鍌ㄤ綅姝e湪绉诲嚭銆�2 鍑哄簱鐨勬墭鐩樺偍浣嶄俊鎭敊璇�(鍦ㄥ偍浣嶈〃涓湭鏌ヨ鍒�)銆�3鍌ㄤ綅鎹熷潖涓嶈兘鍑哄簱銆�4 瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱 @@ -1420,6 +1422,7 @@ //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� foreach (var item in list) { + var taskNoStr = ""; string toLocation = string.Empty;//鐩爣浣嶇疆 string unstackingMode2 = unstackingMode;//鎷嗗灈鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈 #region 鍒ゆ柇鏄惁闇�瑕佹媶绠� @@ -1450,7 +1453,7 @@ isChai = "1"; unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈 } - } + } #endregion if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨� { @@ -1550,40 +1553,211 @@ if (locate.Status == "1") //鏈夌墿鍝� { #region 娣诲姞鍑哄簱浠诲姟 - - var taskNo = new Common().GetMaxNo("TK"); - var exTask = new LogTask //鍑哄簱浠诲姟 + if (locate.Depth == "01") //娣卞害涓�1 { - TaskNo = taskNo, - Sender = "WMS", - Receiver = "WCS", - IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + var taskNo = new Common().GetMaxNo("TK"); + var exTask = new LogTask //鍑哄簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - StartLocat = locate.LocatNo,//璧峰浣嶇疆 - EndLocat = toLocation,//outMode,//鐩爣浣嶇疆 - PalletNo = item.PalletNo,//鎵樼洏鐮� - IsSend = 1,//鏄惁鍙啀娆′笅鍙� - IsCancel = 1,//鏄惁鍙彇娑� - IsFinish = 1,//鏄惁鍙畬鎴� - Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 - Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 - OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� - Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 - }; - Db.Insertable(exTask).ExecuteCommand(); - logTaskList.Add(exTask); + StartLocat = locate.LocatNo,//璧峰浣嶇疆 + EndLocat = toLocation,//outMode,//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = "浠�" + locate.LocatNo + "鍒�" + toLocation + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + }; + Db.Insertable(exTask).ExecuteCommand(); + logTaskList.Add(exTask); - outDtoList.Add(new OutCommandDto() + outDto1.Add(new OutCommandDto() + { + PalletNo = item.PalletNo,//鎵樼洏鍙� + StartLocate = locate.LocatNo, // 璧峰浣嶇疆 + StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 + EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆 + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) + OutMode = "", //鐩爣鍦板潃 + Order = 1 + }); + } + else if (locate.Depth == "02") //娣卞害涓�2 { - PalletNo = item.PalletNo,//鎵樼洏鍙� - StartLocate = locate.LocatNo, // 璧峰浣嶇疆 - StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 - EndLocate = toLocation,//outMode, // 鐩爣浣嶇疆 - TaskNo = exTask.TaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) - OutMode = "", //鐩爣鍦板潃 - Order = 1 - }); + //鑾峰彇鍑哄簱娣卞害涓�2鍌ㄤ綅鍓嶉潰鐨勫偍浣嶄俊鎭� + var slotBefore = com.GetLocateNoDepth1(locate.WareHouseNo, locate.LocatNo); + if (slotBefore.Status == "1") //鍓嶉潰鐨勫偍浣嶆湁璐х墿銆佽繘琛岀Щ搴撴搷浣� + { + //瑕佸嚭搴撴繁搴︿负2鐨勫偍浣嶅墠闈㈢殑鍌ㄤ綅涓揣鐗╂槸鍚﹁鍑哄簱 + var isout = outStockDetail.Count(m => m.LocatNo == slotBefore.LocatNo); + + if (isout <= 0) //杩涜绉诲簱 + { + //鍘诲簱瀛樿〃涓壘鍒板偍浣嶅搴旂殑鎵樼洏鐮佹搷浣� + var stockNew = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == slotBefore.LocatNo); + if (stockNew == null) + { + var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == slotBefore.LocatNo); + slotChange.Status = "0"; + Db.Updateable(slotChange).ExecuteCommand(); + } + else + { + //鑾峰彇绉诲簱鐨勫簱浣� + var newSlot = MoveAddress(slotBefore.LocatNo, slotBefore.RoadwayNo, item.SkuNo); + //褰撳墠绉诲簱搴撲綅鐨勫偍浣嶄俊鎭� + var locatey = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == newSlot && m.IsDel == "0"); + if (!string.IsNullOrEmpty(newSlot)) + { + #region 娣诲姞鍑哄簱鏃跺彂鐢熺殑绉诲簱浠诲姟 + + var exYkTaskNo = new Common().GetMaxNo("TK"); + var exYkTask = new LogTask //鍑哄簱鏃朵骇鐢熺Щ搴撲换鍔� + { + TaskNo = exYkTaskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = stockNew.LocatNo,//璧峰浣嶇疆 + EndLocat = newSlot,//鐩爣浣嶇疆 + PalletNo = stockNew.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "2",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + + Msg = stockNew.LocatNo + " ==>> " + newSlot + "鐨勭Щ搴撲换鍔�", + }; + Db.Insertable(exYkTask).ExecuteCommand(); + + moveDto.Add(new OutCommandDto() + { + StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾 + PalletNo = stockNew.PalletNo,//鎵樼洏鍙� + StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆 + EndLocate = newSlot, // 鐩爣浣嶇疆 + EndRoadway = locatey.RoadwayNo, // 鐩爣宸烽亾 + TaskNo = exYkTask.TaskNo, // 浠诲姟鍙� + TaskType = "2",// 浠诲姟绫诲瀷 (绉诲簱) + OutMode = "", //鐩爣鍦板潃 + Order = 1, + }); + #endregion + + #region 鏀瑰彉鍌ㄤ綅瑁呭~ + var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.Id == slotBefore.Id); + var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == newSlot); + slotChange.Status = "5"; //鏀瑰彉鐘舵�侊紙姝e湪绉诲嚭锛� + slotChange2.Status = "4"; // 鏀瑰彉鐘舵�侊紙姝e湪绉诲叆锛� + Db.Updateable(slotChange).ExecuteCommand(); + Db.Updateable(slotChange2).ExecuteCommand(); + #endregion + } + else + { + #region 娣诲姞鍑哄簱浠诲姟 + + var exYkTaskNo1 = new Common().GetMaxNo("TK"); + var exYkTask1 = new LogTask //鍑哄簱绉诲簱娌℃湁搴撲綅浜嗚繘琛屽嚭搴撲换鍔� + { + TaskNo = exYkTaskNo1, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = stockNew.LocatNo,//璧峰浣嶇疆 + EndLocat = "",//鐩爣浣嶇疆 + PalletNo = stockNew.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�" + }; + Db.Insertable(exYkTask1).ExecuteCommand(); + + outDto1.Add(new OutCommandDto() + { + StartRoadway = slotBefore.RoadwayNo, //璧峰宸烽亾 + PalletNo = stockNew.PalletNo,//鎵樼洏鍙� + StartLocate = stockNew.LocatNo, // 璧峰浣嶇疆 + EndLocate = "", // 鐩爣浣嶇疆 + EndRoadway = "", // 鐩爣宸烽亾 + TaskNo = exYkTask1.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) + OutMode = "", //鐩爣鍦板潃 + Order = 1, + }); + #endregion + + #region MyRegion + + var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.Id == slotBefore.Id); + slotChange.Status = "3"; //鏀瑰彉鐘舵�侊紙姝e湪鍑哄簱锛� + Db.Updateable(slotChange).ExecuteCommand(); + + #endregion + } + } + } + } + else if (slotBefore.Status == "2" || slotBefore.Status == "4") //鍓嶉潰鍌ㄤ綅鐘舵�佹槸鍏ュ簱涓垨鑰呯Щ鍏ヤ腑 + { + flagList.Add(5); + continue; + } + + #region 娣诲姞鍑哄簱浠诲姟 + + var taskNo1 = new Common().GetMaxNo("TK"); + var exTask1 = new LogTask //鍑哄簱浠诲姟 + { + TaskNo = taskNo1, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = locate.LocatNo,//璧峰浣嶇疆 + EndLocat = "",//鐩爣浣嶇疆 + PalletNo = item.PalletNo,//鎵樼洏鐮� + IsSend = 1,//鏄惁鍙啀娆′笅鍙� + IsCancel = 1,//鏄惁鍙彇娑� + IsFinish = 1,//鏄惁鍙畬鎴� + Type = "1",//浠诲姟绫诲瀷 0 鍏ュ簱浠诲姟 1 鍑哄簱浠诲姟 2 绉诲簱浠诲姟 + Status = "0",//浠诲姟鐘舵��0锛氱瓑寰呮墽琛�1姝e湪鎵ц2鎵ц瀹屾垚 + OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� + Msg = locate.LocatNo + "鐨勫嚭搴撲换鍔�" + }; + Db.Insertable(exTask1).ExecuteCommand(); + + outDto2.Add(new OutCommandDto() + { + StartRoadway = locate.RoadwayNo, //璧峰宸烽亾 + PalletNo = item.PalletNo,//鎵樼洏鍙� + StartLocate = locate.LocatNo, // 璧峰浣嶇疆 + EndLocate = "", // 鐩爣浣嶇疆 + EndRoadway = locate.RoadwayNo, //鐩爣宸烽亾 + TaskNo = exTask1.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) + OutMode = "", //鐩爣鍦板潃 + Order = 1, + }); + taskNoStr = exTask1.TaskNo; + #endregion + + } #endregion #region 鏀瑰彉鏁版嵁 @@ -1610,7 +1784,7 @@ locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 Db.Updateable(locate).ExecuteCommand(); - item.TaskNo = exTask.TaskNo; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 + item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 item.OutMode = unstackingMode2 == "1" ? outMode : "";//鍑哄簱鍙� @@ -1645,7 +1819,7 @@ } } } - var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType =="1"&& m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo==item.PalletNo); + var taskNo = Db.Queryable<LogTask>().First(m => m.OrderType == "1" && m.TaskNo != item.TaskNo && m.Status == "1" && m.PalletNo == item.PalletNo); if (taskNo == null) { taskNo = logTaskList.First(m => m.PalletNo == item.PalletNo);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 @@ -1693,11 +1867,11 @@ { str += "3.瑕佸嚭搴撶殑鎵樼洏姝e湪鍏ュ簱銆�"; } - if (outDtoList.Count > 0) + if (outDto1.Count > 0) { // 姝e紡杩愯绋嬪簭鏀惧紑 - var list2 = outDtoList.Select(m => m.TaskNo).ToList(); - var jsonData = JsonConvert.SerializeObject(outDtoList); + var list2 = outDto1.Select(m => m.TaskNo).ToList(); + var jsonData = JsonConvert.SerializeObject(outDto1); string response = ""; try @@ -1727,7 +1901,7 @@ } - return outDtoList; + return outDto1; } catch (Exception e) { @@ -1780,7 +1954,7 @@ } foreach (var item in stockDetail) { - if (item.SkuNo== "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴� + if (item.SkuNo == "100099")//鍒ゆ柇鏄惁鏄┖鎵樺嚭搴� { //鍒ゆ柇鎬诲簱瀛樻槸鍚︿负0锛屽鏋滀负0鍒犻櫎 鍚﹀垯鍑忓幓鏁伴噺 var stock = Db.Queryable<DataStock>().First(m => m.SkuNo == "100099"); @@ -2037,7 +2211,7 @@ if (noticeDetail.FactQty == 0) { var noticeDetail2 = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo && m.Id != noticeDetail.Id).ToList(); - var num = noticeDetail2.Count(m => m.FactQty>0); + var num = noticeDetail2.Count(m => m.FactQty > 0); //鍒ゆ柇鍑哄簱鍗曠殑鎵�鏈夋槑缁嗘槸鍚﹂兘涓�0锛涘鏋滀负0鍙樻洿鍑哄簱鍗曠姸鎬佷负宸插垎閰� if (num == 0) { @@ -2063,7 +2237,7 @@ //淇敼搴撳瓨鏄庣粏 stockDetail.LockQty -= stockDetail.Qty; //閿佸畾鏁伴噺 stockDetail.Status = "0"; //搴撳瓨鐘舵�� 0锛氬緟鍒嗛厤 - + //淇敼搴撳瓨鎬昏〃 datastock.LockQty -= (int)stockDetail.Qty; //閿佸畾鏁伴噺 @@ -2081,13 +2255,13 @@ Db.Updateable(locate).ExecuteCommand(); } - + } else { Db.Updateable(allot).ExecuteCommand(); } - + //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", (int)userId); Db.CommitTran(); @@ -2114,7 +2288,7 @@ try { // 鍒ゆ柇褰撳墠浠诲姟鐘舵�� Status 1:姝e湪鎵ц 3:寮傚父缁撴潫 - var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1"); + var taskModel = Db.Queryable<LogTask>().First(m => m.TaskNo == model.TaskNo && m.IsDel == "0" && m.Status == "1"); if (taskModel == null) { throw new Exception("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!"); @@ -2592,7 +2766,7 @@ { throw new Exception("鑾峰彇澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗�!"); } - if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") + if (notice.Status == "3" && detail.AllotQty >= detail.Qty || notice.Status == "4" || notice.Status == "5") { throw new Exception("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!"); } @@ -2607,7 +2781,7 @@ m => m.SkuNo.Contains(msg.Trim()) || m.SkuName.Contains(msg.Trim()) || m.LocatNo.Contains(msg.Trim())) - .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo &&(m.Status == "0" || m.Status == "1")) + .And(m => m.IsDel == "0" && m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && (m.Status == "0" || m.Status == "1")) .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� var list = Db.Queryable<DataStockDetail>().Where(item).Select(a => new StockDetailDto @@ -2650,7 +2824,7 @@ { throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撳崟宸插垎閰嶅畬鎴愶紒"); } - var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel =="0" && a.SONo == detail.SONo); + var notice = Db.Queryable<BllExportNotice>().First(a => a.IsDel == "0" && a.SONo == detail.SONo); if (notice == null) { throw new Exception("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒"); @@ -2686,7 +2860,7 @@ { throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒"); } - if (st.Qty > (stock.Qty-stock.LockQty-stock.FrozenQty -stock.InspectQty)) + if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty - stock.InspectQty)) { throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒"); } @@ -2757,7 +2931,7 @@ { notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺澶т簬绛変簬鍑哄簱鏁伴噺 淇敼涓哄凡鍒嗛厤 } - else if (totalAllotQty< totalQty && totalAllotQty>0) + else if (totalAllotQty < totalQty && totalAllotQty > 0) { notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺 淇敼涓洪儴鍒嗗垎閰� } @@ -2800,7 +2974,7 @@ //鐗╂枡缂栫爜琛� var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); //鍖呰琛� - var packagList= Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); + var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); //鍑哄簱鍒嗛厤淇℃伅 var allotList = Db.Queryable<BllExportAllot>().Where(w => w.IsDel == "0" && w.SONo == soNo).ToList(); foreach (var item in allotList) @@ -2829,7 +3003,7 @@ result = "1";//闇�瑕佹媶绠� break; } - } + } return result; } catch (Exception ex) @@ -2837,5 +3011,77 @@ throw new Exception(ex.Message); } } + + /// <summary> + /// 鑾峰彇绉诲簱鐩爣搴撲綅 + /// </summary> + /// <param name="oldAddress">闇�瑕佺Щ鍔ㄧ殑搴撲綅鍦板潃</param> + /// <param name="roadWay">宸烽亾</param> + /// <param name="skuNo">鐗╂枡缂栫爜</param> + /// <returns>鐩爣搴撲綅鍦板潃 涓�"" 鐩存帴涓嬪彂涓ゆ鍑哄簱鎸囦护</returns> + public string MoveAddress(string oldAddress, string roadWay, string skuNo)//01020201 鎺�-鍒�-灞�-娣卞害 + { + string nowAddress = ""; + + //鏍规嵁鐗╂枡缂栫爜鑾峰彇瀵瑰簲鍖哄煙 + var skuCategoryNo = Db.Queryable<SysMaterials>().Where(a => a.IsDel == "0" && a.SkuNo == skuNo).Select(a => a.CategoryNo).First(); + var category = Db.Queryable<SysMaterialCategory>().First(a => a.IsDel == "0" && a.CategoryNo == skuCategoryNo); + + // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅 + var row = int.Parse(oldAddress.Substring(0, 2)); + var lie = int.Parse(oldAddress.Substring(2, 2)); + var ceng = int.Parse(oldAddress.Substring(4, 2)); + + var sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum + from SysStorageLocat + where Flag = '0' and Status = '0' and Depth = '02' and RoadwayNo = '{roadWay}' and AreaNo in '{category}' + order by distNum;"; + + var addressModels = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList(); + if (addressModels.Count > 0) // 鍒ゆ柇鍚屽贩閬撳唴鎺掔┖搴撲綅 + { + var listLocaete = new List<string>(); + foreach (var item in addressModels) + { + // 鐩爣鍐呭簱浣嶅搴旂殑澶栧簱浣� + string addressee = item.LocatNo.Substring(0, 6) + "01"; + + // 鍒ゆ柇鐩爣搴撲綅鐨勫搴撲綅鏄惁瀛樺湪璐х墿 (姝e父鎯呭喌涓嬫鍦ㄧЩ鍏ユ儏鍐典笉瀛樺湪锛屽洜涓虹Щ搴撳厛绉诲叆閲岄潰锛屽悗绉诲叆澶栭潰) + //SlotStatus 0: 绌哄偍浣� 1锛氭湁璐� 2锛氭鍦ㄥ叆搴� 3锛氭鍦ㄥ嚭搴� 4锛氭鍦ㄧЩ鍏� 5锛氭鍦ㄧЩ鍑� + sqlString = $"select count(*) from SysStorageLocat where LocatNo = '{addressee}' and Status = '0' and Flag in ('0','1') ; "; + var rowNum = Db.Ado.SqlQuery<int>(sqlString).First(); + if (rowNum == 0) + { + continue; + } + else + { + nowAddress = item.LocatNo; + break; + } + } + } + if (nowAddress == "") + { + // 鍒ゆ柇鍚屽贩閬撳鎺掔┖搴撲綅 + sqlString = $@"select LocatNo,[Row],[Column],Layer, (ABS(Row-{row}) + ABS([Column]-{lie}) + ABS(Layer-{ceng})) as distNum + from SysStorageLocat + where Flag = '0' and Status = '0' and Depth = '01' and RoadwayNo = '{roadWay}' and AreaNo in '{category}' + order by distNum;"; + var adderModeling = Db.Ado.SqlQuery<AddressCls>(sqlString).ToList(); + if (adderModeling.Count > 0) + { + nowAddress = adderModeling[0].LocatNo; + } + else + { + // 搴撳唴涓嶅瓨鍦ㄧ┖鍌ㄤ綅 + nowAddress = ""; + } + } + + + return nowAddress; + } } } -- Gitblit v1.8.0