/// <summary> /// 获取商品的打印条码的后三位 /// </summary> /// <param name="product"></param> /// <param name="prcou">打印数量</param> /// <returns></returns> private List <string> GetPrintBarcodeNumbs(ProductBarcodePrintInfo product, int prcou) { List <string> li = new List <string>(); string starFlg = "0"; if (product != null) { starFlg = product.CurPrintFlag; } lock (objlock) { string _key = "cur_barcode_flgnum_1109"; var tecurNum = CacheAccess.Get(_key) as string; if (!string.IsNullOrEmpty(tecurNum)) { starFlg = tecurNum; } } Math36 math = new Math36(); int curstar = (int)(math.To10(starFlg, 0)); for (int i = 0; i < prcou; i++) { curstar += 1; li.Add((math.To36(curstar)).PadLeft(3, '0')); } lock (objlock) { string _key = "cur_barcode_flgnum_1109"; CacheAccess.Set(_key, curstar, 2); } return(li); }
/// <summary> /// 打印完成 /// </summary> /// <returns></returns> public ActionResult PrintSuccess(BarcodeTem[] da, DateTime?PrintTime = null) { string[] nums = da.Select(c => c.ProductNumber).ToArray(); var products = _productContract.Products.Where(c => nums.Contains(c.ProductNumber)).DistinctBy(c => c.ProductNumber).ToList(); List <Product> li = new List <Product>(); List <ProductBarcodeDetail> details = new List <ProductBarcodeDetail>(); for (int i = 0; i < products.Count(); i++) { Product prod = products[i]; string[] lastcode = da.FirstOrDefault(c => c.ProductNumber == prod.ProductNumber).LastCode.DistinctBy(c => c).ToArray(); string maxcode = MaxCode(lastcode); prod.BarcodePrintCount += lastcode.Count(); if (prod.BarcodePrintInfo == null) { ProductBarcodePrintInfo barcodePrintInfo = new ProductBarcodePrintInfo() { CurPrintFlag = maxcode, ProductNumber = prod.ProductNumber, LastUpdateTime = DateTime.Now }; // _productBarcodePrintInfoContract.Insert(true, barcodePrintInfo); prod.BarcodePrintInfo = barcodePrintInfo; } else { prod.BarcodePrintInfo.CurPrintFlag = maxcode; prod.BarcodePrintInfo.LastUpdateTime = DateTime.Now; // _productBarcodePrintInfoContract.Update(new ProductBarcodePrintInfo[] { prod.BarcodePrintInfo }, true); } Math36 math = new Math36(); foreach (var code in lastcode) { if (!details.Any(c => c.OnlyFlag == code && c.ProductNumber == prod.ProductNumber)) { details.Add(new ProductBarcodeDetail() { ProductNumber = prod.ProductNumber, OnlyFlag = code, OnlfyFlagOfInt = (int)math.To10(code, 0), LogFlag = Guid.NewGuid().ToString().Replace("-", ""), Status = 0, OperatorId = AuthorityHelper.OperatorId, ProductId = prod.Id, CreatedTime = PrintTime ?? DateTime.Now, }); #region 商品追踪 ProductTrackDto pt = new ProductTrackDto(); pt.ProductNumber = prod.ProductNumber; pt.ProductBarcode = prod.ProductNumber + code; pt.Describe = ProductOptDescTemplate.ON_PRODUCT_PRINT; pt.CreatedTime = PrintTime; _productTrackContract.Insert(pt); #endregion } } li.Add(prod); } OperationResult resul = _productBarcodeDetailContract.Insert(details.ToArray()); return(Json(resul)); }
/// <summary> /// /// </summary> /// <returns></returns> public ActionResult GetBarCodePrinterInfo(BarcodeInfo[] barcodeInfos) { OperationResult resul = new OperationResult(OperationResultType.Success); var nums = barcodeInfos.Select(c => c.ProductNumber).ToList(); //string absrpath = Request.Url.Authority; var IsDefaultBrand = true; //var IsDefaultBrandPrice = true; var diyBarnd = "0FASHION"; var modbcc = _barCodeConfigContract.BarCodeConfigs.FirstOrDefault(f => !f.IsDeleted && f.IsEnabled); if (modbcc.IsNotNull()) { IsDefaultBrand = modbcc.IsDefaultBrand; if (modbcc.DIYBrand.IsNotNullAndEmpty()) { diyBarnd = modbcc.DIYBrand; } //IsDefaultBrandPrice = modbcc.IsDefaultBrandPrice; } var li = (from c in _productContract.Products.Where(c => nums.Contains(c.ProductNumber) && c.IsEnabled && !c.IsDeleted) .GroupBy(x => x.ProductNumber) let p = c.FirstOrDefault() select new { p.Id, p.ProductNumber, p.ProductName, BrandName = IsDefaultBrand ? p.ProductOriginNumber.Brand.BrandName : diyBarnd, p.ProductOriginNumber.Category.CategoryName, TagPrice = c.FirstOrDefault().ProductOriginNumber.TagPrice, p.Size.SizeName, p.Color.ColorName, HtmlPath = strWebUrl + p.ProductOriginNumber.HtmlPhonePath, Enti = c.Select(g => g.BarcodePrintInfo), ProductOriginNumber = p.ProductOriginNumber, SizeExtention = p.Size.SizeExtention.Name, }).ToList(); List <BarcodeInfoBase> datli = new List <BarcodeInfoBase>(); foreach (var prli in li) { ProductBarcodePrintInfo info = null; if (prli.Enti != null) { info = prli.Enti.First(); } var t = GetPrintBarcodeNumbs(info, barcodeInfos.FirstOrDefault(c => c.ProductNumber == prli.ProductNumber).PrintCount); var prtag = prli.ProductOriginNumber.ProductOriginNumberTag; datli.Add(new BarcodeInfoBase() { BarcodeNumbers = t, ProductNumber = prli.ProductNumber, ProductName = prli.ProductName ?? "", QRcode = prli.HtmlPath ?? "", BrandName = prli.BrandName, CategoryName = prli.CategoryName, ColorName = prli.ColorName, SizeName = prli.SizeName, TagPrice = prli.TagPrice, BigProdNum = prli.ProductOriginNumber.BigProdNum, Category = prtag.IsNotNull() ? prtag.Category ?? "" : "", Level = prtag.IsNotNull() ? prtag.Level ?? "" : "", ProductionPlace = prtag.IsNotNull() ? prtag.ProductionPlace ?? "" : "", Standard = prtag.IsNotNull() ? prtag.Standard ?? "" : "", Inspector = prtag.IsNotNull() ? prtag.Inspector ?? "" : "", Fabric = prtag.IsNotNull() ? prtag.Fabric ?? "" : "", Material = prtag.IsNotNull() ? prtag.Material ?? "" : "", batching = prtag.IsNotNull() ? prtag.batching ?? "" : "", Manufacturer = prtag.IsNotNull() ? prtag.Manufacturer ?? "" : "", PostCode = prtag.IsNotNull() ? prtag.PostCode ?? "" : "", CateName = prtag.IsNotNull() ? prtag.CateName ?? "" : "", SizeExtention = prli.SizeExtention ?? "", }); } resul = new OperationResult(OperationResultType.Success) { Data = datli }; return(Json(resul)); }