| | |
| | | } |
| | | } |
| | | |
| | | // 补打标签 |
| | | 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}信息"); |
| | | } |
| | | // 物料条码信息赋值 |
| | | 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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo,100, 25); |
| | | |
| | | // 添加到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}信息"); |
| | | } |
| | | // 物料条码信息赋值 |
| | | 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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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) |
| | | { |
| | | // 物料条码信息赋值 |
| | | 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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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(); |
| | | // 物料条码信息赋值 |
| | | 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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 100, 25); |
| | | |
| | | |
| | | // 添加到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}箱码信息"); |
| | | } |
| | | // 物料条码信息赋值 |
| | | 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 = BarcodeHelper.GetCodeBarBase64(model.BoxNo, 100, 25); |
| | | |
| | | // 添加到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; // 支号 |
| | | |
| | | model.ImgStr = BarcodeHelper.GetCodeBarBase64(model1.BoxNo, 100, 25); |
| | | |
| | | // 添加到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 |
| | | |
| | | //dataContext.WmsLabelPrintLog.InsertAllOnSubmit(printlog); |
| | | // dataContext.SubmitChanges(); |
| | | // return printModel; |
| | | return printModelList; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw new Exception(e.Message); |
| | | } |
| | | } |
| | | } |
| | | } |