public JsonResult RefreshPlanState(int siteId = 0) { PublicUserModel loginUser = this.GetLoginUser(); RefreshPlan planItem = new RefreshPlan() { UserId = loginUser.UserID, SiteId = siteId }; int planId = refreshBll.RefreshPlanState(planItem); string msg = string.Empty; switch (planId) { case -1: msg = "不支持云刷新"; break; case -2: msg = "没有绑定账号"; break; default: msg = "操作成功"; break; } return(Json(new { status = planId, msg = msg })); }
public JsonResult RefreshSet(RefreshPlan item) { PublicUserModel loginUser = this.GetLoginUser(); item.UserId = loginUser.UserID; int intervalTime = (int)item.IntervalTime; int beginHour = 0, beginMinute = 0, endHour = 0, endMinute = 0; int.TryParse(item.BeginHour.ToString(), out beginHour); int.TryParse(item.BeginMinute.ToString(), out beginMinute); int.TryParse(item.EndHour.ToString(), out endHour); int.TryParse(item.EndMinute.ToString(), out endMinute); TimeSpan beginTp = new TimeSpan(beginHour, beginMinute, 0); TimeSpan endTp = new TimeSpan(endHour, endMinute, 0); TimeSpan diffTime = endTp - beginTp; List <RefreshDetail> detailList = new List <RefreshDetail>(); if (diffTime.TotalMinutes <= 0) { return(Json(new { status = -1, msg = "结束时间必须大于开始时间" })); } if (intervalTime < 1) { return(Json(new { status = -1, msg = "刷新间隔必须大于1分钟" })); } if (diffTime.TotalMinutes < intervalTime) { return(Json(new { status = -1, msg = "设置的开始和结束间隔时间不能小于刷新间隔时间" })); } if (item.CountPerTime <= 0) { return(Json(new { status = -1, msg = "刷新次数必须大于0" })); } TimeSpan detailTime = beginTp; for (int i = 0; i <= diffTime.TotalMinutes / intervalTime; i++) { detailList.Add(new RefreshDetail() { BuildType = item.BuildType, CountPerTime = item.CountPerTime, Hour = detailTime.Hours, Minute = detailTime.Minutes, TradeType = item.TradeType }); detailTime = detailTime.Add(new TimeSpan(0, intervalTime, 0)); } int result = refreshBll.RefreshDetailAdd(item, detailList); string msg = string.Empty; if (result > 0) { msg = "添加成功"; } if (result == -1) { msg = "计划已达上限,请先删除已有计划"; } return(Json(new { status = result, msg = msg })); }
/// <summary> /// 刷新计划的开关 /// </summary> /// <param name="item"></param> /// <returns>大于0 成功 -1:不支持云刷新,-2:没有绑定账号</returns> public virtual int RefreshPlanState(RefreshPlan item) { DbCommand cmd = GetStoredProcCommand("P_RefreshPlan_State"); AddInParameter(cmd, "@UserId", DbType.Int32, item.UserId); AddInParameter(cmd, "@SiteId", DbType.Int32, item.SiteId); AddOutParameter(cmd, "@planId", DbType.Int32, 4); ExecuteNonQuery(cmd); int resultId = 0; int.TryParse(cmd.Parameters["@planId"].Value.ToString(), out resultId); return(resultId); }
public virtual int RefreshDetailAdd(RefreshPlan plan, List <RefreshDetail> details) { DbCommand cmd = GetStoredProcCommand("P_Refresh_DetailAdd"); AddInParameter(cmd, "@PlanId", DbType.Int32, plan.PlanId); AddInParameter(cmd, "@UserId", DbType.Int32, plan.UserId); AddInParameter(cmd, "@TradeType", DbType.Int32, plan.TradeType); AddInParameter(cmd, "@BuildType", DbType.Int32, plan.BuildType); AddInParameter(cmd, "@BeginHour", DbType.Int32, plan.BeginHour); AddInParameter(cmd, "@BeginMinute", DbType.Int32, plan.BeginMinute); AddInParameter(cmd, "@EndHour", DbType.Int32, plan.EndHour); AddInParameter(cmd, "@EndMinute", DbType.Int32, plan.EndMinute); AddInParameter(cmd, "@IntervalTime", DbType.Int32, plan.IntervalTime); AddInParameter(cmd, "@CountPerTime", DbType.Int32, plan.CountPerTime); AddInParameter(cmd, "@SiteId", DbType.Int32, plan.SiteId); AddInParameter(cmd, "@RefreshDetail", DbType.Xml, ZJB.Core.Utilities.XmlUtility.Serialize(details, Encoding.UTF8, "RefreshDetailList")); AddReturnParameter(cmd, "@ReturnValue", DbType.Int32); ExecuteNonQuery(cmd); int result = 0; int.TryParse(cmd.Parameters["@ReturnValue"].Value.ToString(), out result); return(result); }
private async Task ProcessRefreshPlanAsync(ModelConfiguration model, RefreshPlan refreshPlan, CancellationToken cancellationToken) { try { using (var server = await GetServerAsync()) { try { var database = GetDatabase(server, model.DatabaseName); await _dataSourceFactory.Create(model.DataSource.Type) .ProcessAsync(database, model, cancellationToken); Logger.Info($"Processing table {refreshPlan.Table}."); var table = GetTable(database, refreshPlan.Table); refreshPlan.Refresh.Refresh(table); Logger.Info($"Saving {refreshPlan.Table}."); database.Model.SaveChanges(new SaveOptions { MaxParallelism = model.MaxParallelism }); } finally { server.Disconnect(); } } } catch (Exception e) { Logger.Error(e); throw; } }
private async Task RetryProcessRefreshPlanAsync(ModelConfiguration model, RefreshPlan refreshPlan, CancellationToken cancellationToken) { var attempt = 0; do { attempt++; try { await ProcessRefreshPlanAsync(model, refreshPlan, cancellationToken); break; } catch { if (attempt == Attempts) { _failures.Add(refreshPlan.Table); } } } while (attempt < Attempts); }
public virtual int RefreshDetailAdd(RefreshPlan plan, List <RefreshDetail> details) { return(refrehsDal.RefreshDetailAdd(plan, details)); }
/// <summary> /// 刷新计划的开关 /// </summary> /// <param name="item"></param> /// <returns></returns> public virtual int RefreshPlanState(RefreshPlan item) { return(refrehsDal.RefreshPlanState(item)); }