Example #1
0
        void api__OnData53500Modified(object self, EventRefreshData53500 e)
        {
            newMessage = String.Format("Изменение данных 53500. Кол-во оборудования: {0} \r\n", e.Equipments.Count);
            this.Invoke(new MethodInvoker(AddEventMessage));

            if ((listGenObjectForGetVarParam != null) && (e.Equipments.ContainsKey(dateTimePicker4.Value.Date.LocalHqToSystemEx())))
            {
                api_.RefreshGenObjects(listGenObjectForGetVarParam, dateTimePicker4.Value.Date.LocalHqToSystemEx(), syncZone);
                this.Invoke(new MethodInvoker(RefreshGridByObject));
            }
        }
Example #2
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);
        }