From 157abc191c34e57c1b958ae74fc3de6518ca8a30 Mon Sep 17 00:00:00 2001 From: zhaowc <526854230@qq.com> Date: 星期五, 28 二月 2025 11:06:36 +0800 Subject: [PATCH] 修改客户需求 --- Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs | 1484 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,483 insertions(+), 1 deletions(-) diff --git a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs index bf8c471..650d65e 100644 --- a/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs +++ b/Wms/WMS.BLL/BllAsnServer/BllBoxInfoServer.cs @@ -4,13 +4,21 @@ using SqlSugar; using System; using System.Collections.Generic; +using System.Linq; using System.Linq.Expressions; +using Model.ModelDto.BllAsnDto; +using Model.ModelVm.BllAsnVm; +using Utility.Tools; using WMS.BLL.LogServer; using WMS.DAL; using WMS.Entity.BllAsnEntity; using WMS.Entity.Context; using WMS.Entity.SysEntity; using WMS.IBLL.IBllAsnServer; +using ZXing; +using Model.ModelDto.BllCheckDto; +using WMS.Entity.BllCheckEntity; +using System.Data.SqlTypes; namespace WMS.BLL.BllAsnServer { @@ -260,7 +268,7 @@ .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime >= Convert.ToDateTime(model.ProductionTime)) .AndIF(!string.IsNullOrWhiteSpace(model.InspectMark), it => it.InspectMark == model.InspectMark.Trim()) .AndIF(!string.IsNullOrWhiteSpace(model.BitBoxMark), it => it.BitBoxMark == model.BitBoxMark.Trim()) - .AndIF(!string.IsNullOrWhiteSpace(model.Origin), it => it.Origin == model.Origin.Trim()) + .AndIF(!string.IsNullOrWhiteSpace(model.Origin), it => model.Origin.Trim().Contains(it.Origin)) .And(m => m.SkuNo != "100099" && m.IsDel == "0" && m.Status == "0") .ToExpression();//娉ㄦ剰 杩欎竴鍙� 涓嶈兘灏� var total = 0; @@ -292,6 +300,7 @@ CreateTime = a.CreateTime, UpdateTime = a.UpdateTime }) + .OrderByDescending(a=>a.BoxNo) .OrderByDescending(a => a.CreateTime) .ToOffsetPage(model.Page, model.Limit, ref total); count = total; @@ -395,5 +404,1478 @@ } } + + + //鑾峰彇鏍囩绠辩爜淇℃伅 + public List<BoxInfoDto> GetLabelBoxList(LabelBoxInfoVm model, out int count) + { + try + { + Expression<Func<BllBoxInfo, bool>> item = Expressionable.Create<BllBoxInfo>() + .AndIF(!string.IsNullOrWhiteSpace(model.AsnNo), it => it.ASNNo.Contains(model.AsnNo.Trim())) + .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo), it => it.BoxNo.Contains(model.BoxNo.Trim())) + .AndIF(!string.IsNullOrWhiteSpace(model.SkuNo), it => it.SkuNo.Contains(model.SkuNo.Trim())) + .AndIF(!string.IsNullOrWhiteSpace(model.LotNo), it => it.LotNo.Contains(model.LotNo.Trim())) + .AndIF(!string.IsNullOrWhiteSpace(model.SupplierLot), it => it.SupplierLot.Contains(model.SupplierLot.Trim())) + .AndIF(!string.IsNullOrWhiteSpace(model.Status), it => it.Status == model.Status) + .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime >= Convert.ToDateTime(model.ProductionTime)) + .AndIF(!string.IsNullOrWhiteSpace(model.ProductionTime), it => it.ProductionTime <= Convert.ToDateTime(model.ProductionTime).AddDays(1)) + .And(it => it.IsDel == "0" && it.Origin == "WMS鐢熸垚") + .ToExpression(); + + var total = 0; + var data = GetAllWhereAsync(item) + .LeftJoin<SysUserInfor>((a, b) => a.CreateUser == b.Id) + .LeftJoin<SysUserInfor>((a, b, c) => a.UpdateUser == c.Id) + .LeftJoin<SysMaterials>((a, b, c,d) => a.SkuNo == d.SkuNo) + .LeftJoin<SysUnit>((a, b, c, d,e) => d.UnitNo == e.UnitNo) + .Select((a, b, c,d,e) => new BoxInfoDto() + { + Id = a.Id, + ASNNo = a.ASNNo, + ASNDetailNo = a.ASNDetailNo, + BoxNo = a.BoxNo, + BoxNo2 = a.BoxNo2, + BoxNo3 = a.BoxNo3, + Qty = a.Qty, + FullQty = a.FullQty, + + SkuNo = a.SkuNo, + SkuName = a.SkuName, + Standard = a.Standard, + PackageStandard = a.PackageStandard, + + LotNo = a.LotNo, + LotText = a.LotText, + + unit = e.UnitName, + + Status = a.Status, + SupplierLot = a.SupplierLot, + + ProductionTime = a.ProductionTime, + ExpirationTime = a.ExpirationTime, + StoreTime = a.StoreTime, + CompleteTime = a.CompleteTime, + + InspectMark = a.InspectMark, + BitBoxMark = a.BitBoxMark, + InspectStatus = a.InspectStatus, + + Origin = a.Origin, + QtyCount = a.QtyCount, + QtyOrd = a.QtyOrd, + + + CreateUserName = b.RealName, + UpdateUserName = c.RealName, + CreateTime = a.CreateTime, + UpdateTime = a.UpdateTime + + }).OrderBy(a => a.BoxNo).OrderByDescending(a => a.CreateTime).ToOffsetPage(model.Page, model.Limit, ref total); + count = total; + return data; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + //鑾峰彇鏍囩妯℃澘鏍规嵁鍏ュ簱鍗曟槑缁咺D + public BoxInfoDto GetLabelBoxModel(int id) + { + try + { + var asnDetail = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == id && m.IsDel == "0"); + if (asnDetail == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅锛岃鏍稿疄"); + } + + var packInfo = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnDetail.PackagNo); + if (packInfo == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏涓殑鐗╂枡鍖呰淇℃伅"); + } + + var str = ""; + + if (!string.IsNullOrWhiteSpace(packInfo.L1Name)) + { + str += packInfo.L1Num + "/" + packInfo.L1Name; + } + if (!string.IsNullOrWhiteSpace(packInfo.L2Name)) + { + str += "-" + packInfo.L2Num + "/" + packInfo.L2Name; + } + if (!string.IsNullOrWhiteSpace(packInfo.L3Name)) + { + str += "-" + packInfo.L3Num + "/" + packInfo.L3Name; + } + if (!string.IsNullOrWhiteSpace(packInfo.L4Name)) + { + str += "-" + packInfo.L4Num + "/" + packInfo.L4Name; + } + if (!string.IsNullOrWhiteSpace(packInfo.L5Name)) + { + str += "-" + packInfo.L5Num + "/" + packInfo.L5Name; + } + + + var data = new BoxInfoDto(); + data.SkuNo = asnDetail.SkuNo; + data.SkuName = asnDetail.SkuName; + data.Standard = asnDetail.Standard; + data.SupplierLot = asnDetail.SupplierLot; + data.PackageStandard = str; + data.SupplierLot = asnDetail.SupplierLot; + return data; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + //鑾峰彇鏍囩淇℃伅(鐢熸垚鏍囩) + public List<BllBoxInfo> AddLabelBox(int imId, string isReset, decimal arriveQty, string productionTime, string expirationTime, string storeTime,string supplierLot, int userId) + { + try + { + + #region 鍗曟嵁銆佺墿鏂欍�佸寘瑁呫�佹爣绛句俊鎭幏鍙� + if (string.IsNullOrWhiteSpace(productionTime)) + { + throw new Exception("鐢熶骇鏃ユ湡涓嶈兘涓虹┖"); + } + if (!string.IsNullOrWhiteSpace(expirationTime) && !string.IsNullOrWhiteSpace(storeTime)) + { + throw new Exception("鏈夋晥鏈熷拰鍌ㄥ瓨鏈熶笉鑳藉悓鏃跺~鍐�"); + } + if (isReset != "0") + { + throw new Exception("涓嶅彲閲嶇疆鎵规"); + } + DateTime proTime; + DateTime expTime; + DateTime stoTime; + var bl1= DateTime.TryParse(productionTime, out proTime); + var bl2= DateTime.TryParse(expirationTime, out expTime); + var bl3= DateTime.TryParse(storeTime, out stoTime); + if (!bl1) + { + throw new Exception("鐢熶骇鏃ユ湡杞崲澶辫触"); + } + if (!bl2 && !string.IsNullOrWhiteSpace(expirationTime)) + { + throw new Exception("鏈夋晥鏈熻浆鎹㈠け璐�"); + } + if (!bl3 && !string.IsNullOrWhiteSpace(storeTime)) + { + throw new Exception("鍌ㄥ瓨鏈熻浆鎹㈠け璐�"); + } + var asnList = Db.Queryable<BllArrivalNoticeDetail>().First(m => m.Id == imId && m.IsDel == "0"); + if (asnList == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁鏄庣粏淇℃伅"); + } + //if (asnList.LotNo.Length != 10 && asnList.LotNo.Length != 11 && asnList.LotNo.Length != 12) + //{ + // throw new Exception("鍗曟嵁杩涘巶缂栧彿浣嶆暟闀垮害閿欒"); + //} + var asn = Db.Queryable<BllArrivalNotice>().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0"); + if (asn == null) + { + throw new Exception("鏈煡璇㈠埌鍗曟嵁淇℃伅"); + } + + var pack = Db.Queryable<SysPackag>().First(m => m.IsDel == "0" && m.PackagNo == asnList.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; + } + //鏍囩琛� + var label = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Origin == "WMS鐢熸垚").ToList(); + + + #endregion + + #region 鍖呰鏌ヨ + + var bNum = 0;//绠辩墿鍝佹暟閲� + var zNum = 0;//鏀墿鍝佹暟閲� + var packLevel = 0; + + if (pack.L2Num.HasValue) + { + if (pack.L2Name != "鎵�") + { + 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绾ф爣绛炬墦鍗� + { + throw new Exception("鍖呰淇℃伅鏈夎锛屽皬浜庝竴绾�"); + } + + #endregion + var modelList = new List<BllBoxInfo>(); + + var addLotNo = ""; + if (arriveQty <= 0) + { + throw new Exception("鍒拌揣鏁伴噺涓嶈兘灏忎簬绛変簬0!"); + } + Db.BeginTran(); + 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; + //} + + var 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"); + + if (isReset == "0") + { + //鍒ゆ柇鍗曟嵁鏄惁鏄綑鏂欓��鍥炲崟 + if (asn.Type == "4") + { + maxLotNoStr = asnList.LotNo; + maxBoxCode = label.Where(m=>m.LotNo == maxLotNoStr).Max(a => a.BoxNo); + if (string.IsNullOrWhiteSpace(maxLotNoStr)) + { + throw new Exception("杞﹂棿浣欐枡閫�鍥炲崟鎹壒娆′笉鑳戒负绌�"); + } + } + else + { + //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList(); + //if (labelCount.Count <= 0) + //{ + // throw new Exception("褰撳墠鍗曟嵁鏄庣粏杩樻湭鐢熸垚鏍囩锛岃閫夋嫨閲嶇疆鎵规閫夐」涓衡�樻槸鈥欙紱"); + //} + //maxLotNoStr = labelCount.Max(a => a.LotNo); + maxLotNoStr = asnList.LotNo; + //if (string.IsNullOrWhiteSpace(maxLotNoStr)) + //{ + // maxLotNoStr = toDayTime.Substring(2, 6) + "0001"; + //} + maxBoxCode = label.Where(m => m.LotNo == maxLotNoStr).Max(a => a.BoxNo); + } + + } + else + { + var maxCode = Db.Queryable<BllBoxInfo>().Where(m=>m.Origin == "WMS鐢熸垚").Max(a => a.LotNo); // 鑾峰彇浠婂ぉ鏈�澶ф壒娆″彿 20241013 + 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(maxCode.Length - 4, 4)) + 1).ToString().PadLeft(4, '0'); + } + else + { + maxLotNoStr = timeStr + "0001"; + } + + } + } + + addLotNo = maxLotNoStr; + #endregion + + + + for (int i = 1; i <= labelNum; i++) + { + decimal boxQty = 0; + if (i == labelNum) + { + // 鏈�鍚庝竴涓潯鐮� + var s = zNum * (i - 1); + if (zNum > qty - s) + { + boxQty = qty - s;// 鏁伴噺 + } + else + { + boxQty = zNum;// 鏁伴噺 + } + } + else + { + boxQty = zNum; // 鏁伴噺 + } + + //鑾峰彇绠辩爜 + if (string.IsNullOrWhiteSpace(maxBoxCode)) + { + var str = "B"+maxLotNoStr + "000001"; //鎵瑰彿+ 娴佹按 2302010001000001 + 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() + { + ASNNo = asnList.ASNNo, + ASNDetailNo = asnList.Id, + BoxNo = maxBoxCode, + Qty = boxQty, + FullQty = bNum, + Status = "0", + SkuNo = asnList.SkuNo, + SkuName = asnList.SkuName, + LotNo = maxLotNoStr, + Standard = asnList.Standard, + PackageStandard = packStr, + SupplierLot = supplierLot, + InspectMark = "0", + BitBoxMark = bNum > boxQty ? "1":"0", + InspectStatus = "0", + + ProductionTime = proTime, + + Origin = "WMS鐢熸垚", + CreateUser = userId, + CreateTime = DateTime.Now, + }; + if (bl2) + { + labelModel.ExpirationTime = expTime; + } + if (bl3) + { + labelModel.StoreTime = stoTime; + } + Db.Insertable(labelModel).ExecuteCommand(); + modelList.Add(labelModel); + } + + #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 + + + var qty2 = arriveQty; + 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") + { + //鍒ゆ柇鍗曟嵁鏄惁鏄綑鏂欓��鍥炲崟 + if (asn.Type == "4") + { + maxCodestr2 = asnList.LotNo; + maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo); + maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿 + if (string.IsNullOrWhiteSpace(maxCodestr2)) + { + throw new Exception("杞﹂棿浣欐枡閫�鍥炲崟鎹壒娆′笉鑳戒负绌�"); + } + } + else + { + //var labelCount = label.Where(m => m.ASNDetailNo == imId).ToList(); + //if (labelCount.Count <= 0) + //{ + // throw new Exception("褰撳墠鍗曟嵁鏄庣粏杩樻湭鐢熸垚鏍囩锛岃閫夋嫨閲嶇疆鎵规閫夐」涓衡�樻槸鈥欙紱"); + //} + //maxCodestr2 = labelCount.Max(a => a.LotNo); ; + maxCodestr2 = asnList.LotNo; + + //if (string.IsNullOrWhiteSpace(maxCodestr2)) + //{ + // maxCodestr2 = toDayTime2.Substring(2, 6) + "0001"; + //} + maxboxcode2 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo);//绠卞彿; + maxboxcode3 = label.Where(m => m.LotNo == maxCodestr2).Max(a => a.BoxNo3);//鏀彿; + } + + } + else + { + var maxCode = Db.Queryable<BllBoxInfo>().Where(m => m.Origin == "WMS鐢熸垚").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"; + } + + } + } + + addLotNo = maxCodestr2; + #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, maxboxcode2.Length - 6) + (int.Parse(maxboxcode2.Substring(maxboxcode2.Length-6, 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, maxboxcode3.Length - 4) + (int.Parse(maxboxcode3.Substring(maxboxcode3.Length - 4, 4)) + 1).ToString().PadLeft(4, '0'); + } + + //var ssss = d.ToString("0"); + //var sss = int.Parse(ssss); + + // 灏嗘潯鐮佷繚瀛樺埌鍘熸枡鏉$爜琛� + var labelModel = new BllBoxInfo() + { + ASNNo = asnList.ASNNo, + ASNDetailNo = asnList.Id, + BoxNo = maxboxcode2, + BoxNo3 = maxboxcode3, + Qty = d, + FullQty = bNum, + Status = "0", + SkuNo = asnList.SkuNo, + SkuName = asnList.SkuName, + LotNo = maxCodestr2, + Standard = asnList.Standard, + PackageStandard = packStr, + SupplierLot = supplierLot, + InspectMark = "0", + BitBoxMark = bNum > boxQty ? "1" : "0", + InspectStatus = "0", + + ProductionTime = proTime, + + Origin = "WMS鐢熸垚", + CreateUser = userId, + CreateTime = DateTime.Now, + }; + if (bl2) + { + labelModel.ExpirationTime = expTime; + } + if (bl3) + { + labelModel.StoreTime = stoTime; + } + Db.Insertable(labelModel).ExecuteCommand(); + modelList.Add(labelModel); + } + + + } + + #endregion + } + if (string.IsNullOrWhiteSpace(asnList.LotNo)) + { + asnList.LotNo = addLotNo; + Db.Updateable(asnList).ExecuteCommand(); + } + else + { + if (!asnList.LotNo.Contains(addLotNo)) + { + asnList.LotNo += ";" + addLotNo; + Db.Updateable(asnList).ExecuteCommand(); + } + } + Db.CommitTran(); + return modelList; + + + //throw new NotImplementedException(); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + // 琛ユ墦鏍囩 + public List<BoxInfoDto> GetBuDaLabelList(string boxNo, string endBoxNo, string boxNo2, string endBoxNo2, string type, int userId) + { + try + { + //鎵撳嵃鏁版嵁闆嗗悎 + var printList = new List<BoxInfoDto>(); + + List<BoxInfoDto> printModelList = new List<BoxInfoDto>(); + //List<WmsLabelPrintLog> printlog = new List<WmsLabelPrintLog>(); + //鏍囩琛ㄦ暟鎹俊鎭� + var list = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.Origin == "WMS鐢熸垚").ToList(); + + + + #region MyRegion + + switch (type) + { + case "1": + if (string.IsNullOrWhiteSpace(endBoxNo)) + { + #region 鍗曚釜绠辩爜鏍囩 + + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception($"璧峰绠辩爜涓嶈兘涓虹┖"); + } + var dataList = list.Where(m => m.BoxNo == boxNo); + var data = list.FirstOrDefault(m => m.BoxNo == boxNo); + if (data == null) + { + throw new Exception($"鏈煡璇㈠埌{boxNo}淇℃伅"); + } + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault() ; + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = data.SkuNo; + model.SkuName = data.SkuName; + model.LotNo = data.LotNo; //鎵规 + model.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + + model.Qty = dataList.Sum(m=>m.Qty);// 鏁伴噺 + model.unit = unitname.unit; + + model.BoxNo = data.BoxNo; // 绠卞彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo,160, 40,false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + + //娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = data.LabelStream; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + #endregion + } + else + { + #region 澶氫釜绠辩爜鏍囩 寮�濮�-缁撴潫 + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception("璧峰绠辩爜涓嶈兘涓虹┖"); + } + var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS鐢熸垚' and BoxNo >='{boxNo}' and BoxNo <= '{endBoxNo}'"; + var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql); + var data3 = data2.GroupBy(m => m.BoxNo).Select(m => m.Key).OrderBy(m => m).ToList(); + if (data3.Count == 0) + { + throw new Exception($"鏈煡璇㈠埌{boxNo}-{endBoxNo}涓俊鎭�"); + } + + var i = 0; + foreach (var item in data3) + { + var data1 = data2.Where(m => m.BoxNo == item); + var data = data2.FirstOrDefault(m => m.BoxNo == item); + if (data == null) + { + throw new Exception($"鏈煡璇㈠埌{item}淇℃伅"); + } + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = data.SkuNo; + model.SkuName = data.SkuName; + model.LotNo = data.LotNo; //鎵规 + model.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + + model.Qty = data1.Sum(m => m.Qty);// 鏁伴噺 + model.unit = unitname.unit; + + model.BoxNo = data.BoxNo; // 绠卞彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + i++; + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = data.LabelStream; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + if (i >= 100) + { + break; + } + } + + #endregion + } + break; + case "2": + if (string.IsNullOrWhiteSpace(endBoxNo2)) + { + #region 鍗曚釜鏀爜鏍囩 + + if (string.IsNullOrWhiteSpace(boxNo2)) + { + throw new Exception($"璧峰鏀爜涓嶈兘涓虹┖"); + } + var data = list.FirstOrDefault(m => m.BoxNo3 == boxNo2); + if (data == null) + { + throw new Exception($"鏈煡璇㈠埌{boxNo2}淇℃伅"); + } + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = data.SkuNo; + model.SkuName = data.SkuName; + model.LotNo = data.LotNo; //鎵规 + model.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + + model.Qty = data.Qty;// 鏁伴噺 + model.unit = unitname.unit; + + model.BoxNo = data.BoxNo3; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = data.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + + #endregion + } + else + { + #region 澶氫釜鏀爜鏍囩 寮�濮�-缁撴潫 + + if (string.IsNullOrWhiteSpace(boxNo2)) + { + throw new Exception("璧峰鏀爜涓嶈兘涓虹┖"); + } + + var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS鐢熸垚' and BoxNo3 >='{boxNo2}' and BoxNo3 <= '{endBoxNo2}'"; + var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql); + + if (data2.Count == 0) + { + throw new Exception($"鏈煡璇㈠埌{boxNo2}-{endBoxNo2}涓俊鎭�"); + } + + var i = 0; + foreach (var data in data2) + { + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = data.SkuNo; + model.SkuName = data.SkuName; + model.LotNo = data.LotNo; //鎵规 + model.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + + model.Qty = data.Qty;// 鏁伴噺 + model.unit = unitname.unit; + + model.BoxNo = data.BoxNo3; // 绠卞彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + i++; + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = data.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + if (i >= 100) + { + break; + } + } + + #endregion + } + break; + case "3": + if (string.IsNullOrWhiteSpace(endBoxNo)) + { + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception("璧峰绠辩爜涓嶈兘涓虹┖"); + } + #region 绠辩爜鍜岀鐮佸唴鐨勬敮鐮� + + if (!string.IsNullOrWhiteSpace(boxNo2)) + { + if (string.IsNullOrWhiteSpace(endBoxNo2)) //鍗曚釜鏀爜鍜岀鐮� + { + #region 鍗曚釜鏀爜鍜岀鐮� + + var dataList = list.Where(m => m.BoxNo == boxNo); + var data = list.FirstOrDefault(m => m.BoxNo3 == boxNo2); + if (data == null) + { + throw new Exception($"鏈煡璇㈠埌{boxNo2}淇℃伅"); + } + + if (data.BoxNo != boxNo)//鍒ゆ柇绠辩爜鏄惁鐩稿悓 + { + throw new Exception($"褰撳墠鏀爜涓嶆槸绠辩爜鍐�"); + } + + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + data.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� 绠辩爜 + BoxInfoDto model1 = new BoxInfoDto(); + model1.SkuNo = data.SkuNo; + model1.SkuName = data.SkuName; + model1.LotNo = data.LotNo; //鎵规 + model1.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model1.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model1.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model1.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model1.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model1.Qty = dataList.Sum(m=>m.Qty);// 鏁伴噺 + model1.unit = unitname.unit; + model1.BoxNo = data.BoxNo; // 绠卞彿 + + model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model1); + + // 鐗╂枡鏉$爜淇℃伅璧嬪�� 鏀爜 + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = data.SkuNo; + model.SkuName = data.SkuName; + model.LotNo = data.LotNo; //鎵规 + model.SupplierLot = data.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = data.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = data.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = data.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = data.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model.Qty = data.Qty;// 鏁伴噺 + model.unit = unitname.unit; + model.BoxNo = data.BoxNo3; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = data.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + #endregion + } + else//涓�绠卞唴鏌愬嚑涓敮鐮� + { + #region 鍗曚釜绠辩爜鍜屽涓敮鐮� + + var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS鐢熸垚' and BoxNo3 >='{boxNo2}' and BoxNo3 <= '{endBoxNo2}'"; + var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql); + + if (data2.Count == 0) + { + throw new Exception($"鏈煡璇㈠埌{boxNo2}-{endBoxNo2}涓俊鎭�"); + } + + if (data2.Count(m => m.BoxNo != boxNo) > 0) + { + throw new Exception($"{boxNo2}-{endBoxNo2}涓俊鎭湁涓嶅睘浜巤boxNo}绠辩爜鍐呯殑"); + } + + var data = list.Where(m => m.BoxNo == boxNo); + var boxData = data2.FirstOrDefault(); + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = boxData.SkuNo; + model.SkuName = boxData.SkuName; + model.LotNo = boxData.LotNo; //鎵规 + model.SupplierLot = boxData.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = boxData.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = boxData.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = boxData.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = boxData.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model.Qty = data.Sum(m => m.Qty); // 鏁伴噺 + model.unit = unitname.unit; + model.BoxNo = boxData.BoxNo; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + + var i = 0; + foreach (var item in data2) + { + //鍗曚綅 + sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; + unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model1 = new BoxInfoDto(); + model1.SkuNo = item.SkuNo; + model1.SkuName = item.SkuName; + model1.LotNo = item.LotNo; //鎵规 + model1.SupplierLot = item.SupplierLot; // 鍘熷巶鎵瑰彿 + model1.Standard = item.Standard; // 瑙勬牸/鍨嬪彿 + model1.PackageStandard = item.PackageStandard; // 鍖呰瑙勬牸 + + model1.ExpirationTime = item.ExpirationTime; // 鏈夋晥鏈熻嚦 + model1.StoreTime = item.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model1.Qty = item.Qty;// 鏁伴噺 + model1.unit = unitname.unit; + model1.BoxNo = item.BoxNo3; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + i++; + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = item.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + if (i >= 100) + { + break; + } + } + + #endregion + } + } + else //鏁寸鏀爜鍜屼竴涓鐮� + { + #region 鏁寸鏀爜鍜屼竴涓鐮� + + var data = list.Where(m => m.BoxNo == boxNo).ToList(); + var boxData = data.FirstOrDefault(); + if (boxData == null) + { + throw new Exception($"鏈煡璇㈠埌{boxNo}绠辩爜淇℃伅"); + } + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = boxData.SkuNo; + model.SkuName = boxData.SkuName; + model.LotNo = boxData.LotNo; //鎵规 + model.SupplierLot = boxData.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = boxData.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = boxData.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = boxData.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = boxData.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model.Qty = data.Sum(m => m.Qty); // 鏁伴噺 + model.unit = unitname.unit; + model.BoxNo = boxData.BoxNo; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + + if (data.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) //鍒ゆ柇鏄惁鏈夋敮鐮� + { + var i = 0; + foreach (var item in data) + { + //鍗曚綅 + sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; + unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model1 = new BoxInfoDto(); + model1.SkuNo = item.SkuNo; + model1.SkuName = item.SkuName; + model1.LotNo = item.LotNo; //鎵规 + model1.SupplierLot = item.SupplierLot; // 鍘熷巶鎵瑰彿 + model1.Standard = item.Standard; // 瑙勬牸/鍨嬪彿 + model1.PackageStandard = item.PackageStandard; // 鍖呰瑙勬牸 + + model1.ExpirationTime = item.ExpirationTime; // 鏈夋晥鏈熻嚦 + model1.StoreTime = item.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model1.Qty = item.Qty; // 鏁伴噺 + model1.unit = unitname.unit; + model1.BoxNo = item.BoxNo3; // 鏀彿 + + model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); + + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model1); + i++; + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = item.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + if (i >= 100) + { + break; + } + } + } + else + { + throw new Exception("褰撳墠绠卞唴娌℃湁鏀爜"); + } + #endregion + } + #endregion + } + else + { + if (string.IsNullOrWhiteSpace(boxNo)) + { + throw new Exception("璧峰绠辩爜涓嶈兘涓虹┖"); + } + + #region 澶氫釜绠辩爜鍜屽唴鏀爜 + + var sql = $@"select * from BllBoxInfo where IsDel = '0' and Origin = 'WMS鐢熸垚' and BoxNo >='{boxNo}' and BoxNo <= '{endBoxNo}'"; + var data2 = Db.Ado.SqlQuery<BllBoxInfo>(sql); + var data3 = data2.GroupBy(m => m.BoxNo).Select(m => m.Key).OrderBy(m => m).ToList(); + if (data3.Count == 0) + { + throw new Exception($"鏈煡璇㈠埌{boxNo}-{endBoxNo}涓俊鎭�"); + } + var i = 0; + var j = 0; + foreach (var demo in data3) + { + var data = list.Where(m => m.BoxNo == demo).ToList(); + var boxData = data.FirstOrDefault(); + if (boxData == null) + { + throw new Exception($"鏈煡璇㈠埌{demo}绠辩爜淇℃伅"); + } + //鍗曚綅 + var sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + boxData.SkuNo + "'"; + var unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model = new BoxInfoDto(); + model.SkuNo = boxData.SkuNo; + model.SkuName = boxData.SkuName; + model.LotNo = boxData.LotNo; //鎵规 + model.SupplierLot = boxData.SupplierLot; // 鍘熷巶鎵瑰彿 + model.Standard = boxData.Standard; // 瑙勬牸/鍨嬪彿 + model.PackageStandard = boxData.PackageStandard; // 鍖呰瑙勬牸 + + model.ExpirationTime = boxData.ExpirationTime; // 鏈夋晥鏈熻嚦 + model.StoreTime = boxData.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model.Qty = data.Sum(m => m.Qty); // 鏁伴噺 + model.unit = unitname.unit; + model.BoxNo = boxData.BoxNo; // 鏀彿 + + model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model); + + j++; + if (j >= 100) + { + break; + } + if (data.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) //鍒ゆ柇鏄惁鏈夋敮鐮� + { + foreach (var item in data.OrderBy(m => m.BoxNo3).ToList()) + { + //鍗曚綅 + sqlString = "select a.UnitName as unit from SysUnit a left join SysMaterials b on a.UnitNo = b.UnitNo where b.SkuNo = '" + item.SkuNo + "'"; + unitname = Db.Ado.SqlQuery<BoxInfoDto>(sqlString).FirstOrDefault(); + // 鐗╂枡鏉$爜淇℃伅璧嬪�� + BoxInfoDto model1 = new BoxInfoDto(); + model1.SkuNo = item.SkuNo; + model1.SkuName = item.SkuName; + model1.LotNo = item.LotNo; //鎵规 + model1.SupplierLot = item.SupplierLot; // 鍘熷巶鎵瑰彿 + model1.Standard = item.Standard; // 瑙勬牸/鍨嬪彿 + model1.PackageStandard = item.PackageStandard; // 鍖呰瑙勬牸 + + model1.ExpirationTime = item.ExpirationTime; // 鏈夋晥鏈熻嚦 + model1.StoreTime = item.StoreTime; // 鍌ㄥ瓨鏈熻嚦 + model1.Qty = item.Qty;// 鏁伴噺 + model1.unit = unitname.unit; + model1.BoxNo = item.BoxNo3; // 鏀彿 + + model1.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false); + + // 娣诲姞鍒發ist闆嗗悎 + printModelList.Add(model1); + i++; + ////娣诲姞鎵撳嵃璁板綍 + //WmsLabelPrintLog log = new WmsLabelPrintLog(); + //log.BoxCode = item.BoxCode1; + //log.CreateTime = DateTime.Now; + //log.Demo = Demo; + //log.Isdel = 0; + //log.CreateUser = userId; + //printlog.Add(log); + if (i >= 100) + { + break; + } + } + } + + } + + #endregion + } + break; + default: + throw new Exception("璇烽�夋嫨琛ユ墦绫诲瀷"); + } + + #endregion + + + + return printModelList; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + //鏍规嵁鍏ュ簱鍗曞彿杩囧幓鍗曟嵁涓嬫墍鏈夋壒娆″彿 + public List<string> GetLotNoListByAsn(string asnNo) + { + try + { + var data = new List<string>(); + var asnList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList(); + if (asnList.Count == 0) + { + throw new Exception("鏈煡璇㈠埌璇ュ崟鎹彿鐨勪俊鎭�"); + } + + foreach (var item in asnList) + { + if (string.IsNullOrWhiteSpace(item.LotNo)) + { + continue; + } + + var strList = item.LotNo.Split(";"); + foreach (var str in strList) + { + if (string.IsNullOrWhiteSpace(str)) + { + continue; + } + data.Add(str); + } + } + + return data; + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + //鍒犻櫎鍗曟嵁涓嬪崟涓垨澶氫釜鎵规鐨勬爣绛� + public void DelLabelByAsnNo(string asnNo,string lotNo, int userId) + { + try + { + var asnList = Db.Queryable<BllArrivalNoticeDetail>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList(); + if (asnList.Count == 0) + { + throw new Exception("鏈煡璇㈠埌璇ュ崟鎹彿鐨勪俊鎭�"); + } + + Db.BeginTran(); + + //鎵规涓虹┖锛氬綋鍓嶅崟鎹笅鎵�鏈夋壒娆$殑鏍囩鍏ㄩ儴鍒犻櫎锛� 鏈夋壒娆★細浼ゅ褰撳墠鍗曟嵁涓嬪綋鍓嶆壒娆$殑鏍囩 + if (string.IsNullOrWhiteSpace(lotNo)) //鍒犻櫎鍏ㄩ儴鏍囩 + { + var labelList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo).ToList(); + if (labelList.Count(m => m.Status != "0") >= 1) + { + throw new Exception("褰撳墠鍗曟嵁鎵规鐨勬爣绛惧凡鏈夊凡浣跨敤锛屼笉鑳藉垹闄�"); + } + + //foreach (var item in asnList) + //{ + // if (string.IsNullOrWhiteSpace(item.LotNo)) + // { + // continue; + // } + + // item.LotNo = ""; + // Db.Updateable(item).ExecuteCommand(); + + //} + Db.Deleteable(labelList).ExecuteCommand(); + } + else //鍒犻櫎鍥哄畾鎵规鏍囩 + { + var labelList = Db.Queryable<BllBoxInfo>().Where(m => m.IsDel == "0" && m.ASNNo == asnNo && m.LotNo == lotNo).ToList(); + if (labelList.Count(m=>m.Status != "0") >= 1 ) + { + throw new Exception("褰撳墠鍗曟嵁鎵规鐨勬爣绛惧凡鏈夊凡浣跨敤锛屼笉鑳藉垹闄�"); + } + + //foreach (var item in asnList) + //{ + // if (string.IsNullOrWhiteSpace(item.LotNo) || item.LotNo!=lotNo) + // { + // continue; + // } + + // var strList = item.LotNo.Split(";"); + // var updateLotNo = ""; + // foreach (var str in strList) + // { + // if (string.IsNullOrWhiteSpace(str) || str == lotNo) + // { + // continue; + // } + + // if (string.IsNullOrWhiteSpace(updateLotNo)) + // { + // updateLotNo = str; + // } + // else + // { + // updateLotNo += ";" + str; + // } + + // } + + // item.LotNo = updateLotNo; + // Db.Updateable(item).ExecuteCommand(); + + //} + Db.Deleteable(labelList).ExecuteCommand(); + } + + Db.CommitTran(); + + var msg = $"鍒犻櫎浜嗗崟鎹彿锛歿asnNo}"; + if (!string.IsNullOrWhiteSpace(lotNo)) + { + msg += $"銆佹壒娆″彿锛歿lotNo}"; + } + msg += "鐨勬爣绛句俊鎭�"; + + new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鐗╂枡鏍囩", asnNo, "鍒犻櫎", msg, userId); + } + catch (Exception e) + { + Db.RollbackTran(); + throw new Exception(e.Message); + } + } + + + //缂栬緫鏍囩鏁伴噺 + public void EditLabelQty(int id, string qty, int userId) + { + try + { + if (string.IsNullOrWhiteSpace(qty)) + { + throw new Exception("缂栬緫鏁伴噺涓嶅彲涓虹┖"); + } + var qtyData = 0m; + var isOk = decimal.TryParse(qty, out qtyData); + var boxInfo = Db.Queryable<BllBoxInfo>().First(m => m.IsDel == "0" && m.Id == id); + if (boxInfo == null) + { + throw new Exception("鏈煡璇㈠埌璇ユ爣绛句俊鎭�"); + } + + if (isOk) + { + if (qtyData <= 0) + { + throw new Exception("鏁伴噺涓嶈兘灏忎簬绛変簬0"); + } + boxInfo.Qty = qtyData; + + Db.Updateable(boxInfo).ExecuteCommand(); + } + else + { + throw new Exception("鏁伴噺杞崲澶辫触"); + } + + var msg = $"缂栬緫浜嗙鍙凤細{boxInfo.BoxNo}"; + if (!string.IsNullOrWhiteSpace(boxInfo.BoxNo3)) + { + msg += $"銆佹敮鍙凤細{boxInfo.BoxNo3}"; + } + msg += "鐨勬爣绛炬暟閲忎俊鎭�"; + + new OperationASNServer().AddLogOperationAsn("鍏ュ簱浣滀笟", "鐗╂枡鏍囩", boxInfo.BoxNo, "缂栬緫", msg, userId); + } + catch (Exception e) + { + throw new Exception(e.Message); + } + } + + } } -- Gitblit v1.8.0