From 5e2454c2a75cb70afc0d1933e5c29e02e21231e6 Mon Sep 17 00:00:00 2001 From: chengsc <Demo@DESKTOP-CPA90BF> Date: 星期一, 19 八月 2024 17:01:31 +0800 Subject: [PATCH] 测试流程,修改问题 --- Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs | 364 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 363 insertions(+), 1 deletions(-) diff --git a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs index 3fc7046..aa3f43a 100644 --- a/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/PalletBindServer.cs @@ -31,6 +31,366 @@ { } + #region 鎺ュ彛鏂规硶 + + //缁戝畾鐗╂枡鎵樼洏 + public void BindPalletStock(BoxPalletBindVm model, int userId) + { + try + { + #region 鍒ゆ柇 + + //鍒ゆ柇鎵樼洏鏄惁鍦ㄥ簱澶� + var stockDetail = Db.Queryable<DataStockDetail>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (stockDetail != null) + { + if (!string.IsNullOrWhiteSpace(stockDetail.LocatNo)) + { + throw new Exception("璇ユ墭鐩樺凡鏈夊簱瀛樹俊鎭紝璇锋牳瀹烇紒"); + } + return; + } + if (model.Type != "0" && model.Type != "1") + { + throw new Exception("鎵樼洏绫诲瀷閿欒"); + } + if (string.IsNullOrEmpty(model.PalletNo)) + { + throw new Exception("鎵樼洏鍙蜂笉鍙负绌�!"); + } + //鎵樼洏鏄惁瀛樺湪 + var pallet = Db.Queryable<SysPallets>().First(m => m.IsDel == "0" && m.PalletNo == model.PalletNo); + if (pallet == null) + { + throw new Exception("鏈煡璇㈠埌鎵樼洏淇℃伅锛岃鏍稿疄锛�"); + } + if (model.Detail.Count == 0) + { + throw new Exception("鎵樼洏缁戝畾鏄庣粏淇℃伅涓虹┖锛岃鏍稿疄"); + } + BllArrivalNotice notice = null; + BllArrivalNoticeDetail detail = null; + if (model.Type == "0") + { + //0锛氭垚鍝佸叆搴� 1锛氶噰璐叆搴� 3锛氶��璐у叆搴� 4锛氳溅闂翠綑鏂欏叆搴� 5锛氬叾瀹冨叆搴� 6锛氫唬鍌ㄥ叆搴� + if (string.IsNullOrEmpty(model.AsnNo)) + { + throw new Exception("鍗曟嵁鍙蜂笉鍙负绌�!"); + } + if (model.AsnDetailNo == 0) + { + throw new Exception("鍗曟嵁鏄庣粏涓嶅彲涓虹┖!"); + } + //鏍规嵁鍗曟嵁鍙疯幏鍙栧叆搴撳崟鎬诲崟 + notice = Db.Queryable<BllArrivalNotice>().First(a => a.IsDel == "0" && a.ASNNo == model.AsnNo && a.OrderCode == model.OrderCode); + if (notice.Status != "0" && notice.Status != "1" && notice.Status != "2") + { + throw new Exception("璇ュ崟鎹凡鍏冲崟!"); + } + if (notice.Type != "0") + { + throw new Exception("褰撳墠鍗曟嵁涓嶈兘鐢熶骇鎴愬搧鍏ュ簱锛岃鏍稿疄"); + } + if (string.IsNullOrEmpty(model.LotNo)) + { + throw new Exception("鎵规涓嶈兘涓虹┖!"); + } + // 楠岃瘉鍏ュ簱鍗曟槑缁嗘槸鍚﹀瓨鍦� + detail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.IsDel == "0" && m.Id == model.AsnDetailNo && m.ASNNo == model.AsnNo && m.LotNo == model.LotNo && m.SkuNo == model.SkuNo); + if (detail == null) + { + throw new Exception("褰撳墠鐗╂枡鍙婃壒娆′笌鍗曟嵁鏃犲叧鑱旓紝璇锋牳瀹�!"); + } + } + + #endregion + + Db.BeginTran(); + + var comTime = DateTime.Now; + + #region 鍖呰 + var package = Db.Queryable<SysPackag>().Where(m => m.IsDel == "0"); + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == model.SkuNo); + SysPackag pack = null; + if (model.Type == "0") + { + pack = package.First(m => m.IsDel == "0" && m.PackagNo == detail.PackagNo); + } + else + { + pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); + } + + var pNum = 0;//鎵樼洏鐗╁搧鏁伴噺 + var bNum = 0;//绠辩爜鐗╁搧鏁伴噺 + + if (pack == null) + { + throw new Exception("鑾峰彇鐗╂枡鍖呰澶辫触锛岃鏍稿疄!"); + } + if (pack.L5Num.HasValue) + { + pNum = (int)pack.L5Num; + bNum = (int)pack.L4Num; + } + else if (pack.L4Num.HasValue) + { + pNum = (int)pack.L4Num; + bNum = (int)pack.L3Num; + } + else if (pack.L3Num.HasValue) + { + pNum = (int)pack.L3Num; + bNum = (int)pack.L2Num; + } + else if (pack.L2Num.HasValue) + { + pNum = (int)pack.L2Num; + bNum = (int)pack.L1Num; + } + else if (pack.L1Num.HasValue) + { + pNum = (int)pack.L1Num; + bNum = (int)pack.L1Num; + } + if (pNum == 0 || bNum == 0) + { + throw new Exception($"缁戝畾澶辫触锛寋detail.SkuNo}鐗╁搧鍖呰鏈壘鍒帮紒"); + } + + #endregion + + #region 楠岃瘉鏄惁鍏佽绔嬪簱鍚屾墭鐩樹笉鍚岀墿鏂欏叆搴撴垨鍚屾墭鐩樺悓鐗╂枡涓嶅悓鎵规鍏ュ簱 + var list = model.Detail.GroupBy(m => new { m.SkuNo, m.LotNo }).ToList(); + + if (list.Count >= 2) + { + var funSetting = Db.Queryable<SysFunSetting>().First(a => a.IsDel == "0" && a.FunSetNo == "Fun045"); + if (funSetting == null || funSetting.IsEnable == "OFF") + { + throw new Exception($"涓嶅厑璁哥珛搴撳悓鎵樼洏涓嶅悓鐗╂枡鍏ュ簱鎴栧悓鎵樼洏涓嶅悓鎵规鍏ュ簱锛�"); + } + } + + #endregion + + //鍒ゆ柇鎵樼洏缁戝畾淇℃伅涓槸鍚︽湁 + var bind = Db.Queryable<BllPalletBind>().First(m => m.IsDel == "0" && m.ASNDetailNo == model.AsnDetailNo && m.PalletNo == model.PalletNo && m.Status != "2"); + var bindId = 0; + if (bind == null) + { + bind = new BllPalletBind + { + ASNNo = model.AsnNo, + ASNDetailNo = model.AsnDetailNo, + PalletNo = model.PalletNo, + PalletNo2 = "", + PalletNo3 = "", + Qty = model.Qty, + FullQty = pNum, + Status = "0",//绛夊緟鎵ц + Type = model.Type, //鎵樼洏绫诲瀷 0鐗╂枡鎵� 1绌烘墭鐩樻墭 + LotNo = model.LotNo, + LotText = model.LotText, + SupplierLot = model.SupplierLot, + InspectMark = "0", //鏄惁鍙栨牱鎵樼洏 + //SamplingQty = 0, //鍙栨牱鏁伴噺 鍚庢湡涓氬姟寮�鍙戞椂 鎺ュ彛浼犲�奸渶娣诲姞瀵瑰簲瀛楁鍒ゆ柇 + BitPalletMark = model.Qty == pNum ? "0" : "1", + IsBale = "0", + IsBelt = "0", + CreateUser = userId, + + }; + if (bind.FullQty < bind.Qty) + { + throw new Exception("鎵樼洏缁戝畾鏁伴噺宸茶秴鍑鸿鐗╂枡鍖呰鏁伴噺"); + } + // 鎻掑叆鎵樼洏缁戝畾琛� + bindId = Db.Insertable(bind).ExecuteReturnIdentity(); + } + else + { + throw new Exception("缁勭洏淇℃伅閲嶅"); + } + + + #region 绠辩爜淇℃伅 + decimal factQty = 0.00m;//鎵樼洏鎬绘暟閲� + + var boxInfoList = new List<BllBoxInfo>(); + if (model.Type == "1")//鎵樼洏鎵� + { + if (model.Detail.Count > 1) + { + throw new Exception("绌烘墭鐩樼粦瀹氫俊鎭腑鏄庣粏閿欒锛岃秴杩囦簡涓ゆ潯鏄庣粏"); + } + //娣诲姞绠辩爜淇℃伅/绌烘墭鐩樻槑缁嗕俊鎭� + foreach (var box in model.Detail) + { + var boxInfo = new BllBoxInfo() + { + ASNNo = model.AsnNo, + ASNDetailNo = model.AsnDetailNo, + OrderCode = box.OrderCode, + BindNo = bindId, + BoxNo = box.BoxNo, + BoxNo2 = box.BoxNo2, + BoxNo3 = box.BoxNo3, + PalletNo = model.PalletNo, + Qty = box.Qty, + FullQty = box.FullQty, + Status = "1", + SkuNo = box.SkuNo, + SkuName = box.SkuName, + LotNo = box.LotNo, + LotText = box.LotText, + SupplierLot = model.SupplierLot, + ProductionTime = box.ProductionTime, + ExpirationTime = box.ExpirationTime, + CompleteTime = comTime, + InspectMark = box.InspectMark, + BitBoxMark = box.BitBoxMark, + InspectStatus = box.InspectStatus, + Origin = "WCS", + Standard = box.Standard, + PackageStandard = box.PackageStandard, + StoreTime = box.StoreTime, + CreateUser = userId, + CreateTime = comTime, + }; + + boxInfoList.Add(boxInfo); + factQty += box.Qty; + } + if (factQty > pNum) + { + throw new Exception($"缁戝畾澶辫触锛屾墭鐩樼粦瀹氭暟閲忓ぇ浜庤鐗╁搧鍖呰鏁伴噺锛�"); + } + } + else if (model.Type == "0")//鐗╂枡鎵� + { + if (model.Detail.Count(m => m.OrderCode != detail.OrderDetailCode) > 0) + { + throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐢熶骇宸ュ崟涓嶄竴鑷�"); + } + if (model.Detail.Count(m => m.SkuNo != model.SkuNo || m.LotNo != model.LotNo) > 0) + { + throw new Exception($"鎵樼洏缁戝畾鏄庣粏涓紝鍚湁绠辩爜鐗╂枡鎴栨壒娆′笉涓�鑷�"); + } + var boxGroup = model.Detail.GroupBy(m => m.BoxNo).ToList(); + foreach (var g in boxGroup) + { + decimal boxFullQty = 0;//绠卞唴鎬绘暟閲� + foreach (var box in g) + { + factQty += box.Qty; + boxFullQty += box.Qty; + var boxInfo = new BllBoxInfo() + { + ASNNo = model.AsnNo, + ASNDetailNo = model.AsnDetailNo, + OrderCode = box.OrderCode, + BindNo = bindId, + BoxNo = box.BoxNo, + BoxNo2 = box.BoxNo2, + BoxNo3 = box.BoxNo3, + PalletNo = model.PalletNo, + Qty = box.Qty, + FullQty = box.FullQty, + Status = "1",//宸茬粍鎵� + SkuNo = box.SkuNo, + SkuName = box.SkuName, + LotNo = box.LotNo, + LotText = box.LotText, + SupplierLot = model.SupplierLot, + ProductionTime = box.ProductionTime, + ExpirationTime = box.ExpirationTime, + CompleteTime = comTime, + InspectMark = box.InspectMark, + BitBoxMark = box.BitBoxMark, + InspectStatus = box.InspectStatus, + Origin = "WCS", + Standard = box.Standard, + PackageStandard = box.PackageStandard, + StoreTime = box.StoreTime, + QtyCount = (int)box.QtyCount, + QtyOrd = (int)box.QtyOrd, + CreateUser = userId, + CreateTime = comTime, + }; + boxInfoList.Add(boxInfo); + + } + if (boxFullQty > bNum) + { + throw new Exception($"缁戝畾澶辫触锛寋g.Key}绠辩爜缁戝畾鏁伴噺澶т簬璇ョ墿鍝佸寘瑁呮暟閲忥紒"); + } + } + } + + Db.Insertable(boxInfoList).ExecuteCommand(); + #endregion + + + if (factQty != bind.Qty) + { + throw new Exception("绠辩爜鏄庣粏鎬绘暟閲忎笉鍚屼簬鎵樼洏鎬绘暟閲忥紝璇锋牳瀹�"); + } + + #region 鍏ュ簱鍗曞強鏄庣粏 + if (model.Type == "0") + { + detail.FactQty += factQty;//宸茬粍鏁伴噺 + //detail.CompleteQty += factQty;//瀹屾垚鏁伴噺 + + detail.Status = "1";//0锛氱瓑寰呮墽琛� 1锛氭鍦ㄦ墽琛� 2锛氭墽琛屽畬鎴� + if (detail.CompleteQty >= detail.Qty) + { + detail.Status = "2"; + detail.CompleteTime = comTime; + } + detail.UpdateUser = userId; + detail.UpdateTime = comTime; + //鏇存柊鍏ュ簱鍗曟槑缁� + Db.Updateable(detail).ExecuteCommand(); + + notice.UpdateUser = userId; + notice.UpdateTime = comTime; + if (notice.Status == "0") + { + notice.Status = "1"; + } + var asnDetailNum = Db.Queryable<BllArrivalNoticeDetail>().Count(m => m.IsDel == "0" && m.ASNNo == detail.ASNNo && m.Status != "2"); + if (asnDetailNum == 0) + { + notice.Status = "2"; + notice.CompleteTime = comTime;//瀹屾垚鏃堕棿 + } + //鏇存柊鍏ュ簱鍗� + Db.Updateable(notice).ExecuteCommand(); + } + + #endregion + + // 鏇存敼鎵樼洏浣跨敤鐘舵�� + var sqlStr = $"update SysPallets set Status = '1' where PalletNo = '{model.PalletNo}';"; + //娣诲姞鎵樼洏璁板綍琛ㄦ暟鎹� + sqlStr += $"insert into LogPalletTrack values('{model.PalletNo}','{model.AsnNo}','缁勭洏','0',getDate(),{userId},NULL,NULL);"; + Db.Ado.ExecuteCommand(sqlStr); + new OperationASNServer().AddLogOperationAsn("PDA妯″潡", "鎵樼洏缁戝畾", model.AsnNo, "娣诲姞", $"娣诲姞浜嗘墭鐩樼爜涓猴細{model.PalletNo}鐨勭粍鐩樹俊鎭�", userId); + + Db.CommitTran(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + #endregion + #region 鎵樼洏缁戝畾 public List<PalletBindDto> GetPalletBindList(PalletBindVm model, out int count) { @@ -1770,10 +2130,11 @@ var oldTask = Db.Queryable<LogTask>().First(m => m.IsDel == "0" && m.TaskNo == oldTaskNo); oldTask.EndLocat = locate.LocatNo; oldTask.EndRoadway = locate.RoadwayNo; + oldTask.Msg += $"{roadwayNo}宸烽亾鍙�=>>{locate.LocatNo}鍌ㄤ綅鍦板潃"; if (oldTask.IsSuccess == 0) { oldTask.IsSuccess = 1; - oldTask.Status = "1"; + oldTask.Status = "1"; } Db.Updateable(oldTask).ExecuteCommand(); @@ -2045,6 +2406,7 @@ { locate.Status = "1"; Db.Updateable(locate).ExecuteCommand(); + Db.CommitTran(); return; } // 鍒ゆ柇鍌ㄤ綅鏄惁涓虹┖ -- Gitblit v1.8.0