예제 #1
0
파일: PG.cs 프로젝트: MODES-Centre/1.4.5
 void ExpandTree(IList list, IGenObject IGO, string Level)
 {
     list.Add(new IGO_Cover()
     {
         IGO         = IGO,
         DisplayName =
             String.Format("{0} {1}; Тип: {2}", Level, IGO.Description, IGO.GenObjType.Description)
     });
     foreach (var it in IGO.Children)
     {
         ExpandTree(list, it, Level + "  ");
     }
 }
예제 #2
0
        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);
        }
예제 #3
0
 private static void VerifyObjectClass(GenDataDef profileDataDef, string className, IGenObject genObject)
 {
     Assert.AreEqual(profileDataDef.Classes.IndexOf(className), genObject.ClassId, className + " class ID");
     Assert.AreEqual(className, genObject.ClassName, "Object Class name");
 }
예제 #4
0
        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);
        }