//public void StartProcess()
        public void StartProcess()
        {
            DataSet ds = loadingHMDataFromExcel();

            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    try
                    {
                        #region 提出Excel数据
                        string line = dr["line"].ToString();
                        OnOperateNotify(this, new HMEventArgs(String.Format(">>>>>>>>>>>>>.Start the Lien of {0} Item <<<<<<<<<<<<<<<<<<,,,", line)));
                        HMLog.Info(String.Format(">>>>>>>>>>>>>.Start the Number of {0} Item <<<<<<<<<<<<<<<<<<,,,", line));
                        string  stockKey        = dr["STOCK KEY-sales data"].ToString();
                        string  HMNUM           = dr["HMNUM-New"].ToString();
                        string  ProductName     = dr["Product Name"].ToString();
                        string  Category        = dr["Category"].ToString();
                        string  SubCategory     = dr["SubCategory"].ToString();
                        string  strFirstCost    = dr["first cost"].ToString();
                        string  strLandedCost   = dr["landed cost"].ToString();
                        string  strShippingCost = dr[" shipping cost"].ToString();
                        decimal landedCost      = 0;
                        decimal firstCost       = 0;
                        decimal ShippingCost    = 0;
                        decimal.TryParse(strFirstCost, out firstCost);
                        decimal.TryParse(strLandedCost, out landedCost);
                        decimal.TryParse(strShippingCost, out ShippingCost);
                        string strBoxWeight = dr["Box Weight"].ToString();
                        string strCTNLength = dr["Box Length"].ToString();
                        string strCTNWidth  = dr["Box Width"].ToString();
                        string strCTNHeight = dr["Box Height"].ToString();

                        decimal CTNLength = 0;
                        decimal.TryParse(strCTNLength, out CTNLength);
                        decimal CTNWidth = 0;
                        decimal.TryParse(strCTNWidth, out CTNWidth);
                        decimal CTNHeight = 0;
                        decimal.TryParse(strCTNHeight, out CTNHeight);
                        decimal CTNWeight = 0;
                        decimal.TryParse(strBoxWeight, out CTNWeight);


                        string  strLoadability = dr["Loadability-webpo"].ToString();
                        decimal Loadability    = 0;
                        decimal.TryParse(strLoadability, out Loadability);

                        string  prDimensions = dr["Product Dimension"].ToString();
                        decimal DimLength    = 0;
                        decimal DimWidth     = 0;
                        decimal DimHeight    = 0;
                        if (!String.IsNullOrEmpty(prDimensions))
                        {
                            var dims = prDimensions.Split('x');
                            if (dims.Length > 3)//不规范 以后处理
                            {
                                decimal.TryParse(dims[0], out DimLength);
                                decimal.TryParse(dims[1], out DimWidth);
                                decimal.TryParse(dims[2], out DimHeight);
                            }
                        }

                        string SKUORDER      = dr["SKUORDER"].ToString();
                        string MERCHANTID    = dr["MERCHANTID"].ToString().Trim();
                        string PrDescription = dr["Intro Sentence(s)"].ToString();
                        string Bullets       = dr["Bullet Description"].ToString();
                        string UPC           = String.Empty;
                        string BESTUPC       = dr["BEST UPC"].ToString();
                        string CAUPC         = dr["COSTCO/AMAZON UPC"].ToString();
                        string GUPC          = dr["GROUPON UPC"].ToString();
                        string GDFUPC        = dr["GDF UPC"].ToString();
                        if (!String.IsNullOrEmpty(BESTUPC))
                        {
                            UPC = BESTUPC;
                        }
                        else if (!String.IsNullOrEmpty(CAUPC))
                        {
                            UPC = CAUPC;
                        }
                        else if (!String.IsNullOrEmpty(GUPC))
                        {
                            UPC = GUPC;
                        }
                        else if (!String.IsNullOrEmpty(GDFUPC))
                        {
                            UPC = GDFUPC;
                        }

                        //normalselling是我们和网站的价钱,retail price是网站和终端客人的价钱 Boonie
                        string  strRetail    = dr["Normallselling"].ToString();
                        string  strSalePrice = dr["retail price"].ToString();
                        decimal Retail       = 0;
                        decimal.TryParse(strRetail, out Retail);
                        decimal SalePrice = 0;
                        decimal.TryParse(strSalePrice, out SalePrice);

                        #endregion


                        //根据HMNUM判断表内是否存在这条记录,不存在则插入对于的价格、箱柜尺寸、信息,否则不插入,直接插入SKU和HM-SKU关联
                        long ProductID = 0;
                        var  curHM     = db.CMS_HMNUM.FirstOrDefault(c => c.HMNUM == HMNUM);
                        if (curHM == null)
                        {
                            #region 插入HM的价格信息
                            var newHMCost = new CMS_HM_Costing
                            {
                                CreateBy        = UpdateBy,
                                CreateOn        = DateTime.Now,
                                EffectiveDate   = DateTime.Now,
                                EstimateFreight = ShippingCost,
                                LandedCost      = landedCost,
                                FirstCost       = firstCost,
                                HMNUM           = HMNUM,
                                HisProductID    = 0,
                            };
                            db.CMS_HM_Costing.Add(newHMCost);
                            #endregion


                            var HMCostID = newHMCost.HMCostID;

                            long   HMCategoryID = 0; long HMColourID = 0; long HMMaterialID = 0;
                            string HMName = ProductName;
                            //long HMColorID = 0;从这张表里面获取 类别 颜色 和材料ID
                            var temObj = db.WebPO_HM_Colour_Material_V.FirstOrDefault(v => v.HMNUM == HMNUM);
                            if (temObj != null)
                            {
                                HMCategoryID = temObj.CategoryID.ConvertToNotNull();
                                HMColourID   = temObj.ColourID;
                                HMMaterialID = temObj.MaterialID;
                                HMName       = temObj.ProductName;
                            }

                            #region 插入HM的基础信息
                            var newHM = new CMS_HMNUM
                            {
                                HMNUM = HMNUM,
                                // ProductName = ProductName,基础产品的Name应该要从WEBPO拿 而不是从Excel表单拿
                                ProductName   = HMName,
                                StockKey      = stockKey,
                                HMCostID      = HMCostID,
                                CategoryID    = HMCategoryID,
                                MaterialID    = HMMaterialID,
                                ColourID      = HMColourID,
                                SubCategoryID = 0,
                                IsGroup       = false,
                                StatusID      = 0,
                                Loadability   = Loadability,
                                CreateOn      = DateTime.Now,
                                CreateBy      = UpdateBy,
                                ModifyOn      = DateTime.Now,
                                ModifyBy      = UpdateBy,
                                MasterPack    = 1//暂时设置为1,后面再手动跟新
                            };
                            db.CMS_HMNUM.Add(newHM);

                            db.SaveChanges();//顺序不能掉,否则 ProductID = newHM.ProductID; 取出来的ID还是0;
                            ProductID = newHM.ProductID;

                            newHMCost.HisProductID = ProductID;

                            #endregion


                            #region 插入箱子基础信息
                            //插入尺寸
                            var newCTN = new CMS_ProductCTN
                            {
                                ProductID = ProductID,
                                HMNUM     = HMNUM,
                                CTNTitle  = "S/1",
                                CTNLength = CTNLength,
                                CTNWidth  = CTNWidth,
                                CTNHeight = CTNHeight,
                                CTNWeight = CTNWeight,
                                CTNCube   = 0,
                                CreateOn  = DateTime.Now,
                                UpdateOn  = DateTime.Now,
                                UpdateBy  = UpdateBy
                            };
                            db.CMS_ProductCTN.Add(newCTN);
                            #endregion

                            #region 插入尺寸基础信息
                            var newDim = new CMS_ProductDimension
                            {
                                ProductID = ProductID,
                                HMNUM     = HMNUM,
                                DimTitle  = "S/1",
                                DimLength = DimLength,
                                DimWidth  = DimWidth,
                                DimHeight = DimHeight,
                                DimCube   = 0,
                                CreateOn  = DateTime.Now,
                                UpdateOn  = DateTime.Now,
                                UpdateBy  = UpdateBy
                            };
                            db.CMS_ProductDimension.Add(newDim);
                            #endregion
                        }
                        else
                        {
                            ProductID = curHM.ProductID;
                        }

                        db.SaveChanges();

                        #region 插入SKU价格信息
                        var newSKUCost = new CMS_SKU_Costing
                        {
                            CreateBy      = UpdateBy,
                            CreateOn      = DateTime.Now,
                            EffectiveDate = DateTime.Now,
                            SalePrice     = Retail
                        };
                        db.CMS_SKU_Costing.Add(newSKUCost);
                        db.SaveChanges();
                        var SKUCostID = newSKUCost.SKUCostID;
                        #endregion

                        #region 插入SKU基础信息
                        //插入SKUOrder
                        var ChannelObj = db.Channel.FirstOrDefault(c => c.ChannelName == MERCHANTID);
                        var ChannelID  = 0;
                        if (ChannelObj != null)
                        {
                            ChannelID = ChannelObj.ChannelID;
                        }

                        long   ColourID    = 0;
                        string skuColor    = dr["Color"].ToString();
                        string skuMaterial = dr["Material"].ToString();
                        if (!string.IsNullOrEmpty(skuColor))
                        {
                            var ColorMode = db.CMS_SKU_Colour.FirstOrDefault(c => c.ColourName == skuColor);
                            if (ColorMode == null)
                            {
                                var newColour = new CMS_SKU_Colour
                                {
                                    ColourName = skuColor,
                                    CreateBy   = UpdateBy,
                                    CreateOn   = DateTime.Now,
                                    ModifyBy   = UpdateBy,
                                    ModifyOn   = DateTime.Now
                                };
                                db.CMS_SKU_Colour.Add(newColour);
                                db.SaveChanges();
                                ColourID = newColour.ColourID;
                            }
                            else
                            {
                                ColourID = ColorMode.ColourID;
                            }
                        }

                        long MaterialID = 0;
                        if (!string.IsNullOrEmpty(skuMaterial))
                        {
                            var Mode = db.CMS_SKU_Material.FirstOrDefault(m => m.MaterialName == skuMaterial);
                            if (Mode == null)
                            {
                                var newMaterial = new CMS_SKU_Material
                                {
                                    MaterialName = skuMaterial,
                                    CreateBy     = UpdateBy,
                                    CreateOn     = DateTime.Now,
                                    ModifyBy     = UpdateBy,
                                    ModifyOn     = DateTime.Now
                                };
                                db.CMS_SKU_Material.Add(newMaterial);
                                db.SaveChanges();
                                MaterialID = newMaterial.MaterialID;
                            }
                            else
                            {
                                MaterialID = Mode.MaterialID;
                            }
                        }


                        CMS_SKU newProudct = new CMS_SKU
                        {
                            SKU         = SKUORDER,
                            ProductName = ProductName == "" ? SKUORDER : ProductName,//Name为空则用SKUOrder代替
                            SKU_QTY     = 0,
                            //Price = 0,
                            ChannelID      = ChannelID,
                            UPC            = UPC,
                            StatusID       = 4, //Compelted
                            Visibility     = 1, //---报表必须为1才有效  2013年12月14日10:08:27
                            ProductDesc    = PrDescription,
                            Specifications = Bullets,
                            Keywords       = "",
                            BrandID        = 2,//defult
                            RetailPrice    = SalePrice,
                            URL            = "",
                            SKUCostID      = SKUCostID,
                            CategoryID     = 0,
                            ColourID       = ColourID,
                            MaterialID     = MaterialID,
                            SubCategoryID  = 0,
                            CreateBy       = UpdateBy,
                            CreateOn       = DateTime.Now,
                            UpdateBy       = UpdateBy,
                            UpdateOn       = DateTime.Now
                        };
                        db.CMS_SKU.Add(newProudct);

                        db.SaveChanges();
                        var SKUID = newProudct.SKUID;

                        newSKUCost.HisSKUID = SKUID;
                        #endregion


                        #region HM-SKU关联
                        //HM-SKU关联
                        var newRelation = new SKU_HM_Relation
                        {
                            CreateBy  = UpdateBy,
                            CreateOn  = DateTime.Now,
                            ProductID = ProductID,
                            R_QTY     = 1,
                            SKUID     = SKUID
                        };
                        db.SKU_HM_Relation.Add(newRelation);
                        #endregion
                        db.SaveChanges();

                        HMLog.Info(String.Format(">>>>>>>>>>>>>.End the Number of {0} Item <<<<<<<<<<<<<<<<<<", line));
                        OnOperateNotify(this, new HMEventArgs(String.Format(">>>>>>>>>>>>>.End the Lien of {0} Item <<<<<<<<<<<<<<<<<<,,,", line)));
                        OnOperateNotify(this, new HMEventArgs(String.Format("Line为{0}的数据成功插入到数据库", line)));
                        OnOperateNotify(this, new HMEventArgs(""));
                        OnOperateNotify(this, new HMEventArgs(""));
                    }
                    catch (DbEntityValidationException e)
                    {
                        OnOperateNotify(this, new HMEventArgs("Error!"));
                        OnOperateNotify(this, new HMEventArgs("出错啦!!"));
                        HMLog.Error("");
                        HMLog.Error("");
                        foreach (var eve in e.EntityValidationErrors)
                        {
                            HMLog.Error("");
                            HMLog.Error("");
                            //HMLog.Error("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",eve.Entry.Entity.GetType().Name, eve.Entry.State);
                            foreach (var ve in eve.ValidationErrors)
                            {
                                HMLog.Error("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                OnOperateNotify(this, new HMEventArgs(String.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage)));
                            }
                            HMLog.Error("");
                        }
                        HMLog.Error("");
                        HMLog.Error("");
                        OnOperateNotify(this, new HMEventArgs(""));
                        OnOperateNotify(this, new HMEventArgs(""));
                    }
                    catch (Exception ex)
                    {
                        OnOperateNotify(this, new HMEventArgs("Error~~~~~~~~~~~~~~~"));
                        OnOperateNotify(this, new HMEventArgs("出错啦~~~~~~~~~~~~~~"));
                        OnOperateNotify(this, new HMEventArgs(ex.Message));
                        HMLog.Error("");
                        HMLog.Error("Exception Started");
                        HMLog.Error(ex.Message);
                        HMLog.Error(ex.Source);
                        HMLog.Error(ex.StackTrace);
                        HMLog.Error("Exception End");
                        HMLog.Error("");
                        OnOperateNotify(this, new HMEventArgs(""));
                        OnOperateNotify(this, new HMEventArgs(""));
                    }
                }
            }// end of  using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())

            if (ds != null) //release memory
            {
                ds.Dispose();
                ds = null;
            }
        }//end of StartProcess();
        //public void StartProcess()
        public void StartProcess()
        {
            //构建连接字符串
            OleDbConnection Conn = new OleDbConnection(connStr);

            Conn.Open();
            //填充数据

            String SheetName = ConfigurationManager.AppSettings["SheetName"];

            string           sql = string.Format("select * from [{0}$]", SheetName);
            OleDbDataAdapter da  = new OleDbDataAdapter(sql, connStr);
            DataSet          ds  = new DataSet();

            da.Fill(ds);
            Conn.Close();
            //StringBuilder sb = new StringBuilder();
            long groupProductID = 0;

            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                int iCount = 0;
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    if (iCount > 1659)//发现无限循环下去,如果大于这个数据,就退出
                    {
                        HMLog.Info("已经全部导入数据库,可以退出当前程序");
                        OnOperateNotify(this, new HMEventArgs("已经全部导入数据库,可以退出当前程序"));
                        break;
                    }
                    iCount++;
                    try
                    {
                        #region 提出Excel数据
                        string lineHMType = dr["Group"].ToString();
                        OnOperateNotify(this, new HMEventArgs(String.Format(">>>>>>>>>>>>>.Start the Lien of {0} Item <<<<<<<<<<<<<<<<<<,,,", iCount)));
                        HMLog.Info(String.Format(">>>>>>>>>>>>>.Start the Number of {0} Item <<<<<<<<<<<<<<<<<<,,,", iCount));
                        string stockKey   = dr["STOCK KEY-sales data"].ToString();
                        String HMNUM      = string.Empty;
                        string BasicHMNUM = dr["HMNUM-New"].ToString();
                        string GroupHMNUM = dr["WEPO HM#"].ToString();
                        //IsGroup = lineHMType == "group" ? true : false,
                        //if (lineHMType == "group")
                        if (string.Compare(lineHMType, "Group", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            HMNUM = GroupHMNUM;
                        }
                        else
                        {
                            HMNUM = BasicHMNUM;
                        }

                        string  ProductName     = dr["Product Name"].ToString();
                        string  Category        = dr["Category"].ToString();
                        string  SubCategory     = dr["SubCategory"].ToString();
                        string  strFirstCost    = dr["first cost"].ToString();
                        string  strLandedCost   = dr["landed cost"].ToString();
                        string  strShippingCost = dr[" shipping cost"].ToString();
                        decimal landedCost      = 0;
                        decimal firstCost       = 0;
                        decimal ShippingCost    = 0;
                        decimal.TryParse(strFirstCost, out firstCost);
                        decimal.TryParse(strLandedCost, out landedCost);
                        decimal.TryParse(strShippingCost, out ShippingCost);
                        string strBoxWeight = dr["Box Weight"].ToString();
                        string strCTNLength = dr["Box Length"].ToString();
                        string strCTNWidth  = dr["Box Width"].ToString();
                        string strCTNHeight = dr["Box Height"].ToString();

                        decimal CTNLength = 0;
                        decimal.TryParse(strCTNLength, out CTNLength);
                        decimal CTNWidth = 0;
                        decimal.TryParse(strCTNWidth, out CTNWidth);
                        decimal CTNHeight = 0;
                        decimal.TryParse(strCTNHeight, out CTNHeight);
                        decimal CTNWeight = 0;
                        decimal.TryParse(strBoxWeight, out CTNWeight);

                        string  prDimensions = dr["Product Dimension"].ToString();
                        decimal DimLength    = 0;
                        decimal DimWidth     = 0;
                        decimal DimHeight    = 0;
                        if (!String.IsNullOrEmpty(prDimensions))
                        {
                            var dims = prDimensions.Split('x');
                            if (dims.Length > 3)//不规范 以后处理
                            {
                                decimal.TryParse(dims[0], out DimLength);
                                decimal.TryParse(dims[1], out DimWidth);
                                decimal.TryParse(dims[2], out DimHeight);
                            }
                        }

                        string  strLoadability = dr["Loadability-webpo"].ToString();
                        decimal Loadability    = 0;
                        decimal.TryParse(strLoadability, out Loadability);


                        string SKUORDER      = dr["SKUORDER"].ToString();
                        string MERCHANTID    = dr["MERCHANTID"].ToString().Trim();
                        string PrDescription = dr["Intro Sentence(s)"].ToString();
                        string Bullets       = dr["Bullet Description"].ToString();
                        string UPC           = String.Empty;
                        string BESTUPC       = dr["BEST UPC"].ToString();
                        // string CAUPC = dr["COSTCO UPC"].ToString(); COSTCO/AMAZON UPC
                        string CAUPC = dr["COSTCO/AMAZON UPC"].ToString();
                        // string GUPC = dr["GROUPON UPC"].ToString();
                        string GDFUPC = dr["GDF UPC"].ToString();
                        if (!String.IsNullOrEmpty(BESTUPC))
                        {
                            UPC = BESTUPC;
                        }
                        else if (!String.IsNullOrEmpty(CAUPC))
                        {
                            UPC = CAUPC;
                        }
                        //else if (!String.IsNullOrEmpty(GUPC))
                        //{
                        //    UPC = GUPC;
                        //}
                        else if (!String.IsNullOrEmpty(GDFUPC))
                        {
                            UPC = GDFUPC;
                        }

                        //normalselling是我们和网站的价钱,retail price是网站和终端客人的价钱 Boonie
                        string  strRetail    = dr["Normallselling"].ToString();
                        string  strSalePrice = dr["retail price"].ToString();
                        decimal Retail       = 0;
                        decimal.TryParse(strRetail, out Retail);
                        decimal SalePrice = 0;
                        decimal.TryParse(strSalePrice, out SalePrice);


                        //string StrSkuColor = dr["New Color"].ToString();
                        //long SKUColorID = 0;
                        //long.TryParse(StrSkuColor, out SKUColorID);

                        //string StrMaterialColor = dr["New Material"].ToString();
                        //long SKUMaterialID = 0;
                        //long.TryParse(StrMaterialColor, out SKUMaterialID);

                        #endregion

                        #region HM的价格信息
                        var newHMCost = new CMS_HM_Costing
                        {
                            CreateBy        = UpdateBy,
                            CreateOn        = DateTime.Now,
                            EffectiveDate   = DateTime.Now,
                            EstimateFreight = ShippingCost,
                            LandedCost      = landedCost,
                            FirstCost       = firstCost,
                            HMNUM           = HMNUM
                        };
                        #endregion HM的价格信息

                        #region HM的类别ID


                        long HMCategoryID = 0; long HMColourID = 0; long HMMaterialID = 0; long MasterPack = 1;
                        //long HMColorID = 0;从这张表里面获取 类别 颜色 和材料ID
                        var    temObj = db.WebPO_HM_Colour_Material_V.FirstOrDefault(v => v.HMNUM == HMNUM);
                        string HMName = "";//如果为空...
                        if (temObj != null)
                        {
                            HMCategoryID = temObj.CategoryID.ConvertToNotNull();
                            HMColourID   = temObj.ColourID;
                            HMMaterialID = temObj.MaterialID;
                            HMName       = temObj.ProductName;
                            MasterPack   = temObj.MasterPack;
                        }

                        #endregion  #region HM的类别ID

                        #region HM的基础信息
                        var newHM = new CMS_HMNUM
                        {
                            HMNUM       = HMNUM,
                            MasterPack  = MasterPack,
                            ProductName = lineHMType == "Group" ? ProductName : HMName,//如果是组合产品,则不取HMNUM的名称(因为全是空)2014年3月19日
                            //StockKey = lineHMType == "group" ? "0" : stockKey,
                            StockKey      = lineHMType == "Group" ? HMNUM : stockKey,
                            CategoryID    = HMCategoryID,
                            MaterialID    = HMMaterialID,
                            ColourID      = HMColourID,
                            SubCategoryID = 0,
                            IsGroup       = lineHMType == "Group" ? true : false,
                            StatusID      = 0,
                            Loadability   = Loadability,
                            CreateOn      = DateTime.Now,
                            CreateBy      = UpdateBy,
                            ModifyOn      = DateTime.Now,
                            ModifyBy      = UpdateBy
                        };
                        #endregion

                        #region 插入箱子基础信息
                        //插入尺寸
                        var newCTN = new CMS_ProductCTN
                        {
                            HMNUM     = HMNUM,
                            CTNTitle  = "S/1",
                            CTNLength = CTNLength,
                            CTNWidth  = CTNWidth,
                            CTNHeight = CTNHeight,
                            CTNWeight = CTNWeight,
                            CTNCube   = 0,
                            CreateOn  = DateTime.Now,
                            UpdateOn  = DateTime.Now,
                            UpdateBy  = UpdateBy
                        };
                        #endregion

                        #region 插入尺寸基础信息
                        var newDim = new CMS_ProductDimension
                        {
                            HMNUM     = HMNUM,
                            DimTitle  = "S/1",
                            DimLength = DimLength,
                            DimWidth  = DimWidth,
                            DimHeight = DimHeight,
                            DimCube   = 0,
                            CreateOn  = DateTime.Now,
                            UpdateOn  = DateTime.Now,
                            UpdateBy  = UpdateBy
                        };
                        #endregion

                        #region 插入SKU价格信息
                        var newSKUCost = new CMS_SKU_Costing
                        {
                            CreateBy      = UpdateBy,
                            CreateOn      = DateTime.Now,
                            EffectiveDate = DateTime.Now,
                            SalePrice     = Retail
                        };
                        #endregion

                        #region 插入SKU基础信息
                        //插入SKUOrder
                        var ChannelObj = db.Channel.FirstOrDefault(c => c.ChannelName == MERCHANTID);
                        var ChannelID  = 0;
                        if (ChannelObj != null)
                        {
                            ChannelID = ChannelObj.ChannelID;
                        }


                        long   ColourID    = 0;
                        string skuColor    = dr["Color"].ToString();
                        string skuMaterial = dr["Material"].ToString();
                        if (!string.IsNullOrEmpty(skuColor))
                        {
                            var ColorMode = db.CMS_SKU_Colour.FirstOrDefault(c => c.ColourName == skuColor);
                            if (ColorMode == null)
                            {
                                var newColour = new CMS_SKU_Colour
                                {
                                    ColourName = skuColor,
                                    CreateBy   = UpdateBy,
                                    CreateOn   = DateTime.Now,
                                    ModifyBy   = UpdateBy,
                                    ModifyOn   = DateTime.Now
                                };
                                db.CMS_SKU_Colour.Add(newColour);
                                db.SaveChanges();
                                ColourID = newColour.ColourID;
                            }
                            else
                            {
                                ColourID = ColorMode.ColourID;
                            }
                        }

                        long MaterialID = 0;
                        if (!string.IsNullOrEmpty(skuMaterial))
                        {
                            var Mode = db.CMS_SKU_Material.FirstOrDefault(m => m.MaterialName == skuMaterial);
                            if (Mode == null)
                            {
                                var newMaterial = new CMS_SKU_Material
                                {
                                    MaterialName = skuMaterial,
                                    CreateBy     = UpdateBy,
                                    CreateOn     = DateTime.Now,
                                    ModifyBy     = UpdateBy,
                                    ModifyOn     = DateTime.Now
                                };
                                db.CMS_SKU_Material.Add(newMaterial);
                                db.SaveChanges();
                                // ColourID = newMaterial.MaterialID;
                                MaterialID = newMaterial.MaterialID;//Copy害死人啊 囧 2014年3月7日17:51:03
                            }
                            else
                            {
                                MaterialID = Mode.MaterialID;
                            }
                        }



                        CMS_SKU newProudct = new CMS_SKU
                        {
                            SKU = SKUORDER,
                            //ProductName = ProductName == "" ? SKUORDER : ProductName,//Name为空则用SKUOrder代替
                            ProductName    = ProductName,
                            SKU_QTY        = 0,
                            ChannelID      = ChannelID,
                            UPC            = UPC,
                            StatusID       = 4, //Compelted
                            Visibility     = 1, //---报表必须为1才有效  2013年12月14日10:08:27
                            ProductDesc    = PrDescription,
                            Specifications = Bullets,
                            Keywords       = "",
                            BrandID        = 2,//defult
                            RetailPrice    = SalePrice,
                            URL            = "",
                            CategoryID     = 0, //暂时不整理,稍后让Melissa整理2014年1月27日10:10:57,
                            SubCategoryID  = 0, //同上
                            ColourID       = ColourID,
                            MaterialID     = MaterialID,
                            UpdateBy       = UpdateBy,
                            UpdateOn       = DateTime.Now,
                            CreateBy       = UpdateBy,
                            CreateOn       = DateTime.Now
                        };
                        #endregion

                        #region HM-SKU关联

                        #endregion

                        //if (lineHMType == "Group")
                        if (string.Compare(lineHMType, "Group", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            groupProductID = InsertSKUAndGroupHM(db, newHMCost, newHM, newSKUCost, newProudct);//取到最新一次更新GroupHM的ID
                        }
                        // else if (lineHMType == "individual")
                        else if (string.Compare(lineHMType, "individual", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            string strUnit = dr["PCS"].ToString();
                            int    unit    = 0;
                            int.TryParse(strUnit, out unit);
                            InsertBasicHM(db, groupProductID, newHMCost, newHM, newCTN, newDim, unit);
                        }
                        else
                        {
                            HMLog.Error(String.Format(">>>>>>>>>>>>>.warning!! the Number of {0} Item Type can not be determined <<<<<<<<<<<<<<<<<<", iCount));
                            OnOperateNotify(this, new HMEventArgs(String.Format("Line为{0} 类型无法识别,警告!!!!!!!!!!!", iCount)));
                        }

                        HMLog.Info(String.Format(">>>>>>>>>>>>>.End the Number of {0} Item <<<<<<<<<<<<<<<<<<", iCount));
                        OnOperateNotify(this, new HMEventArgs(String.Format(">>>>>>>>>>>>>.End the Lien of {0} Item <<<<<<<<<<<<<<<<<<", iCount)));
                        OnOperateNotify(this, new HMEventArgs(String.Format("Line为{0}的数据成功插入到数据库", iCount)));
                        OnOperateNotify(this, new HMEventArgs(""));
                        HMLog.Info("");
                        // db.SaveChanges();
                    }
                    catch (DbEntityValidationException e)
                    {
                        OnOperateNotify(this, new HMEventArgs("Error!"));
                        OnOperateNotify(this, new HMEventArgs("出错啦!!"));
                        HMLog.Error("");
                        HMLog.Error("");
                        foreach (var eve in e.EntityValidationErrors)
                        {
                            HMLog.Error("");
                            HMLog.Error("");
                            //HMLog.Error("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",eve.Entry.Entity.GetType().Name, eve.Entry.State);
                            foreach (var ve in eve.ValidationErrors)
                            {
                                HMLog.Error("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage);
                                OnOperateNotify(this, new HMEventArgs(String.Format("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage)));
                            }
                            HMLog.Error("");
                        }
                        HMLog.Error("");
                        HMLog.Error("");
                        OnOperateNotify(this, new HMEventArgs(""));
                        OnOperateNotify(this, new HMEventArgs(""));
                    }
                    catch (Exception ex)
                    {
                        OnOperateNotify(this, new HMEventArgs("Error~~~~~~~~~~~~~~~"));
                        OnOperateNotify(this, new HMEventArgs("出错啦~~~~~~~~~~~~~~"));
                        OnOperateNotify(this, new HMEventArgs(ex.Message));
                        HMLog.Error("");
                        HMLog.Error("Exception Started");
                        HMLog.Error(ex.Message);
                        HMLog.Error(ex.Source);
                        HMLog.Error(ex.StackTrace);
                        HMLog.Error("Exception End");
                        HMLog.Error("");
                        OnOperateNotify(this, new HMEventArgs(""));
                        OnOperateNotify(this, new HMEventArgs(""));
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// 新增SKU产品
        /// CrateDate:2013年11月24日17:40:08
        /// </summary>
        /// <param name="model"></param>
        /// <param name="Modifier"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public long AddProduct(CMS_SKU_Model model, MCCC mcModel, CMS_HMNUM_Model HMModel, String Modifier, out string msg)
        {
            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                msg = "";
                var query = db.CMS_SKU.Where(w => w.SKU == model.SKU && w.ChannelID == model.ChannelID).FirstOrDefault();
                if (query != null)
                {
                    msg = string.Format("this item is already exist");
                    return(-1);
                }

                var mat = db.CMS_SKU_Material.FirstOrDefault(s => s.MaterialName == mcModel.Material);
                if (mat == null)
                {
                    mat = new CMS_SKU_Material
                    {
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        ModifyBy     = Modifier,
                        ModifyOn     = DateTime.Now,
                        MaterialDesc = mcModel.Material,
                        MaterialName = mcModel.Material
                    };
                    db.CMS_SKU_Material.Add(mat);
                }



                var col = db.CMS_SKU_Colour.FirstOrDefault(s => s.ColourName == mcModel.Colour);
                if (col == null)
                {
                    col = new CMS_SKU_Colour
                    {
                        CreateBy   = Modifier,
                        CreateOn   = DateTime.Now,
                        ModifyBy   = Modifier,
                        ModifyOn   = DateTime.Now,
                        ColourDesc = mcModel.Colour,
                        ColourName = mcModel.Colour
                    };
                    db.CMS_SKU_Colour.Add(col);
                }

                var cat = db.CMS_SKU_Category.FirstOrDefault(s => s.CategoryName == mcModel.Category && s.ParentID == 0);
                if (cat == null)
                {
                    cat = new CMS_SKU_Category
                    {
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        UpdateBy     = Modifier,
                        UpdateOn     = DateTime.Now,
                        CategoryName = mcModel.Category,
                        CategoryDesc = mcModel.Category,
                        OrderIndex   = 0,
                        ParentID     = 0
                    };
                    db.CMS_SKU_Category.Add(cat);
                    db.SaveChanges();
                }

                var subCat = db.CMS_SKU_Category.FirstOrDefault(s => s.CategoryName == mcModel.SubCategory && s.ParentID != 0);
                if (subCat == null)
                {
                    subCat = new CMS_SKU_Category
                    {
                        //CategoryID = ++i,
                        CreateBy     = Modifier,
                        CreateOn     = DateTime.Now,
                        UpdateBy     = Modifier,
                        UpdateOn     = DateTime.Now,
                        CategoryName = mcModel.SubCategory,
                        CategoryDesc = mcModel.SubCategory,
                        OrderIndex   = 0,
                        //CMS_SKU_Category_Parent = cat
                        ParentID = cat.CategoryID
                    };
                    db.CMS_SKU_Category.Add(subCat);
                }

                var newCosting = new CMS_SKU_Costing
                {
                    SalePrice       = 0,
                    EstimateFreight = 0,
                    EffectiveDate   = DateTime.Now,
                    CreateBy        = Modifier,
                    CreateOn        = DateTime.Now
                };
                //db.CMS_SKU_Costing.Add(newCosting);
                //db.SaveChanges();


                CMS_SKU newProduct = new CMS_SKU
                {
                    //SKUCostID = 0, //default...为0 会导致后期查询的如果不做NULL排除,会得到意想不到的错误!
                    CMS_SKU_Costing = newCosting,
                    SKU             = model.SKU,
                    ProductName     = model.ProductName,
                    SKU_QTY         = model.SKU_QTY,
                    ChannelID       = model.ChannelID,
                    UPC             = model.UPC,
                    StatusID        = 1,//2014年3月5日 New
                    Visibility      = model.Visibility,
                    ProductDesc     = model.ProductDesc,
                    Specifications  = model.Specifications,
                    Keywords        = model.Keywords,
                    BrandID         = model.BrandID,
                    RetailPrice     = model.RetailPrice,
                    URL             = model.URL,
                    //MaterialID = mat.MaterialID,
                    //ColourID = col.ColourID,
                    //CategoryID = cat.CategoryID,
                    //SubCategoryID = subCat.CategoryID,
                    CMS_SKU_Material     = mat,
                    CMS_SKU_Colour       = col,
                    CMS_SKU_Category     = cat,
                    CMS_SKU_Category_Sub = subCat,
                    CMS_Ecom_Sync        = new CMS_Ecom_Sync
                    {
                        //SKUID = query.SKUID,坑爹啊 害死人,对象空引用!2014年4月9日
                        StatusID   = 0,
                        StatusDesc = "NeedSend",
                        UpdateBy   = Modifier,
                        UpdateOn   = DateTime.Now
                    },

                    CreateBy = Modifier,
                    CreateOn = DateTime.Now,
                    UpdateBy = Modifier,
                    UpdateOn = DateTime.Now,

                    ShipViaTypeID = model.ShipViaTypeID
                };
                //db.CMS_SKU.Add(newProduct);
                var             newHM  = db.CMS_HMNUM.Find(HMModel.ProductID);
                SKU_HM_Relation rModel = new SKU_HM_Relation
                {
                    CMS_HMNUM  = newHM,
                    CMS_SKU    = newProduct,
                    StockKeyID = newHM.StockKeyID,
                    R_QTY      = HMModel.R_QTY,
                    CreateBy   = Modifier,
                    CreateOn   = DateTime.Now,
                    UpdateBy   = Modifier,
                    UpdateOn   = DateTime.Now
                };
                db.SKU_HM_Relation.Add(rModel);

                db.SaveChanges();

                newCosting.HisSKUID = newProduct.SKUID;//经测试:如果让这个生效,一定要在此之前先发生一次db.SaveChanges(),即使是使用强类型嵌套插入也需要这样save 2 次....2014年3月10日

                db.SaveChanges();
                return(newProduct.SKUID);
            }
        }
        /// <summary>
        ///  插入组合产品的以及组合产品对于的SKU 以及他们之间的关联信息到CMS中
        ///  CreateDate:2013年12月31日11:47:55
        /// </summary>
        /// <param name="db"></param>
        /// <param name="newHMCost"></param>
        /// <param name="CMS_HMNUM"></param>
        /// <param name="newSKUCost"></param>
        /// <param name="newProudct"></param>
        /// <returns>返回新插入的组合产品的ID</returns>
        public long InsertSKUAndGroupHM(PermaisuriCMSEntities db, CMS_HM_Costing newHMCost, CMS_HMNUM CMS_HMNUM,
                                        CMS_SKU_Costing newSKUCost, CMS_SKU newProudct)
        {
            //先判断当前的HMNUM在库表是否存在了,防止重复插入
            long ProductID = 0;
            var  isExistHM = db.CMS_HMNUM.FirstOrDefault(h => h.HMNUM == CMS_HMNUM.HMNUM);

            if (isExistHM == null)
            {
                db.CMS_HM_Costing.Add(newHMCost);
                var newHMCostID = newHMCost.HMCostID;

                CMS_HMNUM.HMCostID = newHMCostID;//设置当前HMNUM的价格指向刚刚插入的价格表
                db.CMS_HMNUM.Add(CMS_HMNUM);
                db.SaveChanges();

                ProductID = CMS_HMNUM.ProductID;
                newHMCost.HisProductID = CMS_HMNUM.ProductID;
            }
            else
            {
                OnOperateNotify(this, new HMEventArgs(String.Format("CMS_HMNUM表已经存在HMNUM={0}的数据,忽略过不插入", CMS_HMNUM.HMNUM)));
                HMLog.Info(String.Format("CMS_HMNUM表已经存在HMNUM={0}的数据,忽略过不插入", CMS_HMNUM.HMNUM));
                ProductID = isExistHM.ProductID;
            }

            //插入SKU
            long SKUID      = 0;
            var  isExistSKU = db.CMS_SKU.FirstOrDefault(w => w.SKU == newProudct.SKU && w.ChannelID == newProudct.ChannelID);

            if (isExistSKU == null)
            {
                long newSKUCostID = 0;
                db.CMS_SKU_Costing.Add(newSKUCost);
                newSKUCostID = newSKUCost.SKUCostID;

                newProudct.SKUCostID = newSKUCostID;
                db.CMS_SKU.Add(newProudct);

                db.SaveChanges();

                newSKUCost.HisSKUID = newProudct.SKUID;
                SKUID = newProudct.SKUID;
            }
            else
            {
                OnOperateNotify(this, new HMEventArgs(String.Format("WebsiteProduct表已经存在SKU={0},Channel={1}的数据,忽略过不插入", newProudct.SKU, newProudct.ChannelID)));
                HMLog.Info(String.Format("WebsiteProduct表已经存在SKU={0},Channel={1}的数据,忽略过不插入", newProudct.SKU, newProudct.ChannelID));
                SKUID = isExistSKU.SKUID;
            }

            //插入HMNUM Group ----SKU的关系
            var newRelation = db.SKU_HM_Relation.FirstOrDefault(r => r.SKUID == SKUID && r.ProductID == ProductID);

            if (newRelation == null)
            {
                var hm_sku = new SKU_HM_Relation
                {
                    SKUID     = SKUID,
                    ProductID = ProductID,
                    R_QTY     = 1,
                    CreateBy  = UpdateBy,
                    CreateOn  = DateTime.Now
                };

                db.SKU_HM_Relation.Add(hm_sku);
            }
            else
            {
                OnOperateNotify(this, new HMEventArgs(String.Format("SKU_HM_Relation表已经存在SKUID={0},ProductID={1}的数据,忽略过不插入", SKUID, ProductID)));
                HMLog.Info(String.Format("SKU_HM_Relation表已经存在SKUID={0},ProductID={1}的数据,忽略过不插入", SKUID, ProductID));
            }
            db.SaveChanges();//为了避免出现 ProductID =0的情况
            if (ProductID == 0)
            {
                HMLog.Info(String.Format("InsertSKUAndGroupHM:警告!!!!!!!!!!!!!HMNUM={0}的ID查询出来是0!", CMS_HMNUM.HMNUM));
            }
            return(ProductID);
        }