Exemplo n.º 1
0
        public IEnumerable <DataItem> GetPlaybackDatas(DateTime myTime, string organizationId, IList <string> variableNames)
        {
            IList <DataItem> result      = new List <DataItem>();
            string           ammeterConn = ConnectionStringFactory.GetAmmeterConnectionString(organizationId);

            _dataFactory = new SqlServerDataFactory(ammeterConn);

            IDictionary <string, List <FieldInformation> > fieldInformations = GetFeildInformation(organizationId, variableNames, "History");
            DataTable table = GetDataItemTable(myTime, fieldInformations);

            string[] idList = GetTableColumnName(table);
            foreach (var item in idList)
            {
                string t_value = "0";
                if (_type == "RunningState")
                {
                    t_value = table.Rows[0][item] is DBNull ? "NULL" : Convert.ToDecimal(table.Rows[0][item]).ToString().Trim();
                }
                else
                {
                    t_value = table.Rows[0][item] is DBNull ? "0" : Convert.ToDecimal(table.Rows[0][item]).ToString("#").Trim();
                }
                result.Add(new DataItem
                {
                    ID    = organizationId + ">" + item + ">" + _type,
                    Value = t_value//table.Rows[0][item] is DBNull ? "0" : Convert.ToDecimal(table.Rows[0][item]).ToString("#").Trim()
                });
            }
            return(result);
        }
        public static StatisticResult GetAmmeterStatisticData(string organizationId, string variableId)
        {
            string nxjcConn = ConnectionStringFactory.NXJCConnectionString;
            ISqlServerDataFactory nxjcFactory = new SqlServerDataFactory(nxjcConn);
            string ammeterConn = ConnectionStringFactory.GetAmmeterConnectionString(organizationId);
            ISqlServerDataFactory ammeterFactory = new SqlServerDataFactory(ammeterConn);

            MeterStatisticsHelper meterStatistics = new MeterStatisticsHelper(nxjcFactory, ammeterFactory);

            FormulaHelper formulaHelper = new FormulaHelper();
            VariableInfo  variableInfo  = GetLevelCodeByOrganizationId(organizationId, variableId);

            formulaHelper.Claculate(organizationId, variableInfo.levelcode);
            IDictionary <string, string> ammeterDetail  = formulaHelper.ammeterDictionary;
            IDictionary <string, string> materialDetail = formulaHelper.materialDictionary;
            string myDenominatorFormula = formulaHelper.GetDenominatorFormulaJson(organizationId, variableId);
            //myDenominatorFormula=myDenominatorFormula==""?"无":myDenominatorFormula;

            DataTable data = meterStatistics.GetMeterStatictisticsData(organizationId, variableInfo, 10, ammeterDetail, materialDetail);
            DataTable equipmentInfoTable = new DataTable();

            if (variableInfo.leveltype == "MainMachine")
            {
                equipmentInfoTable = meterStatistics.GetEquipmentInfo(organizationId, variableInfo);
            }
            StatisticResult result = new StatisticResult
            {
                formula            = meterStatistics.AmmeterFormula,
                denominatorFormula = myDenominatorFormula,
                data = data,
                EquipmentInfoData = equipmentInfoTable,
                PFormula          = formulaHelper.PDictionary,
                GFormula          = formulaHelper.GDictionary
            };

            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获得实时数据
        /// </summary>
        /// <param name="viewName"></param>
        /// <returns></returns>
        public IEnumerable <DataItem> GetRealtimeDatas(string organizationId, IList <string> variableNames)
        {
            IList <DataItem> result = new List <DataItem>();

            /* ////////////////////////////////////////////////////////////////////////////////////////////
             * 以下是从数据库DCS实时表中查询能源监控电流和设备运行状态。
             * 修改目的:修改为电流全部从电表实时表中读取,设备状态从WebService中获取。
             * 修改人:马亮
             * 修改时间:2016-08-28
             */
            //修改对照表中,表名称字段为Current标识的才从数据库里查询(表示电表电流而非DCS电流)
            string ammeterConn = ConnectionStringFactory.GetAmmeterConnectionString(organizationId);

            //string ammeterConn = "Data Source=QH-20150320GFTA;Initial Catalog=zc_nxjc_byc_byf;Integrated Security=True;";
            _dataFactory = new SqlServerDataFactory(ammeterConn);
            DataTable m_AmmeterTable = null;

            if ("Current" == _type)            //当前只有电流有可能从电表实时表中取数
            {
                //DebugHelper.TestStart();
                IDictionary <string, List <FieldInformation> > fieldInformations = GetFeildInformation(organizationId, variableNames, "Current", "Realtime");
                //DebugHelper.TestStop("获取字段信息时间(ms):");
                //DebugHelper.TestStart();
                m_AmmeterTable = GetDataItemTable(fieldInformations);
                //DebugHelper.TestStop("获取数据信息时间(ms):");
                //DebugHelper.TestStart();
            }
            //此模块是修改能源监控数据中读取DCS实时表改为从WebService获取。
            ISqlServerDataFactory m_dataFactory          = new SqlServerDataFactory(ConnectionStringFactory.NXJCConnectionString);
            string m_FactoryOrganizationId               = GetFactoryOrganizationId(organizationId, m_dataFactory);
            Dictionary <string, string>  m_BooleanTags   = GetTags(organizationId, variableNames, "Current", "bit", _dataFactory);
            Dictionary <string, string>  m_AnalogTags    = GetTags(organizationId, variableNames, "Current", "real", _dataFactory);
            Dictionary <string, bool>    m_BooleanResult = GetBooleanResult(m_FactoryOrganizationId, m_BooleanTags.Values.ToArray());
            Dictionary <string, decimal> m_AnalogResult  = GetAnalogResult(m_FactoryOrganizationId, m_AnalogTags.Values.ToArray());
            DataTable m_DCSValueTable = GetResultTable(m_BooleanTags, m_AnalogTags, m_BooleanResult, m_AnalogResult);
            ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
            DataTable table = MergeTable(m_AmmeterTable, m_DCSValueTable);

            string[] idList = GetTableColumnName(table);
            //

            foreach (var item in idList)
            {
                string t_value = "0";
                if (_type == "RunningState")
                {
                    t_value = table.Rows[0][item] is DBNull ? "NULL" : Convert.ToDecimal(table.Rows[0][item]).ToString().Trim();
                }
                else
                {
                    t_value = MyObjectToString(table.Rows[0][item]);
                    //if (table.Rows[0][item] is bool)
                    //{
                    //    t_value = table.Rows[0][item] is DBNull ? "0" : Convert.ToDecimal(table.Rows[0][item]).ToString();
                    //}
                    //else
                    //{
                    //t_value = table.Rows[0][item] is DBNull ? "0" : (Convert.ToDecimal(table.Rows[0][item]) == 0 ? "0" : Convert.ToDecimal(table.Rows[0][item]).ToString("#").Trim());
                    //}
                }
                result.Add(new DataItem
                {
                    ID    = organizationId + ">" + item + ">" + _type,
                    Value = t_value//table.Rows[0][item] is DBNull ? "0" : Convert.ToDecimal(table.Rows[0][item]).ToString("#").Trim()
                });
            }
            //DebugHelper.TestStop("处理键值对的时间(ms):");
            return(result);
        }