示例#1
0
        /// <summary>
        /// 价格计算
        /// </summary>
        public void InitPrice()
        {
            long      start = Environment.TickCount;
            string    sql   = "SELECT * FROM Price_TEMP EXCEPT SELECT id,iden,category,price FROM dbo.Price";
            DataTable dt    = ExecuteTable(sql);

            foreach (DataRow item in dt.Rows)
            {
                string id       = (string)item["id"];
                string category = (string)item["category"];
                if (!Exist(id, category))
                {
                    Insert(id, category);
                }
                else
                {
                    Update(id, category);
                }
            }
            sql = "SELECT id,iden,category,price FROM dbo.Price WHERE Price_N<>0 EXCEPT SELECT * FROM Price_TEMP";
            dt  = ExecuteTable(sql);
            foreach (DataRow item in dt.Rows)
            {
                string id       = (string)item["id"];
                string category = (string)item["category"];
                Disable(id, category);
                InitPriceCache(id);
            }
            Product_Centre.AddLog("执行了商品价格处理,共执行" + (Environment.TickCount - start) + "毫秒!", 1);
        }
        public int Add(TableSyn ts, byte[] data, string key)
        {
            if (dkey.Equals(key))
            {
                string ekey = string.Format("{0}_{1}", ts.TableName, ts.EnterpriseID);
                if (get(ekey) != null)
                {
                    if ((DateTime.Now - (DateTime)get(ekey)).TotalMinutes <= 5)
                    {
                        return(0);
                    }
                    set(ekey, DateTime.Now);
                }
                else
                {
                    set(ekey, DateTime.Now);
                }


                BLL.Data_Centre.Product_Centre logBll = new BLL.Data_Centre.Product_Centre();
                BLL.DbBase db = new BLL.DbBase();
                db.ChangeDBData_Centre();
                DateTime now  = DateTime.Now;
                int      iden = 0; int.TryParse(ts.EnterpriseID, out iden);//公司来源

                #region 开始同步并检查数据
                BLL.Data_Centre.Product_Centre.AddLog("请求数据同步,企业编号:" + iden, 1);
                DSWebService.BLL.ServiceState sstate = new BLL.ServiceState();
                sstate.iden       = iden.ToString();
                sstate.UpdateTime = DateTime.Now;
                sstate.insert();

                var ds = BLL.Utils.GetDataSetByZipBytes(data);//数据来源
                if (iden <= 0 || ds == null || ds.Tables.Count == 0 || ds.Tables[0].Rows.Count == 0)
                {
                    return(0);
                }
                DataColumnCollection sourceColumns = ds.Tables[0].Columns;
                #endregion
                DateTime now1 = DateTime.Now;//计时
                try
                {
                    switch (ts.TableName)
                    {
                    case "商品数据":
                    {
                        foreach (DataColumn item in ds.Tables[0].Columns)
                        {
                            switch (item.ColumnName)
                            {
                            case "商品编号":
                            {
                                item.ColumnName = "ID";
                                continue;
                            }

                            case "批准文号":
                            {
                                item.ColumnName = "DrugsBase_ApprovalNumber";
                                continue;
                            }

                            case "厂家":
                            {
                                item.ColumnName = "DrugsBase_Manufacturer";
                                continue;
                            }

                            case "通用名":
                            {
                                item.ColumnName = "DrugsBase_DrugName";
                                continue;
                            }

                            case "规格":
                            {
                                item.ColumnName = "DrugsBase_Specification";
                                continue;
                            }

                            case "剂型":
                            {
                                item.ColumnName = "DrugsBase_Formulation";
                                continue;
                            }

                            case "包装单位":
                            {
                                item.ColumnName = "Goods_Unit";
                                continue;
                            }

                            case "转换比":
                            {
                                item.ColumnName = "Goods_ConveRatio";
                                continue;
                            }

                            case "件装":
                            {
                                item.ColumnName = "Goods_Pcs";
                                continue;
                            }

                            case "中包装":
                            {
                                item.ColumnName = "Goods_Pcs_Small";
                                continue;
                            }

                            case "生产日期":
                            {
                                item.ColumnName = "PDate";
                                continue;
                            }

                            case "产地":
                            {
                                item.ColumnName = "ProductionAddress";
                                continue;
                            }

                            case "类别":
                            {
                                item.ColumnName = "ProductionClassName";
                                continue;
                            }

                            case "片型":
                            {
                                item.ColumnName = "DrugsBase_Formulation1";
                                continue;
                            }

                            case "等级":
                            {
                                item.ColumnName = "ProductionLevelName";
                                continue;
                            }

                            case "品牌":
                            {
                                item.ColumnName = "ProductionBrandName";
                                continue;
                            }

                            case "制法":
                            {
                                item.ColumnName = "ProductionMethodName";
                                continue;
                            }

                            case "条码":
                            {
                                item.ColumnName = "Barcode";
                                continue;
                            }

                            case "经营范围":
                            {
                                item.ColumnName = "BusinessScope";
                                continue;
                            }
                            }
                        }
                        db.ExecuteNonQuery("TRUNCATE TABLE Product");
                        db.BulkToDB(ds.Tables[0], "Product");
                        BLL.Log.AddLog("Product 新增加了" + ds.Tables[0].Rows.Count + "条数据,共执行" + (int)((DateTime.Now - now1).TotalMilliseconds) + "毫秒!", 2);
                        break;
                    }

                    case "商品价格":
                    {
                        foreach (DataColumn item in ds.Tables[0].Columns)
                        {
                            switch (item.ColumnName)
                            {
                            case "商品编号":
                            {
                                item.ColumnName = "ID";
                                continue;
                            }

                            case "价格类型":
                            {
                                item.ColumnName = "category";
                                continue;
                            }

                            case "商品价格":
                            {
                                item.ColumnName = "price";
                                continue;
                            }
                            }
                        }
                        db.ExecuteNonQuery("TRUNCATE TABLE Price_TEMP");
                        db.BulkToDB(ds.Tables[0], "Price_TEMP");
                        BLL.Log.AddLog("Price_TEMP 新增加了" + ds.Tables[0].Rows.Count + "条数据,共执行" + (int)((DateTime.Now - now1).TotalMilliseconds) + "毫秒!", 2);
                        break;
                    }

                    case "商品库存":
                    {
                        foreach (DataColumn item in ds.Tables[0].Columns)
                        {
                            switch (item.ColumnName)
                            {
                            case "商品编号":
                            {
                                item.ColumnName = "id";
                                continue;
                            }

                            case "商品库存":
                            {
                                item.ColumnName = "Stock";
                                continue;
                            }

                            case "批号":
                            {
                                item.ColumnName = "pihao";
                                continue;
                            }

                            case "效期":
                            {
                                item.ColumnName = "sxrq";
                                continue;
                            }
                            }
                        }
                        db.ExecuteNonQuery("TRUNCATE TABLE View_Stock1");
                        db.BulkToDB(ds.Tables[0], "View_Stock1");
                        BLL.Log.AddLog("View_Stock1 新增加了" + ds.Tables[0].Rows.Count + "条数据,共执行" + (int)((DateTime.Now - now1).TotalMilliseconds) + "毫秒!", 2);
                        break;
                    }
                    }
                }
                catch (Exception ex)
                {
                    BLL.Log.AddLog("请求数据同步,企业编号:" + iden + "," + ex.Message.ToString() + ex.StackTrace.ToString(), 0);
                }

                return(1);
            }
            return(0);
        }