From 2c4c080fc6e90d8c92355d779372cd24ae67b02e Mon Sep 17 00:00:00 2001 From: Administrator <Administrator@DESKTOP-JIE70N9> Date: 星期一, 26 五月 2025 16:13:51 +0800 Subject: [PATCH] 线边库标签打印 --- Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs | 370 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 358 insertions(+), 12 deletions(-) diff --git a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs index ad302b4..d4719d4 100644 --- a/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs +++ b/Wms/WMS.BLL/BllPdaServer/PdaAsnServer.cs @@ -25,6 +25,10 @@ using System.Security.Policy; using Newtonsoft.Json; using Utility.Tools; +using Model.ModelDto.SysDto; +using Model.ModelVm.SysVm; +using System.Security.Cryptography.X509Certificates; +using AutoMapper.Configuration.Annotations; namespace WMS.BLL.BllPdaServer { @@ -2410,13 +2414,6 @@ } #endregion - - - - - - - // 鑾峰彇鍗曟嵁鍒楄〃 public List<ArrivalNoticeDto> GetArrivalNotices(ArrivalNoticeVm model) { @@ -2451,11 +2448,6 @@ throw ex; } } - - - - - // 鏍规嵁绠辩爜鎴栨墭鐩樺彿鑾峰彇绠辨敮淇℃伅 liudl public List<BoxInfoDto> GetBoxInfos(BoxInfoVm model) @@ -6354,5 +6346,359 @@ #endregion + #region 绾胯竟鏍囩 + /// <summary> + /// 鏍规嵁鐗╂枡缂栫爜銆佸悕绉拌幏鍙栫墿鏂欎俊鎭� + /// </summary> + /// <param name="model">缂栫爜 鍚嶇О</param> + /// <returns>鐗╂枡璇︾粏淇℃伅</returns> + public MaterialsDto GetSkuInfo(GetMaterialsVm model) + { + try + { + if (string.IsNullOrEmpty(model.SkuNo) && string.IsNullOrEmpty(model.SkuName)) + { + throw new Exception("璇疯緭鍏ョ墿鏂欑紪鐮佹垨鐗╂枡鍚嶇О!"); + } + + var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select< MaterialsDto>().ToList(); + if (skuModels.Count <= 0) + { + throw new Exception("鐗╂枡涓嶅瓨鍦紒"); + } + + return skuModels.First(); + } + catch (Exception ex) + { + throw ex; + } + } + + /// <summary> + /// 鐢熸垚鏉$爜鏍囩 + /// </summary> + /// <param name="model"></param> + /// <returns></returns> + /// <exception cref="Exception"></exception> + public List<BllBoxInfo> AddLabels(LabelsVm model) + { + try + { + if (decimal.TryParse(model.SkuNum, out decimal skuQty)) + { + if (skuQty <= 0) + { + throw new Exception("绠卞唴鏁伴噺涓嶈兘灏忎簬绛変簬0"); + } + } + else + { + throw new Exception("绠卞唴鏁伴噺璇疯緭鍏ユ暟瀛楋紒"); + } + + // 楠岃瘉鐗╂枡淇℃伅鏄惁瀛樺湪 + var skuModels = Db.Queryable<SysMaterials>().Where(m => (m.SkuNo == model.SkuNo || m.SkuName == model.SkuName) && m.IsDel == "0").Select<MaterialsDto>().ToList(); + if (skuModels.Count <= 0) + { + throw new Exception("鐗╂枡涓嶅瓨鍦紒"); + } + + + #region + var skuModel = skuModels.First(); + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == skuModel.PackagNo); + if (pack == null) + { + throw new Exception("鏈煡璇㈠埌褰撳墠鐗╂枡鐨勫寘瑁呬俊鎭�"); + } + + var packStr = ""; + if (!string.IsNullOrWhiteSpace(pack.L1Name)) + { + packStr += pack.L1Num + "/" + pack.L1Name; + } + if (!string.IsNullOrWhiteSpace(pack.L2Name)) + { + packStr += "-" + pack.L2Num + "/" + pack.L2Name; + } + if (!string.IsNullOrWhiteSpace(pack.L3Name)) + { + packStr += "-" + pack.L3Num + "/" + pack.L3Name; + } + if (!string.IsNullOrWhiteSpace(pack.L4Name)) + { + packStr += "-" + pack.L4Num + "/" + pack.L4Name; + } + if (!string.IsNullOrWhiteSpace(pack.L5Name)) + { + packStr += "-" + pack.L5Num + "/" + pack.L5Name; + } + #endregion + + #region 鍖呰鏌ヨ + + var bNum = 0;//绠辩墿鍝佹暟閲� + var zNum = 0;//鏀墿鍝佹暟閲� + var packLevel = 0; + + if (pack.L2Num.HasValue) + { + if (pack.L2Name != "鎵�") + { + packLevel = 1;//JC34椤圭洰鍙湁涓�绾ф爣绛� + 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绾ф爣绛炬墦鍗� + { + throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�"); + } + + if (skuQty > bNum * 5) + { + throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃"); + } + #endregion + var modelList = new List<BllBoxInfo>(); + var label = Db.Queryable<BllBoxInfo>().Where(m => m.LotNo == model.LotNo && m.SkuNo == model.SkuNo && m.IsDel == "0").ToList(); + + Db.BeginTran(); + if (packLevel == 1) + { + #region 涓�绾у寘瑁� + int labelNum = 1; + labelNum = int.Parse(Math.Ceiling(skuQty / bNum).ToString());//鏍囩鏁伴噺 + + + #region 鑾峰彇/鐢熸垚鎵规鍙� + string maxLotNoStr = ""; //鎵规鍙� + string maxBoxCode = ""; //绠辩爜鍙� + + maxLotNoStr = model.LotNo; + maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo); + #endregion + + for (int i = 1; i <= labelNum; i++) + { + decimal boxQty = 0; + if (i == labelNum) + { + // 鏈�鍚庝竴涓潯鐮� + var s = bNum * (i - 1); + if (bNum > skuQty - s) + { + boxQty = skuQty - s;// 鏁伴噺 + } + else + { + boxQty = bNum;// 鏁伴噺 + } + } + else + { + boxQty = bNum; // 鏁伴噺 + } + + //鑾峰彇绠辩爜 + if (string.IsNullOrWhiteSpace(maxBoxCode)) + { + var str = "B" + maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按 B 230201 0001 000001 + maxBoxCode = str; + } + else + { + maxBoxCode = maxBoxCode.Substring(0, maxBoxCode.Length - 6) + (int.Parse(maxBoxCode.Substring(maxBoxCode.Length - 6, 6)) + 1).ToString().PadLeft(6, '0'); + } + + // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛� + var labelModel = new BllBoxInfo() + { + BoxNo = maxBoxCode, + Qty = boxQty, + FullQty = bNum, + Status = "0", + SkuNo = model.SkuNo, + SkuName = model.SkuName, + LotNo = maxLotNoStr, + Standard = skuModel.Standard, + PackageStandard = packStr, + InspectMark = "0", + BitBoxMark = bNum > boxQty ? "1" : "0", + InspectStatus = "0", + + ProductionTime = DateTime.Parse(model.TimeFrom), + StoreTime = DateTime.Parse(model.TimeEnd), + ExpirationTime = DateTime.Parse(model.TimeEnd), + + Origin = "WMS鐢熸垚", + CreateUser = (int)model.userId, + CreateTime = DateTime.Now, + }; + + Db.Insertable(labelModel).ExecuteCommand(); + modelList.Add(labelModel); + } + + #endregion + } + else //(packLevel == 2) + { + #region 浜岀骇鍖呰 + + if (skuQty > bNum * 5) + { + throw new Exception("绠卞唴鏁伴噺澶т簬鍖呰5鍊嶏紝涓嶅彲鎵撳嵃"); + } + + var qty2 = skuQty; + 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 = ""; //鏀爜 + + maxCodestr2 = model.LotNo; + maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo); + maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿 + #endregion + + for (int i = 1; i <= labelNum2; i++)//绠辩爜鏍囩 + { + //绠卞唴鏁伴噺 + decimal boxQty = 0; + if (i == labelNum2) + { + // 鏈�鍚庝竴涓潯鐮� + var s = bNum * (i - 1); + if (bNum > qty2 - s) + { + boxQty = qty2 - s;// 鏁伴噺 + } + else + { + boxQty = bNum;// 鏁伴噺 + } + } + else + { + boxQty = bNum; // 鏁伴噺 + } + + //鑾峰彇绠辩爜 + if (string.IsNullOrWhiteSpace(maxboxcode2)) + { + maxboxcode2 = "B" + maxCodestr2 + "000001"; // 绠卞彿 鎵瑰彿+绗嚑绠� + } + else + { + maxboxcode2 = maxboxcode2.Substring(0, 11) + (int.Parse(maxboxcode2.Substring(11, 6)) + 1).ToString().PadLeft(6, '0'); + } + //鑾峰彇绠卞唴鏀爣绛炬暟閲� + if (i == labelNum2) + { + var isGo2 = false; + var sl = 0; + for (int j = 1; j <= labelNumZ2; j++) + { + if (isGo2) + { + break; + } + var s = bNum * (i - 1); + var s2 = zNum * (j - 1); + if (zNum >= qty2 - s - s2) + { + isGo2 = true; + } + sl++; + } + labelNumZ2 = sl; + } + + for (int j = 1; j <= labelNumZ2; j++)//鏈�灏忓崟浣嶆爣绛� + { + + decimal d = zNum; + if (i == labelNum2) + { + var s = bNum * (i - 1); + var s2 = zNum * (j - 1); + if (zNum >= qty2 - s - s2) + { + d = qty2 - s - s2; // 鏁伴噺 + } + } + + if (string.IsNullOrWhiteSpace(maxboxcode3)) + { + maxboxcode3 = "Z" + maxCodestr2 + "0001"; // 鏀彿 鎵瑰彿+绗嚑绠� + } + else + { + maxboxcode3 = maxboxcode3.Substring(0, 11) + (int.Parse(maxboxcode3.Substring(11, 4)) + 1).ToString().PadLeft(4, '0'); + } + + // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛� + var labelModel = new BllBoxInfo() + { + BoxNo = maxboxcode2, + BoxNo3 = maxboxcode3, + Qty = d, + FullQty = bNum, + Status = "0", + SkuNo = model.SkuNo, + SkuName = skuModel.SkuName, + LotNo = maxCodestr2, + Standard = skuModel.Standard, + PackageStandard = packStr, + InspectMark = "0", + BitBoxMark = bNum > boxQty ? "1" : "0", + InspectStatus = "0", + + ProductionTime = DateTime.Parse(model.TimeFrom), + StoreTime = DateTime.Parse(model.TimeEnd), + ExpirationTime = DateTime.Parse(model.TimeEnd), + + Origin = "WMS鐢熸垚", + CreateUser = (int)model.userId, + CreateTime = DateTime.Now, + }; + + Db.Insertable(labelModel).ExecuteCommand(); + modelList.Add(labelModel); + } + } + #endregion + } + Db.CommitTran(); + + return modelList; + } + catch (Exception ex) + { + Db.RollbackTran(); + throw new Exception(ex.Message); + } + } + #endregion + } } -- Gitblit v1.8.0