public static bool UpdateBaoYangRecord(bool isHalfYear = false) { bool result = false; try { var caneledIds = new List <int>(); int pageIndex = 1; logger.Info("开始更新用户保养记录!"); logger.Info($"删除取消订单相关的保养记录, 开始!"); do { logger.Info($"第{pageIndex}批"); caneledIds = SuggestDal.SelectCanceledOrderIds(pageIndex, 500); if (caneledIds != null && caneledIds.Any()) { logger.Info($"删除取消订单相关的保养记录, 共{caneledIds.Count()}条!"); SuggestDal.DeleteBaoYangRecord(caneledIds); logger.Info($"删除取消订单相关的保养记录, 共{caneledIds.Count()}条结束!"); } pageIndex++; }while (caneledIds != null && caneledIds.Any()); logger.Info($"删除取消订单相关的保养记录, 结束!"); logger.Info($"更新订单相关的保养记录, 开始!"); var updateIds = new List <int>(); pageIndex = 1; var config = SuggestDal.SelectUserBaoYangRecordConfig(); var minOrderId = SuggestDal.SelectMinOrderIdInHalfYear(); logger.Info($"历史订单id:{minOrderId}"); do { logger.Info($"第{pageIndex}批"); if (isHalfYear) { updateIds = SuggestDal.SelectUpdatedOrderIdsInHalfYear(minOrderId, pageIndex, 500); } else { updateIds = SuggestDal.SelectUpdatedOrderIds(pageIndex, 500); } List <UserBaoYangRecordModel> newData = new List <UserBaoYangRecordModel>(); var noVehicleData = SuggestDal.SelectBaoYangRecordsFromOrder(updateIds); //从订单中获取用户保养记录(不含里程) var oldData = SuggestDal.SelectBaoYangRecordsFromMaintainedData(updateIds); //根据订单获取用户保养档案中数据 var cars = SuggestDal.SelectCarsFormOrder(updateIds); //从订单车型表中获取车型里程信息 if (noVehicleData != null && cars != null) { foreach (var data in noVehicleData) { var car = cars.Where(o => o.OrderId == data.RelatedOrderID).OrderBy(o => o.UserCreated) .FirstOrDefault(); if (car != null && !string.IsNullOrEmpty(car.VehicleId)) { newData.Add(new UserBaoYangRecordModel() { UserID = data.UserID, UserCarID = data.UserCarID, BaoYangDateTime = data.BaoYangDateTime, PID = data.PID, Category = data.Category, RelatedOrderID = data.RelatedOrderID, RelatedOrderNo = data.RelatedOrderNo, Status = data.Status, IsTuhuRecord = data.IsTuhuRecord, OrderPrice = data.OrderPrice, InstallShopId = data.InstallShopId, InstallShopName = data.InstallShopName, VechileID = car.VehicleId, Distance = car.Distance }); } } } var operationResult = CompareData(ConvertOrderData(newData, config), oldData); var toDelete = operationResult.Item1; if (toDelete != null && toDelete.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item1.Count}条待删除!"); SuggestDal.DeleteBaoYangRecordByPkids(toDelete); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item1.Count}条待删除结束!"); } var toUpdate = operationResult.Item2; if (toUpdate != null && toUpdate.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item2.Count}条待更新!"); SuggestDal.UpdateBaoYangRecord(toUpdate); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item2.Count}条待更新结束!"); } var toInsert = operationResult.Item3; if (toInsert != null && toInsert.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item3.Count}条待插入!"); SuggestDal.InsertBaoYangRecords(toInsert); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item3.Count}条待插入结束!"); } pageIndex++; }while (updateIds != null && updateIds.Any()); logger.Info($"更新订单相关的保养记录, 完成!"); result = true; } catch (Exception ex) { logger.Error(ex.Message, ex); } return(result); }
public static bool UpdateBaoYangRecord() { bool result = false; try { var caneledIds = new List <int>(); int pageIndex = 1; logger.Info("开始更新用户保养记录!"); logger.Info($"删除取消订单相关的保养记录, 开始!"); do { logger.Info($"第{pageIndex}批"); caneledIds = SuggestDal.SelectCanceledOrderIds(pageIndex, 500); if (caneledIds != null && caneledIds.Any()) { logger.Info($"删除取消订单相关的保养记录, 共{caneledIds.Count()}条!"); SuggestDal.DeleteBaoYangRecord(caneledIds); logger.Info($"删除取消订单相关的保养记录, 共{caneledIds.Count()}条结束!"); } pageIndex++; }while (caneledIds != null && caneledIds.Any()); logger.Info($"删除取消订单相关的保养记录, 结束!"); logger.Info($"更新订单相关的保养记录, 开始!"); var updateIds = new List <int>(); pageIndex = 1; var config = SuggestDal.SelectUserBaoYangRecordConfig(); do { logger.Info($"第{pageIndex}批"); updateIds = SuggestDal.SelectUpdateddOrderIds(pageIndex, 500); var newData = SuggestDal.SelectBaoYangRecordsFromOrder(updateIds); var oldData = SuggestDal.SelectBaoYangRecordsFromMaintainedData(updateIds); var operationResult = CompareData(ConvertOrderData(newData, config), oldData); var toDelete = operationResult.Item1; if (toDelete != null && toDelete.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item1.Count()}条待删除!"); SuggestDal.DeleteBaoYangRecordByPkids(toDelete); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item1.Count()}条待删除结束!"); } var toUpdate = operationResult.Item2; if (toUpdate != null && toUpdate.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item2.Count()}条待更新!"); SuggestDal.UpdateBaoYangRecord(toUpdate); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item2.Count()}条待更新结束!"); } var toInsert = operationResult.Item3; if (toInsert != null && toInsert.Any()) { logger.Info($"更新订单相关的保养记录, 共{operationResult.Item3.Count()}条待插入!"); SuggestDal.InsertBaoYangRecords(toInsert); logger.Info($"更新订单相关的保养记录, 共{operationResult.Item3.Count()}条待插入结束!"); } pageIndex++; }while (updateIds != null && updateIds.Any()); logger.Info($"更新订单相关的保养记录, 完成!"); result = true; } catch (Exception ex) { logger.Error(ex.Message, ex); } return(result); }