/// <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> /// <param name="lastcode"></param> /// <returns></returns> private string MaxCode(string[] lastcode) { float maxcode = 0; Math36 math = new Math36(); foreach (var ite in lastcode) { float te = math.To10(ite, 0); if (te > maxcode) { maxcode = te; } } return(math.To36(maxcode)); }
/// <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)); }