public static List <MCPBRData> getPBRS(int mcCode, string mcName) { List <MCPBRData> result = new List <MCPBRData>(); foreach (MCSettingsRecord rec in MCSettings.Single.MCData) { if (rec.MCCode == mcCode) { MCPBRData pbr = new MCPBRData(rec); result.Add(pbr); } } if (result.Count == 0) { foreach (MCSettingsRecord rec in MCSettings.Single.MCData) { if (rec.MCName.ToLower() == mcName.ToLower()) { MCPBRData pbr = new MCPBRData(rec); result.Add(pbr); } } } if (result.Count == 0) { Logger.Info("Ошибка при разборе полученного макета. Возможно изменение кодировки MC"); } return(result); }
public static MCPBRData getPBR(int mcCode, string mcName) { foreach (MCSettingsRecord rec in MCSettings.Single.MCData) { if (rec.MCName.ToLower() == mcName.ToLower()) { MCPBRData pbr = new MCPBRData(rec); return(pbr); } } Logger.Info("Ошибка при разборе полученного макета. Возможно изменение кодировки MC"); return(null);; }
public bool getPlan(IGenObject obj) { DateTime dt1 = Date.Date.LocalHqToSystemEx(); DateTime dt0 = Date.Date.AddDays(1).LocalHqToSystemEx(); modesConnect(); IList <PlanValueItem> data = api.GetPlanValuesActual(dt1, dt0, obj); bool ok = true; if (data.Count > 0) { Logger.Info(String.Format("Обработка ПБР для {0}({1}) [{2}]", obj.Description, obj.Id, obj.Name)); List <MCPBRData> pbrs = MCPBRData.getPBRS(obj.Id, obj.Name); foreach (MCPBRData pbr in pbrs) { if (ProcessedPBRS.ContainsKey(pbr.Item)) { Logger.Info(string.Format("Данные по коду {0} уже были считаны ", pbr.Item)); continue; } if (pbr.DataSettings != null) { foreach (PlanValueItem item in data) { if (item.ObjFactor == 0) { pbr.AddValue(item.DT.SystemToLocalHqEx(), item.Value); string pt = item.Type.ToString().Replace("ПБР", ""); int num = 0; try { num = Int32.Parse(pt); } catch { } NPBR = num; } } Logger.Info(String.Format("Получено {0} записей с {1} по {2} по объекту {3}", pbr.Data.Count, dt1.SystemToLocalHqEx(), dt0.SystemToLocalHqEx(), obj.Description)); if (pbr.Data.Count > 10) { if (!ProcessedPBRS.ContainsKey(pbr.Item)) { ProcessedPBRS.Add(pbr.Item, pbr); } } else { Logger.Info("Недостаточно данных"); ok = false; } Logger.Info("===Данные считаны: " + (ok ? "Успешно" : "Ошибка")); } else { Logger.Info("===Ошибка при разборе полученного макета. Возможно изменение кодировки MC"); } } } foreach (IGenObject ch in obj.Children) { bool ok2 = getPlan(ch); ok = ok && ok2; } return(ok); }
public bool getPlan(IGenObject obj) { DateTime dt1 = Date.Date.LocalHqToSystemEx(); DateTime dt0 = Date.Date.AddDays(1).LocalHqToSystemEx(); modesConnect(); MCPBRData pbr = MCPBRData.getPBR(obj.Id, obj.Name); bool ok = true; foreach (IGenObject ch in obj.Children) { bool ok2 = getPlan(ch); ok = ok && ok2; } if (pbr == null) { return(ok); } if (pbr.ReadNPRCH) { IList <IGenObject> objs = new List <IGenObject>(); objs.Add(obj); api.RefreshGenObjects(objs, dt1, SyncZone.First); IVarParam vp = obj.GetVarParam("НПРЧ_уч"); for (int i = 0; i < 24; i++) { object val = vp.GetValue(i); pbr.AddNPRCHValue(dt1.SystemToLocalHqEx().AddHours(i), (bool)val?1:0); } ProcessedPBRS.Add(pbr.Item, pbr); } if (pbr.ReadPBR) { IList <PlanValueItem> data = api.GetPlanValuesActual(dt1, dt0, obj); Logger.Info(String.Format("Обработка ПБР для {0}({1}) [{2}]", obj.Description, obj.Id, obj.Name)); if (pbr.DataSettings != null) { foreach (PlanValueItem item in data) { if (item.ObjFactor == 0) { pbr.AddValue(item.DT.SystemToLocalHqEx(), item.Value); string pt = item.Type.ToString().Replace("ПБР", ""); int num = 0; try { num = Int32.Parse(pt); } catch { } NPBR = num; } else if (item.ObjFactor == 1 && pbr.DataSettings.WriteToEDSMinMax) { pbr.AddMinValue(item.DT.SystemToLocalHqEx().AddHours(-1), item.Value); } else if (item.ObjFactor == 2 && pbr.DataSettings.WriteToEDSMinMax) { pbr.AddMaxValue(item.DT.SystemToLocalHqEx().AddHours(-1), item.Value); } } Logger.Info(String.Format("Получено {0} записей с {1} по {2} по объекту {3}", pbr.Data.Count, dt1.SystemToLocalHqEx(), dt0.SystemToLocalHqEx(), obj.Description)); if (pbr.Data.Count > 10) { if (!ProcessedPBRS.ContainsKey(pbr.Item)) { ProcessedPBRS.Add(pbr.Item, pbr); } } else { Logger.Info("Недостаточно данных"); ok = false; } Logger.Info("===Данные считаны: " + (ok ? "Успешно" : "Ошибка")); } else { Logger.Info("===Ошибка при разборе полученного макета. Возможно изменение кодировки MC"); } } return(ok); }