/// <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; }
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); } }