| | |
| | | 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 |
| | | { |
| | |
| | | .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; |
| | |
| | | CreateTime = a.CreateTime, |
| | | UpdateTime = a.UpdateTime |
| | | }) |
| | | .OrderByDescending(a=>a.BoxNo) |
| | | .OrderByDescending(a => a.CreateTime) |
| | | .ToOffsetPage(model.Page, model.Limit, ref total); |
| | | count = total; |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | //获取标签箱码信息 |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | //获取标签模板根据入库单明细ID |
| | | 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.ExpirationTime = stoTime; |
| | | 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.ExpirationTime = stoTime; |
| | | 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); |
| | | |
| | | // 添加到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<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); |
| | | |
| | | // 添加到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}信息"); |
| | | } |
| | | //单位 |
| | | 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); |
| | | |
| | | // 添加到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<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); |
| | | |
| | | // 添加到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($"当前支码不是箱码内"); |
| | | } |
| | | |
| | | //单位 |
| | | 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); |
| | | |
| | | // 添加到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.unit = unitname.unit; |
| | | model.BoxNo = data.BoxNo3; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 160, 40, false); |
| | | |
| | | // 添加到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<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); |
| | | |
| | | // 添加到list集合 |
| | | 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); |
| | | |
| | | // 添加到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}箱码信息"); |
| | | } |
| | | //单位 |
| | | 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); |
| | | |
| | | // 添加到list集合 |
| | | 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); |
| | | |
| | | |
| | | // 添加到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<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); |
| | | |
| | | // 添加到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()) |
| | | { |
| | | //单位 |
| | | 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); |
| | | |
| | | // 添加到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<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); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | } |