From 6d4a530d8c9012973eb90a01486e22c3f09a6eb6 Mon Sep 17 00:00:00 2001 From: Demo <Demo@DESKTOP-CPA90BF> Date: 星期五, 02 二月 2024 13:19:59 +0800 Subject: [PATCH] 合并箱码明细表和标签表 --- Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | 532 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 532 insertions(+), 0 deletions(-) diff --git a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs index bf8c471..e9f9f90 100644 --- a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs @@ -4,7 +4,10 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; +using Model.ModelDto.BllAsnDto; +using Utility.Tools; using WMS.BLL.LogServer; using WMS.DAL; using WMS.Entity.BllAsnEntity; @@ -395,5 +398,534 @@ } } + + //鑾峰彇鏍囩淇℃伅(鐢熸垚鏍囩) + public List<LabelBoxDto> AddLabelBoxReturn(int imId, string isReset, decimal arriveQty, string skuName, string standard, string packStandard, string skuNo, + string supplierLot, string productionTime, string expirationTime, string storeTime, int userId) + { + try + { + + #region 鍗曟嵁銆佺墿鏂欍�佸寘瑁呫�佹爣绛句俊鎭幏鍙� + + var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0"); + if (asnList == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅"); + } + var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0"); + if (asn == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅"); + } + //鐗╂枡 + var sku = Db.Queryable<SysMaterials>().First(m => m.IsDel == "0" && m.SkuNo == asnList.SkuNo); + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnList.PackagNo); + if (pack == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鍗曟嵁涓墿鏂欑殑鍖呰淇℃伅"); + } + //鏍囩琛� + var label = Db.Queryable<BllLabelBoxNo>().Where(m => m.IsDel == "0" && m.ASNDetailNo == imId).ToList(); + + + #endregion + + #region 鍖呰鏌ヨ + + var bNum = 0;//绠辩墿鍝佹暟閲� + var zNum = 0;//鏀墿鍝佹暟閲� + var packLevel = 0; + var isGo = true; + + if (pack.L5Num.HasValue) + { + if (pack.L5Name != "鎵�") + { + isGo = false; + packLevel = 5; + bNum = Convert.ToInt32(pack.L5Num); + } + } + if (pack.L4Num.HasValue && isGo) + { + if (pack.L4Name != "鎵�") + { + isGo = false; + packLevel = 4; + bNum = Convert.ToInt32(pack.L4Num); + } + } + if (pack.L3Num.HasValue && isGo) + { + if (pack.L4Name != "鎵�") + { + isGo = false; + packLevel = 3; + bNum = Convert.ToInt32(pack.L3Num); + } + } + if (pack.L2Num.HasValue) + { + packLevel = 2; + bNum = Convert.ToInt32(pack.L2Num); + + } + if (pack.L1Num.HasValue) + { + if (packLevel == 0) + { + packLevel = 1; + bNum = Convert.ToInt32(pack.L1Num); + } + zNum = Convert.ToInt32(pack.L1Num); + } + + if (packLevel <= 1)//鍖呰绛夌骇灏忎簬1锛屾寜鐓�1绾ф爣绛炬墦鍗� + { + packLevel = 1; + } + + #endregion + + if (packLevel == 1) + { + #region 涓�绾у寘瑁� + + // 鏍规嵁鐢ㄦ埛杈撳叆鐨勭鏁伴噺璁$畻闇�瑕佺殑鏉$爜鏁� + var labQty = label.Sum(m => m.Qty); + var qty = asnList.Qty - labQty;//褰撳墠鍗曟嵁鍓╀綑闇�瑕佹墦鍗扮殑鐗╂枡鏁伴噺(涓嶆槸鏍囩鏁伴噺) + if (qty <= 0) + { + throw new Exception("褰撳墠鍗曟嵁鐗╂枡鏍囩宸叉墦鍗板畬姣曪紝濡傛湁闇�瑕佽琛ユ墦"); + } + + #region 鍒拌揣鏁伴噺 + + if (arriveQty - qty > 0) + { + throw new Exception("鍒拌揣鏁伴噺澶т簬鏈墦鏍囩鏁伴噺锛岃閲嶆柊杈撳叆鍒拌揣鏁伴噺骞舵牳瀹�!"); + } + else + { + qty = arriveQty; + } + + #endregion + + int labelNum = 1; //鐢熶骇鏉$爜鏁伴噺 + if (zNum > 0) + { + labelNum = int.Parse(Math.Ceiling(qty / zNum).ToString());//鏍囩鏁伴噺 + } + else + { + throw new Exception("褰撳墠鍗曟嵁鐗╂枡鏄竴绾у寘瑁咃紝鏈煡璇㈠埌涓�绾у寘瑁呬俊鎭�"); + } + + #region 鑾峰彇/鐢熸垚鎵规鍙� + + string maxLotNoStr = ""; //鎵规鍙� + string maxBoxCode = ""; //绠辩爜鍙� + // 鐢熸垚鑷紪鎵瑰彿 + string toDayTime = DateTime.Now.ToString("yyyyMMdd"); + var diJiJian = 0; + + var maxLotNo = label.Max(a => a.LotNo); + var maxBoxNo = label.Max(a => a.BoxNo); + if (isReset == "0") + { + + maxLotNoStr = maxLotNo; + maxBoxCode = maxBoxNo; + if (string.IsNullOrWhiteSpace(maxLotNoStr)) + { + maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; + } + } + else + { + var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo); // 鑾峰彇浠婂ぉ鏈�澶ф壒娆″彿 + if (string.IsNullOrWhiteSpace(maxCode)) + { + maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; + } + else + { + var lotStr = maxCode.Substring(0, 6); + var timeStr = toDayTime.Substring(2, 6); + if (lotStr == timeStr) + { + maxLotNoStr = toDayTime.Substring(2, 6) + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0'); + } + else + { + maxLotNoStr = timeStr + "0001"; + } + + } + } + + #endregion + + var modelList = new List<LabelBoxDto>(); + + for (int i = 1; i <= labelNum; i++) + { + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + LabelBoxDto model = new LabelBoxDto(); + model.AsnDetailNo = imId; + model.SkuNo = asnList.SkuNo; + model.SkuName = asnList.SkuName; + + model.SupplierName = asn.CustomerName; // 渚涘簲鍟� + + model.Standard = asnList.Standard; // 瑙勬牸 + model.PackageStandard = packStandard; + model.SupplierLot = supplierLot; // 鍘傚鎵瑰彿 + model.LotNo = maxLotNoStr; //鎵规 + + model.ProductionTime = DateTime.Parse(productionTime); // 鐢熶骇鏃ユ湡 + model.StoreTime = DateTime.Parse(storeTime); // 鍌ㄥ瓨鏈熻嚦 + model.ExpirationTime = DateTime.Parse(expirationTime); // 鏈夋晥鏈熻嚦/璐瓨鏈� + if (i == labelNum) + { + // 鏈�鍚庝竴涓潯鐮� + var s = zNum * (i - 1); + if (zNum > qty - s) + { + model.Qty = qty - s;// 鏁伴噺 + } + else + { + model.Qty = zNum;// 鏁伴噺 + } + } + else + { + model.Qty = zNum; // 鏁伴噺 + } + + + if (maxBoxCode == "") + { + var str = model.LotNo + "000001"; + model.BoxNo = str; // 鏀彿 鎵瑰彿+ 娴佹按 2302010001000001 + maxBoxCode = model.BoxNo; + } + else + { + model.BoxNo = maxBoxCode.Substring(0, 10) + (int.Parse(maxBoxCode.Substring(10, 6)) + 1).ToString().PadLeft(6, '0'); + maxBoxCode = model.BoxNo; + } + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50); + + // 娣诲姞鍒發ist闆嗗悎 + modelList.Add(model); + + // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛� + var labelModel = new BllLabelBoxNo() + { + ASNNo = asnList.ASNNo, + ASNDetailNo = asnList.Id, + BoxNo = model.BoxNo, + ParentBoxNo = "", + Qty = model.Qty, + SkuNo = model.SkuNo, + SkuName = model.SkuName, + Standard = model.Standard, + PackageStandard = model.PackageStandard, + + LotNo = model.LotNo, + SupplierName = asn.CustomerName, + ProductionTime = model.ProductionTime, + SupplierLot = model.SupplierLot, + StoreTime = model.StoreTime, + ExpirationTime = model.ExpirationTime, + IsUse = "0", + Level = "1", + + CreateUser = userId, + CreateTime = DateTime.Now, + }; + + Db.Insertable(labelModel).ExecuteCommand(); + + } + + #endregion + } + else //(packLevel == 2) + { + #region 浜岀骇鍖呰 + + // 鏍规嵁鐢ㄦ埛杈撳叆鐨勭鏁伴噺璁$畻闇�瑕佺殑鏉$爜鏁� + var labQty = label.Sum(m => m.Qty); + var qty2 = asnList.Qty - labQty; + if (qty2 <= 0) + { + throw new Exception("褰撳墠鍗曟嵁鐗╂枡鏍囩宸叉墦鍗板畬姣曪紝濡傛湁闇�瑕佽琛ユ墦"); + } + + #region 澧炲姞鍒拌揣鏁伴噺 + + if (arriveQty - qty2 > 0) + { + throw new Exception("鍒拌揣鏁伴噺澶т簬鏈墦鏍囩鏁伴噺锛岃閲嶆柊杈撳叆鍒拌揣鏁伴噺!"); + } + else + { + qty2 = arriveQty; + } + #endregion + + int labelNum2 = 1; //鐢熶骇绠辨潯鐮佹暟閲� + + labelNum2 = int.Parse(Math.Ceiling(qty2 / bNum).ToString()); + + + + var ss = bNum / zNum; //姣忕鏀爣绛炬暟閲� + var labelNumZ2 = Math.Ceiling((decimal)ss); + + #region 鑾峰彇/鐢熸垚鎵规鍙� + + string maxCodestr2 = ""; //鎵规 + string maxboxcode2 = ""; //绠辩爜 + string maxboxcode3 = ""; //鏀爜 + // 鐢熸垚鑷紪鎵瑰彿 + string toDayTime2 = DateTime.Now.ToString("yyyyMMdd"); + if (isReset == "0") + { + var maxCode = label.Max(a => a.LotNo); + var boxCode1 = label.Where(m => m.Level == "1").Max(a => a.BoxNo);//绠卞彿 + var boxCode2 = label.Where(m => m.Level == "2").Max(a => a.BoxNo);//鏀彿 + maxCodestr2 = maxCode; + maxboxcode2 = boxCode1; + maxboxcode3 = boxCode2; + if (string.IsNullOrWhiteSpace(maxCodestr2)) + { + maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; + } + } + else + { + var maxCode = Db.Queryable<BllLabelBoxNo>().Max(a => a.LotNo); // 鑾峰彇浠婂ぉ鏈�澶ф壒娆″彿 + if (string.IsNullOrWhiteSpace(maxCode)) + { + maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; + } + else + { + var lotStr = maxCode.Substring(0, 6); + var timeStr = toDayTime2.Substring(2, 6); + if (lotStr == timeStr) + { + maxCodestr2 = timeStr + (int.Parse(maxCode.Substring(6, 4)) + 1).ToString().PadLeft(4, '0'); + } + else + { + maxCodestr2 = timeStr + "0001"; + } + + } + } + + #endregion + + var modelList = new List<LabelBoxDto>(); + + for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩 + { + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + LabelBoxDto model = new LabelBoxDto(); + model.AsnDetailNo = imId; + model.SkuNo = asnList.SkuNo; + model.SkuName = asnList.SkuName; + + model.Standard = asnList.Standard; // 瑙勬牸 + model.PackageStandard = packStandard; + + model.SupplierLot = supplierLot; // 鍘傚鎵瑰彿 + model.LotNo = maxCodestr2; //鎵规 + + model.ProductionTime = DateTime.Parse(productionTime); // 鐢熶骇鏃ユ湡 + model.StoreTime = DateTime.Parse(storeTime); // 鍌ㄥ瓨鏈熻嚦 + model.ExpirationTime = DateTime.Parse(expirationTime); // 鏈夋晥鏈熻嚦/璐瓨鏈� + if (i == labelNum2) + { + // 鏈�鍚庝竴涓潯鐮� + var s = bNum * (i - 1); + if (bNum > qty2 - s) + { + model.Qty = qty2 - s;// 鏁伴噺 + } + else + { + model.Qty = bNum;// 鏁伴噺 + } + } + else + { + model.Qty = bNum; // 鏁伴噺 + } + + if (maxboxcode2 == "") + { + maxboxcode2 = model.LotNo + "000001"; + model.BoxNo = maxboxcode2; // 绠卞彿 鎵瑰彿+绗嚑绠� + maxboxcode2 = model.BoxNo; + } + else + { + model.BoxNo = maxboxcode2.Substring(0, 10) + (int.Parse(maxboxcode2.Substring(10, 6)) + 1).ToString().PadLeft(6, '0'); + maxboxcode2 = model.BoxNo; + } + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 80, 50); + + // 娣诲姞鍒發ist闆嗗悎 + modelList.Add(model); + + if (i == labelNum2) + { + var isGo2 = false; + var sl = 0; + for (int j = 1; j <= labelNumZ2; j++) + { + if (isGo2) + { + break; + } + var d = zNum; + if (i == labelNum2) + { + var s = bNum * (i - 1); + var s2 = zNum * (j - 1); + if (zNum >= qty2 - s - s2) + { + d = (int)(qty2 - s - s2); // 鏁伴噺 + isGo2 = true; + } + } + sl++; + } + labelNumZ2 = sl; + } + + for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛� + { + if (isGo) + { + break; + } + var d = zNum; + if (i == labelNum2) + { + var s = bNum * (i - 1); + var s2 = zNum * (j - 1); + if (zNum >= qty2 - s - s2) + { + d = (int)(qty2 - s - s2); // 鏁伴噺 + isGo = true; + } + } + //// 鐗╂枡鏉$爜淇℃伅璧嬪�� + //LabelPrint5Model model2 = new LabelPrint5Model(); + //model2.ImportId = imId; + //model2.OuterBillCode = list.OuterBillCode; + //model2.ImportBillCode = list.ImportBillCode; + //model2.SkuNo = list.GoodsCode; + //model2.SkuName = list.GoodsName; + //model2.QtyCount = (int)labelNumZ2; // 鎬讳欢鏁�(int)labelNumZ2 + + //model2.SupplierName = supplierName; // 鐢熶骇鍘傚 + //model2.ProductionDate = productionDate; // 鐢熶骇鏃ユ湡 + //model2.SapSkuNo = sapNo; // SAP浠g爜 + //model2.Standard = good.GoodsStandard; // 瑙勬牸 + //model2.SupplierLot = supplierLot; // 鍘傚鎵瑰彿 + + //model2.LotNo = maxCodestr2; //鎵规 + + + //model2.InspectTime = inspectTime; // 澶嶉獙鏈熻嚦 + //model2.ExpirationTime = expirationTime; // 鏈夋晥鏈熻嚦/璐瓨鏈� + //model2.ExpirationType = good.GoodsTemp; // 璐瓨鏉′欢 + //model2.Qty = d; // 鏁伴噺 + + //model2.QtyOrd = j; // 绗嚑浠� + //if (maxboxcode3 == "") + //{ + // var str = mesGood.PadRight(16, ' ') + model.LotNo.PadRight(12, ' ') + "0001"; + // model2.BoxCode = str; // 鏀彿 鎵瑰彿+绗嚑绠� + // maxboxcode3 = model2.BoxCode; + //} + //else + //{ + // model2.BoxCode = maxboxcode3.Substring(0, 28) + (int.Parse(maxboxcode3.Substring(28, 4)) + 1).ToString().PadLeft(4, '0'); + // maxboxcode3 = model2.BoxCode; + //} + + //model2.imageStr = Utility.Extra.BarcodeHelper.GetQrCodeBase64(model2.BoxCode, 85, 85); + //// 娣诲姞鍒發ist闆嗗悎 + + //if (printModel.Count(m => m.BoxCode.Length > 17) <= 100)//鎺掗櫎寰呯鐮佸垽鏂敮鐮佹槸鍚﹀皬浜�100 + //{ + // printModel.Add(model2); + //} + //var guid = Guid.NewGuid().ToString("N"); + //// 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛� + //var LabelModel2 = new LabelPrint + //{ + // LabelID = guid, + // LabelStream = model.BoxCode, + // BoxCode1 = model2.BoxCode, + // GoodsCode = model2.SkuNo, + // GoodsName = model2.SkuName, + // GoodsStandard = model2.Standard, + // ImportLotNo = model2.LotNo, + // SupplierName = model2.SupplierName, + // ImportId = model2.ImportId, + // OuterBillCode = model2.OuterBillCode, + // ImportBillCode = model2.ImportBillCode, + // ProductionDate = model2.ProductionDate, + // SapSkuNo = model2.SapSkuNo, + // Qty = model2.Qty, + // SupplierLot = model2.SupplierLot, + // InspectTime = model2.InspectTime, + // ExpirationTime = model2.ExpirationTime, + // QtyCount = model2.QtyCount, + // QtyOrd = model2.QtyOrd, + // ExpirationType = model2.ExpirationType, + // BoxNum = bNum,//model.Qty, + + // BulkTank = model.Qty == bNum ? 0 : 1,//闆跺ご绠� + // BulkCase = 0,//闆跺ご鐩� + + // CreateUser = createUser, + // CreateTime = DateTime.Now, + // IsUse = 0 + //}; + + //DataContext.LabelPrint.InsertOnSubmit(LabelModel2); + } + + + } + + #endregion + } + + //return printModel; + + + throw new NotImplementedException(); + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + } } -- Gitblit v1.8.0