コード例 #1
0
ファイル: MCPBRData.cs プロジェクト: rj128x/EDSProjNew
        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);
        }
コード例 #2
0
        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);;
        }
コード例 #3
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);
        }
コード例 #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);
        }