/// <summary>
        /// 刷新改装产品信息到ES
        /// </summary>
        /// <param name="context"></param>
        public virtual void Execute(IJobExecutionContext context)
        {
            mgIndex++;
            Logger.Info($"启动任务=>{mgIndex}");
            var dt          = DateTime.Now;
            var isDeleteOld = true;


            var products = GaiZhuangDal.GetAllGaiZhuangProducts() ?? new List <string>();

            Logger?.Info($"RGZ{mgIndex}=更新改装产品总数为:" + products.Count);
            if (!products.Any())
            {
                return;
            }
            var batchIndex = 0;

            foreach (var list in products.Split(50))
            {
                batchIndex++;
                using (var gaizhuang = new GaiZhuangClient())
                {
                    var result = gaizhuang.RebuildGaiZhuangEsCache(list.ToList());
                    if (!result.Success)
                    {
                        using (var gaizhuang2 = new GaiZhuangClient())
                        {
                            Thread.Sleep(200);
                            result = gaizhuang2.RebuildGaiZhuangEsCache(list.ToList());
                            if (!result.Success)
                            {
                                Logger?.Warn($"RGZ{mgIndex}={batchIndex}=失败,不删除老数据:{result.ErrorCode};{result.ErrorMessage}");
                                isDeleteOld = false;
                                continue;
                            }
                        }
                    }
                }
                Logger?.Info($"RGZ{mgIndex}={batchIndex}=成功");
            }

            Thread.Sleep(TimeSpan.FromSeconds(20));
            if (!isDeleteOld)
            {
                Logger?.Info($"RGZ{mgIndex}=有更新错误的数据,不删除老数据");
                return;
            }
            using (var gaizhuang3 = new GaiZhuangClient())
            {
                var deleteResult = gaizhuang3.DeleteOldGaiZhuangEs(dt);
                if (!deleteResult.Success)
                {
                    Logger?.Info($"RGZ{mgIndex}=删除老数据出错");
                }
            }

            Logger?.Info($"RGZ{mgIndex}全部成功");
            return;
        }
Exemplo n.º 2
0
        public void Execute(IJobExecutionContext context)
        {
            var client  = new GaiZhuangClient();
            var product = client.RefreshGaiZhuangProductsCache("VE-VOLPOLON", "2016", "1.6L", "12177");

            try
            {
                Logger.Info("刷新改装商品缓存开始查询二级数据");
                //二级车型
                //查询数据库tbl_Vehicle_Type_Timing,读取所有的2级车型数据
                List <VehicleInfo> allList = new List <VehicleInfo>();
                IEnumerable <VehicleTypeTimingModel> list2 = new List <VehicleTypeTimingModel>();
                var vehicleTiming2 = GaiZhuangDal.GetAll2VehicleTypeTiming();
                list2 = vehicleTiming2.ToList();
                var distinctList2 = list2.Distinct();
                //循环结果,刷新缓存
                foreach (var item2 in distinctList2)
                {
                    VehicleInfo info = new VehicleInfo();
                    info.VehicleID = item2.VehicleID;
                    info.Nian      = item2.Nian;
                    info.PaiLiang  = item2.PaiLiang;
                    info.TID       = item2.TID;
                    allList.Add(info);
                }
                Logger.Info("刷新改装商品缓存开始查询四级级数据");
                //四级车型
                var allVehicles4 = GaiZhuangDal.GetAll4VehiclesTiming();
                if (allVehicles4.Any())
                {
                    foreach (var item in allVehicles4)
                    {
                        if (item != null)
                        {
                            int startYear = CommonUtil.ConvertObjectToInt32(item.StartYear);
                            int endYear   = CommonUtil.ConvertObjectToInt32(item.EndYear);
                            if (startYear > 0 && endYear > startYear)
                            {
                                for (int i = startYear; i <= endYear; i++)
                                {
                                    VehicleInfo info = new VehicleInfo();
                                    info.VehicleID = item.VehicleId;
                                    info.Nian      = i.ToString();
                                    info.PaiLiang  = item.PaiLiang;
                                    info.TID       = null;
                                    allList.Add(info);
                                }
                            }
                        }
                    }
                }
                Logger.Info("刷新改装商品缓存开始查询五级数据");
                //五级车型
                //查询数据库tbl_Vehicle_Type_Timing,读取所有的5级车型数据
                var allVehicles5 = GaiZhuangDal.GetAll5VehicleTypeTiming();

                if (allVehicles5.Any())
                {
                    foreach (var item in allVehicles5)
                    {
                        if (item != null)
                        {
                            int startYear = CommonUtil.ConvertObjectToInt32(item.StartYear);
                            int endYear   = CommonUtil.ConvertObjectToInt32(item.EndYear);
                            if (startYear > 0 && endYear > startYear)
                            {
                                for (int i = startYear; i <= endYear; i++)
                                {
                                    VehicleInfo info = new VehicleInfo();
                                    info.VehicleID = item.VehicleId;
                                    info.Nian      = i.ToString();
                                    info.PaiLiang  = item.PaiLiang;
                                    info.TID       = item.Tid;
                                    allList.Add(info);
                                }
                            }
                        }
                    }
                }

                var allPids = allList.Distinct().ToList();
                Logger.Info("刷新改装商品缓存服务开始");
                Stopwatch watcher = new Stopwatch();
                watcher.Start();

                var bach     = 4;
                var taskList = new List <Task <OperationResult <bool> > >(bach);

                var clientList = new List <GaiZhuangClient>(bach)
                {
                    new GaiZhuangClient(),
                    new GaiZhuangClient(),
                    new GaiZhuangClient(),
                    new GaiZhuangClient(),
                };
                for (var i = 0; i < allPids.Count; i = i + bach)
                {
                    taskList = new List <Task <OperationResult <bool> > >(bach);
                    for (var j = 0; j < bach && j + i < allPids.Count; j++)
                    {
                        taskList.Add(clientList[j].RefreshGaiZhuangProductsCacheAsync(
                                         allPids[j + i].VehicleID, allPids[j + i].Nian, allPids[j + i].PaiLiang, allPids[j + i].TID));
                    }

                    if (taskList.Any())
                    {
                        Task.WhenAll(taskList);
                        var allError = taskList.FindAll(_ => _.Result?.Result == null || !_.Result.Success);
                        if (allError.Any())
                        {
                            allError.ForEach(_ =>
                            {
                                var index         = taskList.IndexOf(_);
                                clientList[index] = new GaiZhuangClient();
                                Logger.Info("刷新改装商品失败," + allPids[index + i].VehicleID + allPids[index + i].Nian + allPids[index + i].PaiLiang + allPids[index + i].TID);
                            });
                        }
                    }
                    if ((i + bach) % 1000 == 0)
                    {
                        Logger.Info("刷新改装商品 Count: " + (i + bach));
                    }
                }
                watcher.Stop();
                Logger.Info($"刷新改装商品缓存服务结束, 耗时:{watcher.ElapsedMilliseconds} ms");
            }
            catch (Exception e)
            {
                Logger.Error(e.Message, e);
            }
        }