private string GetStringValue(double value, ParseEntity e) { if (e.name == "F" || e.name == "f") { var fcnt = e.value.Length; if (e.value[0] == '%') { fcnt--; } var ret = value.ToString("f7").Substring(2, fcnt); if (e.name == "F") { ret = ret.TrimEnd('0'); } return(ret); } if (e.value.StartsWith("%") || e.value.Length == 1) { return(value.ToString(CultureInfo.CurrentCulture)); } if (!char.IsDigit(e.value, 1)) { return(value.ToString(e.value.Replace(e.value[0], '0'))); } var precision = int.Parse(e.value.Substring(1)); var newVal = Math.Round(value, precision, MidpointRounding.AwayFromZero); return(newVal.ToString(CultureInfo.CurrentCulture)); }
public ParseEntity get(String url) { RuntimeEntity runtime = runtimeService.get(url); ParseEntity result = null; if (runtime != null) { if (runtime.WaitQueue[url] != null) { result = (ParseEntity)runtime.WaitQueue[url]; } else if (runtime.StartQueue[url] != null) { result = (ParseEntity)runtime.StartQueue[url]; } else if (runtime.SuccessQueue[url] != null) { result = (ParseEntity)runtime.SuccessQueue[url]; } else if (runtime.ErrorQueue[url] != null) { result = (ParseEntity)runtime.ErrorQueue[url]; } } return(result); }
public async Task <object> SendMessage() { try { using (var _testContext = new TestContext()) { //读取请求信息 Stream reqStream = Request.Body; string key = "mYOxAyHTFNCoFg3c"; string text = ""; using (StreamReader reader = new StreamReader(reqStream)) { text = await reader.ReadToEndAsync(); } //获取解密后的字符串 string decrypt = AesDecrypt(text, key); JObject json = JObject.Parse(decrypt); ParseEntity PE = new ParseEntity(); //获取CGSqlist CGSqlist cg = PE.GetCGSQlist(json); //获取CgsqListentry List <CgsqListentry> cleList = PE.GetCgsqListentry(json, cg.Fbillid); //获取审批痕迹 List <Reqlist> rlList = PE.GetReqlist(JObject.Parse(GetFlowRecord(cg.FormInstId, cg.FormCodeId)), cg.Fbillid); //存入数据库 _testContext.CGSqlist.Add(cg); _testContext.CgsqListentry.AddRange(cleList); _testContext.Reqlist.AddRange(rlList); var externalLog = new ExternalLog { StartTime = cg.EventTime, EndTime = cg.EventTime, QueryState = QueryState.成功 }; _testContext.ExternalLog.Add(externalLog); await _testContext.SaveChangesAsync(); //创建后台任务读取审批状态 //BackgroundJob.Schedule(() => new BackJob().GetProcess(JObject.Parse(GetFlowRecord(cg.FormInstId, cg.FormCodeId)), cg.Fbillid), DateTime.Now.AddMinutes(3)); //返回值 return(new ReturnMessage { Success = true }); } } catch (Exception ex) { return(new ReturnMessage { Success = false, Data = ex.Message.ToString() }); } }
private ParseEntity GetParsedTokens(Match m) { // Handle each match group var head = new ParseEntity(".", m, null); var list = head.children = new List <ParseEntity>(); foreach (var gn in MyRegex.GetGroupNames()) { if (gn != "OPT" && gn != "0") { var g = m.Groups[gn]; if (g.Success) { foreach (Capture c in g.Captures) { list.Add(new ParseEntity(gn, c, head)); } } } } list.Sort((p1, p2) => p1.start - p2.start); // Put in groupings foreach (Capture c in m.Groups["OPT"].Captures) { var f = list.FindIndex(p1 => p1.start > c.Index); var l = list.FindLastIndex(p1 => p1.start + p1.length < c.Index + c.Length); var p = new ParseEntity(null, c, head) { children = list.GetRange(f, l - f + 1) }; list.RemoveRange(f, l - f + 1); p.children.ForEach(delegate(ParseEntity pe) { pe.parent = p; }); list.Insert(f, p); } #if DEBUG for (var i = 0; i < list.Count; i++) { Debug.WriteLine(string.Format("Match {3} = \"{1}\" ({0}:{2})", list[i].start, list[i].value, list[i].length, list[i].name)); } #endif return(head); }
public ParseEntity(string n, Capture c, ParseEntity p) { name = n; value = c.Value; start = c.Index; length = c.Length; parent = p; }
private void ProcessParseEntity(ParseEntity e) { if (e.name == null && e.children == null) { e.output = string.Empty; return; } if (e.children != null) { var sb = new StringBuilder(); sb.Append(e.name != "." ? @"(?:" : @"^\s*"); for (var i = 0; i < e.children.Count; i++) { ProcessParseEntity(e.children[i]); sb.Append(e.children[i].output); } sb.Append(e.name != "." ? @")?" : @"\s*$"); e.output = sb.ToString(); return; } switch (e.name) { case "z": break; case "n": e.output = $@"(?<n>{Regex.Escape(CultureInfo.CurrentUICulture.NumberFormat.NegativeSign)})?"; break; case "d": case "D": case "h": case "H": case "m": case "M": case "s": case "S": case "t": case "k": case "K": case "f": case "F": case "w": case "r": e.output = $@"(?<{e.name}>\d+)"; break; case "p": e.output = $@"(?<p>\d+(?:{Regex.Escape(CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator)}\d{{0,{e.value.Substring(1)}}})?)"; break; case "vd": case "vh": case "vm": case "vs": case "vk": case "vt": e.output = GetVerboseParseString(e.name); break; case "ts": e.output = Regex.Escape(CultureInfo.CurrentUICulture.DateTimeFormat.TimeSeparator); break; case "ds": e.output = Regex.Escape(CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator); break; case "ws": e.output = @"\s+"; break; case "fs": e.output = @"\s*" + Regex.Escape(TimeSpanResources.TimeSpanSeparator.Trim()) + @"\s*"; break; case "q": case "e": default: e.output = Regex.Escape(e.value); break; } }
private bool ProcessFormatEntity(ParseEntity e, TimeSpan core) { if (e.name == null && e.children == null) { e.output = string.Empty; return(false); } bool foundValue = false, foundSep = false, foundSpace = false; if (e.children != null) { var sb = new StringBuilder(); for (var i = 0; i < e.children.Count; i++) { if (ProcessFormatEntity(e.children[i], core) && !foundValue) { foundValue = true; } if (e.children[i].name == "fs") { if (sb.Length > 0) { foundSep = true; } } else if (e.children[i].name == "ws") { if (sb.Length > 0) { foundSpace = true; } } else { if (foundSep && !string.IsNullOrEmpty(e.children[i].output)) { sb.Append(TimeSpanResources.TimeSpanSeparator); foundSep = false; } if (foundSpace && !string.IsNullOrEmpty(e.children[i].output)) { sb.Append(' '); foundSpace = false; } sb.Append(e.children[i].output); } } e.output = foundValue ? sb.ToString() : string.Empty; return(foundValue); } switch (e.name) { case "n": if (core.Ticks < 0) { e.output = CultureInfo.CurrentUICulture.NumberFormat.NegativeSign; } break; case "d": case "D": case "h": case "H": case "m": case "M": case "s": case "S": case "t": case "k": case "K": case "p": case "f": case "F": case "w": case "r": var val = GetValueForGroup(core, e.name); e.output = GetStringValue(val, e); foundValue = val != 0; break; case "ts": e.output = CultureInfo.CurrentUICulture.DateTimeFormat.TimeSeparator; break; case "ds": e.output = CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator; break; case "ws": e.output = " "; break; case "fs": e.output = string.Empty; break; case "vd": case "vh": case "vm": case "vs": case "vk": case "vt": e.output = GetCultureString((long)GetValueForGroup(core, e.name.Substring(1)), e.value); break; case "q": case "e": default: e.output = e.value; break; } return(foundValue); }
public static void CleanAndCopy(ParseEntity source, ParseType parseType) { try { var target = new ParseEntity { CombinedDPS = source.CombinedDPS, DPS = source.DPS, DOTPS = source.DOTPS, CombinedHPS = source.CombinedHPS, HPS = source.HPS, HOTPS = source.HOTPS, HOHPS = source.HOHPS, HMPS = source.HMPS, CombinedDTPS = source.CombinedDTPS, DTPS = source.DTPS, DTOTPS = source.DTOTPS, CombinedTotalOverallDamage = source.CombinedTotalOverallDamage, TotalOverallDamage = source.TotalOverallDamage, TotalOverallDamageOverTime = source.TotalOverallDamageOverTime, CombinedTotalOverallHealing = source.CombinedTotalOverallHealing, TotalOverallHealing = source.TotalOverallHealing, TotalOverallHealingOverTime = source.TotalOverallHealingOverTime, TotalOverallHealingOverHealing = source.TotalOverallHealingOverHealing, TotalOverallHealingMitigated = source.TotalOverallHealingMitigated, CombinedTotalOverallDamageTaken = source.CombinedTotalOverallDamageTaken, TotalOverallDamageTaken = source.TotalOverallDamageTaken, TotalOverallDamageTakenOverTime = source.TotalOverallDamageTakenOverTime, PercentOfTotalOverallDamage = source.PercentOfTotalOverallDamage, PercentOfTotalOverallDamageOverTime = source.PercentOfTotalOverallDamageOverTime, PercentOfTotalOverallHealing = source.PercentOfTotalOverallHealing, PercentOfTotalOverallHealingOverTime = source.PercentOfTotalOverallHealingOverTime, PercentOfTotalOverallHealingOverHealing = source.PercentOfTotalOverallHealingOverHealing, PercentOfTotalOverallHealingMitigated = source.PercentOfTotalOverallHealingMitigated, PercentOfTotalOverallDamageTaken = source.PercentOfTotalOverallDamageTaken, PercentOfTotalOverallDamageTakenOverTime = source.PercentOfTotalOverallDamageTakenOverTime, Players = new List <PlayerEntity>() }; foreach (PlayerEntity playerEntity in source.Players) { try { switch (parseType) { case ParseType.DPS: double dps; double.TryParse(Settings.Default.DPSVisibility, out dps); if (playerEntity.CombinedDPS <= dps) { continue; } break; case ParseType.DTPS: double dtps; double.TryParse(Settings.Default.DTPSVisibility, out dtps); if (playerEntity.CombinedDTPS <= dtps) { continue; } break; case ParseType.HPS: double hps; double.TryParse(Settings.Default.HPSVisibility, out hps); if (playerEntity.CombinedHPS <= hps) { continue; } break; } var entity = new PlayerEntity { Name = playerEntity.Name, Job = playerEntity.Job, CombinedDPS = playerEntity.CombinedDPS, DPS = playerEntity.DPS, DOTPS = playerEntity.DOTPS, CombinedHPS = playerEntity.CombinedHPS, HPS = playerEntity.HPS, HOTPS = playerEntity.HOTPS, HOHPS = playerEntity.HOHPS, HMPS = playerEntity.HMPS, CombinedDTPS = playerEntity.CombinedDTPS, DTPS = playerEntity.DTPS, DTOTPS = playerEntity.DTOTPS, CombinedTotalOverallDamage = playerEntity.CombinedTotalOverallDamage, TotalOverallDamage = playerEntity.TotalOverallDamage, TotalOverallDamageOverTime = playerEntity.TotalOverallDamageOverTime, CombinedTotalOverallHealing = playerEntity.CombinedTotalOverallHealing, TotalOverallHealing = playerEntity.TotalOverallHealing, TotalOverallHealingOverTime = playerEntity.TotalOverallHealingOverTime, TotalOverallHealingOverHealing = playerEntity.TotalOverallHealingOverHealing, TotalOverallHealingMitigated = playerEntity.TotalOverallHealingMitigated, CombinedTotalOverallDamageTaken = playerEntity.CombinedTotalOverallDamageTaken, TotalOverallDamageTaken = playerEntity.TotalOverallDamageTaken, TotalOverallDamageTakenOverTime = playerEntity.TotalOverallDamageTakenOverTime, PercentOfTotalOverallDamage = playerEntity.PercentOfTotalOverallDamage, PercentOfTotalOverallDamageOverTime = playerEntity.PercentOfTotalOverallDamageOverTime, PercentOfTotalOverallHealing = playerEntity.PercentOfTotalOverallHealing, PercentOfTotalOverallHealingOverTime = playerEntity.PercentOfTotalOverallHealingOverTime, PercentOfTotalOverallHealingOverHealing = playerEntity.PercentOfTotalOverallHealingOverHealing, PercentOfTotalOverallHealingMitigated = playerEntity.PercentOfTotalOverallHealingMitigated, PercentOfTotalOverallDamageTaken = playerEntity.PercentOfTotalOverallDamageTaken, PercentOfTotalOverallDamageTakenOverTime = playerEntity.PercentOfTotalOverallDamageTakenOverTime, Type = playerEntity.Type }; target.Players.Add(entity); } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } } // sort entity based on settings switch (parseType) { case ParseType.DPS: if (target.Players.Any()) { switch (Settings.Default.DPSWidgetSortDirection) { case "Descending": switch (Settings.Default.DPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Job)); break; case "DPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.DPS)); break; case "CombinedDPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedDPS)); break; case "TotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.TotalOverallDamage)); break; case "CombinedTotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedTotalOverallDamage)); break; case "PercentOfTotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.PercentOfTotalOverallDamage)); break; } break; default: switch (Settings.Default.DPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Job)); break; case "DPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.DPS)); break; case "CombinedDPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedDPS)); break; case "TotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.TotalOverallDamage)); break; case "CombinedTotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedTotalOverallDamage)); break; case "PercentOfTotalOverallDamage": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.PercentOfTotalOverallDamage)); break; } break; } } DPSWidgetViewModel.Instance.ParseEntity = target; break; case ParseType.DTPS: if (target.Players.Any()) { switch (Settings.Default.DTPSWidgetSortDirection) { case "Descending": switch (Settings.Default.DTPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Job)); break; case "DTPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.DTPS)); break; case "CombinedDTPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedDTPS)); break; case "TotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.TotalOverallDamageTaken)); break; case "CombinedTotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedTotalOverallDamageTaken)); break; case "PercentOfTotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.PercentOfTotalOverallDamageTaken)); break; } break; default: switch (Settings.Default.DTPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Job)); break; case "DTPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.DTPS)); break; case "CombinedDTPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedDTPS)); break; case "TotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.TotalOverallDamageTaken)); break; case "CombinedTotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedTotalOverallDamageTaken)); break; case "PercentOfTotalOverallDamageTaken": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.PercentOfTotalOverallDamageTaken)); break; } break; } } DTPSWidgetViewModel.Instance.ParseEntity = target; break; case ParseType.HPS: if (target.Players.Any()) { switch (Settings.Default.HPSWidgetSortDirection) { case "Descending": switch (Settings.Default.HPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.Job)); break; case "HPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.HPS)); break; case "CombinedHPS": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedHPS)); break; case "TotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.TotalOverallHealing)); break; case "CombinedTotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.CombinedTotalOverallHealing)); break; case "PercentOfTotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderByDescending(p => p.PercentOfTotalOverallHealing)); break; } break; default: switch (Settings.Default.HPSWidgetSortProperty) { case "Name": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Name)); break; case "Job": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.Job)); break; case "HPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.HPS)); break; case "CombinedHPS": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedHPS)); break; case "TotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.TotalOverallHealing)); break; case "CombinedTotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.CombinedTotalOverallHealing)); break; case "PercentOfTotalOverallHealing": target.Players = new List <PlayerEntity>(target.Players.OrderBy(p => p.PercentOfTotalOverallHealing)); break; } break; } } HPSWidgetViewModel.Instance.ParseEntity = target; break; } } catch (Exception ex) { Logging.Log(Logger, new LogItem(ex, true)); } }
public async Task <object> TakeMissingLog([FromBody] ParamInput input) { try { using (var db = new TestContext()) { //获取AccessToken string accessToken = CallExternal.GetAccessToken(); //获取外部接口日志 long startTime = input.StartTime; //开始时间 long endTime = input.EndTime; //结束时间 string pageId = null; //页码Id 上一页则传当前最小记录id,下一页则传当前最大id,首页或者最后页传null string pageType = "first"; //页码类型 prev=上一页,next=下一页,first=第一页,last=最后一页 var pushLogs = GetExternalLog(accessToken, startTime, endTime, pageId, pageType); List <string> insList = new List <string>(); pushLogs.ForEach(p => { string ins = GetInstance(p.FormInstId, p.FormCodeId, accessToken); insList.Add(ins); }); insList = insList.Where(i => i.Contains("true")).ToList(); int totalCount = insList.Count(); //获取实例 pushLogs.ForEach(p => { string ins = GetInstance(p.FormInstId, p.FormCodeId, accessToken); JObject jObject = JObject.Parse(ins); if (jObject["success"].ToString() == "True") { //解析数据存入数据库 //获取CGSqlist ParseEntity PE = new ParseEntity(); CGSqlist cg = PE.GetCGSQlist(jObject); cg.FirstInput = false; //审批流 List <Reqlist> rlList = PE.GetReqlist(JObject.Parse(GetFlowRecord(cg.FormInstId, cg.FormCodeId)), cg.Fbillid); rlList.ForEach(r => { var list = db.Reqlist.AsNoTracking().Where(c => c.CreateTime == r.CreateTime) .Where(c => c.Fbillno == r.Fbillno).ToList(); if (list.Count() == 0) { db.Reqlist.Add(r); } }); var query = db.CGSqlist.AsNoTracking() .Where(c => c.SerialNumber.Equals(cg.SerialNumber)) .ToList(); if (query.Count == 0) { //获取CgsqListentry List <CgsqListentry> cleList = PE.GetCgsqListentry(jObject, cg.Fbillid); db.CGSqlist.Add(cg); db.CgsqListentry.AddRange(cleList); } db.SaveChanges(); } }); } return(new ReturnMessage { Success = true, Data = "ok" }); } catch (Exception e) { return(new ReturnMessage { Success = false, Data = e.Message }); } }