Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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));
        }
Пример #3
0
        /// <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));
        }