/// <summary> /// Получение актуального(действующего) планового графика на текущие сутки /// </summary> static void GetPlanValuesActual(IApiExternal api_, Modes.BusinessLogic.IGenObject IGO) { //api_.GetPlanFactors() - это список: генерация; минимум генерации; максимум генерации //Величины в тестовом примере читаются так: Values (это коллекция) = api_.GetPlanValuesActual(...) //А потом цикл по ним, и у них берётся .DT и .Value IList <PlanValueItem> LPVI = api_.GetPlanValuesActual(DateTime.Now.Date.LocalHqToSystemEx(), DateTime.Now.Date.AddDays(1).LocalHqToSystemEx(), IGO); if (LPVI.Count == 0) { Console.WriteLine(" Нет параметров генерации!"); } foreach (PlanValueItem pvi in LPVI.OrderBy(RRR => RRR.DT)) { Console.WriteLine(" " + pvi.DT.SystemToLocalHqEx().ToString() + " " + pvi.Type.ToString() + " [" + LPFI[pvi.ObjFactor].Description + "] " + /*it.ObjName это id генерирующего объекта*/ LPFI[pvi.ObjFactor].Name + " =" + pvi.Value.ToString()); techsite.WritePlanValue(IGO.IdInner, pvi.DT.SystemToLocalHqEx(), pvi.Type.ToString(), (MySQLtechsite.Params)LPFI[pvi.ObjFactor].Id, pvi.Value); //Запись в БД techsite //02.09.2013 меняю IGO.Id на IGO.IdInner //pvi.DT.SystemToLocalHqEx() даёт Московское время, как и нужно //Аналогичный результат даст явное преобразование TimeZoneInfo.ConvertTimeFromUtc(pvi.DT, TimeZoneInfo.FindSystemTimeZoneById("Russian Standard Time")) //"Russian Standard Time" - это Москва. "N. Central Asia Standard Time" - это Новосибирск. //Про конвертацию времени: http://msdn.microsoft.com/ru-ru/library/bb397769.aspx } }
static void ProcessChilds(Modes.BusinessLogic.IGenObject IGO, int Level, IApiExternal api_) { foreach (Modes.BusinessLogic.IGenObject IGOch in IGO.Children) { if (!(IGOch.GenObjType.Id == 15)) //Оборудование типа ГОУ исключаем - по ним нет ни параметров, ни дочерних элементов { Console.WriteLine(new System.String('-', Level) + IGOch.Description + " [" + IGOch.GenObjType.Description + "] P:" + IGOch.VarParams.Count.ToString() + " Id:" + IGOch.Id.ToString() + " IdInner:" + IGOch.IdInner.ToString()); //if (g_bList == false) ProcessParams(IGOch); else ; if (IGOch.GenObjType.Id == 3) { //У оборудования типа Электростанция (id=1) нет параметров - только дочерние элементы if (g_bList == false) { GetPlanValuesActual(api_, IGOch); } else { ; } } else { ; } ProcessChilds(IGOch, Level + 1, api_); } else { ; } } }
void ProcessChilds(Modes.BusinessLogic.IGenObject IGO, int Level, int idInner) { foreach (Modes.BusinessLogic.IGenObject IGOch in IGO.Children) { if (!(IGOch.GenObjType.Id == 15)) //Оборудование типа ГОУ исключаем - по ним нет ни параметров, ни дочерних элементов { //Console.WriteLine(new System.String('-', Level) + IGOch.Description + " [" + IGOch.GenObjType.Description + "] P:" + IGOch.VarParams.Count.ToString() + " Id:" + IGOch.Id.ToString() + " IdInner:" + IGOch.IdInner.ToString()); //ProcessParams(IGOch); if ((IGOch.GenObjType.Id == 3) && (IGOch.IdInner == idInner)) { //У оборудования типа Электростанция (id=1) нет параметров - только дочерние элементы m_listIGO.Add(IGOch); } else { ; } ProcessChilds(IGOch, Level + 1, idInner); } else { ; } } }
static void ProcessParams(Modes.BusinessLogic.IGenObject IGO) { foreach (Modes.BusinessLogic.IVarParam param in IGO.VarParams) { Console.WriteLine("Параметр: " + param.Name + " [" + param.Description + "] " + param.GetValue(0)); //пройтись 0...23 - по часам величины } }
void addIGO(Modes.BusinessLogic.IGenObject igo, int Level, int idInner, Action <Modes.BusinessLogic.IGenObject> fAdd) { foreach (Modes.BusinessLogic.IGenObject child in igo.Children) { if (!((ID_GEN_OBJECT_TYPE)child.GenObjType.Id == ID_GEN_OBJECT_TYPE.GOU)) { //Console.WriteLine(new System.String('-', Level) + IGOch.Description + " [" + IGOch.GenObjType.Description + "] P:" + IGOch.VarParams.Count.ToString() + " Id:" + IGOch.Id.ToString() + " IdInner:" + IGOch.IdInner.ToString()); //ProcessParams(IGOch); if (((ID_GEN_OBJECT_TYPE)child.GenObjType.Id == ID_GEN_OBJECT_TYPE.RGE) && (child.IdInner == idInner)) { fAdd(child); break; } else { //У оборудования типа Электростанция (id = 1) нет параметров - только дочерние элементы ; } addIGO(child, Level + 1, idInner, fAdd); } else { //Оборудование типа ГОУ исключаем - по ним нет ни параметров, ни дочерних элементов ; } } }