Exemple #1
0
        public string Generate(dynamic requestData)
        {
            try
            {
                string query = JsonConvert.SerializeObject(requestData);
                IntegralGoodsQrcPackage qrc = JsonConvert.DeserializeObject <IntegralGoodsQrcPackage>(query);

                Thread t = new Thread(new ParameterizedThreadStart(AsyncGenerate));
                t.Start(qrc);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            return("Excute Success");
        }
Exemple #2
0
        /// <summary>
        /// 执行生成二维码包
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public bool ExcGenerate(IntegralGoodsQrcPackage obj)
        {
            try
            {
                //压缩包存储路径
                var basePath   = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                var qrCodePath = Convert.ToString(ConfigurationManager.AppSettings["QrCodeStorePath"]);
                var fileName   = string.Format("{0}.xls", Guid.NewGuid().ToString());
                var serverPath = qrCodePath + fileName;
                var filePath   = basePath + serverPath;
                //查询商品
                IntegralGoods goods = (from g in db.IntegralGoods
                                       where g.GoodsId == obj.GoodsId
                                       select g).FirstOrDefault <IntegralGoods>();

                //var goods = _integralGoodsRepository.Find(obj.GoodsId);
                obj.Name        = goods.GoodsName;
                obj.GoodsCode   = goods.GoodsNo;
                obj.State       = 2;
                obj.CreateDate  = DateTime.Now;
                obj.Url         = Convert.ToString(ConfigurationManager.AppSettings["QrCodeUrl"]) + "/";
                obj.DownLoadUrl = serverPath;

                //添加一条压缩包记录
                db.IntegralGoodsQrcPackage.Add(obj);
                db.SaveChanges();

                //安全码的模板
                //{规格}{商品类别}{工厂}{月份}{流水号}
                var snTmpl = ((int)obj.Range).ToString()
                             + obj.GoodsCode
                             + ((int)obj.Source).ToString()
                             + ((int)obj.March).ToString().PadLeft(2, '0');
                List <string> qrCodeList = new List <string>();

                //生成二维码
                for (int i = 1; i <= obj.Num; i++)
                {
                    IntegralGoodsQrc qrc = new IntegralGoodsQrc();
                    qrc.State      = 1;
                    qrc.PackageId  = obj.PackageId;
                    qrc.CreateDate = DateTime.Now;
                    qrc.QrcUrl     = "";
                    qrc.Code       = "";

                    //添加一条二维码记录
                    db.IntegralGoodsQrc.Add(qrc);
                    db.SaveChanges();

                    //安全码
                    qrc.Code = snTmpl + qrc.QrcId.ToString().PadLeft(10, '0');
                    //安全码需混淆
                    //{域名}?p={本批次ID}&sn={安全码}
                    qrc.QrcUrl = string.Format("{0}?sn={1}", obj.Url, EncryptHelper.Confusion(qrc.Code));
                    //更改二维码的值
                    SetQrcCode(qrc.QrcId, qrc.QrcUrl, qrc.Code);
                    //生成一个二维码
                    var code = QrCodeHelper.ToBytes(qrc.QrcUrl);
                    qrCodeList.Add(qrc.QrcUrl);
                }

                //生成Excel
                ExcelExtend.SaveExcel <string>(qrCodeList, qrCodePath, fileName);

                obj.State = 1;
                //_repository.Update(obj);
                EntityState statebefore = db.Entry(obj).State;
                db.Entry(obj).State = EntityState.Modified;
                db.SaveChanges();

                //将生成的所有二维码打包
                //CompressHelper.ToZip(qrCodeList, filePath, "PNG");

                return(true);
            }
            catch (Exception ex)
            {
                string a = ex.Message;
                return(false);
            }
        }