public override async Task Job(DateTime?preTime = null) { var models = new List <ECProduct>(); var reqModel = new Reqeust.Model.WMSGetProductListReqModel(); reqModel.PageSize = 1000; reqModel.GetProductBox = IsOrNotEnum.Yes; reqModel.GetProductCombination = IsOrNotEnum.Yes; reqModel.GetProductCustomCategory = IsOrNotEnum.Yes; reqModel.GetProperty = IsOrNotEnum.Yes; bool finish = true; int pageIndex = 1; DateTime now = DateTime.Now; var addList = new List <ECProduct>(); var updateList = new List <ECProduct>(); try { using (var uow = _uowProvider.CreateUnitOfWork(false, false)) { var repository = uow.GetRepository <ECProduct>(); log.Info($"产品信息 - 开始拉取,请求参数:{JsonConvert.SerializeObject(reqModel, new IsoDateTimeConverter { DateTimeFormat = "yyyy - MM - dd HH: mm:ss" })}"); DateTime?lastAddTime = repository.QueryPage(0, 1, null, x => x.OrderByDescending(a => a.ProductAddTime)).FirstOrDefault().ProductAddTime; DateTime?lastUpdateTime = repository.QueryPage(0, 1, null, x => x.OrderByDescending(a => a.ProductUpdateTime)).FirstOrDefault().ProductUpdateTime; //新增 while (finish) { reqModel.Page = pageIndex; reqModel.ProductAddTimeFrom = lastAddTime; reqModel.ProductAddTimeTo = now; log.Info($"产品信息 - 正在拉取第{pageIndex} 页"); var req = new WMSGetProductListRequest(login.Username, login.Password, reqModel); var resp = await req.Request(); foreach (var i in resp.Body) { if (repository.Get(i.ProductSku) != null) { updateList.Add(Mapper <Response.Model.EC_Product, ECProduct> .Map(i)); } else { addList.Add(Mapper <Response.Model.EC_Product, ECProduct> .Map(i)); } } if (resp.Body.Count != 1000) { finish = false; } try { updateList = updateList.GroupBy(item => item.ProductSku).Select(item => item.First()).ToList(); addList = addList.GroupBy(item => item.ProductSku).Select(item => item.First()).ToList(); await repository.BulkUpdateAsync(updateList); await repository.BulkInsertAsync(addList); uow.BulkSaveChanges(); addList.Clear(); updateList.Clear(); } catch (Exception ex) { log.Error($"产品信息 - 写入数据库出现异常:{ex.Message}"); throw ex; } pageIndex++; } log.Info("产品信息 - 拉取完成"); //修改 pageIndex = 1; finish = true; while (finish) { reqModel.Page = pageIndex; reqModel.ProductAddTimeFrom = null; reqModel.ProductAddTimeTo = null; reqModel.ProductUpdateTimeFrom = lastUpdateTime; reqModel.ProductUpdateTimeTo = now; var req = new WMSGetProductListRequest(login.Username, login.Password, reqModel); log.Info($"产品信息 - 开始更新拉取,请求参数:{JsonConvert.SerializeObject(reqModel, new IsoDateTimeConverter { DateTimeFormat = "yyyy - MM - dd HH: mm:ss" })}"); var resp = await req.Request(); foreach (var i in resp.Body) { updateList.Add(Mapper <Response.Model.EC_Product, ECProduct> .Map(i)); } if (resp.Body.Count != 1000) { finish = false; } try { updateList = updateList.GroupBy(item => item.ProductSku).Select(item => item.First()).ToList(); addList = addList.GroupBy(item => item.ProductSku).Select(item => item.First()).ToList(); await repository.BulkUpdateAsync(updateList); await repository.BulkInsertAsync(addList); uow.BulkSaveChanges(); addList.Clear(); updateList.Clear(); } catch (Exception ex) { log.Error($"产品信息 - 写入数据库出现错误:{ex.Message}"); throw ex; } pageIndex++; } log.Info("产品信息 - 更新完成"); } log.Info("产品信息 - 任务完成"); } catch (Exception ex) { log.Error($"产品信息 - 出现错误:{ex.Message}"); throw ex; } }
public override async Task Job(DateTime?datetime = null) { var models = new List <ECProduct>(); var reqModel = new Reqeust.Model.WMSGetProductListReqModel(); reqModel.PageSize = 10; reqModel.GetProductBox = IsOrNotEnum.Yes; reqModel.GetProductCombination = IsOrNotEnum.Yes; reqModel.GetProductCustomCategory = IsOrNotEnum.Yes; reqModel.GetProperty = IsOrNotEnum.Yes; reqModel.ProductAddTimeFrom = DateTime.Parse("2018-03-04"); reqModel.ProductAddTimeTo = DateTime.Parse("2020/5/30 10:14:10"); bool finish = true; int pageIndex = 1; var addList = new List <ECProduct>(); using (var uow = _uowProvider.CreateUnitOfWork()) { var repository = uow.GetRepository <ECProduct>(); //try //{ // await repository.DeleteAll(); // await uow.SaveChangesAsync(); //} //catch (Exception ex) //{ // log.Error($"初始化产品信息,删除产品信息异常:{ex.Message}"); // throw ex; //} try { while (finish) { reqModel.Page = pageIndex; reqModel.PageSize = 1000; var req = new WMSGetProductListRequest(login.Username, login.Password, reqModel); var resp = await req.Request(); foreach (var i in resp.Body) { addList.Add(Mapper <Response.Model.EC_Product, ECProduct> .Map(i)); } if (resp.Body.Count != 1000) { finish = false; } try { addList = addList.GroupBy(item => item.ProductSku).Select(item => item.First()).ToList(); await repository.BulkInsertAsync(addList, x => x.IncludeGraph = true); uow.BulkSaveChanges(); addList.Clear(); } catch (Exception ex) { log.Error($"产品信息,新增出现错误:{ex.Message}"); throw ex; } pageIndex++; } } catch (Exception ex) { throw; } } }