From f990f95a0b5aa099212116fa7d57b7ee2abcf863 Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-JIE70N9> Date: 星期五, 23 五月 2025 14:22:46 +0800 Subject: [PATCH] 拣货拼托问题修复 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 85 ++++++++++++++++++++++++++++++------------ 1 files changed, 60 insertions(+), 25 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index 3b9a7d0..93bbf2b 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -22,6 +22,7 @@ using WMS.Entity.BllAsnEntity; using System.Threading.Tasks; using Utility; +using WMS.BLL.Logic; namespace WMS.BLL.BllPdaServer { @@ -118,12 +119,12 @@ #region 鎷兼墭淇℃伅 var sdId = 0; bool isNew = false; - + var pinStockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.SkuNo == stockDetail.SkuNo && m.LotNo == stockDetail.LotNo); - if (pinStockDetail != null) + if (pinStockDetail != null) { - if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐� + if (palletNo != palletNoNew)//闈炴暣鎵樻嫞璐� { var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id!= pinStockDetail.Id).ToList(); if (pinStockDetails.Count(m=>m.SONo != notice.SONo) > 0) @@ -141,7 +142,11 @@ var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); if (newPalletInfo == null) { - throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); + if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) + { + throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + } } //淇敼鏂版墭鐩樼姸鎬� newPalletInfo.Status = "1"; @@ -583,7 +588,11 @@ var newPalletInfo = await Db.Queryable<SysPallets>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Status == "0"); if (newPalletInfo == null) { - throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + var pinStockDetails = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNoNew && m.Id != pinStockDetail.Id).ToList(); + if (pinStockDetails.Count(m => m.SONo != notice.SONo) > 0) + { + throw Oops.Bah("鏂版墭鐩樹俊鎭笉瀛樺湪鎴栧凡琚娇鐢紒"); + } } //淇敼鏂版墭鐩樼姸鎬� newPalletInfo.Status = "1"; @@ -871,6 +880,25 @@ return allotList2; } + + public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListBySo(string soNo) + { + if (string.IsNullOrWhiteSpace(soNo))//鍒ゆ柇鎵樼洏鏄惁涓虹┖ + { + throw Oops.Bah("鍗曟嵁涓虹┖锛岃閫夋嫨鍗曟嵁"); + } + //鑾峰彇鐘舵�佷负寰呮嫞璐ф垨鑰呴儴鍒嗘嫞璐х殑鍑哄簱鍗� + var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.Status == "0" || m.Status == "1")); + + var list = await allotList.GroupBy(m => new { m.SODetailNo, m.SkuNo, m.SkuName, m.LotNo }).Select(m => new DetailIdSkuLotNo() + { + SoDetailId = m.SODetailNo, + SkuName = m.SkuName, + LotNo = m.LotNo, + }).ToListAsync(); + + return list; + } //鑾峰彇鍑哄簱鎵樼洏涓婄殑鐗╂枡鎵规(鏍规嵁鎵樼洏鐮�) public async Task<List<DetailIdSkuLotNo>> GetSoSkuLotNoListByPallet(string palletNo, string soNo) { @@ -1770,9 +1798,8 @@ //鑾峰彇褰撳墠鏃堕棿 DateTime serverTime = Db.GetDate(); //鑾峰彇搴撳瓨鏄庣粏鏄惁灏忎簬绛変簬璇ュ灈鏁� - //string str = "select * from DataStockDetail where IsDel = '0' and SkuNo = '100099' and Status = '0' "; - //var stockDetail = Db.Ado.SqlQuery<DataStockDetail>(str); - var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0").ToListAsync(); + + var stockDetail = await Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.SkuNo == "100099" && s.Status == "0" && !string.IsNullOrWhiteSpace(s.WareHouseNo)).ToListAsync(); if (stockDetail.Count > 0) { //鍒ゆ柇鏄惁澶т簬闇�瑕佸灈鏁� @@ -1797,7 +1824,7 @@ foreach (var s in stockDetail) { //鑾峰彇鍌ㄤ綅淇℃伅 - var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && l.WareHouseNo == "W02"); + var locat = await Db.Queryable<SysStorageLocat>().FirstAsync(l => l.LocatNo == s.LocatNo && l.IsDel == "0" && (l.WareHouseNo == "W01"||l.WareHouseNo == "W02")); if (locat == null) { @@ -1872,10 +1899,10 @@ { TaskNo = taskNo, Sender = "WMS", - Receiver = "PDA", + Receiver = "WCS", IsSuccess = 1, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 - StartLocat = locat == null ? "闆剁搴�" : s.LocatNo,//璧峰浣嶇疆 + StartLocat = s.LocatNo,//璧峰浣嶇疆 EndLocat = model.OutMode,//鐩爣浣嶇疆 PalletNo = s.PalletNo,//鎵樼洏鐮� IsSend = 1,//鏄惁鍙啀娆′笅鍙� @@ -1886,20 +1913,28 @@ OrderType = "1",//0 鍏ュ簱鍗� 1 鍑哄簱鍗� 2 鐩樼偣鍗� 3 绉诲簱鍗� CreateTime = serverTime, //鍒涘缓鏃堕棿 CreateUser = userId, //鍒涘缓浜� - Msg = "Pda绌烘墭浠�" + locat == null ? "闆剁搴�" : s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + Msg = "Pda绌烘墭浠�" + s.LocatNo + "鍒�" + model.OutMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 //FinishDate = serverTime, //瀹屾垚鏃堕棿 }; + var endroad = ""; + if (locat.WareHouseNo == "W01") + { + endroad = new AllotLocation().RoadwayToStationNum(locat.RoadwayNo, model.OutMode); + } + outDtoList.Add(new OutCommandDto() { - PalletNo = exTask.PalletNo,//鎵樼洏鍙� - StartLocate = exTask.StartLocat, // 璧峰浣嶇疆 - StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬� - EndLocate = "", // 鐩爣浣嶇疆 TaskNo = exTask.TaskNo, // 浠诲姟鍙� TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) - OutMode = model.OutMode, //鐩爣鍦板潃 - Order = 1, - Type = PLCTypeEnum.AGV + PalletNo = exTask.PalletNo,//鎵樼洏鍙� + + StartLocate = exTask.StartLocat, // 璧峰浣嶇疆 + StartRoadway = locat.RoadwayNo, //鎵�灞炲贩閬� + EndLocate = model.OutMode, // 鐩爣浣嶇疆 + EndRoadway = endroad, + + Order = 999, + Type = locat.WareHouseNo == "W01"?PLCTypeEnum.ShuttleCar : PLCTypeEnum.AGV }); await Db.Insertable(exTask).ExecuteCommandAsync(); @@ -1926,17 +1961,17 @@ var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") ////瑙f瀽杩斿洖鏁版嵁 - var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - if (wcsModel.StatusCode == 0) + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) { //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// new TaskServer().EditTaskIssueOk(list2, time1, time2); //str += "涓嬪彂鎴愬姛"; } - if (wcsModel.StatusCode == -1) + else { - new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - throw Oops.Bah(wcsModel.Msg); + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw Oops.Bah(wcsModel.message); } } catch (AppFriendlyException e) @@ -1960,7 +1995,7 @@ catch (Exception e) { Db.RollbackTran(); - return e.Message; + throw new Exception(e.Message); } } -- Gitblit v1.8.0