From 7f4b5fb7a89052f1fbd2e00b34e60e1b55f73ab3 Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期六, 16 三月 2024 16:58:40 +0800 Subject: [PATCH] Merge branch 'csc' --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 774 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 631 insertions(+), 143 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 81e5525..6cf26c6 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -141,6 +141,7 @@ SupplierLot = stocks.First().SupplierLot, IsWave = "0", WaveNo = "", + IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo)? "0":"1", CreateUser = 0, }; @@ -199,7 +200,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("鏈煡璇㈠埌鍗曟嵁淇℃伅"); @@ -224,7 +225,7 @@ { SkuNo = d.SkuNo, LotNo = d.LotNo, - Qty = int.Parse(d.CompleteQty.ToString()) + Qty = (decimal)d.CompleteQty }; list.Add(item); } @@ -247,8 +248,8 @@ #endregion notice.Status = "6"; - notice.UpdateTime = DateTime.Now; - notice.UpdateUser = userId; + notice.CheckTime = DateTime.Now; + notice.CheckUser = userId; Db.Updateable(notice).ExecuteCommand(); new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", notice.SONo, "澶嶆牳", $"澶嶆牳浜嗗崟鎹彿涓簕notice.SONo}鐨勫崟鎹俊鎭�", userId); @@ -290,8 +291,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 +309,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); @@ -330,39 +331,60 @@ } } - public List<ExStockInfoDto> GetStockGroupList(string type, string msg) + public List<ExStockInfoDto> GetStockGroupList(string type, string ownerNo, string msg) { try { + if (string.IsNullOrEmpty(type)) + { + throw new Exception("璇烽�夋嫨鍑哄簱鍗曠被鍨�"); + } + if (type == "6" && string.IsNullOrEmpty(ownerNo)) + { + throw new Exception("浠e偍鍗曟嵁璇烽�夋嫨璐т富"); + } var plnList = new List<string>() { "100099" }; var skuList = new List<string>(); var sku = Db.Queryable<SysMaterials>().Where(m => m.IsDel == "0" && !plnList.Contains(m.SkuNo)); //鎺掗櫎绌烘墭鐩樼殑鐗╂枡闆嗗悎 string skuType = string.Empty; + string inspectStatus = string.Empty; switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧 { - case "0"://鎴愬搧鍏ュ簱 + case "0"://鎴愬搧鍑哄簱 skuType = "(2)"; + inspectStatus = "1"; break; case "1"://棰嗘枡鍑哄簱 skuType = "(0,1,3)"; + inspectStatus = "1"; break; case "2"://鎶芥鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0,1,2"; break; case "3"://鐗╂枡鍙栨牱鍑哄簱 - skuType = "(0)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0"; break; case "4"://涓嶅悎鏍煎搧鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "2"; break; case "5"://涓棿鍝佸嚭搴� skuType = "(4)"; + inspectStatus = "0,1"; break; case "6"://浠e偍鍑哄簱 - skuType = "(2)"; + skuType = "(0,1,2,3)"; + inspectStatus = "0,1"; + break; + case "8"://瀵勫瓨鍑哄簱 + skuType = "(0,1,2,3)"; + inspectStatus = "0,1"; break; default: //鍏跺畠鍑哄簱 skuType = "(0,1,2,3,4)"; + inspectStatus = "0,1"; break; } skuList = sku.Where(m => skuType.Contains(m.Type)).Select(m => m.SkuNo).ToList(); @@ -370,13 +392,23 @@ { throw new Exception("鏈煡鍒板搴斿嚭搴撶被鍨嬬殑鐗╂枡"); } + + if (type!="8") + { + skuList = skuList.Where(m => m != "100088").ToList(); + } + else + { + skuList = skuList.Where(m => m == "100088").ToList(); + } //skuList = sku.Select(m => m.SkuNo).ToList(); var stockRst = new StockServer(); var stockDetailRst = new StockDetailServer(); Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() //.And(it => it.WareHouseNo == wareHouseNo) - .And(it => it.InspectStatus == "1") + .AndIF(!string.IsNullOrWhiteSpace(inspectStatus), it => inspectStatus.Contains(it.InspectStatus)) .And(m => skuList.Contains(m.SkuNo)) + .AndIF(type == "6", m => m.OwnerNo == ownerNo)//浠e偍鍑哄簱闇�瑕佸叧鑱旇揣涓� .AndIF(!string.IsNullOrWhiteSpace(msg), it => (it.SkuNo.Contains(msg) || it.SkuName.Contains(msg) || it.LotNo.Contains(msg))) .And(it => (it.Qty - it.LockQty - it.FrozenQty) > 0) .And(it => (it.Status == "0" || it.Status == "1")) @@ -405,7 +437,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(); @@ -456,7 +488,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(); @@ -528,12 +560,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, }; @@ -555,7 +587,7 @@ LogisticsId = model.LogisticsId, IsWave = "0", WaveNo = "", - IsDespatch="0", + IsDespatch = "0", CreateUser = userId, }; @@ -627,7 +659,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() @@ -802,7 +834,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("鐗╁搧搴撳瓨鏁伴噺涓嶈冻"); } @@ -1118,8 +1150,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") @@ -1151,7 +1183,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($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); @@ -1166,7 +1198,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($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); } @@ -1249,7 +1281,7 @@ throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅宸叉崯鍧忥紝涓嶈兘鍑哄簱锛岃鏍稿疄"); } - if (locate.Status !="1") + if (locate.Status != "1") { throw new Exception($"褰撳墠鎵樼洏鎵�鍦ㄧ殑鍌ㄤ綅鐘舵�佷笉鏄湁鐗╁搧锛屼笉鑳藉嚭搴擄紝璇锋牳瀹�"); } @@ -1305,10 +1337,10 @@ Db.Updateable(de).ExecuteCommand(); Db.Updateable(stocka).ExecuteCommand(); } - + locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 Db.Updateable(locate).ExecuteCommand(); - + #endregion @@ -1376,13 +1408,15 @@ #region 涓嬪彂鍑哄簱銆佸嚭搴撳畬鎴愩�侀噸鏂颁笅鍙戜换鍔°�佸彇娑堜换鍔°�佸紓甯稿鐞� // 涓嬪彂鍑哄簱锛堣皟鐢╟s鎺ュ彛缁欎粬搴撲綅鍦板潃锛� - public List<OutCommandDto> IssueOutHouse(string soNo, string outMode, int userId, string url, out string str) + public List<OutCommandDto> IssueOutHouse(string soNo, string unstackingMode, string outMode, string loadingAddre, int userId, string url, out string str) { try { #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湪鍏ュ簱 @@ -1406,6 +1440,10 @@ var outLpnList = list.Select(m => m.PalletNo).ToList(); //瑕佸嚭搴撶殑鏄庣粏闆嗗悎 var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList(); + //鐗╂枡缂栫爜琛� + var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); + //鍖呰琛� + var packagList = Db.Queryable<SysPackag>().Where(w => w.IsDel == "0"); Db.BeginTran(); try { @@ -1413,6 +1451,57 @@ //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� foreach (var item in list) { + var taskNoStr = ""; + string toLocation = string.Empty;//鐩爣浣嶇疆 + string unstackingMode2 = unstackingMode;//鎷嗗灈鏂瑰紡锛�0:鏈哄櫒浜烘媶鍨� 1:PDA鎷嗗灈 + #region 鍒ゆ柇鏄惁闇�瑕佹媶绠� + if (notice.Type == "0")//鎴愬搧鍑哄簱 + { + string isChai = "0";//鏄惁闇�瑕佹媶绠憋紝0:鍚� 1:鏄� + var skuInfo = skuList.First(w => w.SkuNo == item.SkuNo); + if (skuInfo == null) + { + throw new Exception("鐗╂枡淇℃伅涓嶅瓨鍦紒"); + } + var packagInfo = packagList.First(w => w.PackagNo == skuInfo.PackagNo); + if (packagInfo == null) + { + throw new Exception("鍖呰淇℃伅涓嶅瓨鍦紒"); + } + if (packagInfo.L2Name == "绠�") + { + if (item.Qty % (decimal)packagInfo.L2Num != 0)//鑳芥暣闄よ鏄庝笉鐢ㄦ媶绠憋紝涓嶈兘鏁撮櫎璇存槑闇�瑕佹媶绠� + { + isChai = "1"; + unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈 + } + } + if (isChai == "0") + { + var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList(); + if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� + { + isChai = "1"; + unstackingMode2 = "1";//闇�瑕佹媶绠遍渶璧癙DA鎷嗗灈 + } + } + + if (unstackingMode2 == "0")//鏈哄櫒浜烘媶鍨� + { + toLocation = loadingAddre;//瑁呰溅鍙� + } + else //PDA鎷嗗灈 + { + toLocation = outMode;//鍑哄簱鍙� + } + } + else + { + unstackingMode2 = "1";//闈炴垚鍝佸嚭搴撹蛋PDA鎷嗗灈 + toLocation = outMode;//鍑哄簱鍙� + } + #endregion + // 鍌ㄤ綅鍙� var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; @@ -1502,40 +1591,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 = 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 + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 - }; - 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 = 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 鏀瑰彉鏁版嵁 @@ -1562,11 +1822,12 @@ locate.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 Db.Updateable(locate).ExecuteCommand(); - item.TaskNo = exTask.TaskNo; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 + item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� - item.OutMode = outMode;//鍑哄簱鍙� + item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 + item.OutMode = unstackingMode2 == "1" ? outMode : "";//鍑哄簱鍙� + item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙� Db.Updateable(item).ExecuteCommand(); - #endregion @@ -1596,7 +1857,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);//褰撳墠鏈夊悓鎵樼洏涓嶅悓鐗╂枡鍑哄簱 @@ -1607,7 +1868,8 @@ } item.TaskNo = taskNo.TaskNo; item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� - item.OutMode = taskNo.EndLocat; + item.OutMode = unstackingMode2 == "1" ? taskNo.EndLocat : "";//鍑哄簱鍙� + item.LoadingAddre = unstackingMode2 == "0" ? taskNo.EndLocat : "";//瑁呰溅鍙� Db.Updateable(item).ExecuteCommand(); flagList.Add(0); #endregion @@ -1643,32 +1905,32 @@ { 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 { - var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") - response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); - var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") + //var time1 = DateTime.Now;//鍙戦�佹椂闂� .ToString("yyyy-MM-dd HH:mm:ss") + //response = HttpHelper.DoPost(url, jsonData, "涓嬪彂缁橶CS鍑哄簱鍛戒护", "WCS"); + //var time2 = DateTime.Now;//杩斿洖鏃堕棿 .ToString("yyyy-MM-dd HH:mm:ss") - ////瑙f瀽杩斿洖鏁版嵁 - var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); - if (wcsModel.StatusCode == 0) - { - //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - str += "涓嬪彂鎴愬姛"; - } - if (wcsModel.StatusCode == -1) - { - new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); - throw new Exception(wcsModel.Msg); - } + //////瑙f瀽杩斿洖鏁版嵁 + //var wcsModel = JsonConvert.DeserializeObject<WcsModel>(response); + //if (wcsModel.StatusCode == 0) + //{ + // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + // new TaskServer().EditTaskIssueOk(list2, time1, time2); + // str += "涓嬪彂鎴愬姛"; + //} + //if (wcsModel.StatusCode == -1) + //{ + // new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.Msg); + // throw new Exception(wcsModel.Msg); + //} } catch (Exception ex) { @@ -1677,7 +1939,7 @@ } - return outDtoList; + return outDto1; } catch (Exception e) { @@ -1730,7 +1992,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"); @@ -1854,6 +2116,86 @@ } } + /// <summary> + /// wcs杩斿洖鐨勬垚鍔熶俊鍙凤紙绉诲簱鎴愬姛锛� + /// </summary> + /// <param name="taskNo">浠诲姟鍙�</param> + /// <param name="userId">鎿嶄綔浜�</param> + /// <exception cref="Exception"></exception> + public void RelocationSuccess(string taskNo, int userId) + { + try + { + //褰撳墠浠诲姟淇℃伅 + var task = Db.Queryable<LogTask>().First(m => m.TaskNo == taskNo && m.IsDel == "0"); + if (task == null) + { + throw new Exception($"鏈煡璇㈠埌浠诲姟鍙蜂负锛氣�榹taskNo}鈥欑殑浠诲姟淇℃伅"); + } + if (task.Status == "2") + { + throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); + } + Db.BeginTran(); + //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); + //褰撳墠浠诲姟涓殑鐩爣鍌ㄤ綅淇℃伅 + //褰撳墠浠诲姟涓殑鍘熷偍浣� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.StartLocat); + if (locate == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.StartLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + var locate2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == task.EndLocat); + if (locate2 == null) + { + throw new Exception($"WMS绯荤粺涓病鏈夎{task.EndLocat}鍌ㄤ綅瀵瑰簲鐨勪俊鎭�"); + } + + try + { + task.Status = "2";//浠诲姟鐘舵�� + task.IsSend = 0; + task.IsCancel = 0; + task.IsFinish = 0; + task.FinishDate = DateTime.Now;//瀹屾垚鏃堕棿 + Db.Updateable(task).ExecuteCommand(); + + #region 淇敼鍌ㄤ綅鐘舵�� + + //鍘熷偍浣嶆敼涓虹┖鍌ㄤ綅 0 + locate.Status = "0"; + Db.Updateable(locate).ExecuteCommand(); + + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 + locate2.Status = "1"; + Db.Updateable(locate2).ExecuteCommand(); + foreach (var item in stockDetail) + { + item.WareHouseNo = locate2.WareHouseNo; + item.AreaNo = locate2.AreaNo; + item.RoadwayNo = locate2.RoadwayNo; + item.LocatNo = locate2.LocatNo; + } + Db.Updateable(stockDetail).ExecuteCommand(); + + #endregion + + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + catch (Exception ex) + { + throw new Exception("瀹屾垚鍙嶉澶辫触锛�" + ex.Message); + } + } + + //閲嶆柊涓嬪彂鍑哄簱浠诲姟 public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url) { @@ -1975,7 +2317,16 @@ //鑾峰彇鍌ㄤ綅淇℃伅 var locat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W01" && a.LocatNo == task.StartLocat); - + //鑾峰彇绉诲簱浠诲姟瀵瑰簲鐩爣鍌ㄤ綅淇℃伅 + SysStorageLocat endlocat = new SysStorageLocat(); + if (task.Type == "2") + { + endlocat = Db.Queryable<SysStorageLocat>().First(a => a.IsDel == "0" && a.WareHouseNo == "W03" && a.LocatNo == task.EndLocat); + if (endlocat == null) + { + throw new Exception("鏈煡璇㈠埌鐩爣鍌ㄤ綅淇℃伅"); + } + } if (locat == null) { Db.RollbackTran(); @@ -1983,11 +2334,16 @@ } locat.Status = "1"; //鏈夌墿鍝� Db.Updateable(locat).ExecuteCommand(); + if (endlocat != null) + { + endlocat.Status = "0"; //绌哄偍浣� 0 + Db.Updateable(endlocat).ExecuteCommand(); + } 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) { @@ -2013,7 +2369,7 @@ //淇敼搴撳瓨鏄庣粏 stockDetail.LockQty -= stockDetail.Qty; //閿佸畾鏁伴噺 stockDetail.Status = "0"; //搴撳瓨鐘舵�� 0锛氬緟鍒嗛厤 - + //淇敼搴撳瓨鎬昏〃 datastock.LockQty -= (int)stockDetail.Qty; //閿佸畾鏁伴噺 @@ -2031,13 +2387,13 @@ Db.Updateable(locate).ExecuteCommand(); } - + } else { Db.Updateable(allot).ExecuteCommand(); } - + //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鏃ュ織", taskNo, "鍙栨秷", $"鐐瑰嚮鍙栨秷鎸夐挳銆佸彇娑堜簡浠诲姟鍙蜂负锛歿taskNo}鐨勪换鍔�", (int)userId); Db.CommitTran(); @@ -2064,7 +2420,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("姝や换鍔′笉瀛樺湪鎴栦换鍔$姸鎬佸凡鍙樻洿!"); @@ -2171,7 +2527,7 @@ } if (notice.Status != "0" && notice.Status != "1") { - throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰嶆垨鏉ユ簮鏄惁鏄疻MS"); + throw new Exception("鍙傛暟寮傚父,璇锋鏌ョ姸鎬佹槸鍚︿负绛夊緟鎵ц鎴栭儴鍒嗗垎閰�;"); } //鍑哄簱鍗曟槑缁� var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == soNo && (m.AllotQty - m.Qty) <= 0).ToList(); @@ -2206,32 +2562,50 @@ //鍒ゆ柇鍗曞彿鏄惁鎸囧畾鎵规 if (!string.IsNullOrWhiteSpace(detail.LotNo)) { - stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList(); + if (detail.LotNo.Contains(";")) + { + var lotNoList = detail.LotNo.Split(";"); + var lotNoList2 = new List<string>(); + + foreach (var lotNoItem in lotNoList) + { + lotNoList2.Add(lotNoItem); + } + stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && lotNoList2.Contains(m.LotNo) && m.IsDel == "0").ToList(); + } + else + { + stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.LotNo == detail.LotNo && m.IsDel == "0").ToList(); + } + } else { - stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && string.IsNullOrWhiteSpace(m.LotNo) && m.IsDel == "0").ToList(); + stockDetail = stockDetail.Where(m => m.SkuNo == detail.SkuNo && m.IsDel == "0").ToList(); //&& string.IsNullOrWhiteSpace(m.LotNo) } if (stockDetail.Count < 1) { throw new Exception("搴撳瓨涓嶈冻,鏃犲彲鍑哄簱搴撳瓨"); } + //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�2:鎶芥鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�5:涓棿鍝佸嚭搴撱��6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆�8:瀵勫瓨鍑哄簱 + if (notice.Type == "0" || notice.Type == "1" )//鎴愬搧銆佸師杈呮枡鍑哄簱 + { + stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList(); + } + else if (notice.Type == "3" )//鍙栨牱鍑哄簱 + { + stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList(); + } + else if (notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8") + { + stockDetail = stockDetail.Where(m => m.InspectStatus == "0" || m.InspectStatus == "1").ToList(); + } + else if (notice.Type == "4")//涓嶅悎鏍煎嚭搴� + { + stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList(); + } - //if (notice.Type == "0" || notice.Type == "1")//鎴愬搧銆佸師杈呮枡鍑哄簱 - //{ - stockDetail = stockDetail.Where(m => m.InspectStatus == "1").ToList(); - //} - //else if (notice.Type == "2" || notice.Type == "3")//鎴愬搧銆佸師杈呮枡鍑哄簱(涓嶅悎鏍�) - //{ - // stockDetail = stockDetail.Where(m => m.InspectStatus == "2").ToList(); - //} - //else if (notice.Type == "4")//鍙栨牱鍑哄簱 - //{ - // stockDetail = stockDetail.Where(m => m.InspectStatus == "0").ToList(); - //} - //灏嗗簱瀛樻槑缁嗘寜娣卞害杩涜鎺掑簭 娣卞害1鍦ㄥ墠 娣卞害2鍦ㄥ悗 - //stockDetail = stockDetail.OrderBy(d => int.Parse(d.LocatNo.Substring(6, 2))).ToList(); #region 鍖呰淇℃伅 var pack = packList.FirstOrDefault(p => p.PackagNo == detail.PackagNo); @@ -2323,6 +2697,22 @@ } var sd = Db.Updateable(s).UpdateColumns(it => new { it.LockQty, it.Status }).ExecuteCommand(); + if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱�� + { + if (string.IsNullOrWhiteSpace(detail.LotNo)) + { + detail.LotNo = s.LotNo; + + } + else + { + if (!detail.LotNo.Contains(s.LotNo)) + { + detail.LotNo += ";" + s.LotNo; + } + } + } + } detail.AllotQty += qty; detail.UpdateUser = userId; @@ -2461,6 +2851,15 @@ d.Status = "0"; d.UpdateUser = userId; d.UpdateTime = DateTime.Now; + + if (notice.Type == "1" || notice.Type == "5" || notice.Type == "6" || notice.Type == "7" || notice.Type == "8")//1锛氶鏂欏嚭搴撱�� + { + if (d.IsIssueLotNo != "1") + { + d.LotNo = ""; + } + + } } notice.Status = "0"; notice.UpdateUser = userId; @@ -2542,7 +2941,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("鑾峰彇澶辫触锛屽嚭搴撳崟鐘舵�佷笉鍏佽!"); } @@ -2557,7 +2956,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 @@ -2573,6 +2972,7 @@ LocatNo = a.LocatNo, RoadwayNo = a.RoadwayNo, PalletNo = a.PalletNo, + Demo = a.Demo, }).ToList(); return list; @@ -2599,7 +2999,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("鎿嶄綔澶辫触锛屾湭鎵惧埌鎸囧畾鍑哄簱鍗曪紒"); @@ -2622,6 +3022,8 @@ //搴撳瓨鏄庣粏 var stockList = Db.Queryable<DataStockDetail>().Where(a => stockIds.Contains(a.Id)).ToList(); + //鍒嗛厤淇℃伅 + var allots = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SODetailNo == detail.Id && m.Status == "0").ToList(); //搴撳瓨鎬昏〃 //var stockz = Db.Queryable<DataStock>().First(d => d.IsDel == "0" && d.SkuNo == detail.SkuNo && d.LotNo == detail.LotNo); @@ -2635,37 +3037,48 @@ { throw new Exception("鎿嶄綔澶辫触锛岄儴鍒嗗偍浣嶅簱瀛樺紓甯革紒"); } - if (st.Qty > (stock.Qty-stock.LockQty-stock.FrozenQty -stock.InspectQty)) + if (st.Qty > (stock.Qty - stock.LockQty - stock.FrozenQty)) // 杈撳叆鐨勬暟閲� - 鎵樼洏涓婂彲鐢ㄧ殑鏁伴噺锛堟墭鐩樹笂鏁伴噺-閿佸畾鐨勬暟閲�-鍐荤粨鐨勬暟閲忥級 { throw new Exception("鎿嶄綔澶辫触锛屽嚭搴撴暟閲忚秴鍑哄簱瀛樻暟閲忥紒"); } - //娣诲姞鍒嗛厤琛ㄤ俊鎭� - var allot = new BllExportAllot - { - SONo = notice.SONo, - WaveNo = "", - SODetailNo = detail.Id, - StockId = st.StockId, - LotNo = stock.LotNo, - LotText = stock.LotText, - SupplierLot = stock.SupplierLot, - SkuNo = stock.SkuNo, - SkuName = stock.SkuName, - Standard = stock.Standard, - PalletNo = stock.PalletNo, - IsBale = stock.IsBale, - IsBelt = stock.IsBelt, - Qty = st.Qty, - CompleteQty = 0, - Status = "0", - LogisticsId = notice.LogisticsId, - IsAdvance = "0", - OutMode = "",//鍑哄簱鍙� - CreateUser = userId, - CreateTime = DateTime.Now - }; - allotList.Add(allot); + var bl = allots.FirstOrDefault(m => m.StockId == st.StockId); + if (bl == null) + { + //娣诲姞鍒嗛厤琛ㄤ俊鎭� + var allot = new BllExportAllot + { + SONo = notice.SONo, + WaveNo = "", + SODetailNo = detail.Id, + StockId = st.StockId, + LotNo = stock.LotNo, + LotText = stock.LotText, + SupplierLot = stock.SupplierLot, + SkuNo = stock.SkuNo, + SkuName = stock.SkuName, + Standard = stock.Standard, + PalletNo = stock.PalletNo, + IsBale = stock.IsBale, + IsBelt = stock.IsBelt, + Qty = st.Qty, + CompleteQty = 0, + Status = "0", + LogisticsId = notice.LogisticsId, + IsAdvance = "0", + OutMode = "",//鍑哄簱鍙� + + CreateUser = userId, + CreateTime = DateTime.Now + }; + allotList.Add(allot); + } + else + { + bl.Qty += st.Qty; + Db.Updateable(bl).ExecuteCommand(); + } + //搴撳瓨鏄庣粏 stock.LockQty += st.Qty; stock.Status = stock.LockQty == stock.Qty ? "2" : "1"; @@ -2706,7 +3119,7 @@ { notice.Status = "2";//璇佹槑鍒嗛厤鏁伴噺澶т簬绛変簬鍑哄簱鏁伴噺 淇敼涓哄凡鍒嗛厤 } - else if (totalAllotQty< totalQty && totalAllotQty>0) + else if (totalAllotQty < totalQty && totalAllotQty > 0) { notice.Status = "1";//璇佹槑鍒嗛厤鏁伴噺灏忎簬绛変簬鍑哄簱鏁伴噺 淇敼涓洪儴鍒嗗垎閰� } @@ -2749,7 +3162,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) @@ -2772,6 +3185,12 @@ break; } } + var boxInfo = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == item.PalletNo && w.BitBoxMark == "1").ToList(); + if (boxInfo != null)//鎵樼洏涓婃湁闆剁闇�瑕佹媶绠� + { + result = "1";//闇�瑕佹媶绠� + break; + } } return result; } @@ -2780,5 +3199,74 @@ 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.AreaNo}') 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