using Model.InterFaceModel; using Model.ModelDto; using Model.ModelVm; 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; namespace WMS.BLL.BllAsnServer { public class BllBoxInfoServer : DbHelper, IBllBoxInfoServer { private static readonly SqlSugarScope Db = DataContext.Db; public BllBoxInfoServer() : base(Db) { } #region 箱支关系函数 //添加箱码信息 public string AddBoxInfo(BoxInfoVm model) { string strMessage = ""; string sqlString = string.Empty; try { if (string.IsNullOrEmpty(model.BoxNo)) { strMessage = "-1:箱码不可为空!"; return strMessage; } //if (string.IsNullOrEmpty(model.BoxNo2)) //{ // strMessage = "-1:盒码不可为空!"; // return strMessage; //} if (string.IsNullOrEmpty(model.BoxNo3)) { strMessage = "-1:支码不可为空!"; return strMessage; } if (string.IsNullOrEmpty(model.SkuNo)) { strMessage = "-1:物料编码不可为空!"; return strMessage; } if (string.IsNullOrEmpty(model.LotNo)) { strMessage = "-1:批次号不可为空!"; return strMessage; } if (model.Qty == null || model.Qty <= 0) { strMessage = "-1:实际数量必须大于0!"; return strMessage; } if (string.IsNullOrEmpty(model.ProductionTime)) { strMessage = "-1:生产日期不可为空!"; return strMessage; } // 验证是否重复 支/袋码 //sqlString += $@"select count(id) from BllBoxInfo where BoxNo3 = '{model.BoxNo3}' and IsDel = 0 "; //int rowCount = Db.Ado.GetInt(sqlString); var box1 = Db.Queryable().First(m => m.BoxNo3 == model.BoxNo3 && m.IsDel == "0"); if (box1 != null) { strMessage = "-1:重复数据!"; return strMessage; } // 获取物料信息 //sqlString = "select tb1.SkuNo,tb1.SkuName,tb1.Warranty, "; //sqlString += "case tb2.level when 5 then tb2.L4Num when 4 then tb2.L3Num when 3 then tb2.L2Num else 0 end as FullQty "; //sqlString += "from SysMaterials as tb1 left join SysPackag as tb2 on tb1.PackagNo = tb2.PackagNo "; //sqlString += $"where SkuNo = '{model.SkuNo}' and tb1.IsDel = '0';"; //var materialModel = Db.Ado.SqlQuery(sqlString); var materialModel = Db.Queryable() .LeftJoin((tb1, tb2) => tb1.PackagNo == tb2.PackagNo) .Where(tb1 => tb1.SkuNo == model.SkuNo && tb1.IsDel == "0") .Select((tb1, tb2) => new BoxInfoVm { SkuNo = tb1.SkuNo, SkuName = tb1.SkuName, Warranty = tb1.Warranty, FullQty = SqlFunc.IF(tb2.Level == 5).Return(tb2.L4Num) .ElseIF(tb2.Level == 4).Return(tb2.L3Num) .ElseIF(tb2.Level == 3).Return(tb2.L2Num).End(0) }).ToList(); if (materialModel.Count <= 0) { strMessage = "-1:该物料信息不存在!"; return strMessage; } DateTime Ptime = DateTime.Parse(model.ProductionTime); double dayNum = (int)materialModel[0].Warranty; model.ExpirationTime = Ptime.AddDays(dayNum); if (string.IsNullOrEmpty(model.InspectMark)) { model.InspectMark = "0"; } if (string.IsNullOrEmpty(model.BitBoxMark)) { model.BitBoxMark = "0"; } var sku = Db.Queryable().First(m => m.SkuNo == model.SkuNo); if (sku == null) { throw new Exception("未查询到物料信息"); } #region 包装信息 //string str = $"select SUM(Qty) Qty from BllBoxInfo where IsDel = '0' and BoxNo = '{model.BoxNo}'"; ////获取箱码信息 //var box = Db.Ado.SqlQuerySingle(str); var boxs = Db.Queryable().Where(m => m.IsDel == "0" && m.BoxNo == model.BoxNo).Select(m => new BoxInfoVm { Qty = SqlFunc.AggregateSum(m.Qty) }); var box = boxs.First(); if (box.Qty == null) { box.Qty = 0; } box.Qty = box.Qty + model.Qty; var package = Db.Queryable().Where(m => m.IsDel == "0"); var pack = package.First(m => m.IsDel == "0" && m.PackagNo == sku.PackagNo); var pNum = 0;//物品包装数量 if (pack.L5Num.HasValue) { pNum = (int)pack.L5Num; } if (pack.L4Num.HasValue) { pNum = (int)pack.L4Num; } if (pack.L3Num.HasValue) { pNum = (int)pack.L3Num; } if (pack.L2Num.HasValue) { pNum = (int)pack.L2Num; if (pack.L2Name == "箱") { if (box.Qty > (int)pack.L2Num) { throw new Exception($"绑定失败,箱支{model.BoxNo}实际数量大于物品包装数量!"); } } } if (pack.L1Num.HasValue) { pNum = (int)pack.L1Num; if (pack.L1Name == "支" || pack.L1Name == "盒" || pack.L1Name == "袋" || pack.L1Name == "根" || pack.L1Name == "块") { if (model.Qty > (int)pack.L1Num) { throw new Exception($"绑定失败,箱支{model.BoxNo3}实际数量大于物品包装数量!"); } } } if (pNum == 0) { throw new Exception($"绑定失败,{sku.SkuNo}物品包装未找到!"); } #endregion // 插入信息 //sqlString = "Insert into BllBoxInfo (BoxNo,BoxNo2,BoxNo3,SkuNo,SkuName,LotNo,LotText,"; //sqlString += "Qty,FullQty,ProductionTime,ExpirationTime,InspectMark,InspectStatus,BitBoxMark,Origin,Status,CreateUser) values ( "; //sqlString += $"'{model.BoxNo}','{model.BoxNo2}','{model.BoxNo3}','{model.SkuNo}', "; //sqlString += $"'{materialModel[0].SkuName}','{model.LotNo}','{model.LotText}','{model.Qty}','{materialModel[0].FullQty}',"; //sqlString += $"'{model.ProductionTime}','{model.ExpirationTime}','{model.InspectMark}','{sku.IsInspect}','{model.BitBoxMark}" + // $"','{model.Origin}','0','{model.CreateUser}');"; //rowCount = Db.Ado.ExecuteCommand(sqlString); BllBoxInfo newboxModel = new BllBoxInfo() { BoxNo=model.BoxNo, BoxNo2 = model.BoxNo2, BoxNo3 = model.BoxNo3, SkuNo = model.SkuNo, SkuName = materialModel[0].SkuName, LotNo = model.LotNo, LotText = model.LotText, Qty = (decimal)model.Qty, FullQty = materialModel[0].FullQty, ProductionTime = DateTime.Parse(model.ProductionTime), ExpirationTime = model.ExpirationTime, InspectMark = model.InspectMark, InspectStatus = sku.IsInspect, BitBoxMark = model.BitBoxMark, Origin = model.Origin, Status = "0", CreateUser = (int)model.CreateUser }; var rowCount = Db.Insertable(newboxModel).ExecuteCommand(); if (rowCount <= 0) { strMessage = "-1:添加失败!"; } else { if (model.Origin == "录入") { new OperationASNServer().AddLogOperationAsn("入库作业", "箱支录入", model.BoxNo3, "添加", $"添加了箱码:{model.BoxNo}、追溯码:{model.BoxNo3}的箱支物料信息", Convert.ToInt32(model.CreateUser)); } } return strMessage; } catch (Exception ex) { throw new Exception(ex.Message); } } //删除箱码信息 public string DelBoxInfo(BoxInfoVm model) { string sqlString = string.Empty; try { var boxInfo = Db.Queryable().First(m => m.IsDel == "0" && m.Id == model.Id); if (boxInfo == null) { throw new Exception("未查询到信息"); } //开启事务 Db.Ado.BeginTran(); // 删除明细单 //sqlString += $"UPDATE BllBoxInfo SET IsDel = '1',"; //sqlString += $"UpdateTime = GETDATE(),UpdateUser = '{model.CreateUser}' "; //sqlString += $"WHERE Id = '{model.Id}' and Status = '0';"; //int rowCount = Db.Ado.ExecuteCommand(sqlString); var boxModel = Db.Queryable().First(m => m.Id == model.Id && m.Status == "0"); if (boxInfo.Status != "0") { return "-1:状态已变更无法删除!"; } boxInfo.IsDel = "1"; boxInfo.UpdateTime = DateTime.Now; boxInfo.UpdateUser = model.CreateUser; var boxInfoList = Db.Queryable().Where(m => m.IsDel == "0" && m.BoxNo == boxInfo.BoxNo && m.Id != model.Id).ToList(); if (boxInfoList.Count != 0) { foreach (var item in boxInfoList) { if (item.BitBoxMark == "1" || item.Status != "0") { continue; } item.BitBoxMark = "1"; } } Db.Updateable(boxInfo).ExecuteCommand(); Db.Updateable(boxInfoList).ExecuteCommand(); Db.Ado.CommitTran(); new OperationASNServer().AddLogOperationAsn("入库作业", "箱支录入", boxInfo.BoxNo3, "删除", $"删除了箱码:{boxInfo.BoxNo}、追溯码:{boxInfo.BoxNo3}的箱支物料信息", Convert.ToInt32(model.CreateUser)); return ""; } catch (Exception ex) { Db.Ado.RollbackTran(); throw new Exception(ex.Message); } } //获取箱码信息(未绑定托盘的箱码) public List GetBoxInfoList(BoxInfoVm model, out int count) { string sqlString = string.Empty; string sqlCount = string.Empty; string sqlPub = string.Empty; try { if (model.Page == 0) { model.Page = 1; } Expression> item = Expressionable.Create() .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo), it => it.BoxNo.Contains(model.BoxNo.Trim())) .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo2), it => it.BoxNo2.Contains(model.BoxNo2.Trim())) .AndIF(!string.IsNullOrWhiteSpace(model.BoxNo3), it => it.BoxNo3.Contains(model.BoxNo3.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.LotText), it => it.LotText.Contains(model.LotText.Trim())) .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 => model.Origin.Trim().Contains(it.Origin)) .And(m => m.SkuNo != "100099" && m.IsDel == "0" && m.Status == "0") .ToExpression();//注意 这一句 不能少 var total = 0; var data = GetAllWhereAsync(item) .LeftJoin((a, b) => a.CreateUser == b.Id) .LeftJoin((a, b, c) => a.CreateUser == c.Id) .Select((a, b, c) => new BoxInfoDto() { Id = a.Id, BoxNo = a.BoxNo, BoxNo2 = a.BoxNo2, BoxNo3 = a.BoxNo3, Status = a.Status, Origin = a.Origin, SkuNo = a.SkuNo, SkuName = a.SkuName, Qty = a.Qty, FullQty = a.FullQty, LotNo = a.LotNo, LotText = a.LotText, SupplierLot = a.SupplierLot, BitBoxMark = a.BitBoxMark, InspectStatus = a.InspectStatus, InspectMark = a.InspectMark, ProductionTime = a.ProductionTime, ExpirationTime = a.ExpirationTime, CreateUserName = b.RealName, UpdateUserName = c.RealName, CreateTime = a.CreateTime, UpdateTime = a.UpdateTime }) .OrderByDescending(a => a.CreateTime) .ToOffsetPage(model.Page, model.Limit, ref total); count = total; return data; } catch (Exception ex) { throw ex; } } //导入箱码信息 public string ImportBoxInfo(BoxInfoVms models) { string strMessage = ""; try { if (models.ListBoxInfo.Count <= 0) { strMessage = "-1:文件内无数据请核实!"; } var num = 0; int CreateUser = Convert.ToInt32(models.CreateUser); List boxList = new List(); foreach (BoxInfoVm model in models.ListBoxInfo) { try { model.CreateUser = models.CreateUser; model.Origin = "导入"; var msg = AddBoxInfo(model); strMessage += msg; if (msg == "") { num += 1; var hasBoxItem = boxList.Exists(x => x == model.BoxNo); if (!hasBoxItem) { boxList.Add(model.BoxNo); } } } catch { // ignored } } if (num > 0) { new OperationASNServer().AddLogOperationAsn("入库作业", "箱支录入", $"共导入了{boxList.Count}箱", "导入", $"共导入了{boxList.Count}箱,共导入了{num}支", CreateUser); } if (strMessage.Contains("-1") && num > 0) { return "部分导入成功" + strMessage; } if (num > 0) { return "导入成功" + strMessage; } return strMessage; } catch (Exception ex) { throw new Exception(ex.Message); } } //根据箱码获取未组盘的箱码信息 public List GetBoxInfoList(string boxCode, string isContinue, string boxCode2) { try { if (string.IsNullOrWhiteSpace(boxCode)) { return null; } var sql = $@" select BoxNo,SkuNo,SkuName,LotNo,sum(Qty) as Qty,Status from BllBoxInfo group by BoxNo,SkuNo,SkuName,LotNo,Status,IsDel "; if (isContinue == "1") { if (string.IsNullOrWhiteSpace(boxCode2)) { throw new Exception("开启连续组托时,尾箱码信息不可为空!"); } sql += $"having BoxNo >= '{boxCode}' and BoxNo <= '{boxCode2}' and Status = '0' and IsDel = '0' "; } else { sql += $"having BoxNo = '{boxCode}' and Status = '0' and IsDel = '0' "; } var data = Db.Ado.SqlQuery(sql); return data; } catch (Exception e) { throw new Exception(e.Message); } } //获取标签箱码信息 public List GetLabelBoxList(LabelBoxInfoVm model, out int count) { try { Expression> item = Expressionable.Create() .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((a, b) => a.CreateUser == b.Id) .LeftJoin((a, b, c) => a.UpdateUser == c.Id) .Select((a, b, c) => 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, SamplingQty = a.SamplingQty, SkuNo = a.SkuNo, SkuName = a.SkuName, Standard = a.Standard, PackageStandard = a.PackageStandard, LotNo = a.LotNo, LotText = a.LotText, 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 = (int)a.QtyCount, QtyOrd = (int)a.QtyOrd, CreateUserName = b.RealName, UpdateUserName = c.RealName, CreateTime = a.CreateTime, UpdateTime = a.UpdateTime }).OrderByDescending(a => a.CreateTime).OrderBy(a => a.BoxNo).ToOffsetPage(model.Page, model.Limit, ref total); count = total; return data; } catch (Exception e) { throw new Exception(e.Message); } } //获取标签模板根据入库单明细ID public BoxInfoDto GetLabelBoxModel(int id) { try { var asnDetail = Db.Queryable().First(m => m.Id == id && m.IsDel == "0"); if (asnDetail == null) { throw new Exception("未查询到单据明细信息,请核实"); } var packInfo = Db.Queryable().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.LotNo = asnDetail.LotNo; data.SupplierLot = asnDetail.SupplierLot; data.PackageStandard = str; return data; } catch (Exception e) { throw new Exception(e.Message); } } //获取标签信息(生成标签) public List AddLabelBox(int imId, string isReset, decimal arriveQty, string productionTime, string expirationTime, string storeTime, string supplierLot, int userId) { try { #region 单据、物料、包装、标签信息获取 var asnList = Db.Queryable().First(m => m.Id == imId && m.IsDel == "0"); if (asnList == null) { throw new Exception("未查询到单据明细信息"); } if (asnList.Qty<=0) { throw new Exception("单据数量不能小于等于0"); } if (string.IsNullOrWhiteSpace(asnList.LotNo)) { throw new Exception("单据批次号不能为空"); } var asn = Db.Queryable().First(m => m.ASNNo == asnList.ASNNo && m.IsDel == "0"); if (asn == null) { throw new Exception("未查询到单据信息"); } var pack = Db.Queryable().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().Where(m => m.IsDel == "0" && m.Origin == "WMS生成").ToList(); //验证已生成的标签数量+取样数量是否达到单据的计划数量 var imLabel = label.Where(m => m.ASNDetailNo == imId).Sum(m => m.Qty + (m.SamplingQty == null ? 0 : m.SamplingQty)); if (imLabel >= asnList.Qty) { throw new Exception("当前明细已生成足够数量的标签请核实。"); } #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("包装信息有误,小于一级"); } #endregion var modelList = new List(); var addLotNo = ""; if (arriveQty <= 0) { throw new Exception("到货数量不能小于等于0!"); } Db.BeginTran(); if (packLevel == 1) { #region 一级包装 #region 到货数量 // 根据用户输入的箱数量计算需要的条码数 //var labQty = label.Sum(m => m.Qty); //var qty = asnList.Qty - labQty;//当前单据剩余需要打印的物料数量(不是标签数量) //if (qty <= 0) //{ // throw new Exception("当前单据物料标签已打印完毕,如有需要请补打"); //} //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 / bNum).ToString());//标签数量 //} //else //{ // throw new Exception("当前单据物料是一级包装,未查询到一级包装信息"); //} #region 获取/生成批次号 string maxLotNoStr = ""; //批次号 string maxBoxCode = ""; //箱码号 maxLotNoStr = asnList.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 > qty - s) { boxQty = qty - 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() { 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 = DateTime.Parse(productionTime), StoreTime = DateTime.Parse(storeTime), ExpirationTime = DateTime.Parse(expirationTime), Origin = "WMS生成", CreateUser = userId, CreateTime = DateTime.Now, }; Db.Insertable(labelModel).ExecuteCommand(); modelList.Add(labelModel); } #endregion } else //(packLevel == 2) { #region 二级包装 #region 增加到货数量 // 根据用户输入的箱数量计算需要的条码数 //var labQty = label.Sum(m => m.Qty); //var qty2 = asnList.Qty - labQty; //if (qty2 <= 0) //{ // throw new Exception("当前单据物料标签已打印完毕,如有需要请补打"); //} //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 = ""; //支码 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);//支号 #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() { 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 = asnList.SupplierLot, InspectMark = "0", BitBoxMark = bNum > boxQty ? "1" : "0", InspectStatus = "0", ProductionTime = DateTime.Parse(productionTime), StoreTime = DateTime.Parse(storeTime), ExpirationTime = DateTime.Parse(expirationTime), Origin = "WMS生成", CreateUser = userId, CreateTime = DateTime.Now, }; Db.Insertable(labelModel).ExecuteCommand(); modelList.Add(labelModel); } } #endregion } Db.CommitTran(); return modelList; //throw new NotImplementedException(); } catch (Exception e) { Db.RollbackTran(); throw new Exception(e.Message); } } // 补打标签 public List GetBuDaLabelList(string boxNo, string endBoxNo, string boxNo2, string endBoxNo2, string type, int userId) { try { //打印数据集合 var printList = new List(); List printModelList = new List(); //List printlog = new List(); //标签表数据信息 var list = Db.Queryable().Where(m => m.IsDel == "0" && m.Origin == "WMS生成").ToList(); var funSet = Db.Queryable().First(m => m.IsDel == "0" && m.FunSetName == "物料码类型" && m.IsEnable == "NO"); var allotSet = 1;//分配规则设定 if (funSet != null) { switch (funSet.SetValue) { case "One": allotSet = 1;//一维条形码 break; case "Two": allotSet = 2;//二维码 break; default: allotSet = 1;// 默认:一维条形码、 break; } } #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}信息"); } // 物料条码信息赋值 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.BoxNo = data.BoxNo; // 箱号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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(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}信息"); } // 物料条码信息赋值 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.BoxNo = data.BoxNo; // 箱号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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}信息"); } // 物料条码信息赋值 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.BoxNo = data.BoxNo3; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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(sql); if (data2.Count == 0) { throw new Exception($"未查询到{boxNo2}-{endBoxNo2}中信息"); } var i = 0; foreach (var data in data2) { // 物料条码信息赋值 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.BoxNo = data.BoxNo3; // 箱号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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($"当前支码不是箱码内"); } // 物料条码信息赋值 箱码 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.BoxNo = data.BoxNo; // 箱号 model1.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model1.BoxNo, 85, 85); // 添加到list集合 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.BoxNo = data.BoxNo3; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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(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(); // 物料条码信息赋值 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.BoxNo = boxData.BoxNo; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 printModelList.Add(model); var i = 0; foreach (var item in data2) { // 物料条码信息赋值 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.BoxNo = item.BoxNo3; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model1.BoxNo, 85, 85); // 添加到list集合 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}箱码信息"); } // 物料条码信息赋值 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.BoxNo = boxData.BoxNo; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 printModelList.Add(model); if (data.Count(m => !string.IsNullOrWhiteSpace(m.BoxNo3)) > 0) //判断是否有支码 { var i = 0; foreach (var item in data) { // 物料条码信息赋值 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.BoxNo = item.BoxNo3; // 支号 model1.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model1.BoxNo, 85, 85); // 添加到list集合 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(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}箱码信息"); } // 物料条码信息赋值 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.BoxNo = boxData.BoxNo; // 支号 model.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model.BoxNo, 85, 85); // 添加到list集合 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()) { // 物料条码信息赋值 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.BoxNo = item.BoxNo3; // 支号 model1.ImgStr = allotSet == 1 ? BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 160, 40, false) : BarcodeHelper.GetQrCodeBase64(model1.BoxNo, 85, 85); // 添加到list集合 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 GetLotNoListByAsn(string asnNo) { try { var data = new List(); var asnList = Db.Queryable().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().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().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().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); } } #endregion #region 数据归档 /// /// 获取箱支关系信息-归档数据 /// /// 查询条件 /// 检索行数 /// public List GetArchivingBoxInfoList(BoxInfoVm model, out int count) { string sqlString = string.Empty; string sqlCount = string.Empty; string sqlPub = string.Empty; try { sqlCount += "SELECT COUNT(tb1.ID) FROM ArchivingBoxInfo AS tb1 "; sqlString += "SELECT tb1.*,tb2.RealName as CreateUserName,tb3.RealName as UpdateUserName FROM ArchivingBoxInfo AS tb1 "; sqlPub += "LEFT JOIN SysUserInfor AS tb2 ON tb1.CreateUser = tb2.Id "; sqlPub += "LEFT JOIN SysUserInfor AS tb3 ON tb1.UpdateUser = tb3.Id "; sqlPub += $"WHERE tb1.BoxNo LIKE '%{model.BoxNo}%' AND tb1.BoxNo3 LIKE '%{model.BoxNo3}%' "; sqlPub += $"AND tb1.SkuNo LIKE '%{model.SkuNo}%' AND tb1.LotNo LIKE '%{model.LotNo}%' "; sqlPub += $"AND tb1.LotText LIKE '%{model.LotText}%' "; if (!string.IsNullOrEmpty(model.InspectMark)) { sqlPub += $"AND tb1.InspectMark = '{model.InspectMark}' "; } if (!string.IsNullOrEmpty(model.BitBoxMark)) { sqlPub += $"AND tb1.BitBoxMark = '{model.BitBoxMark}' "; } if (!string.IsNullOrEmpty(model.ProductionTime)) { sqlPub += $"AND tb1.CreateTime = '{model.ProductionTime}' "; } sqlCount += sqlPub + "AND tb1.IsDel = '0' AND tb1.SkuNo != '100099'" ; sqlPub += "AND tb1.IsDel = '0' AND tb1.SkuNo != '100099' order by tb1.CreateTime desc "; if (model.Page == 0) { model.Page = 1; } sqlString += sqlPub + $" offset {((model.Page - 1) * model.Limit)} rows fetch next {model.Limit} rows only;"; var com = new Common(); count = com.GetRowCount(sqlCount); var modelList = Db.Ado.SqlQuery(sqlString); return modelList; } catch (Exception ex) { throw ex; } } #endregion } }