Ejemplo n.º 1
0
        /// <summary>
        /// 扫描指定文件夹,根绝文件夹和图片名称提取图片信息
        /// <param name="targetPath">拷贝的目标地址,应该为网站的虚拟目录的物理路径</param>
        /// </summary>
        public IList <ImageInfo> ImportImage(string folderPath, string targetPath, out string message)
        {
            StringBuilder     sb     = new StringBuilder();
            IList <ImageInfo> images = new List <ImageInfo>();
            DirectoryInfo     dir    = new DirectoryInfo(folderPath);

            DirectoryInfo[] supplierDirs = dir.GetDirectories();

            foreach (DirectoryInfo dirSupplier in supplierDirs)
            {
                string   supplierNameOfFolder = dirSupplier.Name;
                Supplier s = dalSupplier.GetOneByName(supplierNameOfFolder);
                if (s == null)
                {
                    string errmsg = "没有找到与文件夹同名的供应商名称,请核查." + supplierNameOfFolder;
                    NLibrary.NLogger.Logger.Debug(errmsg);
                    sb.AppendLine(errmsg);
                    continue;
                }
                FileInfo[] imageFiles = dirSupplier.GetFiles("*.jpg");
                if (imageFiles.Length == 0)
                {
                    string errmsg = "文件夹内没有图片:" + supplierNameOfFolder;
                    NLibrary.NLogger.Logger.Debug(errmsg);
                    sb.AppendLine(errmsg);
                }

                //该供应商已导入的产品(可能是中文 和 英文)
                IList <Product> ProductsOfSupplier = dalProduct.GetListBySupplierCode(s.Code);

                if (ProductsOfSupplier.Count == 0)
                {
                    string errmsg = "没有属于该供应商的产品,请导入对应的报价单 或者 核实文件夹名称与供应商名称的一致性." + supplierNameOfFolder;
                    NLibrary.NLogger.Logger.Debug(errmsg);
                    sb.AppendLine(errmsg);
                    continue;
                }

                foreach (FileInfo imageFile in imageFiles)
                {
                    //读取型号名称
                    string modelNumber = Path.GetFileNameWithoutExtension(imageFile.Name);

                    Product         p = null;//=  dalProduct.GetOneByModelNumberAndSupplier(modelNumber, dirSupplier.Name);
                    IList <Product> productSupplierAndModel = ProductsOfSupplier.Where(x => x.ModelNumber == modelNumber).ToList();
                    if (productSupplierAndModel.Count == 0)
                    {
                        string errmsg = "该图片没有对应的产品信息:" + supplierNameOfFolder + "," + imageFile.Name;
                        NLibrary.NLogger.Logger.Debug(errmsg);
                        sb.AppendLine(errmsg);
                        //    NLibrary.NLogger.Logger.Debug("没有找到对应的图片.供应商:" + dirSupplier.FullName+",型号:"+modelNumber);
                        continue;
                    }
                    else if (productSupplierAndModel.Count > 1)
                    {
                        string errmsg = "该图片对应两条产品信息:" + supplierNameOfFolder + "," + imageFile.Name;
                        NLibrary.NLogger.Logger.Debug(errmsg);
                        sb.AppendLine(errmsg);
                    }
                    //拷贝图片 到 对应文件夹
                    p = productSupplierAndModel[0];
                    string newImageName = (p.Name + p.SupplierName + modelNumber).GetHashCode().ToString() + imageFile.Extension;


                    System.IO.File.Copy(imageFile.FullName, targetPath + "\\" + newImageName, true);

                    if (!p.ProductImageUrls.Contains(newImageName))
                    {
                        p.ProductImageUrls.Add(newImageName);

                        dalProduct.Update(p);
                    }
                    ImageInfo ii = new ImageInfo();
                    ii.ImagePath    = imageFile.FullName;
                    ii.ModelNumber  = modelNumber;
                    ii.SupplierName = dirSupplier.Name;
                    images.Add(ii);
                }
            }
            message = sb.ToString();
            return(images);
        }