From f4bb9bfee217eb0004ad121a6ad92065fc2acb4f Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期四, 18 九月 2025 14:24:23 +0800 Subject: [PATCH] 修改PDA拣货出库功能,合并箱码盒码支码输入框 --- Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs | 1126 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 747 insertions(+), 379 deletions(-) diff --git a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs index 4ef8b56..139e9d3 100644 --- a/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs +++ b/Wms/WMS.BLL/BllSoServer/ExportNoticeServer.cs @@ -30,6 +30,7 @@ using System.Drawing.Drawing2D; using Model.ModelDto.LogDto; using AutoMapper.Internal; +using System.Diagnostics.Contracts; namespace WMS.BLL.BllSoServer { @@ -305,26 +306,26 @@ /// </summary> /// <param name="model"></param> /// <returns></returns> - public SoResInfo ErpAddExportNotice(SoInfo model) + public SoResInfo ErpAddExportNotice(SendSoVm model) { try { - if (string.IsNullOrEmpty(model.SoType)) + if (string.IsNullOrEmpty(model.orderType)) { throw new Exception("鍗曟嵁绫诲瀷涓嶅彲涓虹┖!"); } - if (string.IsNullOrEmpty(model.OrderCode)) + if (string.IsNullOrEmpty(model.orderNo)) { - throw new Exception("绯荤粺鍗曞彿涓嶅彲涓虹┖!"); + throw new Exception("鍑哄簱鍗曞彿涓嶅彲涓虹┖!"); } - if (model.SoDetails.Count <= 0) + if (model.orderDetailList.Count <= 0) { throw new Exception("鍑哄簱鍗曟槑缁嗕笉鍙负绌�!"); } //杩斿洖淇℃伅 SoResInfo result = new SoResInfo(); - var skuNos = model.SoDetails.Select(a => a.SkuNo).Distinct().ToList(); + var skuNos = model.orderDetailList.Select(a => a.skuNo).Distinct().ToList(); //鏍规嵁鐗╂枡鍙疯幏鍙栫墿鏂欎俊鎭� var skuList = Db.Queryable<SysMaterials>().Where(a => skuNos.Contains(a.SkuNo) && a.IsDel == "0").ToList(); //鑾峰彇搴撳瓨鏄庣粏 @@ -333,23 +334,24 @@ var stockList = Db.Queryable<DataStock>().Where(s => skuNos.Contains(s.SkuNo) && (s.Qty - s.FrozenQty - s.LockQty) > 0).ToList(); string CustomerName = string.Empty; - if (!string.IsNullOrEmpty(model.Customer)) + if (!string.IsNullOrEmpty(model.customerNo)) { //瀹㈡埛淇℃伅 - var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.Customer); - if (customer == null) + var customer = Db.Queryable<SysCustomer>().First(m => m.IsDel == "0" && m.CustomerNo == model.customerNo); + if (customer != null) { - throw new Exception("瀹㈡埛淇℃伅涓嶅瓨鍦�!"); + //throw new Exception("瀹㈡埛淇℃伅涓嶅瓨鍦�!"); + CustomerName = customer.CustomerName; } - CustomerName = customer.CustomerName; - } - //鎵胯繍鍟嗕俊鎭� - var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo); - int? logisticsId = null; - if (logistics != null) - { - logisticsId = logistics.Id; } + + //鎵胯繍鍟嗕俊鎭� + //var logistics = Db.Queryable<SysLogisticsInfo>().First(m => m.IsDel == "0" && m.CarrierName == model.LogisticsNo); + //int? logisticsId = null; + //if (logistics != null) + //{ + // logisticsId = logistics.Id; + //} var billNo = ""; var bl = true; do @@ -366,52 +368,64 @@ try { var list = new List<BllExportNoticeDetail>(); + var houseNo = string.Empty; //娣诲姞鍑哄簱鍗� - foreach (var d in model.SoDetails) + foreach (var d in model.orderDetailList) { - if (d.Qty < 1) + if (!string.IsNullOrEmpty(houseNo)) + { + if (houseNo != d.wareHouseNo) + { + throw new Exception("鍚屼釜鍑哄簱鍗曚笅鏄庣粏鍒楄〃鍙戝嚭浠撳簱涓嶄竴鑷�!"); + } + } + else + { + houseNo = d.wareHouseNo; + } + if (d.skuQty < 1) { throw new Exception("鍑哄簱鏁伴噺蹇呴』澶т簬0"); } - var sku = skuList.FirstOrDefault(a => a.SkuNo == d.SkuNo); + var sku = skuList.FirstOrDefault(a => a.SkuNo == d.skuNo); if (sku == null) { - throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}"); + throw new Exception($"鐗╂枡淇℃伅涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}"); } //0:鎴愬搧鍑哄簱銆�1:棰嗘枡鍑哄簱銆�3锛氱墿鏂欏彇鏍峰嚭搴撱��4:涓嶅悎鏍煎搧鍑哄簱銆�6:浠e偍鍑哄簱銆�7:鍏朵粬鍑哄簱銆� ///2:鎶芥鍑哄簱銆�5:涓棿鍝佸嚭搴撱��8:瀵勫瓨鍑哄簱 - if (model.SoType == "0" || model.SoType == "3" || model.SoType == "4" || model.SoType == "7") + if (model.orderType == "0" || model.orderType == "3" || model.orderType == "4" || model.orderType == "7") { - if (string.IsNullOrWhiteSpace(d.LotNo)) + if (string.IsNullOrWhiteSpace(d.lotNo)) { throw new Exception("鎵规涓嶅彲涓虹┖!"); } - } + } //搴撳瓨鏄庣粏 List<DataStockDetail> stockDetails; //鎸囧畾鎵规 - if (!string.IsNullOrWhiteSpace(d.LotNo)) + if (!string.IsNullOrWhiteSpace(d.lotNo)) { - stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && s.LotNo == d.LotNo).ToList(); + stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && s.LotNo == d.lotNo).ToList(); if (stockDetails.Count < 1) { - throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.SkuNo}"); + throw new Exception($"搴撳瓨涓湭鏌ヨ鍒板嚭搴撶墿鏂欎俊鎭�:{d.skuNo}"); } //鍒ゆ柇鏁伴噺 var qty = stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty); - if (d.Qty > qty) + if (d.skuQty > qty) { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻"); } //搴撳瓨淇℃伅 - var stockInfo = stockList.First(w => w.SkuNo == d.SkuNo && w.LotNo == d.LotNo); + var stockInfo = stockList.First(w => w.SkuNo == d.skuNo && w.LotNo == d.lotNo); if (stockInfo == null) { - throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}"); + throw new Exception($"鎬诲簱瀛樹腑鏈煡璇㈠埌鍑哄簱鐗╂枡淇℃伅:{d.skuNo}"); } //鍒ゆ柇鎬诲簱瀛樻暟閲� - if (d.Qty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty) + if (d.skuQty > stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty) { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo}銆亄d.LotNo} 搴撳瓨鏁伴噺涓嶈冻"); + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo}銆亄d.lotNo} 搴撳瓨鏁伴噺涓嶈冻"); } //娣诲姞鍑哄簱鍗曟槑缁� var noticeDetail = new BllExportNoticeDetail() @@ -420,36 +434,36 @@ SkuNo = sku.SkuNo, SkuName = sku.SkuName, Standard = sku.Standard, - LotNo = d.LotNo, + LotNo = d.lotNo, LotText = stockInfo.LotText, - Qty = d.Qty, + Qty = d.skuQty, AllotQty = 0, FactQty = 0, 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.skuQty, IsBale = "", IsBelt = "", SupplierLot = stockInfo.SupplierLot, IsWave = "0", WaveNo = "", - IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1", - IsMixBox = d.IsMixBox, + IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1", + IsMixBox = "0", - OrderDetailCode = d.OrderDetailCode, + OrderDetailCode = d.lineNo, CreateUser = 0, }; list.Add(noticeDetail); //鏇存柊搴撳瓨閿佸畾鏁伴噺 - stockInfo.LockQty += d.Qty; + stockInfo.LockQty += d.skuQty; var i = Db.Updateable(stockInfo).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); SoDetailInfo soDetail = new SoDetailInfo(); - soDetail.OrderDetailCode = d.OrderDetailCode; - soDetail.LockQty = d.Qty; - soDetail.LotNo = d.LotNo; + soDetail.OrderDetailCode = d.lineNo; + soDetail.LockQty = d.skuQty; + soDetail.LotNo = d.lotNo; soDetailList.Add(soDetail); } @@ -458,12 +472,12 @@ Dictionary<int, decimal> dic = new Dictionary<int, decimal>(); decimal q1 = 0; //棣栧厛鏌ヨ褰撳墠杩欑鐗╂枡鎵规鍙蜂负绌虹殑 - stockDetails = stockDetailList.Where(s => s.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); + stockDetails = stockDetailList.Where(s => s.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(s.LotNo)).ToList(); if (stockDetails.Count > 0) { q1 = (decimal)stockDetails.Sum(s => s.Qty - s.FrozenQty - s.LockQty); //搴撳瓨淇℃伅 - var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && string.IsNullOrWhiteSpace(w.LotNo)); + var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && string.IsNullOrWhiteSpace(w.LotNo)); if (stockInfo != null) { var q2 = stockInfo.Qty - stockInfo.FrozenQty - stockInfo.LockQty; @@ -471,29 +485,29 @@ { q1 = q2; } - if (d.Qty > q1) + if (d.skuQty > q1) { dic.Add(stockInfo.Id, q1); } else { - dic.Add(stockInfo.Id, d.Qty); + dic.Add(stockInfo.Id, d.skuQty); } } } //濡傛灉鎵规鍙蜂负绌虹殑鏁伴噺涓嶅锛屾牴鎹壒娆″厛杩涘厛鍑哄師鍒欐煡鎵惧叾瀹冩壒娆$殑 - if (d.Qty > q1) + if (d.skuQty > q1) { - stockDetails = stockDetailList.Where(m => m.SkuNo == d.SkuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); + stockDetails = stockDetailList.Where(m => m.SkuNo == d.skuNo && !string.IsNullOrWhiteSpace(m.LotNo)).OrderBy(s => s.LotNo).ToList(); foreach (var demo in stockDetails) { - if (q1 >= d.Qty) + if (q1 >= d.skuQty) { break; } var q2 = demo.Qty - demo.FrozenQty - demo.LockQty; //搴撳瓨淇℃伅 - var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.SkuNo && w.LotNo == demo.LotNo); + var stockInfo = stockList.FirstOrDefault(w => w.SkuNo == d.skuNo && w.LotNo == demo.LotNo); if (stockInfo == null) { continue; @@ -508,21 +522,21 @@ { q2 = q3; } - if (q2 > d.Qty - q1) - { + if (q2 > d.skuQty - q1) + { if (!dic.ContainsKey(stockInfo.Id)) { - dic.Add(stockInfo.Id, d.Qty - q1); + dic.Add(stockInfo.Id, d.skuQty - q1); } else { //鏇存柊鍊� - dic[stockInfo.Id] += d.Qty - q1; + dic[stockInfo.Id] += d.skuQty - q1; } - q1 += d.Qty - q1; + q1 += d.skuQty - q1; } else - { + { if (!dic.ContainsKey(stockInfo.Id)) { dic.Add(stockInfo.Id, (decimal)q2); @@ -536,9 +550,9 @@ } } } - if (d.Qty > q1) + if (d.skuQty > q1) { - throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.SkuNo} 搴撳瓨鏁伴噺涓嶈冻"); + throw new Exception($"鎬诲簱瀛樹腑鍑哄簱鐗╂枡淇℃伅:{d.skuNo} 搴撳瓨鏁伴噺涓嶈冻"); } foreach (var s in dic) { @@ -546,7 +560,7 @@ var item = new BllExportNoticeDetail() { SONo = billNo, - OrderDetailCode = d.OrderDetailCode, + OrderDetailCode = d.lineNo, SkuNo = sku.SkuNo, SkuName = sku.SkuName, Standard = sku.Standard, @@ -558,14 +572,14 @@ 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.skuQty, IsBale = "", IsBelt = "", SupplierLot = st.SupplierLot, IsWave = "0", WaveNo = "", - IsIssueLotNo = string.IsNullOrWhiteSpace(d.LotNo) ? "0" : "1", - IsMixBox = d.IsMixBox, + IsIssueLotNo = string.IsNullOrWhiteSpace(d.lotNo) ? "0" : "1", + IsMixBox = "0", CreateUser = 0, }; @@ -575,7 +589,7 @@ var i = Db.Updateable(st).UpdateColumns(it => new { it.LockQty }).ExecuteCommand(); SoDetailInfo soDetail = new SoDetailInfo(); - soDetail.OrderDetailCode = d.OrderDetailCode; + soDetail.OrderDetailCode = d.lineNo; soDetail.LockQty = s.Value; soDetail.LotNo = st.LotNo; @@ -586,19 +600,38 @@ var notice = new BllExportNotice() { SONo = billNo, - OrderCode=model.OrderCode, - Type = model.SoType, + OrderCode = model.orderNo, + Type = model.orderType, Status = "0", - Origin = "WMS", - CustomerNo = model.Customer, + Origin = "SAP", + CustomerNo = model.customerNo, CustomerName = CustomerName, - LogisticsId = logisticsId, + LogisticsId = null,//logisticsId, IsWave = "0", WaveNo = "", IsDespatch = "0", CreateUser = 0, }; + if (houseNo == "1000" || houseNo == "1001" || houseNo == "2000" || houseNo == "2002" || houseNo == "2003" || houseNo == "2004") + { + notice.WareHouseNo = "W02"; + } + else if (houseNo == "4000") + { + notice.WareHouseNo = "W01"; + } + else + { + // houseNo鎶涘紓甯革紝閬垮厤鍑虹幇闈濿01锛學02鐨勫�� + throw new Exception($"涓嶆敮鎸佺殑鍙戝嚭浠撳簱缂栧彿锛歿houseNo}锛屼粎鏀寔鐢熸垚W01鍜學02浠撳簱鐨勫崟鎹�"); + } + //棰濆鏍¢獙锛堝彲閫夛紝鍙岄噸淇濋殰锛� + if (notice.WareHouseNo != "W01" && notice.WareHouseNo != "W02") + { + throw new Exception($"浠撳簱缂栧彿寮傚父锛歿notice.WareHouseNo}锛屼粎鍏佽W01鍜學02"); + } + var n = Db.Insertable<BllExportNotice>(notice).ExecuteCommand(); var m = Db.Insertable<BllExportNoticeDetail>(list).ExecuteCommand(); @@ -630,7 +663,7 @@ } //鍥炰紶鍑哄簱鍗� - public bool FinishSo(int id, string url, int userId) + public bool FinishSo(int id, string url, string url2, int userId) { try { @@ -652,34 +685,83 @@ { throw new Exception("澶嶆牳澶辫触锛屽鏍镐汉鍛樺拰鍏抽棴璁㈠崟浜哄憳涓嶈兘鐩稿悓锛�"); } - var list = new List<SoDetail>(); - foreach (var d in detail) + if (notice.Type == "2")//鎶芥鍑哄簱 { - var item = new SoDetail() + var list = new List<SendSampleSku>(); + foreach (var d in detail) { - SkuNo = d.SkuNo, - LotNo = d.LotNo, - Qty = (decimal)d.CompleteQty - }; - list.Add(item); - } - var soInfo = new SoInfo() - { - OrderCode = notice.OrderCode, - SoDetails = list - }; - #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp - //绯荤粺瀵规帴鍚庢斁寮� - /*var jsonData = JsonConvert.SerializeObject(soInfo); + var item = new SendSampleSku() + { + skuNo = d.SkuNo, + skuName = d.SkuName, + lotNo = d.LotNo, + skuQty = Convert.ToDecimal(d.CompleteQty) + }; + list.Add(item); + } + SendSampleVm sendSampleVm = new SendSampleVm(); + sendSampleVm.pallDataList = list; - var response = HttpHelper.DoPost(url, jsonData, "鍑哄簱鍗曞畬鎴愪笂浼�", "ERP"); - - var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 - if (obj.Success != 0) + SapSampleVm sapSampleVm = new SapSampleVm(); + sapSampleVm.data = sendSampleVm; + + #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp + //绯荤粺瀵规帴鍚庢斁寮� + /*var jsonData = JsonConvert.SerializeObject(sapSampleVm); + + var response = HttpHelper.DoPost(url2, jsonData, "鎶芥鍑哄簱瀹屾垚涓婁紶", "ERP"); + + var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.Success != 0) + { + throw new Exception("涓婁紶澶辫触" + obj.Message); + }*/ + #endregion + } + else { - throw new Exception("涓婁紶澶辫触" + obj.Message); - }*/ - #endregion + var list = new List<BackSoDetail>(); + foreach (var d in detail) + { + var mater = Db.Queryable<SysMaterials>().First(w => w.IsDel == "0" && w.SkuNo == d.SkuNo); + if (mater == null) + { + throw new Exception($"澶嶆牳澶辫触锛岀墿鏂欑紪鐮�:{d.SkuNo}鐨勭墿鏂欎俊鎭笉瀛樺湪"); + } + var item = new BackSoDetail() + { + POSNR = d.OrderDetailCode, + MATNR = d.SkuNo, + CHARG = d.LotNo, + LFIMG = d.CompleteQty.ToString(), + MEINS = mater.UnitNo, + HSDAT = "", + VFDAT = "" + }; + list.Add(item); + } + var soInfo = new BackSoVm() + { + ZUUID = Guid.NewGuid().ToString(), + VBELN = notice.OrderCode, + WERKS = notice.CustomerNo, + LFART = notice.Type, + WADAT_IST = Convert.ToDateTime(notice.CompleteTime).ToString("yyyy-MM-dd"), + ITEM = list + }; + #region 閫氳繃鎺ュ彛鍙戦�佽嚦erp + //绯荤粺瀵规帴鍚庢斁寮� + var jsonData = JsonConvert.SerializeObject(soInfo); + + var response = HttpHelper.DoPost(url, jsonData, "鍑哄簱鍗曞畬鎴愪笂浼�", "ERP"); + + var obj = JsonConvert.DeserializeObject<ErpModel>(response);//瑙f瀽杩斿洖鏁版嵁 + if (obj.Success != 0) + { + throw new Exception("涓婁紶澶辫触" + obj.Message); + } + #endregion + } notice.Status = "6"; notice.CheckTime = DateTime.Now; @@ -694,14 +776,14 @@ throw new Exception(e.Message); } } - + //鐢熶骇鍙枡 public bool MESProductionCall(ProductionCallVm model) { try { //楠岃瘉鏄惁澶囨枡瀹屾垚 - var notice = Db.Queryable<BllExportNotice>().First(m=>m.IsDel == "0" && m.OrderCode == model.OrderCode); + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.OrderCode == model.OrderCode); if (notice == null) { throw new Exception("鏈煡璇㈠埌姝ゅ伐鍗曞彿"); @@ -722,7 +804,7 @@ throw new Exception("褰撳墠鍗曟嵁鐗╂枡鍦ㄦ鎶曟枡鍙e彨鏂欎俊鎭凡鏀跺埌锛屾棤闇�閲嶅涓嬪彂"); } //鍒ゆ柇褰撳墠鎶曟枡鍙f槸鍚︽湁鍏跺畠宸ュ崟鎶曟枡 - var call2 = Db.Queryable<BllProductionCallTask>().First(m => m.IsDel == "0" && m.PutInLocation == model.PutInLocation && m.OrderCode != model.OrderCode ); + var call2 = Db.Queryable<BllProductionCallTask>().First(m => m.IsDel == "0" && m.PutInLocation == model.PutInLocation && m.OrderCode != model.OrderCode); if (call2 != null) { throw new Exception("姝ゆ姇鏂欏彛鏈夊叾瀹冨崟鎹墿鏂欏彨鏂欎俊鎭�"); @@ -753,7 +835,7 @@ foreach (var pro in proCallList) { foreach (var item in locateList) - { + { //鑾峰彇澶囧ソ鏂欑殑鎵樼洏淇℃伅 var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "2" && m.SONo == notice.SONo && m.SkuNo == pro.SkuNo && !list.Contains(m.Id)).Select(m => m.PalletNo).ToList(); @@ -781,7 +863,7 @@ }; Db.Insertable(exTask).ExecuteCommand(); //鏇存敼鍒嗛厤琛ㄧ殑浠诲姟鍙峰垪 - var allot = Db.Queryable<BllExportAllot>().First(m=>m.IsDel == "0" && m.Status =="2" && m.SONo == notice.SONo && m.StockId == stockDetail.Id); + var allot = Db.Queryable<BllExportAllot>().First(m => m.IsDel == "0" && m.Status == "2" && m.SONo == notice.SONo && m.StockId == stockDetail.Id); allot.TaskNo = taskNo; Db.Updateable(allot).ExecuteCommand(); list.Add(allot.Id); @@ -790,14 +872,14 @@ item.PalletNo = stockDetail.PalletNo; Db.Updateable(item).ExecuteCommand(); - var locate = Db.Queryable<SysStorageLocat>().First(m=>m.LocatNo == stockDetail.LocatNo); + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == stockDetail.LocatNo); locate.Status = "5"; Db.Updateable(locate).ExecuteCommand(); break; } } - + Db.CommitTran(); } @@ -806,7 +888,7 @@ Db.RollbackTran(); throw new Exception(e.Message); } - + return true; } catch (Exception e) @@ -846,8 +928,8 @@ .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) - .LeftJoin<SysWareHouse>((a, b, c, d, e,f) => a.WareHouseNo == f.WareHouseNo) - .Select((a, b, c, d, e,f) => new ExportNoticeDto() + .LeftJoin<SysWareHouse>((a, b, c, d, e, f) => a.WareHouseNo == f.WareHouseNo) + .Select((a, b, c, d, e, f) => new ExportNoticeDto() { Id = a.Id, SONo = a.SONo, @@ -906,7 +988,7 @@ switch (type)//0锛氬師鏂� 1锛氬寘鏉� 2锛氭垚鍝� 3锛氳�楁潗 4锛氬崐鎴愬搧 { case "0"://鎴愬搧鍑哄簱 - if (house !="W01") + if (house != "W01") { throw new Exception("鎴愬搧鍑哄簱鍙兘閫夋嫨鎴愬搧搴�"); } @@ -1014,7 +1096,7 @@ skuList = skuList.Where(m => m.SkuNo == "100088").ToList(); } skuStrList = skuList.Select(m => m.SkuNo).ToList(); - var areaStr = new List<string>() { "B02", "B05", "B08" }; + var areaStr = new List<string>() { "B06", "B07", "B09" }; var stockRst = new StockServer(); var stockDetailRst = new StockDetailServer(); Expression<Func<DataStockDetail, bool>> item = Expressionable.Create<DataStockDetail>() @@ -1105,7 +1187,7 @@ switch (model.WareHouseNo) { case "W01"://鎴愬搧搴� - if (skuList.Any(m=>m.Type !="2")) + if (skuList.Any(m => m.Type != "2")) { throw new Exception("浠撳簱涓庡嚭搴撶墿鏂欎笉绗�"); } @@ -1874,10 +1956,10 @@ // } //} - if (d.Qty != d.CompleteQty) - { - throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄"); - } + //if (d.Qty != d.CompleteQty) + //{ + // throw new Exception("褰撳墠鍗曟嵁鏄庣粏涓鍒掓暟閲忎笌鎷h揣鏁伴噺涓嶇锛岃鏍稿疄"); + //} #region 搴撳瓨琛ㄥ噺鍘婚攣瀹氭暟閲忎笌鎬绘暟閲�(PDA鎷h揣鐨勬椂鍊欏凡缁忓噺鍘绘暟閲忎簡) /*var sq = stocks.Where(s => s.SkuNo == d.SkuNo); if (!string.IsNullOrWhiteSpace(d.LotNo)) @@ -1998,7 +2080,7 @@ .AndIF(!string.IsNullOrWhiteSpace(model.BitPalletMark), m => m.BitPalletMark == model.BitPalletMark) .And(m => !string.IsNullOrWhiteSpace(m.WareHouseNo)) .And(a => a.Status == "0") - .And(a => a.WareHouseNo == "W01") + .And(a => a.WareHouseNo == "W01" || a.WareHouseNo == "W02") .ToExpression(); var data = await Db.Queryable<DataStockDetail>().Where(item).OrderBy(m => m.LocatNo).ToPageListAsync(model.Page, model.Limit, count); //data.Select(m => m.Status == "0" && m.IsDel == "0"); @@ -2038,6 +2120,12 @@ if (detailGroup.Count > 1) { throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); + } + + var locatStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == outMode && w.Status == "0"); + if (locatStart == null) + { + throw new Exception($"鐩爣鍌ㄤ綅涓嶅瓨鍦ㄦ垨闈炵┖闂诧紝璇锋鏌�"); } @@ -2151,14 +2239,16 @@ outDtoList.Add(new OutCommandDto() { + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) + PalletNo = palletNo,//鎵樼洏鍙� StartLocate = locate.LocatNo, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo, EndLocate = outMode, // 鐩爣浣嶇疆 - TaskNo = exTask.TaskNo, // 浠诲姟鍙� - TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱) - OutMode = outMode, //鐩爣鍦板潃 - Order = 1 + + Order = 999, + Type = PLCTypeEnum.AGV }); #endregion @@ -2179,6 +2269,8 @@ Db.Updateable(locate).ExecuteCommand(); + locatStart.Status = "2";//瑕佸叆搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍏ュ簱 + Db.Updateable(locate).ExecuteCommand(); #endregion //娣诲姞鎿嶄綔鏃ュ織璁板綍 @@ -2222,6 +2314,264 @@ } return outDtoList; + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + + + #endregion + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + /// <summary> + /// 鎵樼洏鍑哄簱锛堝瘑闆嗗簱锛� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="outMode"></param> + /// <param name="userId"></param> + /// <param name="url"></param> + /// <param name="str"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public List<OutCommandDto> IssuePalletNoOutMk(string palletNo, string outMode, int userId, string url, out string str) + { + try + { + //鍒ゆ柇鎵樼洏鍙锋槸鍚︿负绌� + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception($"鎵樼洏鍙蜂笉鑳戒负绌猴紝璇锋牳瀹�"); + } + + str = ""; + var stockDetailList = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0").ToList(); + + if (stockDetailList.Count == 0) + { + throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); + } + var stocka = Db.Queryable<DataStock>().First(a => a.IsDel == "0" && a.SkuNo == stockDetailList[0].SkuNo); + + + //楠岃瘉搴撳瓨鎵樼洏鐘舵�� + if (stockDetailList[0].Status != "0") + { + throw new Exception($"褰撳墠鎵樼洏鏈浜庡緟鍒嗛厤鐘舵�侊紝璇锋牳瀹烇紒"); + } + //鍒ゆ柇鎵樼洏搴撳瓨淇℃伅鍒嗙粍鍚庢槸鍚﹀ぇ浜�1鏉� + var detailGroup = stockDetailList.GroupBy(m => new { m.SkuNo, m.PalletNo, m.WareHouseNo, m.LocatNo }).ToList(); + if (detailGroup.Count > 1) + { + throw new Exception($"鏈湪搴撳唴鏌ヨ鍒拌鎵樼洏淇℃伅"); + } + + var locatStart = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == stockDetailList[0].LocatNo && w.Status == "1"); + if (locatStart == null) + { + throw new Exception($"璧峰鍌ㄤ綅涓嶅瓨鍦ㄦ垨闈炵┖闂诧紝璇锋鏌�"); + } + #region 闆嗗悎 + + var outDto1 = new List<OutCommandDto>(); //鍏堝嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负1鐨勫偍浣嶏級 + var outDto2 = new List<OutCommandDto>(); //鍚庡嚭搴撴暟鎹殑闆嗗悎锛堟繁搴︿负2鐨勫偍浣嶏級 + var moveDto = new List<OutCommandDto>(); //瑕佺Щ搴撴暟鎹殑闆嗗悎 + + #endregion + var com = new Common(); + var allot = new AllotLocation(); + + #region 闆嗗悎 + + Db.BeginTran(); + try + { + List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� + + var taskNoStr = ""; + + // 鍌ㄤ綅鍙� + var locateNo = locatStart.LocatNo; + List<string> locateListStrs = new List<string>(); + locateListStrs.Add(locateNo); + + var row1 = int.Parse(locatStart.LocatNo.Substring(2, 2)); + var row2 = int.Parse(locatStart.AisleOne.Substring(2, 2)); + //闇�瑕佺Щ搴撶殑淇℃伅 + var NeedMoveInfo = IsNeedMoveLocate(locatStart, locateListStrs, out int isOut); + if (isOut == 1) + { + //宸烽亾缁勪腑鏈夊叆搴撴垨绉诲叆鐨勫偍浣嶏紝鎴栬�呮槸褰撳墠鍌ㄤ綅鍓嶆湁鍌ㄤ綅鏈笅鍙戞垚鍔熺殑浠诲姟 + throw new Exception($"宸烽亾缁勪腑鏈夊叆搴撴垨绉诲叆鐨勫偍浣嶏紝璇风◢鍚庡啀璇�"); + } + if (NeedMoveInfo.Count > 0)//闇�瑕佺Щ搴� + { + //鍒ゆ柇搴撳唴绌哄偍浣嶆槸鍚﹀ + var okRoad = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0" && m.WareHouseNo == locatStart.WareHouseNo).Select(m => m.RoadwayNo).ToList(); + var nullSlotNum = Db.Queryable<SysStorageLocat>().Count(m => m.RoadwayNo != locatStart.RoadwayNo && okRoad.Contains(m.RoadwayNo) && m.Status == "0"); + //鍒ゆ柇绌哄偍浣嶇殑鏁伴噺鏄惁澶т簬闇�瑕佺Щ搴撶殑鏁伴噺 + if (nullSlotNum >= NeedMoveInfo.Count) + { + foreach (var s in NeedMoveInfo) + { + //鍌ㄤ綅鍒� + var rows = int.Parse(s.Substring(2, 2)); + + //鑾峰彇绉诲簱鍌ㄤ綅 + var moveAddress = GetMiJiMoveAddress(s, locatStart.AisleOne); + var tary = Db.Queryable<DataStockDetail>().First(m => m.LocatNo == s); + if (string.IsNullOrWhiteSpace(moveAddress)) // 鍒ゆ柇鏄惁鑾峰彇鍒扮Щ搴撶殑搴撲綅 + { + throw new Exception($"鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗘湭鏌ヨ鍒扮┖鍌ㄤ綅"); + } + else + { + var ykTaskNo = new Common().GetMaxNo("TK"); + var ykTask = new LogTask //鍑哄簱浠诲姟 + { + TaskNo = ykTaskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = s,//璧峰浣嶇疆 + EndLocat = moveAddress,//outMode,//鐩爣浣嶇疆 + PalletNo = tary.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 = "浠�" + s + "鍒�" + moveAddress + "鐨勭Щ搴撲换鍔�", //鍏抽敭淇℃伅 + }; + Db.Insertable(ykTask).ExecuteCommand(); + logTaskList.Add(ykTask); + + outDto1.Add(new OutCommandDto() + { + PalletNo = ykTask.PalletNo,//鎵樼洏鍙� + StartLocate = ykTask.StartLocat, // 璧峰浣嶇疆 + StartRoadway = locatStart.RoadwayNo,//鍏跺疄宸烽亾 + EndLocate = moveAddress,//outMode, // 鐩爣浣嶇疆 + TaskNo = ykTaskNo, // 浠诲姟鍙� + TaskType = "2",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + Order = Math.Abs(row2 - rows), + Type = PLCTypeEnum.ShuttleCar + + }); + var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == s); + var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == moveAddress); + + slotChange.Status = "5"; //鏀瑰彉鐘舵�侊紙姝e湪鍑哄簱锛� + slotChange2.Status = "4"; // 鏀瑰彉鐘舵�侊紙姝e湪绉诲叆锛� + Db.Updateable(slotChange).ExecuteCommand(); + Db.Updateable(slotChange2).ExecuteCommand(); + } + } + } + else + { + throw new Exception($"鍑哄簱鍓嶆湁璐х墿锛岄渶绉诲簱浣嗙┖鍌ㄤ綅涓嶅绉诲簱"); + } + } + #region 娣诲姞鍑哄簱浠诲姟 + + var taskNo = new Common().GetMaxNo("TK"); + var exTask = new LogTask //鍑哄簱浠诲姟 + { + TaskNo = taskNo, + Sender = "WMS", + Receiver = "WCS", + IsSuccess = 0, //鏄惁涓嬪彂鎴愬姛 0澶辫触 1鎴愬姛 + + StartLocat = locatStart.LocatNo,//璧峰浣嶇疆 + EndLocat = outMode,//outMode,//鐩爣浣嶇疆 + PalletNo = 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 = "浠�" + locatStart.LocatNo + "鍒�" + outMode + "鐨勫嚭搴撲换鍔�", //鍏抽敭淇℃伅 + }; + Db.Insertable(exTask).ExecuteCommand(); + logTaskList.Add(exTask); + var endroad = allot.RoadwayToStationNum(locatStart.RoadwayNo, outMode); + outDto1.Add(new OutCommandDto() + { + PalletNo = palletNo,//鎵樼洏鍙� + StartLocate = locatStart.LocatNo, // 璧峰浣嶇疆 + StartRoadway = locatStart.RoadwayNo,//璧峰宸烽亾 + EndLocate = outMode,//, // 鐩爣浣嶇疆 + EndRoadway = endroad, + TaskNo = exTask.TaskNo, // 浠诲姟鍙� + TaskType = "1",// 浠诲姟绫诲瀷 (鍑哄簱)0鍏� 1鍑� 2绉� + OutMode = outMode, //鍑哄簱鍙� + Order = Math.Abs(row2 - row1), + Type = PLCTypeEnum.ShuttleCar + + }); + taskNoStr = exTask.TaskNo; + + #endregion + + #region 鏀瑰彉鏁版嵁 + + locatStart.Status = "3"; //瑕佸嚭搴撶殑鍌ㄤ綅鏀瑰彉鐘舵�� 姝e湪鍑哄簱 + Db.Updateable(locatStart).ExecuteCommand(); + + #endregion + + + outDto1.AddRange(moveDto); + outDto1.AddRange(outDto2); + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鎵樼洏鍑哄簱", palletNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鎵樼洏涓猴細{palletNo}", userId); + Db.CommitTran(); + + if (outDto1.Count > 0) + { + // 姝e紡杩愯绋嬪簭鏀惧紑 + 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") + + ////瑙f瀽杩斿洖鏁版嵁 + var wcsModel = JsonConvert.DeserializeObject<WcsModel2>(response); + if (wcsModel.code == 200) + { + //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str += "涓嬪彂鎴愬姛"; + } + else + { + new TaskServer().EditTaskIssueNo(list2, time1, time2, wcsModel.message); + throw new Exception(wcsModel.message); + } + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + + } + + return outDto1; } catch (Exception e) { @@ -2425,7 +2775,7 @@ Dictionary<int, decimal> stockQtyDic = new Dictionary<int, decimal>();//鎵樺嚭搴撶墿鍝佹暟 var qty = 0m; var house = ""; - + //鍒嗛厤璐х墿 qty += assign.AllotPallets(stockDetail, needQty, pNum, bNum, stockQtyDic, notice.WareHouseNo); foreach (var sc in stockQtyDic) @@ -2976,7 +3326,7 @@ { try { - var notcie = Db.Queryable<BllExportNotice>().First(m=>m.IsDel == "0" && m.SONo == soNo); + var notcie = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == soNo); if (notcie == null) { throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曚俊鎭�"); @@ -3034,7 +3384,7 @@ foreach (var item in list) { var outModeLocate = ""; - if (outMode == "1") + if (outMode == "17") { if (i < outLocatelist1.Count) { @@ -3043,11 +3393,11 @@ else { var j = i % outLocatelist1.Count; - + outModeLocate = outLocatelist1[j].LocatNo; } } - else if(outMode == "2") + else if (outMode == "18") { if (i < outLocatelist1.Count) { @@ -3060,9 +3410,13 @@ outModeLocate = outLocatelist2[j].LocatNo; } } - + else + { + throw new Exception("鍑哄簱鍙e伐浣嶅紓甯�"); + } + var taskNoStr = ""; - + // 鍌ㄤ綅鍙� var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; @@ -3105,7 +3459,7 @@ } flagList.Add(0); continue; - + } var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� @@ -3126,7 +3480,7 @@ if (locate.Status == "1") //鏈夌墿鍝� { #region 娣诲姞鍑哄簱浠诲姟 - + var taskNo = new Common().GetMaxNo("TK"); var exTask = new LogTask //鍑哄簱浠诲姟 { @@ -3158,13 +3512,13 @@ StartLocate = locate.LocatNo, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 EndLocate = outModeLocate, // 鐩爣浣嶇疆 - + Order = 999, - Type = PLCTypeEnum.AGV - + Type = PLCTypeEnum.AGV + }); taskNoStr = exTask.TaskNo; - + #endregion #region 鏀瑰彉鏁版嵁 @@ -3252,7 +3606,7 @@ flagList.Add(1); } } - + //娣诲姞鎿嶄綔鏃ュ織璁板綍 var k = new OperationSOServer().AddLogOperationSo("鍑哄簱浣滀笟", "鍑哄簱鍗曟嵁", soNo, "鍑哄簱", $"鐐瑰嚮鍑哄簱鎸夐挳鍑哄簱鍗曞彿涓猴細{soNo}鐨勫嚭搴撳崟", userId); Db.CommitTran(); @@ -3300,8 +3654,8 @@ //if (wcsModel.StatusCode == 0) //{ // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - str += "涓嬪彂鎴愬姛"; + new TaskServer().EditTaskIssueOk(list2, time1, time2); + str += "涓嬪彂鎴愬姛"; //} //if (wcsModel.StatusCode == -1) //{ @@ -3367,7 +3721,7 @@ //瑕佸嚭搴撶殑鏄庣粏闆嗗悎 var outStockDetail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && outLpnList.Contains(m.PalletNo)).ToList(); //鎵�鏈夎鍑哄簱鐨勫偍浣嶉泦鍚� - var locateListStrs = outStockDetail.Where(m=> !string.IsNullOrWhiteSpace(m.LocatNo)).Select(m => m.LocatNo).Distinct().ToList(); + var locateListStrs = outStockDetail.Where(m => !string.IsNullOrWhiteSpace(m.LocatNo)).Select(m => m.LocatNo).Distinct().ToList(); //鐗╂枡缂栫爜琛� var skuList = Db.Queryable<SysMaterials>().Where(w => w.IsDel == "0"); //鍖呰琛� @@ -3376,13 +3730,13 @@ try { List<LogTask> logTaskList = new List<LogTask>();//姝ゆ鍑哄簱浠诲姟闆嗗悎锛屼负搴斿鍚屾墭鐩樹笉鍚岀墿鏂欏嚭搴� - - + + //寰幆鍒嗛厤鐨勪俊鎭敓鎴愬嚭搴撲换鍔� foreach (var item in list) { var taskNoStr = ""; - + // 鍌ㄤ綅鍙� var locateNo = outStockDetail.First(m => m.PalletNo == item.PalletNo).LocatNo; @@ -3433,7 +3787,7 @@ } //鍒ゆ柇鍌ㄤ綅 - var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� + var locate = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == locateNo && m.IsDel == "0" && m.WareHouseNo == "W01");//褰撳墠鍑哄簱鐨勫偍浣嶄俊鎭� if (locate == null) { flagList.Add(2); @@ -3450,7 +3804,7 @@ if (locate.Status == "1") //鏈夌墿鍝� { - var row1 = int.Parse(locate.LocatNo.Substring(2,2)); + var row1 = int.Parse(locate.LocatNo.Substring(2, 2)); var row2 = int.Parse(locate.AisleOne.Substring(2, 2)); //闇�瑕佺Щ搴撶殑淇℃伅 var NeedMoveInfo = IsNeedMoveLocate(locate, locateListStrs, out int isOut); @@ -3472,7 +3826,7 @@ foreach (var s in NeedMoveInfo) { //鍌ㄤ綅鍒� - var rows = int.Parse(s.Substring(2,2)); + var rows = int.Parse(s.Substring(2, 2)); //鑾峰彇绉诲簱鍌ㄤ綅 var moveAddress = GetMiJiMoveAddress(s, locate.AisleOne); @@ -3521,8 +3875,8 @@ outDto1.Add(new OutCommandDto() { - PalletNo = item.PalletNo,//鎵樼洏鍙� - StartLocate = locate.LocatNo, // 璧峰浣嶇疆 + PalletNo = ykTask.PalletNo,//鎵樼洏鍙� + StartLocate = ykTask.StartLocat, // 璧峰浣嶇疆 StartRoadway = locate.RoadwayNo,//鍏跺疄宸烽亾 EndLocate = moveAddress,//outMode, // 鐩爣浣嶇疆 TaskNo = ykTaskNo, // 浠诲姟鍙� @@ -3530,7 +3884,7 @@ Order = Math.Abs(row2 - rows), Type = PLCTypeEnum.ShuttleCar - }); + }); var slotChange = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == s); var slotChange2 = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == moveAddress); @@ -3552,7 +3906,7 @@ } } #region 娣诲姞鍑哄簱浠诲姟 - + var taskNo = new Common().GetMaxNo("TK"); var exTask = new LogTask //鍑哄簱浠诲姟 { @@ -3590,7 +3944,7 @@ }); taskNoStr = exTask.TaskNo; - + #endregion #region 鏀瑰彉鏁版嵁 @@ -3764,26 +4118,26 @@ /// <param name="addressList">瑕佸嚭鍙g殑鍌ㄤ綅闆嗗悎</param> /// <param name="isOut">鏄惁鍑哄簱 1:鏈夋湭涓嬪彂鐨勪换鍔″湪鍓嶉潰</param> /// <returns>闇�瑕佺Щ搴撶殑闆嗗悎锛堝鏋滀负绌哄垯涓嶉渶绉诲簱锛�</returns> - private List<string> IsNeedMoveLocate(SysStorageLocat lcoate,List<string> locateStrList, out int isOut) + private List<string> IsNeedMoveLocate(SysStorageLocat lcoate, List<string> locateStrList, out int isOut) { var nowAddress = new List<string>(); //闇�瑕佺Щ搴撶殑闆嗗悎 - // 010101 娲惧垪灞� - //var bol = String.CompareOrdinal(lcoate.LocatNo, lcoate.AisleOne); - - var sArray = lcoate.LocatNo.Substring(4,2); + // 010101 娲惧垪灞� + //var bol = String.CompareOrdinal(lcoate.LocatNo, lcoate.AisleOne); + + var sArray = lcoate.LocatNo.Substring(2, 2); var row = int.Parse(sArray);//鍌ㄤ綅鍒� - var sArray2 = lcoate.AisleOne.Substring(4, 2); + var sArray2 = lcoate.AisleOne.Substring(2, 2); var row2 = int.Parse(sArray2); //閫氶亾鍙e垪 isOut = 0; - + var bol = row2 - row > 0; - + //鍚岀粍鐨勫偍浣嶉泦鍚� var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == lcoate.RoadwayNo).ToList(); List<string> list; - - + + if (bol) { //鍌ㄤ綅灏忎簬閫氶亾鍙� 鍊掑簭 @@ -3836,7 +4190,7 @@ { return nowAddress; } - + return nowAddress; } @@ -3859,7 +4213,7 @@ // 鑾峰彇绉诲簱鐩爣鍌ㄤ綅 // - var sArray = oldAddress.Substring(4,2); + var sArray = oldAddress.Substring(4, 2); var ceng = int.Parse(sArray); // var sArray2 = slotOut.Substring(2, 2); @@ -3890,206 +4244,220 @@ //鏍规嵁鍗佸瓧鍙e樊鍊兼渶灏忕殑鎺掑簭 shiKou3 = shiKou3.OrderBy(m => m.distNum).ToList(); - /** - //1 绉诲姩鍒版渶杩戠殑绌哄偍浣嶏紝蹇呴』鍥炵Щ銆� - //鏍规嵁鍥涘悜杞︾Щ鍔ㄨ建杩硅绠楀嚭鏈�杩戠┖鍌ㄤ綅銆� - //鍑哄簱瀹屾垚鍚庢牴鎹壒娆″彿 鐢熶骇鏃ユ湡 鍑哄彛璁$畻鍥炵Щ鍌ㄤ綅銆� + /** + //1 绉诲姩鍒版渶杩戠殑绌哄偍浣嶏紝蹇呴』鍥炵Щ銆� + //鏍规嵁鍥涘悜杞︾Щ鍔ㄨ建杩硅绠楀嚭鏈�杩戠┖鍌ㄤ綅銆� + //鍑哄簱瀹屾垚鍚庢牴鎹壒娆″彿 鐢熶骇鏃ユ湡 鍑哄彛璁$畻鍥炵Щ鍌ㄤ綅銆� - //2 绉诲姩閫傚悎瀛樻斁鐨勭粍锛岀郴缁熻嚜鍔ㄨ绠楁槸鍚﹀洖绉汇�� - //鏍规嵁鎵规鍙� 鐢熶骇鏃ユ湡 鍑哄彛 鐗╂枡绛夎绠楀嚭绉诲簱鐩爣鍌ㄤ綅 - //鍑哄簱瀹屾垚鍚庯紝鍒ゆ柇鏄惁鏈夋瘮褰撳墠搴撲綅鏇村悎閫傜殑瀛樺偍鍌ㄤ綅锛屾湁绉诲姩锛屾棤涓嶇Щ鍔ㄣ�� - */ + //2 绉诲姩閫傚悎瀛樻斁鐨勭粍锛岀郴缁熻嚜鍔ㄨ绠楁槸鍚﹀洖绉汇�� + //鏍规嵁鎵规鍙� 鐢熶骇鏃ユ湡 鍑哄彛 鐗╂枡绛夎绠楀嚭绉诲簱鐩爣鍌ㄤ綅 + //鍑哄簱瀹屾垚鍚庯紝鍒ゆ柇鏄惁鏈夋瘮褰撳墠搴撲綅鏇村悎閫傜殑瀛樺偍鍌ㄤ綅锛屾湁绉诲姩锛屾棤涓嶇Щ鍔ㄣ�� + */ - var oldSlot = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldAddress); - if (oldSlot == null) + var oldSlot = Db.Queryable<SysStorageLocat>().First(m => m.LocatNo == oldAddress); + if (oldSlot == null) + { + throw new Exception("鏈兘鎵惧埌鍌ㄤ綅淇℃伅"); + } + #region 1涓嶉渶瑕佸洖绉荤殑 + + //鍚庢湡搴撳瓨鎵樼洏琛ㄦ敼浜嗗悗闇�瑕佸姞绛涢�夋潯浠舵墭鐩樼殑鐘舵�侊紙閫�璐�/棰勬嫞锛� + var tray1 = Db.Queryable<DataStockDetail>().Where(m => m.LocatNo == oldAddress).ToList(); + //鏍规嵁鐗╂枡銆佹壒娆°�佹墭鐩樼姸鎬侊紙閫�璐�/棰勬嫞/鏆傚瓨绛夛級鍒嗙粍鍒ゆ柇 + var d = tray1.GroupBy(m => new { m.SkuNo, m.LotNo, m.PalletTags }); + var location = string.Empty; + if (d.Any()) + { + //鏃у偍浣嶅悓缁勭殑鍌ㄤ綅闆嗗悎 + var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == oldSlot.RoadwayNo).Select(m => m.LocatNo).ToList(); + foreach (var item in d) { - throw new Exception("鏈兘鎵惧埌鍌ㄤ綅淇℃伅"); - } - #region 1涓嶉渶瑕佸洖绉荤殑 - - //鍚庢湡搴撳瓨鎵樼洏琛ㄦ敼浜嗗悗闇�瑕佸姞绛涢�夋潯浠舵墭鐩樼殑鐘舵�侊紙閫�璐�/棰勬嫞锛� - var tray1 = Db.Queryable<DataStockDetail>().Where(m => m.LocatNo == oldAddress).ToList(); - //鏍规嵁鐗╂枡銆佹壒娆°�佹墭鐩樼姸鎬侊紙閫�璐�/棰勬嫞/鏆傚瓨绛夛級鍒嗙粍鍒ゆ柇 - var d = tray1.GroupBy(m => new { m.SkuNo, m.LotNo, m.PalletTags }); - var location = string.Empty; - if (d.Any()) - { - //鏃у偍浣嶅悓缁勭殑鍌ㄤ綅闆嗗悎 - var slotList = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == oldSlot.RoadwayNo).Select(m => m.LocatNo).ToList(); - foreach (var item in d) + foreach (var item2 in item) { - foreach (var item2 in item) + var okLan = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0" && m.WareHouseNo == item2.WareHouseNo).Select(m => m.RoadwayNo).ToList(); + //褰撳墠鎵樼洏鎵�鍦ㄦゼ灞� + if (oldSlot.Layer == 1) { - var okLan = Db.Queryable<SysStorageRoadway>().Where(m => m.Status == "0" && m.IsDel == "0").Select(m => m.RoadwayNo).ToList(); - var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo + okLan = okLan.Where(m => Convert.ToInt32(m.Replace("MR", "")) <= 56).ToList(); + } + else if (oldSlot.Layer == 2) + { + okLan = okLan.Where(m => Convert.ToInt32(m.Replace("MR", "")) > 56).ToList(); + } + else + { + throw new Exception("褰撳墠鎵樼洏鎵�鍦ㄦゼ灞傚紓甯�"); + } + + var tray2 = Db.Queryable<DataStockDetail>().Where(m => m.SkuNo == item2.SkuNo && m.LotNo == item2.LotNo && !slotList.Contains(m.LocatNo) && m.PalletTags == item2.PalletTags && okLan.Contains(m.RoadwayNo)).ToList(); - foreach (var s in tray2) + foreach (var s in tray2) + { + if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃 { - if (string.IsNullOrWhiteSpace(s.RoadwayNo))//鍒ゆ柇鏄惁鍦ㄥ簱澶栵紝濡傛槸璺宠繃 + continue; + } + var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList(); + //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑 + if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0) + { + continue; + } + if (lan.Count(m => m.Status == "0") > 0) + { + + var bol = GetBecomingLocation(s.RoadwayNo, ref location); + if (bol && !string.IsNullOrWhiteSpace(location)) { - continue; - } - var lan = Db.Queryable<SysStorageLocat>().Where(m => m.RoadwayNo == s.RoadwayNo).OrderBy(m => m.LocatNo).ToList(); - //鍒ゆ柇鏄惁鏈夊叆搴撲腑銆佸嚭搴撲腑銆佺Щ鍏ヤ腑銆佺Щ鍑轰腑 - if (lan.Count(m => m.Status == "2" || m.Status == "3" || m.Status == "4" || m.Status == "5") > 0) - { - continue; - } - if (lan.Count(m => m.Status == "0") > 0) - { - - var bol = GetBecomingLocation(s.RoadwayNo, ref location); - if (bol && !string.IsNullOrWhiteSpace(location)) - { - newAddress = location; - return newAddress; - - } + newAddress = location; + return newAddress; } + } } } - } - #endregion + } - #region 2闇�瑕佸洖绉荤殑 + #endregion - ////濡傛灉娌℃湁鎵惧埌鍚堥�傜殑鍌ㄤ綅 - //if (string.IsNullOrWhiteSpace(newAddress)) - //{ - // foreach (var s in shiKou3) - // { - - // var r = int.Parse(s.slotCode.Substring(0, 2)); - // var l = int.Parse(s.slotCode.Substring(2, 2)); - // var c = int.Parse(s.slotCode.Substring(4, 2)); - // //鏌ヨ绌哄偍浣� - // var sqlString = $@"select LocatNo,Row,Column,Layer,(ABS(Row-{r}) + ABS(Column-{l}) ) as distNum - // from SysStorageLocat where (AisleOneRow = {r} or AisleTwoRow = {r}) and Status in (0) and - // RoadwayNo !='{oldSlot.RoadwayNo}' and RoadwayNo not in(select RoadwayNo from SysStorageRoadway where Status = 1) order by distNum,SlotCode"; + #region 2闇�瑕佸洖绉荤殑 - // var addressModels = dataContext.ExecuteQuery<addreClass>(sqlString).ToList(); - // foreach (var item in addressModels) - // { 銆� - - - // newAddress = item.slotCode; - // var dz = newAddress.Split(new char[] { '-' }); - // var l1 = dz[1]; - // var c1 = dz[0]; - // newLaneWayAddress = $"{c1}-{l1}-{a[2]}"; - // flags = newLaneWayAddress; + ////濡傛灉娌℃湁鎵惧埌鍚堥�傜殑鍌ㄤ綅 + //if (string.IsNullOrWhiteSpace(newAddress)) + //{ + // foreach (var s in shiKou3) + // { - // var slotModel = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == item.slotCode); + // var r = int.Parse(s.slotCode.Substring(0, 2)); + // var l = int.Parse(s.slotCode.Substring(2, 2)); + // var c = int.Parse(s.slotCode.Substring(4, 2)); + // //鏌ヨ绌哄偍浣� + // var sqlString = $@"select LocatNo,Row,Column,Layer,(ABS(Row-{r}) + ABS(Column-{l}) ) as distNum + // from SysStorageLocat where (AisleOneRow = {r} or AisleTwoRow = {r}) and Status in (0) and + // RoadwayNo !='{oldSlot.RoadwayNo}' and RoadwayNo not in(select RoadwayNo from SysStorageRoadway where Status = 1) order by distNum,SlotCode"; - // var lan = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList(); - // if (slotModel.SlotRow > int.Parse(a[2])) - // { - // // 鍙栨渶涓婇潰涓�鎺� - // lan = lan.OrderBy(m => m.SlotCode).ToList(); - // for (int i = 0; i < lan.Count; i++) - // { - // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode); - // if (slot.SlotStatus == 0) - // { - // if (i == lan.Count - 1) - // { - // newAddress = lan[lan.Count - 1].SlotCode; + // var addressModels = dataContext.ExecuteQuery<addreClass>(sqlString).ToList(); + // foreach (var item in addressModels) + // { 銆� - // break; - // } - // else - // { - // continue; - // } - // } - // else - // { - // newAddress = lan[i - 1].SlotCode; - // break; - // } - // } + // newAddress = item.slotCode; + // var dz = newAddress.Split(new char[] { '-' }); + // var l1 = dz[1]; + // var c1 = dz[0]; + // newLaneWayAddress = $"{c1}-{l1}-{a[2]}"; + // flags = newLaneWayAddress; - // } - // else - // { - // // 鍙栨渶涓嬮潰涓�鎺� - // lan = lan.OrderByDescending(m => m.SlotCode).ToList(); - // for (int i = 0; i < lan.Count; i++) - // { - // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode); - // if (slot.SlotStatus == 0) - // { - // if (i == lan.Count - 1) - // { - // newAddress = lan[lan.Count - 1].SlotCode; - // break; - // } - // else - // { - // continue; - // } + // var slotModel = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == item.slotCode); - // } - // else - // { - // newAddress = lan[i - 1].SlotCode; - // break; - // } - // } - // } - // //娣诲姞鍥炵Щ浠诲姟 - // AddHyTask(oldAddress, newAddress, newLaneWayAddress, oldSlot.SlotLanewayId, slotOut, billCode); - // refLanWayId = slotModel.SlotLanewayId; - // refLanOutCode = newLaneWayAddress; - // //9锛氶攣瀹氬偍浣� - // var updateSlot = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList(); - // var newAddressRow = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == newAddress); - // if (newAddressRow.SlotRow > int.Parse(a[2])) - // { - // updateSlot = updateSlot.Where(m => m.SlotRow < newAddressRow.SlotRow && m.SlotRow > int.Parse(a[2])).OrderBy(m => m.SlotCode).ToList(); - // } - // else - // { - // updateSlot = updateSlot.Where(m => m.SlotRow > newAddressRow.SlotRow && m.SlotRow < int.Parse(a[2])).OrderByDescending(m => m.SlotCode).ToList(); + // var lan = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList(); + // if (slotModel.SlotRow > int.Parse(a[2])) + // { + // // 鍙栨渶涓婇潰涓�鎺� + // lan = lan.OrderBy(m => m.SlotCode).ToList(); + // for (int i = 0; i < lan.Count; i++) + // { + // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode); + // if (slot.SlotStatus == 0) + // { + // if (i == lan.Count - 1) + // { + // newAddress = lan[lan.Count - 1].SlotCode; - // } - // foreach (var source in updateSlot) - // { - // if (source.SlotCode == newAddress) - // { - // continue; - // } - // if (source.SlotStatus == 0) - // { - // source.SlotStatus = 8; - // } - // } + // break; + // } + // else + // { + // continue; + // } - // if (updateSlot.Count <= 0) - // { - // refLanWayId = ""; - // refLanOutCode = ""; - // } - // dataContext.SubmitChanges(); - // return newAddress; - + // } + // else + // { + // newAddress = lan[i - 1].SlotCode; + // break; + // } + // } - - // } + // } + // else + // { + // // 鍙栨渶涓嬮潰涓�鎺� + // lan = lan.OrderByDescending(m => m.SlotCode).ToList(); + // for (int i = 0; i < lan.Count; i++) + // { + // var slot = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == lan[i].SlotCode); + // if (slot.SlotStatus == 0) + // { + // if (i == lan.Count - 1) + // { + // newAddress = lan[lan.Count - 1].SlotCode; + // break; + // } + // else + // { + // continue; + // } - // } + // } + // else + // { + // newAddress = lan[i - 1].SlotCode; + // break; + // } + // } + // } + // //娣诲姞鍥炵Щ浠诲姟 + // AddHyTask(oldAddress, newAddress, newLaneWayAddress, oldSlot.SlotLanewayId, slotOut, billCode); + // refLanWayId = slotModel.SlotLanewayId; + // refLanOutCode = newLaneWayAddress; + // //9锛氶攣瀹氬偍浣� + // var updateSlot = dataContext.WmsBaseSlot.Where(m => m.SlotLanewayId == slotModel.SlotLanewayId).ToList(); + // var newAddressRow = dataContext.WmsBaseSlot.FirstOrDefault(m => m.SlotCode == newAddress); + // if (newAddressRow.SlotRow > int.Parse(a[2])) + // { + // updateSlot = updateSlot.Where(m => m.SlotRow < newAddressRow.SlotRow && m.SlotRow > int.Parse(a[2])).OrderBy(m => m.SlotCode).ToList(); + // } + // else + // { + // updateSlot = updateSlot.Where(m => m.SlotRow > newAddressRow.SlotRow && m.SlotRow < int.Parse(a[2])).OrderByDescending(m => m.SlotCode).ToList(); - //} + // } + // foreach (var source in updateSlot) + // { + // if (source.SlotCode == newAddress) + // { + // continue; + // } + // if (source.SlotStatus == 0) + // { + // source.SlotStatus = 8; + // } + // } - return newAddress; - #endregion + // if (updateSlot.Count <= 0) + // { + // refLanWayId = ""; + // refLanOutCode = ""; + // } + // dataContext.SubmitChanges(); + // return newAddress; - + + + // } + + // } + + //} + + return newAddress; + #endregion + + } /// <summary> @@ -4101,14 +4469,14 @@ private bool GetBecomingLocation(string laneWayId, ref string location) { bool bl = false; - + // 寰幆鍒ゆ柇褰撳墠缁勬槸鍚︽湁鍓╀綑鍌ㄤ綅 string sqlString = string.Empty; location = ""; - + // 鍒ゆ柇鍌ㄤ綅缁勬槸鍚︽湁绌哄偍浣� 鍏宠仈搴撳瓨鏄庣粏琛ㄥ彲闃叉鍌ㄤ綅鐘舵�佷笉鍑嗙‘閬垮厤閫犳垚婊″叆寮傚父//not in ('1','2','4','6','7','8') - sqlString = $"select LocatNo,Column,AisleOne from SysStorageLocat where RoadwayNo = {laneWayId} and Status in ('0') and LocatNo not in (select LocatNo from DataStockDetail where RoadwayNo = { laneWayId}) order by Row;"; - var slotModel =Db.SqlQueryable<LocateInfo>(sqlString).ToList(); + sqlString = $"select LocatNo,[Column],AisleOne from SysStorageLocat where IsDel=0 and WareHouseNo='W01' and RoadwayNo = '{laneWayId}' and Status in ('0') and LocatNo not in (select LocatNo from DataStockDetail where RoadwayNo = '{laneWayId}') order by Row;"; + var slotModel = Db.SqlQueryable<LocateInfo>(sqlString).ToList(); if (slotModel.Count == 0) { bl = false; @@ -4116,7 +4484,7 @@ else // 瀛樺湪绌哄偍浣� { // 鍒ゆ柇褰撳墠缁勫悎閫傜殑鍌ㄤ綅鍦板潃 - var numstr = slotModel[0].AisleOne.Substring(4,2); + var numstr = slotModel[0].AisleOne.Substring(4, 2); int aisleRow = int.Parse(numstr); if (slotModel[0].Column > aisleRow) @@ -4131,11 +4499,11 @@ location = slotModel[slotModel.Count - 1].LocatNo; } - + bl = true; } - + return bl; } @@ -4150,7 +4518,7 @@ public string LocatNo { get; set; } public int Column { get; set; } public string AisleOne { get; set; } - + } /// <summary> @@ -4229,12 +4597,12 @@ item.WareHouseNo = "";//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級 item.RoadwayNo = "";//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級 item.AreaNo = "";//鎵�灞炲尯鍩熸洿鏀癸紙鏀逛负绌猴級 - + } //鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級 var allot = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && (m.TaskNo == taskNo || (m.Status == "1" && m.PalletNo == task.PalletNo))).ToList(); var PalletType = "0"; //0锛氱墿鏂欐墭 1锛氱┖鎵樼洏鎵� - + foreach (var item in allot) { if (item.SkuNo == "100099") @@ -4250,9 +4618,9 @@ } - var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m=>m.LocatNo).ToList(); + var endLocateList = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && (m.AreaNo == "B02" || m.AreaNo == "B05")).Select(m => m.LocatNo).ToList(); //鍒ゆ柇鏄惁鏄師杈呮枡鍑哄簱浠诲姟 璐ф灦鍌ㄤ綅=銆嬪钩搴撳偍浣� - if ( endLocateList.Contains(task.EndLocat) && PalletType == "0") + if (endLocateList.Contains(task.EndLocat) && PalletType == "0") { //淇敼鐩爣鍦板潃鐘舵�� var endLocat = Db.Queryable<SysStorageLocat>().First(m => m.IsDel == "0" && m.LocatNo == task.EndLocat); @@ -4334,9 +4702,9 @@ ////鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 //if (pingKuList.Contains(task.StartLocat) && pingKuList.Contains(task.EndLocat)) //{ - task.Status = "2"; + task.Status = "2"; //} - + task.IsSend = 0; task.IsCancel = 0; task.IsFinish = 0; @@ -4351,13 +4719,13 @@ locate.Status = "0"; Db.Updateable(locate).ExecuteCommand(); } - + //鐩爣鍌ㄤ綅鏀逛负鏈夎揣鐗� 1 locate2.Status = "1"; Db.Updateable(locate2).ExecuteCommand(); //鍒ゆ柇璧峰鐩爣浣嶇疆閮芥槸骞冲簱 - if ( pingKuList.Contains(task.EndLocat)) + if (pingKuList.Contains(task.EndLocat)) { foreach (var item in stockDetail) { @@ -4368,7 +4736,7 @@ } Db.Updateable(stockDetail).ExecuteCommand(); } - + #endregion @@ -4395,12 +4763,12 @@ try { Db.BeginTran(); - var task = Db.Queryable<LogTask>().First(m=>m.IsDel =="0" && m.TaskNo == taskNo); + var task = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == taskNo); if (task == null) { throw new Exception("娌℃湁鏌ヨ鍒颁换鍔′俊鎭�"); } - if (task.Status!="1") + if (task.Status != "1") { throw new Exception("浠诲姟鐘舵�佷笉鏄鍦ㄦ墽琛岋紝璇锋牳瀹�"); } @@ -4409,7 +4777,7 @@ { throw new Exception("娌℃湁鏌ヨ鍒拌捣濮嬪偍浣嶄俊鎭�"); } - if (locate.WareHouseNo!="W04") + if (locate.WareHouseNo != "W04") { throw new Exception("璧峰鍌ㄤ綅涓嶆槸骞冲簱鍌ㄤ綅锛岃鏍稿疄"); } @@ -4434,7 +4802,7 @@ } } - + #endregion #endregion @@ -4456,7 +4824,7 @@ throw new Exception("鏈煡璇㈠埌鍑哄簱鍗曚俊鎭�"); } var task = Db.Queryable<BllExportTimingTask>().Count(m => m.SoNo == soNo); - if (task>0) + if (task > 0) { throw new Exception("褰撳墠鍑哄簱鍗曞凡鐢熸垚澶囨枡浠诲姟锛屾棤闇�閲嶅鐐瑰嚮"); } @@ -4468,7 +4836,7 @@ }; Db.Insertable(exTask).ExecuteCommand(); notice.Status = "3";//淇敼鍗曟嵁鐘舵�佹湭姝e湪鎵ц - notice.UpdateTime = DateTime.Now; + notice.UpdateTime = DateTime.Now; notice.UpdateUser = userId; Db.Updateable(notice).ExecuteCommand(); @@ -4480,7 +4848,7 @@ throw new Exception(e.Message); } } - + // JC23 澶囨枡瀹氭椂浠诲姟寮�濮� 棰嗘枡鍗曞鏂欎笅鍙戝嚭搴擄紙璋冪敤wcs鎺ュ彛缁欎粬搴撲綅鍦板潃锛� public List<OutCommandDto> BeiLiaoIssueOutHouse(string url) { @@ -4574,7 +4942,7 @@ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") { var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); - if (detailList.Count(m => m.FactQty>0) > 0) + if (detailList.Count(m => m.FactQty > 0) > 0) { notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц Db.Updateable(notice).ExecuteCommand(); @@ -4601,7 +4969,7 @@ if (notice.Status == "0" || notice.Status == "1" || notice.Status == "2") { var detailList = Db.Queryable<BllExportNoticeDetail>().Where(m => m.IsDel == "0" && m.SONo == item.SONo).ToList(); - if (detailList.Count(m => m.FactQty>0) > 0) + if (detailList.Count(m => m.FactQty > 0) > 0) { notice.Status = "3"; //鍙樻洿鐘舵�佷负姝e湪鎵ц Db.Updateable(notice).ExecuteCommand(); @@ -4990,7 +5358,7 @@ { //鍏堟煡璇换鍔¤〃涓鏈変换鍔$殑鎶曟枡鍙d俊鎭� var proCallList = Db.Queryable<BllProductionCallTask>().Where(m => m.IsDel == "0").ToList(); - var proLocationList = proCallList.Select(m=>m.PutInLocation).ToList(); + var proLocationList = proCallList.Select(m => m.PutInLocation).ToList(); if (proCallList.Count == 0) { return null; @@ -5003,12 +5371,12 @@ { //褰撳墠鎶曟枡鍙e寘鍚殑宸ヤ綅 var list = locate.Where(m => m.AreaNo == item).ToList(); - var listStr = locate.Where(m => m.AreaNo == item).Select(m=>m.LocatNo).ToList(); + var listStr = locate.Where(m => m.AreaNo == item).Select(m => m.LocatNo).ToList(); //鍒ゆ柇鎶曟枡鍙g殑宸ヤ綅涓槸鍚︽湁鏈笅鍙戞垚鍔熺殑浠诲姟 - var task = Db.Queryable<LogTask>().Where(m => m.Type == "1" && m.IsSuccess == 0 && m.Status == "0" && listStr.Contains(m.EndLocat) ).OrderBy(m=>m.TaskNo).ToList(); - if(task.Count > 0) + var task = Db.Queryable<LogTask>().Where(m => m.Type == "1" && m.IsSuccess == 0 && m.Status == "0" && listStr.Contains(m.EndLocat)).OrderBy(m => m.TaskNo).ToList(); + if (task.Count > 0) { - + foreach (var item2 in task) { //娣诲姞涓嬪彂浠诲姟鐨勪俊鎭� @@ -5028,12 +5396,12 @@ //item2.Status = "1"; //Db.Updateable(item2).ExecuteCommand(); } - + //return outlist; } } - if (outlist.Count>0) + if (outlist.Count > 0) { //灏嗕换鍔″彂閫佽嚦AGV // 姝e紡杩愯绋嬪簭鏀惧紑 @@ -5052,8 +5420,8 @@ //if (wcsModel.StatusCode == 0) //{ // //鏇存敼浠诲姟鐨勫彂閫佽繑鍥炴椂闂�// - new TaskServer().EditTaskIssueOk(list2, time1, time2); - + new TaskServer().EditTaskIssueOk(list2, time1, time2); + //} //if (wcsModel.StatusCode == -1) //{ @@ -5066,7 +5434,7 @@ throw new Exception(ex.Message); } } - + return null; } catch (Exception e) @@ -5091,7 +5459,7 @@ { throw new Exception("褰撳墠浠诲姟宸插畬鎴�"); } - + Db.BeginTran(); //搴撳瓨涓綋鍓嶆墭鐩樼殑淇℃伅 var stockDetail = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == task.PalletNo).ToList(); @@ -5129,11 +5497,11 @@ var exTime = Db.Queryable<BllProductionCallTask>().First(m => m.IsDel == "0" && m.PutInLocation == locate.AreaNo && m.SkuNo == locate.SkuNo); if (exTime != null) { - var notice = Db.Queryable<BllExportNotice>().First(m=>m.IsDel =="0" && m.SONo == exTime.OrderCode); + var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == exTime.OrderCode); //鑾峰彇澶囧ソ鏂欑殑鎵樼洏淇℃伅 var taskStr = Db.Queryable<LogTask>().Where(m => m.IsDel == "0" && (m.Status == "0" || m.Status == "1") && m.Receiver == "AGV").Select(m => m.TaskNo).ToList(); var allotList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.Status == "2" && m.SONo == notice.SONo && m.SkuNo == locate.SkuNo && !taskStr.Contains(m.TaskNo)).Select(m => m.PalletNo).ToList(); - if (allotList.Count >0) + if (allotList.Count > 0) { var stockDetail2 = Db.Queryable<DataStockDetail>().Where(m => allotList.Contains(m.PalletNo)).OrderBy(m => m.LocatNo).First(); @@ -5171,7 +5539,7 @@ else { var listLocate = Db.Queryable<SysStorageLocat>().Where(m => m.IsDel == "0" && m.AreaNo == locate.AreaNo).ToList(); - if (listLocate.Count(m=>m.SkuNo == locate.SkuNo && m.Status != "0") == 0) + if (listLocate.Count(m => m.SkuNo == locate.SkuNo && m.Status != "0") == 0) { Db.Deleteable(exTime).ExecuteCommand(); } @@ -5228,7 +5596,7 @@ //鍒犻櫎搴撳瓨绠辩爜鏄庣粏 Db.Deleteable(item2).ExecuteCommand(); } - if (comList.Count>0) + if (comList.Count > 0) { Db.Insertable(comList).ExecuteCommand(); } @@ -5257,9 +5625,9 @@ #endregion #region 鍑哄簱娴佹按锛堟洿鏀圭姸鎬侊級 - + allot.Status = "5"; - + if (stockInfoList.Count == 0) { allot.CompleteQty += item.LockQty; @@ -5273,7 +5641,7 @@ #region 鍑哄簱鍗曞強鏄庣粏 var noticeDetail = Db.Queryable<BllExportNoticeDetail>().First(m => m.Id == allot.SODetailNo && m.IsDel == "0"); - + if (stockInfoList.Count == 0) { noticeDetail.CompleteQty += item.LockQty; @@ -5288,9 +5656,9 @@ { var notice = Db.Queryable<BllExportNotice>().First(m => m.IsDel == "0" && m.SONo == noticeDetail.SONo); notice.Status = "4"; //鏇存敼涓烘墽琛屽畬鎴�//淇敼鍑哄簱鍗曚俊鎭� - + Db.Updateable(notice).ExecuteCommand(); - + } #endregion @@ -5313,7 +5681,7 @@ } } } - + item.LocatNo = locate2.LocatNo;//鍌ㄤ綅鏇存敼锛堟敼涓虹┖锛� item.WareHouseNo = locate2.WareHouseNo;//鎵�灞炰粨搴撴洿鏀癸紙鏀逛负绌猴級 item.RoadwayNo = locate2.RoadwayNo;//鎵�灞炲贩閬撴洿鏀癸紙鏀逛负绌猴級 @@ -5687,7 +6055,7 @@ OutMode = toLocation, //鐩爣鍦板潃 Order = 1, - + }); #endregion @@ -5777,7 +6145,7 @@ item.TaskNo = taskNoStr; // 鍑哄簱鍒嗛厤淇℃伅涓洿鏂颁换鍔″彿 item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� item.UnstackingMode = unstackingMode2;//鎷嗗灈鏂瑰紡 - item.OutMode = outMode ;//鍑哄簱鍙� + item.OutMode = outMode;//鍑哄簱鍙� //item.LoadingAddre = unstackingMode2 == "0" ? loadingAddre : "";//瑁呰溅鍙� Db.Updateable(item).ExecuteCommand(); @@ -5821,7 +6189,7 @@ item.TaskNo = taskNo.TaskNo; item.Status = "1"; // 鍑哄簱鍒嗛厤淇℃伅鐘舵�佹敼涓烘鍦ㄦ墽琛� item.OutMode = item.OutMode;//鍑哄簱鍙� - item.UnstackingMode = unstackingMode2 ;//鎷嗗灈妯″紡 + item.UnstackingMode = unstackingMode2;//鎷嗗灈妯″紡 Db.Updateable(item).ExecuteCommand(); flagList.Add(0); #endregion @@ -5912,7 +6280,7 @@ throw new Exception(e.Message); } } - + //閲嶆柊涓嬪彂鍑哄簱浠诲姟 public OutCommandDto AgainSendSoTask(string taskNo, int userId, string url) { @@ -6235,7 +6603,7 @@ } #endregion - + /// <summary> /// 鍒ゆ柇鍑哄簱鏄惁闇�瑕佹媶绠� @@ -6354,7 +6722,7 @@ { sqlPub += $"AND tb1.IsDespatch = '{isDespatch}' "; } - if (logisticsId != null) + if (logisticsId != null) { sqlPub += $"AND tb1.LogisticsId = '{logisticsId}' "; } -- Gitblit v1.8.0