From 165a01e366d3331f8a2d2a9e42c05bcd1209abde Mon Sep 17 00:00:00 2001 From: wxw <Administrator@DESKTOP-5BIMHQ3> Date: 星期四, 10 七月 2025 08:41:39 +0800 Subject: [PATCH] Merge branch 'master' into wxw --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 633 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 617 insertions(+), 16 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index d4719d4..80ad10c 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -29,6 +29,7 @@ using Model.ModelVm.SysVm; using System.Security.Cryptography.X509Certificates; using AutoMapper.Configuration.Annotations; +using Utility; namespace WMS.BLL.BllPdaServer { @@ -77,14 +78,15 @@ else { //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� - int indexOfDash = model.LotNo.IndexOf("-"); + int indexOfDash = model.LotNo.IndexOf("=>"); if (indexOfDash != -1) { - model.LotNo = model.LotNo.Substring(indexOfDash + 1); + model.LotNo = model.LotNo.Substring(indexOfDash + 2); } else { - throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!"); + model.LotNo = ""; + //throw new Exception("鐗╂枡-鎵规涓嶅彲涓虹┖!"); } } @@ -531,7 +533,7 @@ #endregion #region 璐ㄦ璇烽獙 - if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") + if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1") { var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); if (qualityRequest == null) @@ -1047,7 +1049,7 @@ #endregion #region 璐ㄦ璇烽獙 - if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1") + if ((arrNotice.Type == "1" || arrNotice.Type == "4" || arrNotice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1") { var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); if (qualityRequest == null) @@ -1136,14 +1138,15 @@ else { //浠庣墿鏂欏悕绉�-鎵规涓彇鍑烘壒娆� - int indexOfDash = model.LotNo.IndexOf("-"); + int indexOfDash = model.LotNo.IndexOf("=>"); if (indexOfDash != -1) { - model.LotNo = model.LotNo.Substring(indexOfDash + 1); + model.LotNo = model.LotNo.Substring(indexOfDash + 2); } else { - throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!"); + model.LotNo = ""; + //throw new Exception("鐗╂枡鎵规涓嶅彲涓虹┖!"); } } @@ -1497,7 +1500,7 @@ #endregion #region 璐ㄦ璇烽獙 - if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") + if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1") { var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); if (qualityRequest == null) @@ -2226,15 +2229,17 @@ }; //鑾峰彇鐘舵�佹槸鏈粍鎵樼殑鏍囩淇℃伅 - var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId ).GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }).Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0" + var models = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.Status == "0") + .GroupBy(m=> new { m.ProductionTime,m.ExpirationTime }) + .Select(m=>new { m.ProductionTime ,m.ExpirationTime}).OrderBy(m=>m.ProductionTime).ToList();//&& m.Status == "0" foreach (var item in models) { - var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList(); + var boxNoList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Status == "0" && m.ASNNo == asnNo && m.ASNDetailNo == asnDetailId && m.ProductionTime == item.ProductionTime).Select(m => m.BoxNo).ToList(); if (boxNoList.Count > 0) { data.BoxNoList = boxNoList; - data.Date1 = item.ProductionTime.ToString(); - data.Date2 = item.ExpirationTime.ToString(); + data.Date1 = item.ProductionTime == null ? "" : Convert.ToDateTime(item.ProductionTime).ToString("yyyy-MM-dd"); + data.Date2 = item.ExpirationTime == null ? "" : Convert.ToDateTime(item.ExpirationTime).ToString("yyyy-MM-dd"); break; } @@ -2411,6 +2416,492 @@ { throw new Exception(e.Message); } + } + + /// <summary> + /// 鏍规嵁绠辩爜鑾峰彇鏍囩绠辩爜淇℃伅锛堣溅闂村叆搴�-鑾峰彇WMS鐢熸垚鐨勭淇℃伅锛� + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + public List<BoxInfoDto> GetWmsBoxInfos(string boxNo) + { + try + { + if (string.IsNullOrEmpty(boxNo)) + { + throw new Exception("璇锋壂鎻忓绠辨潯鐮�!"); + } + + string sqlString = $@"SELECT BoxNo, SkuNo, SkuName, LotNo, BitBoxMark, SUM(Qty) as Qty FROM BllBoxInfo + WHERE IsDel = '0' and Status='0' and BoxNo = '{boxNo}' + GROUP BY BoxNo,SkuNo,SkuName,LotNo,BitBoxMark; "; + var models = Db.Ado.SqlQuery<BoxInfoDto>(sqlString); + + if (models.Count != 0) + { + return models; + } + else + { + throw new Exception("娌℃湁鏌ヨ鍒扮鐮佷俊鎭�"); + } + + } + catch (Exception ex) + { + throw ex; + } + } + + // 杞﹂棿缁戝畾鎵樼洏-璐存爣 + public void ChejianIn(string palletNo,string boxNo,decimal qty,string areaNo,int userId) + { + try + { + #region MyRegion + + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception("绠卞彿涓嶈兘涓虹┖"); + } + if (qty<=0) + { + throw new Exception("鏁伴噺涓嶈兘灏忕瓑0"); + } + var boxInfo = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.BoxNo == boxNo).ToList(); + if (boxInfo.Count == 0) + { + throw new Exception("鏈煡璇㈠埌褰撳墠绠卞彿淇℃伅"); + } + var boxInfoOne = boxInfo.First(); + var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); + if (pall == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅"); + } + #endregion + + //寮�鍚簨鍔� + Db.BeginTran(); + //褰撳墠鏃堕棿 + var comTime = DateTime.Now; + + #region 鍖呰 + + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == boxInfoOne.SkuNo); + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum); + + #endregion + + var msgStr = $"绠卞彿涓簕boxNo}"; + var boxInfoList = new List<BllBoxInfo>(); + + + boxInfoList.AddRange(boxInfo); + + #region 搴撳瓨鏄庣粏 + + var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo); + if (area == null) + { + throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖"); + } + + var tags = "0"; + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo== boxInfoOne.SkuNo && m.LotNo == boxInfoOne.LotNo && m.PalletNo == palletNo); + var sdId1 = 0; + if (sd1 != null) + { + if (sd1.AreaNo!= areaNo) + { + throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓"); + } + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty += qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + var sd2 = Db.Queryable<DataStockDetail>().Where(m => m.PalletNo == palletNo && m.IsDel == "0" && !string.IsNullOrWhiteSpace(m.AreaNo)); + if (sd2.Count(m=>m.AreaNo!= areaNo) > 0) + { + throw new Exception("褰撳墠鎵樼洏浣嶇疆涓庨�夋嫨鐨勪笉鍚岋紝璇锋牳瀹�"); + } + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + ASNNo = "", + LotNo = boxInfoOne.LotNo, + LotText = boxInfoOne.LotText, + SupplierLot = boxInfoOne.SupplierLot, + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = area.AreaNo,//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = palletNo, + PalletTags = tags, + CompleteTime = comTime, + ProductionTime = boxInfoOne.ProductionTime, + ExpirationTime = boxInfoOne.ExpirationTime, + Status = "0", + InspectMark = boxInfoOne.InspectMark, + InspectStatus = sku.IsInspect, + BitPalletMark = "1", + PackagNo = sku.PackagNo, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + + + //鏍囩缁勬墭 + var boxGroup = boxInfo.GroupBy(m => m.BoxNo).ToList(); + foreach (var g in boxGroup) + { + decimal boxFullQty = 0;//绠卞唴鎬绘暟閲� + foreach (var box in g) + { + if (box.BindNo != null && box.BindNo != 0) + { + continue; + } + + + box.PalletNo = palletNo; + box.Status = "2"; + + box.CompleteTime = comTime; + box.UpdateTime = comTime; + box.UpdateUser = userId; + + //box.Qty = box.Qty; + //box.BitBoxMark = box.Qty == box.FullQty ? "0" : "1"; + + factQty += box.Qty; + boxFullQty += box.Qty; + + #region 搴撳瓨绠辩爜鏄庣粏 + var box2 = new DataBoxInfo() + { + StockDetailId = sdId1, + BoxNo = box.BoxNo, + BoxNo2 = box.BoxNo2, + BoxNo3 = box.BoxNo3, + PalletNo = box.PalletNo, + PalletNo2 = box.PalletNo2, + PalletNo3 = box.PalletNo3, + Qty = box.Qty, + FullQty = box.FullQty, + Status = "2",//0锛氭湭缁勬墭 1锛氬凡缁勬墭 2锛氬凡鍏ュ簱 3锛氬凡鍑哄簱 4:宸插垎閰� 5锛氬凡鎷h揣 + LotNo = box.LotNo, + LotText = box.LotText, + SkuNo = box.SkuNo, + SkuName = box.SkuName, + Standard = sku.Standard, + ProductionTime = box.ProductionTime, + SupplierLot = box.SupplierLot, + InspectStatus = sku.IsInspect, + InspectMark = box.InspectMark, + BitBoxMark = box.BitBoxMark, + ExpirationTime = box.ExpirationTime, + + CreateUser = 0, + CreateTime = comTime + }; + //娣诲姞搴撳瓨绠辩爜鏄庣粏 + Db.Insertable(box2).ExecuteCommand(); + #endregion + + #region 鎻掑叆杞﹂棿鍑哄叆搴撹褰曡〃 + //鎻掑叆鍏ュ簱鏃ュ織 + var _log = new LogWorkShop + { + Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴� + PalletNo = palletNo, + BoxNo=box.BoxNo, + LotNo=box.LotNo, + SkuNo=box.SkuNo, + SkuName=box.SkuName, + Qty=box.Qty + }; + //娣诲姞搴撳瓨绠辩爜鏄庣粏 + Db.Insertable(_log).ExecuteCommand(); + #endregion + } + if (boxFullQty > bNum) + { + throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒"); + } + } + //鏇存敼绠辨敮鍏崇郴琛ㄤ俊鎭� + Db.Updateable(boxInfoList).ExecuteCommand(); + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == boxInfoOne.LotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = sku.SkuNo, + SkuName = sku.SkuName, + Standard = sku.Standard, + LotNo = boxInfoOne.LotNo, + LotText = boxInfoOne.LotText, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = "0", + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; + ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", boxNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}銆亄msgStr}鐨勫叆搴撲俊鎭�", userId); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + /// <summary> + /// 杞﹂棿缁戝畾鎵樼洏 涓嶈创鏍囩墿鏂� + /// </summary> + /// <param name="model"></param> + /// <param name="userId"></param> + /// <exception cref="Exception"></exception> + public void ChejianQtyIn(string palletNo, string skuNo, string lotNo, decimal qty, string areaNo, int userId) + { + try + { + #region MyRegion + + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + if (string.IsNullOrWhiteSpace(skuNo)) + { + throw new Exception("鐗╂枡涓嶈兘涓虹┖"); + } + if (qty <= 0) + { + throw new Exception("鏁伴噺涓嶈兘灏忕瓑0"); + } + var skuInfo = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == skuNo); + if (skuInfo == null) + { + throw new Exception("鏈煡璇㈠埌鐗╂枡淇℃伅"); + } + var pall = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == palletNo); + if (pall == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鎵樼洏淇℃伅"); + } + #endregion + + //寮�鍚簨鍔� + Db.BeginTran(); + //褰撳墠鏃堕棿 + var comTime = DateTime.Now; + + #region 鍖呰 + + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuInfo.PackagNo); + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + //鍏叡鏂规硶鑾峰彇鍖呰鏁伴噺 + new Common().GetPackQtyInfo(pack.PackagNo, ref pNum, ref bNum); + + #endregion + + #region 搴撳瓨鏄庣粏 + + var area = Db.Queryable<SysStorageArea>().First(m => m.IsDel == "0" && m.AreaNo == areaNo); + if (area == null) + { + throw new Exception("鍏ュ簱鍖哄煙涓嶈兘涓虹┖"); + } + + var tags = "0"; + + // 鍒ゆ柇搴撳瓨鏄庣粏鏄惁宸叉湁姝ゆ墭鐩樹俊鎭� + var sd1 = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.SkuNo == skuNo && m.LotNo == lotNo && m.PalletNo == palletNo); + var sdId1 = 0; + if (sd1 != null) + { + if (sd1.AreaNo != areaNo) + { + throw new Exception("閫夋嫨鐨勫尯鍩熶笌搴撳瓨涓嶅悓"); + } + sdId1 = sd1.Id; + // 搴撳瓨宸插瓨鍦� 鏇存柊鏁版嵁 + sd1.Qty += qty; + sd1.CompleteTime = comTime; + sd1.UpdateUser = userId; + sd1.UpdateTime = comTime; + if (sd1.Qty >= pNum) + { + sd1.BitPalletMark = "0"; + } + Db.Updateable(sd1).ExecuteCommand(); + } + else + { + // 搴撳瓨涓嶅瓨鍦� 鎻掑叆鏁版嵁 + sd1 = new DataStockDetail() + { + LotNo = lotNo, + SupplierLot = "", + SkuNo = skuInfo.SkuNo, + SkuName = skuInfo.SkuName, + Standard = skuInfo.Standard, + Qty = qty, + LockQty = 0, + FrozenQty = 0, + InspectQty = 0, + WareHouseNo = area.WareHouseNo,//鎵�灞炰粨搴� + RoadwayNo = "",//鎵�灞炲贩閬� + AreaNo = area.AreaNo,//鎵�灞炲尯鍩� + LocatNo = "",//鍌ㄤ綅鍦板潃 + PalletNo = palletNo, + PalletTags = tags, + CompleteTime = comTime, + //ProductionTime = boxInfoOne.ProductionTime, + //ExpirationTime = boxInfoOne.ExpirationTime, + Status = "0", + InspectMark = "0", + InspectStatus = "1", + BitPalletMark = qty >= pNum ?"0" :"1", + PackagNo = skuInfo.PackagNo, + + IsDel = "0", + CreateUser = 0, + CreateTime = comTime + }; + + //娣诲姞搴撳瓨鏄庣粏 + sdId1 = Db.Insertable(sd1).ExecuteReturnIdentity(); + } + #endregion + + // 鏇存敼绠辨敮鍏崇郴琛� + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + + #region 搴撳瓨 + var dataStock = Db.Queryable<DataStock>().First(m => m.IsDel == "0" && m.SkuNo == skuInfo.SkuNo && m.LotNo == lotNo); + if (dataStock != null) + { + dataStock.Qty += factQty; + Db.Updateable(dataStock).ExecuteCommand(); + } + else + { + var stock = new DataStock() + { + SkuNo = skuInfo.SkuNo, + SkuName = skuInfo.SkuName, + Standard = skuInfo.Standard, + LotNo = lotNo, + LotText = "", + Qty = qty, + LockQty = 0, + FrozenQty = 0, + IsSampling = "0", + IsDel = "0", + CreateUser = userId, + CreateTime = comTime + }; + Db.Insertable(stock).ExecuteCommand(); + } + #endregion + + #region + //鎻掑叆鍏ュ簱鏃ュ織 + var _log = new LogWorkShop + { + Type = "0",//绫诲瀷锛�0锛氬叆搴� 1锛氬嚭搴� + PalletNo = palletNo, + BoxNo = "", + LotNo = lotNo, + SkuNo = sd1.SkuNo, + SkuName = sd1.SkuName, + Qty = qty + }; + //娣诲姞搴撳瓨绠辩爜鏄庣粏 + Db.Insertable(_log).ExecuteCommand(); + #endregion + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{palletNo}';"; + ////娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + //sqlStr += $"insert into LogPalletTrack values('{palletNo}','{boxNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "杞﹂棿鍏ュ簱", skuNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{palletNo}鐨勫叆搴撲俊鎭�", userId); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } #endregion @@ -5504,7 +5995,7 @@ #endregion #region 璐ㄦ璇烽獙 - if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1") + if ((notice.Type == "1" || notice.Type == "4" || notice.Type == "5") && sku.IsInspect != "1" && sku.IsControlled != "1") { var qualityRequest = Db.Queryable<BllQualityInspectionRequest>().First(m => m.IsDel == "0" && m.SkuNo == sku.SkuNo && m.LotNo == bind.LotNo && m.SupplierLot == bind.SupplierLot); if (qualityRequest == null) @@ -5583,9 +6074,12 @@ { foreach (var item in stockDetail) { - if (!string.IsNullOrEmpty(item.WareHouseNo)) + if (!string.IsNullOrEmpty(item.WareHouseNo) && !string.IsNullOrEmpty(item.AreaNo)) { - throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!"); + if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09") + { + throw new Exception("璇ユ墭鐩樻湭鍦ㄥ簱澶栵紝璇锋牳鏌�!"); + } } } iscount = 1; //鍥炴祦鍏ュ簱 @@ -6022,6 +6516,113 @@ } #endregion + #region 浠撳簱鏀惰揣 + /// <summary> + /// 浠撳簱纭鏀惰揣 + /// </summary> + /// <param name="model"></param> + public void ConfirmTakeOf(string palletNo,int userId) + { + try + { + #region 楠岃瘉淇℃伅 + if (string.IsNullOrEmpty(palletNo)) + { + throw new Exception("鎵樼洏鏉$爜涓嶈兘涓虹┖!"); + } + + //鑾峰彇鎵樼洏淇℃伅 + var pallet = Db.Queryable<SysPallets>().First(w => w.IsDel == "0" && w.PalletNo == palletNo); + //楠岃瘉鎵樼洏淇℃伅鏄惁涓虹┖ + if (pallet == null) + { + throw new Exception("鎵樼洏淇℃伅涓嶅瓨鍦紝璇锋鏌�!"); + } + if (pallet.Status == "0") + { + throw new Exception("鎵樼洏鏈娇鐢紝璇锋鏌�!"); + } + #endregion + + //鑾峰彇搴撳瓨鏄庣粏淇℃伅 + var stockDetailList = Db.Queryable<DataStockDetail>().Where(s => s.IsDel == "0" && s.PalletNo == palletNo).ToList(); + //楠岃瘉搴撳瓨鏄庣粏淇℃伅鏄惁瀛樺湪 + if (stockDetailList.Count<=0) + { + throw new Exception("搴撳瓨鏄庣粏涓嶅瓨鍦紝璇锋鏌ュ簱瀛樹俊鎭�!"); + } + //寮�鍚簨鍔� + Db.BeginTran(); + + foreach (var item in stockDetailList) + { + if (item.AreaNo != "B06" && item.AreaNo != "B07" && item.AreaNo != "B09") + { + throw new Exception("璇ユ墭鐩橀潪绾胯竟鍥炲簱鎵樼洏!"); + } + //搴撳瓨鎬昏〃 + var stock = Db.Queryable<DataStock>().First(w => w.IsDel == "0" && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo); + if (stock == null) + { + throw new Exception($"鏈煡璇㈠埌璇ユ墭鐩樹笂鐗╂枡缂栫爜涓�:{item.SkuNo}鐨勫簱瀛樹俊鎭�!"); + } + + var boxInfoList = Db.Queryable<DataBoxInfo>().Where(w => w.IsDel == "0" && w.PalletNo == palletNo && w.SkuNo == item.SkuNo && w.LotNo == item.LotNo).ToList(); + if (boxInfoList.Count > 0) + { + foreach (var box in boxInfoList) + { + var bllBox = Db.Queryable<BllBoxInfo>().First(w => w.IsDel == "0" && w.Status != "0"); + if (bllBox != null) + { + bllBox.Status = "0"; + bllBox.ASNDetailNo = null; + bllBox.BindNo = null; + bllBox.PalletNo = ""; + //鏇存柊绠辨敮鏄庣粏琛� + Db.Updateable(bllBox).ExecuteCommand(); + } + } + //鍒犻櫎搴撳瓨绠辩爜淇℃伅 + Db.Deleteable(boxInfoList).ExecuteCommand(); + } + + //鍒犻櫎鎴栦慨鏀瑰簱瀛� + stock.Qty -= (decimal)item.Qty; + if (stock.Qty <= 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + //鍒犻櫎搴撳瓨鏄庣粏 + Db.Deleteable(item).ExecuteCommand(); + + //鍒ゆ柇鎵樼洏涓婅繕鏈夋病鏈夊叾浠栫墿鏂� + var palletData = Db.Queryable<DataStockDetail>().First(w => w.IsDel == "0" && w.PalletNo == palletNo && w.Id != item.Id); + if (palletData == null) + { + pallet.Status = "0"; + Db.Updateable(pallet).ExecuteCommand(); + } + } + + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "浠撳簱鏀惰揣", palletNo, "瀹屾垚", $"鍦≒DA涓婂畬鎴愭墭鐩樼爜涓猴細{palletNo}鐨勪粨搴撴敹璐ф搷浣�", userId); + + //鎻愪氦浜嬪姟 + Db.CommitTran(); + } + catch (Exception ex) + { + //鍥炴粴浜嬪姟 + Db.RollbackTran(); + throw ex; + } + } + #endregion + #region JC23鍙栨牱涓氬姟鎺ュ彛 //鑾峰彇鏈粍鎵樻垨宸茬粍鎵樼殑绠辩爜绾у埆 -- Gitblit v1.8.0