From fd9ce381b904a22593de2ab242fb8f65cee45efa Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期四, 22 五月 2025 15:27:48 +0800 Subject: [PATCH] 修改问题 --- Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs | 1314 ++++++++++++++++++++++++++++++----------------------------- 1 files changed, 661 insertions(+), 653 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs index 9b50a79..9a70f3e 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaSoServer.cs @@ -800,6 +800,666 @@ } } + //鍙栨牱鍑哄簱鎷h揣(鏍囩) + public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) + { + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(qcNo)) + { + throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + var type = await GetSampleType2(palletNo); + if (type != "0") + { + throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱"); + } + if (string.IsNullOrEmpty(boxNo)) + { + throw Oops.Bah("澶栫鏉$爜涓嶈兘涓虹┖"); + } + //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) + //{ + // throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); + //} + + //璇烽獙鍗� + var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); + if (inspecd == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); + } + if (inspecd.Status == "0" || inspecd.Status == "3") + { + throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); + } + //搴撳瓨鏄庣粏淇℃伅 + var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stockDetail == null) + { + throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); + } + // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) + { + var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); + if (wareHouseData.Type != "2") + { + throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); + } + } + //绠辨敮淇℃伅 + var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); + //搴撳瓨鎬昏〃 + var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stock == null) + { + throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); + } + //鍏ュ簱鍗� + var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); + if (notice == null) + { + throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); + } + + #endregion + + //鍙栨牱鏄庣粏璁板綍琛� + var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); + + var isAddSampld = false; + var PickType = ""; //0鏁伴噺鎷h揣 1 绠辨敮鎷h揣 + var EditboxInfo = new DataBoxInfo(); + var EditboxInfoList = new List<DataBoxInfo>(); + + #region 鍒ゆ柇鎷h揣鏂瑰紡 鏁f敮 鏁伴噺 + + if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //鏁伴噺鎷h揣 + { + PickType = "0"; + + if (!string.IsNullOrWhiteSpace(boxNo3)) //鏀腑鎷f暟閲� + { + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) + { + throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); + } + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) + { + throw Oops.Bah("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; + } + else //绠变腑鎷f暟閲� + { + + if (boxInfoList.Count == 0) + { + throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); + } + if (boxInfoList.Count > 1) + { + throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) + { + throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); + } + EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); + + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; + + } + if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + } + else //绠辨敮鎷h揣 + { + PickType = "1"; + var qty = 0m; + + if (!string.IsNullOrWhiteSpace(boxNo3)) //鎷f敮 + { + + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) + { + throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); + } + if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) + { + throw Oops.Bah("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); + if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + qty = EditboxInfoList.Sum(m => m.Qty); + //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; + } + else //鎷g + { + + if (boxInfoList.Count == 0) + { + throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); + } + if (boxInfoList.Count > 1) + { + throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); + } + if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) + { + throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); + } + EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); + + if (EditboxInfo.Qty < decimal.Parse(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); + } + qty = EditboxInfoList.Sum(m => m.Qty); + //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; + } + if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + } + #endregion + + Db.BeginTran(); + #region + + + if (PickType == "0") + { + + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + var boxInfo = EditboxInfo; + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + BoxNo = boxInfo.BoxNo, + BoxNo2 = boxInfo.BoxNo2, + BoxNo3 = boxInfo.BoxNo3, + SkuNo = boxInfo.SkuNo, + SkuName = boxInfo.SkuName, + Standard = boxInfo.Standard, + LotNo = boxInfo.LotNo, + SupplierLot = boxInfo.SupplierLot, + CompleteQty = decimal.Parse(pickQty), + CreateTime = DateTime.Now, + CreateUser = userId + }; + Db.Insertable(sampleDetail).ExecuteCommand(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); + // if (!string.IsNullOrWhiteSpace(boxNo3)) + // { + // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); + // } + // sampldFirst.CompleteQty += decimal.Parse(pickQty); + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //鎷嗗寘鏈夋晥鏈熸洿鏀� + var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; + foreach (var item in boxInfoList) + { + item.BitBoxMark = "1"; + item.InspectMark = "1"; + + if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) + { + if (item.ProductionTime != null) + { + var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); + if (time < item.ExpirationTime) + { + item.ExpirationTime = time; + } + } + } + + } + Db.Updateable(boxInfoList).ExecuteCommand(); + + //搴撳瓨绠辩爜 + boxInfo.Qty -= decimal.Parse(pickQty); + if (boxInfo.Qty == 0) + { + Db.Deleteable(boxInfo).ExecuteCommand(); + } + else + { + Db.Updateable(boxInfo).ExecuteCommand(); + } + //搴撳瓨鏄庣粏 + stockDetail.Qty -= decimal.Parse(pickQty); + if (stockDetail.Qty == 0) + { + Db.Deleteable(stockDetail).ExecuteCommand(); + } + else + { + Db.Updateable(stockDetail).ExecuteCommand(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= decimal.Parse(pickQty); + if (stock.Qty == 0) + { + Db.Deleteable(stock).ExecuteCommand(); + } + else + { + Db.Updateable(stock).ExecuteCommand(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + Db.Updateable(noticeDetail).ExecuteCommand(); + } + + } + + + #endregion + + #region 淇敼璇烽獙鍗� + + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + Db.Updateable(inspecd).ExecuteCommand(); + #endregion + + } + else + { + var sumQty = 0m; + foreach (var boxInfo in EditboxInfoList) + { + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + BoxNo = boxInfo.BoxNo, + BoxNo2 = boxInfo.BoxNo2, + BoxNo3 = boxInfo.BoxNo3, + SkuNo = boxInfo.SkuNo, + SkuName = boxInfo.SkuName, + Standard = boxInfo.Standard, + LotNo = boxInfo.LotNo, + SupplierLot = boxInfo.SupplierLot, + CompleteQty = boxInfo.Qty, + CreateTime = DateTime.Now, + CreateUser = userId + }; + await Db.Insertable(sampleDetail).ExecuteCommandAsync(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); + // if (!string.IsNullOrWhiteSpace(boxNo3)) + // { + // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); + // } + // sampldFirst.CompleteQty += boxInfo.Qty; + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //鎷嗗寘鏈夋晥鏈熸洿鏀� + var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; + + foreach (var item in boxInfoList) + { + item.BitBoxMark = "1"; + item.InspectMark = "1"; + if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) + { + if (item.ProductionTime != null) + { + var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); + if (time < item.ExpirationTime) + { + item.ExpirationTime = time; + } + } + } + } + await Db.Updateable(boxInfoList).ExecuteCommandAsync(); + + //搴撳瓨绠辩爜 + + await Db.Deleteable(boxInfo).ExecuteCommandAsync(); + + //搴撳瓨鏄庣粏 + stockDetail.Qty -= boxInfo.Qty; + if (stockDetail.Qty == 0) + { + await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stockDetail).ExecuteCommandAsync(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= boxInfo.Qty; + if (stock.Qty == 0) + { + await Db.Deleteable(stock).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stock).ExecuteCommandAsync(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + } + + } + + #endregion + + sumQty += boxInfo.Qty; + } + + #region 淇敼璇烽獙鍗� + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + + await Db.Updateable(inspecd).ExecuteCommandAsync(); + #endregion + } + + #endregion + + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw e; + } + } + + + //鍙栨牱鍑哄簱鎷h揣(鏁伴噺) + public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) + { + try + { + #region 鍒ゆ柇 + + if (string.IsNullOrWhiteSpace(qcNo)) + { + throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); + } + if (string.IsNullOrWhiteSpace(palletNo)) + { + throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); + } + var type = await GetSampleType2(palletNo); + if (type != "1") + { + throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱"); + } + if (string.IsNullOrWhiteSpace(pickQty)) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘涓虹┖"); + } + if (decimal.Parse(pickQty) <= 0) + { + throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0"); + } + + //璇烽獙鍗� + var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); + if (inspecd == null) + { + throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); + } + if (inspecd.Status == "0" || inspecd.Status == "3") + { + throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); + } + //搴撳瓨鏄庣粏淇℃伅 + var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo + && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stockDetail == null) + { + throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); + } + // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� + if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) + { + var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); + if (wareHouseData.Type != "2") + { + throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); + } + } + //搴撳瓨鎬昏〃 + var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (stock == null) + { + throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); + } + //鍏ュ簱鍗� + var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); + if (notice == null) + { + throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); + } + + #endregion + + //鍙栨牱鏄庣粏璁板綍琛� + var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); + var qty = decimal.Parse(pickQty); + //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; + + + #region 鍒ゆ柇鏁伴噺 + + if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) + { + throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); + } + //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 + if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) + { + throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); + } + + + #endregion + + #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� + + Db.BeginTran(); + + //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 + //{ + var sampleDetail = new BllSamplingDetails() + { + QcNo = qcNo, + ASNNo = inspecd.ASNNo, + PalletNo = palletNo, + SkuNo = stockDetail.SkuNo, + SkuName = stockDetail.SkuName, + Standard = stockDetail.Standard, + LotNo = stockDetail.LotNo, + SupplierLot = stockDetail.SupplierLot, + CompleteQty = qty, + CreateTime = DateTime.Now, + CreateUser = userId + }; + await Db.Insertable(sampleDetail).ExecuteCommandAsync(); + //} + //else + //{ + // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); + // sampldFirst.CompleteQty += qty; + // sampldFirst.UpdateTime = DateTime.Now; + // sampldFirst.UpdateUser = userId; + // Db.Updateable(sampldFirst).ExecuteCommand(); + //} + + #endregion + + #region 淇敼搴撳瓨涓夎〃 + + //搴撳瓨鏄庣粏 + stockDetail.Qty -= qty; + if (stockDetail.Qty == 0) + { + await Db.Deleteable(stockDetail).ExecuteCommandAsync(); + } + else + { + stockDetail.BitPalletMark = "1"; + stockDetail.InspectMark = "1"; + + await Db.Updateable(stockDetail).ExecuteCommandAsync(); + } + //搴撳瓨鎬昏〃 + stock.Qty -= qty; + if (stock.Qty == 0) + { + await Db.Deleteable(stock).ExecuteCommandAsync(); + } + else + { + await Db.Updateable(stock).ExecuteCommandAsync(); + } + + #endregion + + #region 淇敼鍏ュ簱鍗� + + //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� + if (notice.Status != "4") + { + var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); + if (noticeDetail.IsSampling == "0") + { + noticeDetail.IsSampling = "1"; + + await Db.Updateable(noticeDetail).ExecuteCommandAsync(); + } + + } + + + #endregion + + #region 淇敼璇烽獙鍗� + inspecd.Status = "2"; + inspecd.UpdateTime = DateTime.Now; + if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) + { + inspecd.Status = "3"; + } + await Db.Updateable(inspecd).ExecuteCommandAsync(); + #endregion + + //娣诲姞鎿嶄綔鏃ュ織璁板綍 + var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw e; + } + } + + #endregion //楠岃瘉鎵樼洏鏄惁瀛樺湪骞舵槸鍚﹀彲鍑哄簱 @@ -4269,659 +4929,7 @@ return data; } - //鍙栨牱鍑哄簱鎷h揣(鏍囩) - public async Task SampleSetPick(string qcNo, string palletNo, string boxNo, string boxNo3, string pickQty, int userId) - { - try - { - #region 鍒ゆ柇 - - if (string.IsNullOrWhiteSpace(qcNo)) - { - throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); - } - if (string.IsNullOrWhiteSpace(palletNo)) - { - throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); - } - var type = await GetSampleType2(palletNo); - if (type != "0") - { - throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏁伴噺椤电鍙栨牱"); - } - if (string.IsNullOrEmpty(boxNo)) - { - throw Oops.Bah("澶栫鏉$爜涓嶈兘涓虹┖"); - } - //if (!string.IsNullOrEmpty(boxNo3) && !string.IsNullOrEmpty(pickQty) && int.Parse(pickQty) > 0) - //{ - // throw new Exception("杩芥函鏉$爜鍜屾嫞璐ф暟閲忎笉鑳藉悓鏃惰緭鍏�"); - //} - - //璇烽獙鍗� - var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); - if (inspecd == null) - { - throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); - } - if (inspecd.Status == "0" || inspecd.Status == "3") - { - throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); - } - //搴撳瓨鏄庣粏淇℃伅 - var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stockDetail == null) - { - throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); - } - if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) - { - throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); - } - //绠辨敮淇℃伅 - var boxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); - //搴撳瓨鎬昏〃 - var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stock == null) - { - throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); - } - //鍏ュ簱鍗� - var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); - if (notice == null) - { - throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); - } - - #endregion - - //鍙栨牱鏄庣粏璁板綍琛� - var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); - - var isAddSampld = false; - var PickType = ""; //0鏁伴噺鎷h揣 1 绠辨敮鎷h揣 - var EditboxInfo = new DataBoxInfo(); - var EditboxInfoList = new List<DataBoxInfo>(); - - #region 鍒ゆ柇鎷h揣鏂瑰紡 鏁f敮 鏁伴噺 - - if (!string.IsNullOrEmpty(pickQty) && decimal.Parse(pickQty) > 0) //鏁伴噺鎷h揣 - { - PickType = "0"; - - if (!string.IsNullOrWhiteSpace(boxNo3)) //鏀腑鎷f暟閲� - { - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) - { - throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); - } - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) - { - throw Oops.Bah("鏀爜淇℃伅鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3); - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; - } - else //绠变腑鎷f暟閲� - { - - if (boxInfoList.Count == 0) - { - throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); - } - if (boxInfoList.Count > 1) - { - throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) - { - throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); - } - EditboxInfo = await Db.Queryable<DataBoxInfo>().FirstAsync(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo); - - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; - - } - if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - } - else //绠辨敮鎷h揣 - { - PickType = "1"; - var qty = 0m; - - if (!string.IsNullOrWhiteSpace(boxNo3)) //鎷f敮 - { - - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) == 0) - { - throw Oops.Bah("鏈煡璇㈠埌鏀爜淇℃伅"); - } - if (boxInfoList.Count(m => m.BoxNo3 == boxNo3) > 1) - { - throw Oops.Bah("鏀爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo && m.BoxNo3 == boxNo3).ToListAsync(); - if (EditboxInfoList.Sum(m => m.Qty) + sampld.Sum(m => m.CompleteQty) > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - qty = EditboxInfoList.Sum(m => m.Qty); - //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo && m.BoxNo3 == EditboxInfo.BoxNo3) == 0; - } - else //鎷g - { - - if (boxInfoList.Count == 0) - { - throw Oops.Bah("鏈湪鎵樼洏涓婃煡璇㈠埌绠辩爜淇℃伅锛岃鏍稿疄"); - } - if (boxInfoList.Count > 1) - { - throw Oops.Bah("绠辩爜鏁版嵁淇℃伅閿欒锛岃鏍稿疄"); - } - if (boxInfoList.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) - { - throw Oops.Bah("褰撳墠绠辩爜涓惈鏈夋敮鐮侊紝璇疯緭鍏ユ敮鐮佷俊鎭彇鏍�"); - } - EditboxInfoList = await Db.Queryable<DataBoxInfo>().Where(m => m.IsDel == "0" && m.StockDetailId == stockDetail.Id && m.BoxNo == boxNo).ToListAsync(); - - if (EditboxInfo.Qty < decimal.Parse(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘澶т簬绠卞唴鏁伴噺"); - } - qty = EditboxInfoList.Sum(m => m.Qty); - //isAddSampld = sampld.Count(m => m.PalletNo == palletNo && m.BoxNo == EditboxInfo.BoxNo) == 0; - } - if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - } - #endregion - - Db.BeginTran(); - #region - - - if (PickType == "0") - { - - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - var boxInfo = EditboxInfo; - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - BoxNo = boxInfo.BoxNo, - BoxNo2 = boxInfo.BoxNo2, - BoxNo3 = boxInfo.BoxNo3, - SkuNo = boxInfo.SkuNo, - SkuName = boxInfo.SkuName, - Standard = boxInfo.Standard, - LotNo = boxInfo.LotNo, - SupplierLot = boxInfo.SupplierLot, - CompleteQty = decimal.Parse(pickQty), - CreateTime = DateTime.Now, - CreateUser = userId - }; - Db.Insertable(sampleDetail).ExecuteCommand(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); - // if (!string.IsNullOrWhiteSpace(boxNo3)) - // { - // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); - // } - // sampldFirst.CompleteQty += decimal.Parse(pickQty); - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //鎷嗗寘鏈夋晥鏈熸洿鏀� - var unpackWarranty = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo).UnpackWarranty; - foreach (var item in boxInfoList) - { - item.BitBoxMark = "1"; - item.InspectMark = "1"; - - if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) - { - if (item.ProductionTime != null) - { - var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); - if (time < item.ExpirationTime) - { - item.ExpirationTime = time; - } - } - } - - } - Db.Updateable(boxInfoList).ExecuteCommand(); - - //搴撳瓨绠辩爜 - boxInfo.Qty -= decimal.Parse(pickQty); - if (boxInfo.Qty == 0) - { - Db.Deleteable(boxInfo).ExecuteCommand(); - } - else - { - Db.Updateable(boxInfo).ExecuteCommand(); - } - //搴撳瓨鏄庣粏 - stockDetail.Qty -= decimal.Parse(pickQty); - if (stockDetail.Qty == 0) - { - Db.Deleteable(stockDetail).ExecuteCommand(); - } - else - { - Db.Updateable(stockDetail).ExecuteCommand(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= decimal.Parse(pickQty); - if (stock.Qty == 0) - { - Db.Deleteable(stock).ExecuteCommand(); - } - else - { - Db.Updateable(stock).ExecuteCommand(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - Db.Updateable(noticeDetail).ExecuteCommand(); - } - - } - - - #endregion - - #region 淇敼璇烽獙鍗� - - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + decimal.Parse(pickQty) >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - Db.Updateable(inspecd).ExecuteCommand(); - #endregion - - } - else - { - var sumQty = 0m; - foreach (var boxInfo in EditboxInfoList) - { - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - BoxNo = boxInfo.BoxNo, - BoxNo2 = boxInfo.BoxNo2, - BoxNo3 = boxInfo.BoxNo3, - SkuNo = boxInfo.SkuNo, - SkuName = boxInfo.SkuName, - Standard = boxInfo.Standard, - LotNo = boxInfo.LotNo, - SupplierLot = boxInfo.SupplierLot, - CompleteQty = boxInfo.Qty, - CreateTime = DateTime.Now, - CreateUser = userId - }; - await Db.Insertable(sampleDetail).ExecuteCommandAsync(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo); - // if (!string.IsNullOrWhiteSpace(boxNo3)) - // { - // sampldFirst = sampld.First(m => m.PalletNo == palletNo && m.BoxNo == boxInfo.BoxNo && m.BoxNo3 == boxInfo.BoxNo3); - // } - // sampldFirst.CompleteQty += boxInfo.Qty; - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //鎷嗗寘鏈夋晥鏈熸洿鏀� - var unpackWarranty = (await Db.Queryable<SysMaterials>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo)).UnpackWarranty; - - foreach (var item in boxInfoList) - { - item.BitBoxMark = "1"; - item.InspectMark = "1"; - if (unpackWarranty > 0 && boxInfoList.Count(m => m.ProductionTime != null) > 0) - { - if (item.ProductionTime != null) - { - var time = DateTime.Parse(item.ProductionTime.ToString()).AddDays((double)unpackWarranty); - if (time < item.ExpirationTime) - { - item.ExpirationTime = time; - } - } - } - } - await Db.Updateable(boxInfoList).ExecuteCommandAsync(); - - //搴撳瓨绠辩爜 - - await Db.Deleteable(boxInfo).ExecuteCommandAsync(); - - //搴撳瓨鏄庣粏 - stockDetail.Qty -= boxInfo.Qty; - if (stockDetail.Qty == 0) - { - await Db.Deleteable(stockDetail).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stockDetail).ExecuteCommandAsync(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= boxInfo.Qty; - if (stock.Qty == 0) - { - await Db.Deleteable(stock).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stock).ExecuteCommandAsync(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - await Db.Updateable(noticeDetail).ExecuteCommandAsync(); - } - - } - - #endregion - - sumQty += boxInfo.Qty; - } - - #region 淇敼璇烽獙鍗� - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + sumQty >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - - await Db.Updateable(inspecd).ExecuteCommandAsync(); - #endregion - } - - #endregion - - - //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); - Db.CommitTran(); - } - catch (Exception e) - { - Db.RollbackTran(); - throw e; - } - } - - - //鍙栨牱鍑哄簱鎷h揣(鏁伴噺) - public async Task SampleSetQtyPick(string qcNo, string palletNo, string pickQty, int userId) - { - try - { - #region 鍒ゆ柇 - - if (string.IsNullOrWhiteSpace(qcNo)) - { - throw Oops.Bah("璇烽獙鍗曟嵁涓嶈兘涓虹┖"); - } - if (string.IsNullOrWhiteSpace(palletNo)) - { - throw Oops.Bah("鎵樼洏鍙蜂笉鑳戒负绌�"); - } - var type = await GetSampleType2(palletNo); - if (type != "1") - { - throw Oops.Bah("褰撳墠鎵樼洏璇峰湪鏍囩椤电鍙栨牱"); - } - if (string.IsNullOrWhiteSpace(pickQty)) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘涓虹┖"); - } - if (decimal.Parse(pickQty) <= 0) - { - throw Oops.Bah("鎷h揣鏁伴噺涓嶈兘灏忎簬绛変簬0"); - } - - //璇烽獙鍗� - var inspecd = await Db.Queryable<BllQualityInspectionRequest>().FirstAsync(m => m.IsDel == "0" && m.QcNo == qcNo); - if (inspecd == null) - { - throw Oops.Bah("鏈煡璇㈠埌璇烽獙鍗曚俊鎭�"); - } - if (inspecd.Status == "0" || inspecd.Status == "3") - { - throw Oops.Bah("璇烽獙鍗曠姸鎬侀敊璇紝璇锋牳瀹�"); - } - //搴撳瓨鏄庣粏淇℃伅 - var stockDetail = await Db.Queryable<DataStockDetail>().FirstAsync(m => m.IsDel == "0" && m.PalletNo == palletNo - && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stockDetail == null) - { - throw Oops.Bah("鏈湪搴撳瓨涓煡璇㈠嚭褰撳墠鎵樼洏淇℃伅"); - } - // 鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱鍐� - if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) - { - var wareHouseData = await Db.Queryable<SysWareHouse>().FirstAsync(m => m.IsDel == "0" && m.WareHouseNo == stockDetail.WareHouseNo); - if (wareHouseData.Type != "2") - { - throw Oops.Bah("褰撳墠鎵樼洏涓嶆槸搴撳鎵樼洏锛岃鏍稿疄"); - } - } - //搴撳瓨鎬昏〃 - var stock = await Db.Queryable<DataStock>().FirstAsync(m => m.IsDel == "0" && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (stock == null) - { - throw Oops.Bah("鏈煡璇㈠嚭搴撳瓨鎬讳俊鎭�"); - } - //鍏ュ簱鍗� - var notice = await Db.Queryable<BllArrivalNotice>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo); - if (notice == null) - { - throw Oops.Bah("鏈煡璇㈠埌鍏ュ簱鍗曚俊鎭�"); - } - - #endregion - - //鍙栨牱鏄庣粏璁板綍琛� - var sampld = await Db.Queryable<BllSamplingDetails>().Where(m => m.IsDel == "0" && m.QcNo == qcNo).ToListAsync(); - var qty = decimal.Parse(pickQty); - //var isAddSampld = sampld.Count(m => m.PalletNo == palletNo) == 0; - - - #region 鍒ゆ柇鏁伴噺 - - if (sampld.Sum(m => m.CompleteQty) + qty > inspecd.SamplingQty) - { - throw Oops.Bah("鍙栨牱鎬绘嫞璐ф暟閲忓ぇ浜庤楠屽崟鍙栨牱鏁伴噺"); - } - //鍒ゆ柇绠变腑鏄惁鍚湁鏀爜锛屾湁锛氫笉璁╂嫞鏁伴噺 - if (stockDetail.Qty - stockDetail.LockQty - stockDetail.FrozenQty < qty) - { - throw Oops.Bah("鎵樼洏涓婂彲鐢ㄦ暟閲忓皬浜庡彇鏍锋暟閲忥紝璇锋牳瀹為攣瀹氥�佸喕缁撴暟閲�"); - } - - - #endregion - - #region 娣诲姞鎴栦慨鏀瑰彇鏍锋槑缁� - - Db.BeginTran(); - - //if (isAddSampld) //娣诲姞鍙栨牱鏄庣粏 - //{ - var sampleDetail = new BllSamplingDetails() - { - QcNo = qcNo, - ASNNo = inspecd.ASNNo, - PalletNo = palletNo, - SkuNo = stockDetail.SkuNo, - SkuName = stockDetail.SkuName, - Standard = stockDetail.Standard, - LotNo = stockDetail.LotNo, - SupplierLot = stockDetail.SupplierLot, - CompleteQty = qty, - CreateTime = DateTime.Now, - CreateUser = userId - }; - await Db.Insertable(sampleDetail).ExecuteCommandAsync(); - //} - //else - //{ - // var sampldFirst = sampld.First(m => m.PalletNo == palletNo); - // sampldFirst.CompleteQty += qty; - // sampldFirst.UpdateTime = DateTime.Now; - // sampldFirst.UpdateUser = userId; - // Db.Updateable(sampldFirst).ExecuteCommand(); - //} - - #endregion - - #region 淇敼搴撳瓨涓夎〃 - - //搴撳瓨鏄庣粏 - stockDetail.Qty -= qty; - if (stockDetail.Qty == 0) - { - await Db.Deleteable(stockDetail).ExecuteCommandAsync(); - } - else - { - stockDetail.BitPalletMark = "1"; - stockDetail.InspectMark = "1"; - - await Db.Updateable(stockDetail).ExecuteCommandAsync(); - } - //搴撳瓨鎬昏〃 - stock.Qty -= qty; - if (stock.Qty == 0) - { - await Db.Deleteable(stock).ExecuteCommandAsync(); - } - else - { - await Db.Updateable(stock).ExecuteCommandAsync(); - } - - #endregion - - #region 淇敼鍏ュ簱鍗� - - //涓嶆槸涓婁紶瀹屾瘯鐨勪慨鏀瑰彇鏍风姸鎬� - if (notice.Status != "4") - { - var noticeDetail = await Db.Queryable<BllArrivalNoticeDetail>().FirstAsync(m => m.IsDel == "0" && m.ASNNo == inspecd.ASNNo && m.SkuNo == inspecd.SkuNo && m.LotNo == inspecd.LotNo); - if (noticeDetail.IsSampling == "0") - { - noticeDetail.IsSampling = "1"; - - await Db.Updateable(noticeDetail).ExecuteCommandAsync(); - } - - } - - - #endregion - - #region 淇敼璇烽獙鍗� - inspecd.Status = "2"; - inspecd.UpdateTime = DateTime.Now; - if (sampld.Sum(m => m.CompleteQty) + qty >= inspecd.SamplingQty) - { - inspecd.Status = "3"; - } - await Db.Updateable(inspecd).ExecuteCommandAsync(); - #endregion - - //娣诲姞鎿嶄綔鏃ュ織璁板綍 - var k = new OperationSOServer().AddLogOperationSo("PDA妯″潡", "鍙栨牱鎷h揣", qcNo, "鎷h揣", $"鍦≒DA涓婂璇烽獙鍗曞彿涓猴細{qcNo}鐨勬墭鐩樼爜涓猴細{palletNo}鐨勬嫞璐ф搷浣�", userId); - Db.CommitTran(); - } - catch (Exception e) - { - Db.RollbackTran(); - throw e; - } - } + #endregion -- Gitblit v1.8.0