using SqlSugar; namespace ProximaAnalizer.Helpers; internal class DBDataHelper(SqlSugarCustom sqlSugarCustom) { public bool GetRecipeSteps(string? guid, out string reason, out List? recipeSteps) { recipeSteps = default; reason = string.Empty; if (string.IsNullOrEmpty(guid)) return false; if (sqlSugarCustom.Client is null) return false; try { recipeSteps = sqlSugarCustom.Client.Queryable().AS("recipe_step_data") .Where(t => t.Process_Data_Guid == guid) .OrderBy(t => t.Step_Begin_Time).ToList(); } catch { reason = "recipe_step_data 记录不存在"; return false; } if (recipeSteps.Count == 0) { reason = "recipe_step 步骤数量为0"; return false; } return true; } public bool GetFirstData(DateTime beginTime, out string reason, out Dictionary? temp) { temp = default; reason = string.Empty; if (sqlSugarCustom.Client is null) return false; dynamic pm; dynamic system; try { pm = sqlSugarCustom.Client.Queryable().AS($"\"{beginTime:yyyyMMdd}.PM1\"").First(); system = sqlSugarCustom.Client.Queryable().AS($"\"{beginTime:yyyyMMdd}.System\"").First(); } catch { reason = $"{beginTime:yyyyMMdd} 记录不存在"; return false; } if (pm is not IDictionary input) return false; GeneralProcessData processData = new(); if (!processData.ToDictionary(input, out Dictionary? output) || output is null) return false; if (output["PM1"] is not IDictionary pmData) return false; if (!processData.ToDictionary(system, out Dictionary? systemDic) || systemDic is null) return false; temp = []; Dictionary PM1 = []; Dictionary System = []; temp.Add("PM1", PM1); temp.Add("System", System); GeneralProcessData.CreateTablePM(pmData, PM1); GeneralProcessData.CreateTableSystem(systemDic!, System); return true; } public DateTime? StartTime { get; internal set; } public DateTime? EndTime { get; internal set; } private ObjectFuncModel? _whereFunc; public void SetTimeRange(DateTime startTime, DateTime endTime) { this.StartTime = startTime; this.EndTime = endTime; _whereFunc = ObjectFuncModel.Create("Format", "time", ">", "{long}:" + $"{startTime.Ticks}", "&&", "time", "<", "{long}:" + $"{endTime.Ticks}"); } public bool GetPMData(out List? pm1) { pm1 = null; if (this._whereFunc is null) return false; if (sqlSugarCustom.Client is null) return false; try { pm1 = sqlSugarCustom.Client .Queryable() .AS($"\"{StartTime:yyyyMMdd}.PM1\"") .Where(_whereFunc).ToList(); } catch { return false; } return true; } public bool GetPMData(IEnumerable fields, out List? pm1) { pm1 = null; if (this._whereFunc is null) return false; if (sqlSugarCustom.Client is null) return false; List selectModels = []; foreach (var field in fields) selectModels.Add(new() { FieldName = $"\"{field}\"" }); try { pm1 = sqlSugarCustom.Client .Queryable() .AS($"\"{StartTime:yyyyMMdd}.PM1\"") .Select(selectModels) .Where(_whereFunc).ToList(); } catch { return false; } return true; } public bool GetSystemData(out List? systemData) { systemData = default; if (this._whereFunc is null) return false; if (sqlSugarCustom.Client is null) return false; try { systemData = sqlSugarCustom.Client .Queryable() .AS($"\"{StartTime:yyyyMMdd}.System\"") .Where(_whereFunc).ToList(); } catch { return false; } return true; } public bool GetSystemData(IEnumerable fields, out List? systemData) { systemData = default; if (this._whereFunc is null) return false; if (sqlSugarCustom.Client is null) return false; List selectModels = []; foreach (var field in fields) selectModels.Add(new() { FieldName = $"\"{field}\"" }); try { systemData = sqlSugarCustom.Client .Queryable() .AS($"\"{StartTime:yyyyMMdd}.System\"") .Select(selectModels) .Where(_whereFunc).ToList(); } catch { return false; } return true; } public bool GetAlarmData(out List? alarm) { alarm = default; if (this._whereFunc is null) return false; if (sqlSugarCustom.Client is null) return false; alarm = sqlSugarCustom.Client .Queryable() .AS($"event_data") .Where(t => t.Occur_Time >= this.StartTime && t.Occur_Time <= this.EndTime && (t.Level == "Alarm" || t.Level == "Warning")).ToList(); return alarm is not null; } }