public void RequestTest() { EBRmaRefaListReqModel reqModel = new EBRmaRefaListReqModel(); reqModel.Page = 1; reqModel.PageSize = 1000; EBRmaRefaRequest req = new EBRmaRefaRequest("admin", "eccang123456", reqModel); var res = req.Request().Result; var logger = new Moq.Mock <ILogger <DataAccess> >(); var sp = new Moq.Mock <IServiceProvider>(); var myContext = new Service.Context.XinDBContext(new Microsoft.EntityFrameworkCore.DbContextOptions <Service.Context.XinDBContext>()); sp.Setup((o) => o.GetService(typeof(IEntityContext))).Returns(myContext); sp.Setup((o) => o.GetService(typeof(IRepository <ECRmaRefa>))) .Returns(new GenericEntityRepository <ECRmaRefa>(logger.Object)); var _uowProvider = new UowProvider(logger.Object, sp.Object); List <ECRmaRefa> list = new List <ECRmaRefa>(); using (var uow = _uowProvider.CreateUnitOfWork()) { var repository = uow.GetRepository <ECRmaRefa>(); foreach (var item in res.Body) { var m = Mapper <EC_RmaRefa, ECRmaRefa> .Map(item); list.Add(m); } repository.BulkInsert(list, x => x.IncludeGraph = true); uow.SaveChanges(); } }
public EBRmaRefaRequest(string username, string password, EBRmaRefaListReqModel reqModel) : base(username, password) { service.Service = "rmaRefaList"; service.Plateform = "EB"; IsoDateTimeConverter timeFormat = new IsoDateTimeConverter(); timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss"; service.ParamsJson = JsonConvert.SerializeObject(reqModel, timeFormat); }
public override async Task Job(DateTime?datetime = null) { using (var uow = _uowProvider.CreateUnitOfWork()) { var repository = uow.GetRepository <ECRmaRefa>(); EBRmaRefaListReqModel reqModel = new EBRmaRefaListReqModel(); reqModel.Page = 1; reqModel.PageSize = 10; reqModel.CreateDateFrom = DateTime.Parse(repository.GetPage(0, 1, x => x.OrderByDescending(c => c.CreateDate)).FirstOrDefault().CreateDate); reqModel.CreateDateEnd = DateTime.Now; log.Info($"退货重发 - 开始拉取,请求参数:{JsonConvert.SerializeObject(reqModel, new IsoDateTimeConverter { DateTimeFormat = "yyyy - MM - dd HH: mm:ss" })}"); EBRmaRefaRequest req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); var response = await req.Request(); List <ECRmaRefa> insertList = new List <ECRmaRefa>(); List <ECRmaRefa> updateList = new List <ECRmaRefa>(); //新增 try { response.TotalCount = response.TotalCount == null ? "1" : response.TotalCount; int pageNum = (int)Math.Ceiling(long.Parse(response.TotalCount) * 1.0 / 1000); log.Info($"退货重发 - 共计{pageNum}页"); for (int page = 1; page < pageNum + 1; page++) { reqModel.PageSize = 1000; reqModel.Page = page; log.Info($"退货重发 - 正在拉取{page}页"); req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); response = await req.Request(); foreach (var item in response.Body) { var m = Mapper <EC_RmaRefa, ECRmaRefa> .Map(item); if (repository.Query(a => a.OldOrderId == item.OldOrderId && a.Sku == item.Sku && a.Qty == item.Qty).FirstOrDefault() == null) { insertList.Add(m); } else { updateList.Add(m); } } } try { insertList = insertList.GroupBy(item => new { item.OldOrderId, item.Sku, item.Qty }).Select(item => item.First()).ToList(); updateList = updateList.GroupBy(item => new { item.OldOrderId, item.Sku, item.Qty }).Select(item => item.First()).ToList(); await repository.BulkInsertAsync(insertList, x => x.IncludeGraph = true); await repository.BulkUpdateAsync(updateList, x => x.IncludeGraph = true); uow.BulkSaveChanges(); insertList.Clear(); updateList.Clear(); } catch (Exception ex) { log.Error($"退货重发 - 写入到数据库出现异常:{ex.Message}"); throw; } } catch (Exception ex) { log.Error($"退货重发新增出现异常:{ex.Message};参数:{JsonConvert.SerializeObject(reqModel)}"); throw; } //审核时间始更新 reqModel.CreateDateFrom = null; reqModel.CreateDateEnd = null; reqModel.VerifyDateFrom = DateTime.Now.AddDays(-2); reqModel.VerifyDateFrom = DateTime.Now; reqModel.Page = 1; reqModel.PageSize = 10; req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); log.Info($"退货重发 - 开始根据审核时间拉取,请求参数:{JsonConvert.SerializeObject(reqModel, new IsoDateTimeConverter { DateTimeFormat = "yyyy - MM - dd HH: mm:ss" })}"); response = await req.Request(); try { response.TotalCount = response.TotalCount == null ? "1" : response.TotalCount; int pageNum = (int)Math.Ceiling(long.Parse(response.TotalCount) * 1.0 / 1000); log.Info($"退货重发 - 共计{pageNum}页"); for (int page = 1; page < pageNum + 1; page++) { reqModel.PageSize = 1000; reqModel.Page = page; req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); response = await req.Request(); foreach (var item in response.Body) { var m = Mapper <EC_RmaRefa, ECRmaRefa> .Map(item); updateList.Add(m); } } try { updateList = updateList.GroupBy(item => new { item.OldOrderId, item.Sku, item.Qty }).Select(item => item.First()).ToList(); await repository.BulkUpdateAsync(updateList, x => x.IncludeGraph = true); uow.BulkSaveChanges(); updateList.Clear(); } catch (Exception ex) { log.Error($"退货重发 - 写入到数据库出现异常:{ex.Message}"); throw; } } catch (Exception ex) { log.Error($"退货重发 - 出现异常:{ex.Message}"); throw; } //重发单发货时间 reqModel.VerifyDateFrom = null; reqModel.VerifyDateFrom = null; reqModel.DateWarehouseShippingFrom = DateTime.Now.AddDays(-2); reqModel.DateWarehouseShippingTo = DateTime.Now; reqModel.Page = 1; reqModel.PageSize = 10; req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); log.Info($"退货重发 - 开始根据重发单发货时间拉取,请求参数:{JsonConvert.SerializeObject(reqModel, new IsoDateTimeConverter { DateTimeFormat = "yyyy - MM - dd HH: mm:ss" })}"); response = await req.Request(); try { response.TotalCount = response.TotalCount == null ? "1" : response.TotalCount; int pageNum = (int)Math.Ceiling(long.Parse(response.TotalCount) * 1.0 / 1000); log.Info($"退货重发 - 共计{pageNum}页"); for (int page = 1; page < pageNum + 1; page++) { reqModel.PageSize = 1000; reqModel.Page = page; req = new EBRmaRefaRequest(login.Username, login.Password, reqModel); response = await req.Request(); foreach (var item in response.Body) { var m = Mapper <EC_RmaRefa, ECRmaRefa> .Map(item); updateList.Add(m); } } try { updateList = updateList.GroupBy(item => new { item.OldOrderId, item.Sku, item.Qty }).Select(item => item.First()).ToList(); await repository.BulkUpdateAsync(updateList, x => x.IncludeGraph = true); uow.BulkSaveChanges(); updateList.Clear(); } catch (Exception ex) { log.Error($"退货重发 - 写入到数据库出现异常:{ex.Message};"); throw; } } catch (Exception ex) { log.Error($"退货重发 - 出现异常:{ex.Message};"); throw; } } log.Info($"退货重发 - 任务拉取完成"); }