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); }
/// <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); }