From 65ecd34acf0a3d33e6c1e10c93e351716d749e2f Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-5BIMHQ3> Date: 星期三, 06 三月 2024 14:51:29 +0800 Subject: [PATCH] 修改出库单编辑页面 --- Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs | 422 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 361 insertions(+), 61 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs index cda3452..91da3f6 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaCrServer.cs @@ -8,6 +8,7 @@ using WMS.BLL.LogServer; using WMS.Entity.BllAsnEntity; using WMS.Entity.BllCheckEntity; +using WMS.Entity.BllSoEntity; using WMS.Entity.Context; using WMS.Entity.DataEntity; using WMS.Entity.SysEntity; @@ -82,7 +83,7 @@ } //鑾峰彇瑕佺洏鐐圭殑绠辩爜淇℃伅锛堢洏鐐硅褰曚腑鏁版嵁锛� - public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo) + public List<StockCheckLogDto> GetStockCheckLogList(string crNo, string crDetail, string palletNo, string boxNo, string isContinue) { try { @@ -101,6 +102,18 @@ var detail = crDetail.Split("-"); var sku = detail[0]; + //鍒ゆ柇鏄惁涓烘棤鐮佺墿鏂� + var skuinfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == sku); + //鍒ゆ柇鏄惁瀛樺湪鐗╂枡娑堟伅 + if (skuinfo == null) + { + throw new Exception("鎵樼洏鐮佷笉鑳戒负绌�"); + } + int isQtySku = 0; + if (skuinfo.Type == "4" && isContinue == "1") + { + isQtySku = 1; + } var lotNo = detail[1]; var list = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo); //var deList= Db.Queryable<BllStockCheckDetail>().Where(m => m.IsDel == "0" && m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo); @@ -108,25 +121,47 @@ //{ // throw new Exception("鏈煡璇㈠埌鎵樼洏涓婄殑鐩樼偣鐗╂枡鎵规淇℃伅"); //} - list = list.Where(m => m.SkuNo == sku && m.LotNo == lotNo && m.PalletNo == palletNo); if (!string.IsNullOrWhiteSpace(boxNo)) { list = list.Where(m => m.BoxNo == boxNo); } - - var data = list.Select(m => new StockCheckLogDto() + List<StockCheckLogDto> data = new List<StockCheckLogDto>(); + //鍒ゆ柇鏄惁涓烘棤鐮佺墿鏂� + if (isQtySku == 1) { - BoxNo = m.BoxNo, - BoxNo3 = m.BoxNo3, - SkuNo = m.SkuNo, - SkuName = m.SkuName, - LotNo = m.LotNo, - Qty = m.Qty, - CheckResult = m.CheckResult, + //鑾峰彇搴撳瓨淇℃伅 + var stockDetail = Db.Queryable<DataStockDetail>().First(a => a.IsDel == "0" && a.Status == "3" && a.SkuNo == sku && a.PalletNo == palletNo); - }).ToList(); + var model = new StockCheckLogDto() + { + PalletNo = palletNo, + SkuNo = sku, + Qty = (int?)stockDetail.Qty, + CheckResult = 4, + }; + + data.Add(model); + + } + else + { + data = list.Select(m => new StockCheckLogDto() + { + BoxNo = m.BoxNo, + BoxNo3 = m.BoxNo3, + SkuNo = m.SkuNo, + SkuName = m.SkuName, + LotNo = m.LotNo, + Qty = m.Qty, + CheckResult = m.CheckResult, + + }).ToList(); + + } + return data; + } catch (Exception e) { @@ -134,7 +169,7 @@ } } - public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, int userId) + public void CrSetCheck(string crNo, string crDetail, string palletNo, string boxNo, string boxNo3, string result, int? qty, string isContinue, int userId) { try { @@ -164,8 +199,8 @@ //鐩樼偣璁板綍 var checkLog = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo && m.CheckResult == null); - var time = DateTime.Now; + //姝e父 if (result == "0") { if (!string.IsNullOrWhiteSpace(boxNo)) @@ -177,7 +212,7 @@ checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3); } - if (checkLog.Count() == 0) + if (checkLog.Count() == 0 && isContinue == "0") { throw new Exception("鏈煡璇㈠埌鏈洏鐐圭殑绠辨敮淇℃伅"); } @@ -188,7 +223,7 @@ { if (l.CheckResult != null) { - continue; + continue; } l.RealQty = l.Qty; l.CheckResult = 0; @@ -203,6 +238,7 @@ checkDetail.RealQty = 0; } checkDetail.RealQty += num; + checkDetail.CheckResult = 0; //if (checkDetail.CheckResult == null || checkDetail.CheckResult == 0) //{ // checkDetail.CheckResult = 0; @@ -210,6 +246,7 @@ Db.Updateable(checkDetail).ExecuteCommand(); Db.Updateable(list).ExecuteCommand(); } + //鐩樹簭 else if (result == "1") { if (!string.IsNullOrWhiteSpace(boxNo)) @@ -221,10 +258,20 @@ checkLog = checkLog.Where(m => m.BoxNo3 == boxNo3); } - if (checkLog.Count() == 0) + if (checkLog.Count() == 0 && isContinue == "0") { throw new Exception("鏈煡璇㈠埌绠辨敮淇℃伅"); } + + // + if (isContinue == "1") + { + if (qty == null || qty <= 0) + { + throw new Exception("鏁伴噺鐩樼偣鏃躲�佺洏浜忔暟閲忎笉鑳戒负绌轰笖闇�澶т簬0"); + } + } + var list = checkLog.ToList(); var num = 0; @@ -241,64 +288,111 @@ checkDetail.RealQty = 0; } checkDetail.RealQty += num; - //checkDetail.CheckResult = 1; + if (isContinue == "1") + { + checkDetail.RealQty = qty; + } + checkDetail.CheckResult = 1; + var checkInfo = Db.Queryable<BllStockCheckLog>().First(m => + m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo); + checkInfo.RealQty = qty; + checkInfo.CheckResult = 1; + + checkInfo.CheckUserId = userId; + checkInfo.CheckDate = time; + + checkInfo.UpdateUser = userId; + checkInfo.UpdateTime = time; + Db.Updateable(checkInfo).ExecuteCommand(); Db.Updateable(checkDetail).ExecuteCommand(); Db.Updateable(list).ExecuteCommand(); } + //鐩樼泩 else if (result == "2") { - if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3)) + if (isContinue == "0") { - throw new Exception("鐩樼泩鏃剁鐮佷笌鏀爜涓嶈兘涓虹┖"); + if (string.IsNullOrWhiteSpace(boxNo) || string.IsNullOrWhiteSpace(boxNo3)) + { + throw new Exception("鐩樼泩鏃剁鐮佷笌鏀爜涓嶈兘涓虹┖"); + } } - if (qty == null || qty <= 0) { throw new Exception("鐩樼泩鏃舵暟閲忎笉鑳戒负绌轰笖闇�澶т簬0"); } - - var count = Db.Queryable<DataBoxInfo>() - .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); - var count2 = Db.Queryable<BllStockCheckLog>() - .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); - if (count > 0 || count2 > 0) + if (isContinue == "0") { - throw new Exception("褰撳墠搴撳瓨涓凡瀛樺湪璇ョ鏀俊鎭�"); + var count = Db.Queryable<DataBoxInfo>() + .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); + var count2 = Db.Queryable<BllStockCheckLog>() + .Count(m => m.IsDel == "0" && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); + if (count > 0 || count2 > 0) + { + throw new Exception("褰撳墠搴撳瓨涓凡瀛樺湪璇ョ鏀俊鎭�"); + } } - var crLog = new BllStockCheckLog() + BllStockCheckLog crLog = new BllStockCheckLog(); + if (isContinue == "0") { - CRNo = crNo, - PalletNo = palletNo, - BoxNo = boxNo, - BoxNo2 = null, - BoxNo3 = boxNo3, - Qty = qty, - SkuNo = checkDetail.SkuNo, - SkuName = checkDetail.SkuName, - Standard = checkDetail.Standard, - LotNo = checkDetail.LotNo, - LotText = checkDetail.LotText, - SupplierLot = checkDetail.SupplierLot, + crLog = new BllStockCheckLog() + { + CRNo = crNo, + PalletNo = palletNo, + BoxNo = boxNo, + BoxNo2 = null, + BoxNo3 = boxNo3, + Qty = qty, + SkuNo = checkDetail.SkuNo, + SkuName = checkDetail.SkuName, + Standard = checkDetail.Standard, + LotNo = checkDetail.LotNo, + LotText = checkDetail.LotText, + SupplierLot = checkDetail.SupplierLot, - RealQty = qty, - CheckResult = 2, - CheckDate = time, - CheckUserId = userId, + RealQty = qty, + CheckResult = 2, + CheckDate = time, + CheckUserId = userId, - CreateUser = userId, - CreateTime = time - }; - if (checkDetail.RealQty == null) + CreateUser = userId, + CreateTime = time + }; + } + else + { + var checkInfo = Db.Queryable<BllStockCheckLog>().First(m => + m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo); + checkInfo.RealQty = qty; + checkInfo.CheckResult = 2; + + checkInfo.CheckUserId = userId; + checkInfo.CheckDate = time; + + checkInfo.UpdateUser = userId; + checkInfo.UpdateTime = time; + Db.Updateable(checkInfo).ExecuteCommand(); + } + + if (checkDetail.RealQty == null && isContinue == "0") { checkDetail.RealQty = 0; } checkDetail.RealQty += qty; - //checkDetail.CheckResult = 1; + if (isContinue == "1") + { + checkDetail.RealQty = qty; + } + checkDetail.CheckResult = 2; Db.Updateable(checkDetail).ExecuteCommand(); - Db.Insertable(crLog).ExecuteCommand(); + if (isContinue == "0") + { + Db.Insertable(crLog).ExecuteCommand(); + } } else { + Db.RollbackTran(); throw new Exception("鐩樼偣缁撴灉涓嶇锛岃鏍稿疄锛�"); } var checkLogNum = Db.Queryable<BllStockCheckLog>().Where(m => m.IsDel == "0" && m.CRNo == crNo && m.PalletNo == palletNo && m.SkuNo == sku && m.LotNo == lotNo); @@ -351,7 +445,7 @@ { str += " and PalletNo like @palletno"; } - + //鎺掑簭 str += " order by LotNo,LocatNo,PalletNo"; List<DataStockDetail> stockList = Db.Ado.SqlQuery<DataStockDetail>(str, new @@ -376,7 +470,7 @@ { throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�"); } - var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m=>m.Id).ToList(); + var detail = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).Select(m => m.Id).ToList(); var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && detail.Contains(m.StockDetailId)) .GroupBy(m => m.BoxNo).Select(a => new PdaPalletNoCheckDto { @@ -385,7 +479,7 @@ }).ToList(); return info; } - catch(Exception e) + catch (Exception e) { throw new Exception(e.Message); } @@ -400,9 +494,9 @@ { throw new Exception("绠辩爜涓嶈兘涓虹┖"); } - + var info = Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo) - .GroupBy(m => new{m.BoxNo,m.SkuNo,m.SkuName,m.LotNo}).Select(a => new PdaPalletNoCheckDto + .GroupBy(m => new { m.BoxNo, m.SkuNo, m.SkuName, m.LotNo }).Select(a => new PdaPalletNoCheckDto { BoxNo = a.BoxNo, SkuNo = a.SkuNo, @@ -410,7 +504,7 @@ LotNo = a.LotNo, Qty = SqlFunc.AggregateSum(a.Qty) }).ToList(); - if (info.Count>1) + if (info.Count > 1) { throw new Exception("褰撳墠绠辩爜鏌ヨ鍑哄鏉$墿鏂欐垨鎵规淇℃伅锛岃鏍稿疄"); } @@ -424,7 +518,7 @@ } //瑙g粦鍘熸墭鐩樼粦瀹氭柊鎵樼洏 - public void SaveUnbind(string palletNo,string boxNo,string palletNoNew,int userId) + public void SaveUnbind(string palletNo, string boxNo, string palletNoNew, int userId) { try { @@ -449,7 +543,7 @@ throw new Exception("鍘熸墭鐩樹笂鏈煡鍒扮鏀槑缁嗭紝璇锋牳瀹�"); } //搴撳瓨鏄庣粏id - var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a =>a.StockDetailId).ToList(); + var infoIds = infos.GroupBy(m => m.StockDetailId).Select(a => a.StockDetailId).ToList(); if (infoIds.Count == 0) { throw new Exception("鏈煡璇㈠埌褰撳墠绠辩爜淇℃伅锛岃鏍稿疄"); @@ -484,7 +578,7 @@ } } } - } + } #endregion } if (!newPalletHaveGoods)//鏂版墭鐩樹笂娌℃湁鐗╁搧 @@ -519,7 +613,7 @@ } var stockDetail2 = stockDetailList.FirstOrDefault(w => w.SkuNo == stockDetail1.SkuNo && w.LotNo == stockDetail1.LotNo); - var stId = 0; + var stId = 0; if (stockDetail2 == null) //娣诲姞-鏂版墭鐩樹笂娌℃湁鍚岀墿鏂欏悓鎵规鐗╁搧 { //鏂版墭鐩樻坊鍔犲簱瀛樻槑缁� @@ -656,6 +750,10 @@ { throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); } + if (models.WareHouseNo != "W02") + { + throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); + } return models.LocatNo; } catch (Exception ex) @@ -682,6 +780,10 @@ { throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); } + if (models.WareHouseNo != "W02") + { + throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); + } var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == models.LocatNo); if (storageLocat == null) { @@ -703,6 +805,204 @@ throw new Exception(ex.Message); } } + /// <summary> + /// 鑾峰彇宸插垎閰嶇殑鍑哄簱鍗曟嵁 + /// </summary> + /// <returns></returns> + public List<string> GetRunSoNoticeList() + { + try + { + var allotList = Db.Queryable<BllExportNotice>().Where(m => m.IsDel == "0" && m.Status == "2").Select(m => m.SONo).Distinct().ToList(); + return allotList; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + /// <summary> + /// 鏍规嵁鎵樼洏鍙疯幏鍙栨墭鐩樹笂鐗╂枡淇℃伅 + /// </summary> + /// <param name="palletNo"></param> + /// <returns></returns> + public List<DataStockDetail> GetSkuInfoByPalletNo(string palletNo) + { + try + { + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇锋壂鎻忔墭鐩樻潯鐮侊紒"); + } + var skuInfoList = Db.Queryable<DataStockDetail>().Where(m => m.IsDel == "0" && m.PalletNo == palletNo).ToList(); + return skuInfoList; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + /// <summary> + /// 鏍规嵁鍑哄簱鍗曞彿鑾峰彇鍒嗛厤鐨勬墭鐩樹俊鎭� + /// </summary> + /// <param name="soNo"></param> + /// <returns></returns> + public List<string> GetPalletNoListBySoNo(string soNo) + { + try + { + if (string.IsNullOrEmpty(soNo)) + { + throw new Exception("璇烽�夋嫨鍑哄簱鍗曞彿锛�"); + } + var palletNoList = Db.Queryable<BllExportAllot>().Where(m => m.IsDel == "0" && m.SONo == soNo).Select(m => m.PalletNo).Distinct().ToList(); + return palletNoList; + } + catch (Exception ex) + { + throw new Exception(ex.Message); + } + } + + /// <summary> + /// agv杞繍鍛煎彨灏忚溅-寮�鍙戞湭瀹屾垚寰呯‘璁� + /// </summary> + /// <param name="palletNo"></param> + /// <param name="areaNo"></param> + /// <param name="ruku"></param> + public void AgvTransport(string palletNo, string areaNo, string ruku, int userId) + { + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇锋壂鎻忔墭鐩樻潯鐮侊紒"); + } + if (string.IsNullOrEmpty(areaNo) && string.IsNullOrEmpty(ruku)) + { + throw new Exception("璇烽�夋嫨鐩爣鍖哄煙鎴栧叆搴撳彛锛�"); + } + try + { + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); + if (stockDetail == null) + { + throw new Exception("鎵樼洏搴撳瓨淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + if (string.IsNullOrEmpty(stockDetail.LocatNo)) + { + throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + if (stockDetail.WareHouseNo != "W02") + { + throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); + } + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == stockDetail.LocatNo); + if (storageLocat == null) + { + throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + //寮�鍚簨鍔� + Db.BeginTran(); + //淇敼搴撳瓨鏄庣粏淇℃伅 + stockDetail.WareHouseNo = ""; + stockDetail.RoadwayNo = ""; + stockDetail.AreaNo = ""; + stockDetail.LocatNo = ""; + + Db.Updateable(stockDetail).ExecuteCommand(); + //淇敼鍌ㄤ綅鍦板潃鐘舵�� + storageLocat.Status = "0";//绌哄偍浣� + + Db.Updateable(storageLocat).ExecuteCommand(); + + #region 鍛煎彨灏忚溅浠g爜 + + #endregion + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + /// <summary> + /// agv杞繍鍛煎彨灏忚溅鍙栬揣-寮�鍙戞湭瀹屾垚寰呯‘璁� + /// </summary> + /// <param name="soNo"></param> + /// <param name="palletNo"></param> + /// <param name="areaNo"></param> + /// <param name="userId"></param> + public void AgvTransport2(string soNo,string palletNo, string areaNo, int userId) + { + if (string.IsNullOrEmpty(soNo)) + { + throw new Exception("璇烽�夋嫨鍑哄簱鍗曟嵁锛�"); + } + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("璇锋壂鎻忔墭鐩樻潯鐮侊紒"); + } + if (string.IsNullOrEmpty(areaNo)) + { + throw new Exception("璇烽�夋嫨鐩爣鍖哄煙锛�"); + } + try + { + var notice = Db.Queryable<BllExportNotice>().First(w => w.IsDel == "0" && w.SONo == soNo); + if (notice == null) + { + throw new Exception("鍑哄簱鍗曟嵁淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + var allot = Db.Queryable<BllExportAllot>().First(w => w.IsDel == "0" && w.SONo == soNo && w.PalletNo == palletNo); + if (allot == null) + { + throw new Exception("璇ユ墭鐩樺嚭搴撳垎閰嶄俊鎭笉瀛樺湪,璇锋鏌�!"); + } + var stockDetail = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); + if (stockDetail == null) + { + throw new Exception("鎵樼洏搴撳瓨淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + if (string.IsNullOrEmpty(stockDetail.LocatNo)) + { + throw new Exception("鎵樼洏鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + if (stockDetail.WareHouseNo != "W02") + { + throw new Exception("璇ユ墭鐩樻湭鍦ㄥ钩搴撳唴,璇锋鏌�!"); + } + var storageLocat = Db.Queryable<SysStorageLocat>().First(w => w.IsDel == "0" && w.LocatNo == stockDetail.LocatNo); + if (storageLocat == null) + { + throw new Exception("鍌ㄤ綅淇℃伅涓嶅瓨鍦�,璇锋鏌�!"); + } + //寮�鍚簨鍔� + Db.BeginTran(); + //淇敼搴撳瓨鏄庣粏淇℃伅 + stockDetail.WareHouseNo = ""; + stockDetail.RoadwayNo = ""; + stockDetail.AreaNo = ""; + stockDetail.LocatNo = ""; + + Db.Updateable(stockDetail).ExecuteCommand(); + //淇敼鍌ㄤ綅鍦板潃鐘舵�� + storageLocat.Status = "0";//绌哄偍浣� + + Db.Updateable(storageLocat).ExecuteCommand(); + + #region 鍛煎彨灏忚溅浠g爜 + + #endregion + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } #endregion } -- Gitblit v1.8.0