Ejemplo n.º 1
0
        public List <CEntityVoltage> QueryForRateMonthTable(CEntityStation station, DateTime startTime, DateTime endTime)
        {
            List <CEntityVoltage> results = new List <CEntityVoltage>();
            string stationID = station.StationID;

            try
            {
                CTF_TableName = "voltage" + startTime.Year.ToString() + startTime.Month.ToString() + (startTime.Day < 15 ? "A" : "B");
                CTT_TableName = "voltage" + endTime.Year.ToString() + endTime.Month.ToString() + (endTime.Day < 15 ? "A" : "B");
                string         sql          = "select * from " + CF_TableName + " where stationid = " + stationID + " and convert(VARCHAR, " + CN_DataTime + ", 120) LIKE '%00:00%' and datatime between '" + startTime + "' and '" + endTime + "' and messagetype = 8;";
                SqlDataAdapter adapter      = new SqlDataAdapter(sql, CDBManager.GetInstacne().GetConnection());
                DataTable      dataTableTmp = new DataTable();
                adapter.Fill(dataTableTmp);
                for (int i = 0; i < dataTableTmp.Rows.Count; ++i)
                {
                    CEntityVoltage res = new CEntityVoltage();
                    res.TimeCollect = DateTime.Parse(dataTableTmp.Rows[i][CN_DataTime].ToString());
                    res.type        = dataTableTmp.Rows[i][CN_TransType].ToString();
                    results.Add(res);
                }
            }
            catch
            {
            }
            return(results);
        }
Ejemplo n.º 2
0
        // 添加新列
        public void AddNewRow(CEntityVoltage voltage)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationId]    = voltage.StationID;
            row[CN_DataTime]     = voltage.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_Voltage]      = voltage.Voltage;
            row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(voltage.MessageType);
            row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(voltage.ChannelType);
            row[CN_RecvDataTime] = voltage.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_State]        = voltage.state;
            m_tableDataAdded.Rows.Add(row);
            m_mutexDataTable.ReleaseMutex();

            // 判断是否需要创建新分区
            //CSQLPartitionMgr.Instance.MaintainVoltage(voltage.TimeCollect);
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 如果超过最大值,写入数据库
                NewTask(() => { AddDataToDB(); });
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
        }
Ejemplo n.º 3
0
        //1009gm
        public List <CEntityVoltage> QueryForRateTable(CEntityStation station, DateTime date)
        {
            List <CEntityVoltage> results = new List <CEntityVoltage>();
            DateTime startTime            = date;
            DateTime endTime   = startTime.AddHours(23).AddMinutes(59).AddSeconds(59);
            string   stationID = station.StationID;

            try
            {
                string         sql          = "select * from " + CT_TableName + " where stationid = " + stationID + " and convert(VARCHAR, " + CN_DataTime + ", 120) LIKE '%00:00%' and datatime between '" + startTime + "' and '" + endTime + "'and messageType = 8;";
                SqlDataAdapter adapter      = new SqlDataAdapter(sql, CDBManager.GetInstacne().GetConnection());
                DataTable      dataTableTmp = new DataTable();
                adapter.Fill(dataTableTmp);
                for (int i = 0; i < dataTableTmp.Rows.Count; ++i)
                {
                    CEntityVoltage res = new CEntityVoltage();
                    res.TimeCollect = DateTime.Parse(dataTableTmp.Rows[i][CN_DataTime].ToString());
                    res.type        = dataTableTmp.Rows[i][CN_TransType].ToString();
                    results.Add(res);
                }
            }
            catch
            {
            }
            return(results);
        }
Ejemplo n.º 4
0
        public CStationDataAddForm()
        {
            InitializeComponent();
            InitUI();

            m_currentStation = null;
            m_entityRain     = null;
            m_entityVoltage  = null;
            m_entityWater    = null;

            FormHelper.InitUserModeEvent(this);
        }
Ejemplo n.º 5
0
        public void InitVoltageData()
        {
            Random   random             = new Random();
            DateTime currentDate        = DateTime.Now.Date;
            List <CEntityVoltage> lists = new List <CEntityVoltage>();

            for (int i = 0; i < 24 * 10; ++i)
            {
                CEntityVoltage voltage = new CEntityVoltage();
                voltage.TimeCollect = currentDate;
                voltage.Voltage     = random.Next(1000, 4000);
                currentDate         = currentDate.AddHours(1).AddMinutes(5).AddSeconds(1);
                lists.Add(voltage);
            }
            m_chartVoltage.AddVoltages(lists);
        }
        // 生成更新过的数据列表
        private void GetUpdatedData()
        {
            // 如果标记为删除的就不需要再更新了
            List <int> listUpdatedRows = new List <int>();

            for (int i = 0; i < m_listEditedRows.Count; ++i)
            {
                if (!m_listMaskedDeletedRows.Contains(m_listEditedRows[i]))
                {
                    // 如果不在删除列中,则需要更新
                    listUpdatedRows.Add(m_listEditedRows[i]);
                }
            }
            // 获取更新过的数据
            for (int i = 0; i < listUpdatedRows.Count; ++i)
            {
                CEntityVoltage voltage = new CEntityVoltage();
                //    voltage.VoltageID = long.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_VoltageID].Value.ToString());
                voltage.StationID    = m_strStaionId;
                voltage.TimeCollect  = DateTime.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_TimeCollected].Value.ToString());
                voltage.TimeRecieved = DateTime.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_TimeReceived].Value.ToString());
                voltage.Voltage      = Decimal.Parse(base.Rows[listUpdatedRows[i]].Cells[CS_Voltage].Value.ToString());
                // 数据状态
                string tmpDataState = base.Rows[listUpdatedRows[i]].Cells[CS_DataState].Value.ToString();
                if (tmpDataState.Equals(CS_DataState_Normal))
                {
                    voltage.state = 1;
                }
                else if (tmpDataState.Equals(CS_DataState_AbNormal))
                {
                    voltage.state = 0;
                }
                voltage.MessageType = CEnumHelper.UIStrToMesssageType(base.Rows[listUpdatedRows[i]].Cells[CS_MsgType].Value.ToString());
                voltage.ChannelType = CEnumHelper.UIStrToChannelType(base.Rows[listUpdatedRows[i]].Cells[CS_ChannelType].Value.ToString());
                m_listUpdated.Add(voltage);
            }
            // 获取删除过的数据
            for (int i = 0; i < base.m_listMaskedDeletedRows.Count; ++i)
            {
                //     m_listDeleteVoltage.Add(long.Parse(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_VoltageID].Value.ToString()));
                m_listDeleteVoltages_StationId.Add(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_StationID].Value.ToString());
                m_listDeleteVoltages_StationDate.Add(base.Rows[m_listMaskedDeletedRows[i]].Cells[CS_TimeCollected].Value.ToString());
            }
            m_listEditedRows.Clear();        //清空此次记录
            m_listMaskedDeletedRows.Clear(); //清空标记为删除的记录
        }
Ejemplo n.º 7
0
        // 将Map中由key指定的DataTable,从startRow开始返回界面最大行数的集合
        private List <CEntityVoltage> CopyDataToList(int key, int startRow)
        {
            List <CEntityVoltage> result = new List <CEntityVoltage>();
            // 取最小值 ,保证不越界
            int       endRow = Math.Min(m_mapDataTable[key].Rows.Count, startRow + CDBParams.GetInstance().UIPageRowCount);
            DataTable table  = m_mapDataTable[key];

            for (; startRow < endRow; ++startRow)
            {
                CEntityVoltage voltage = new CEntityVoltage();
                //   voltage.VoltageID = long.Parse(table.Rows[startRow][CN_VoltageID].ToString());
                voltage.StationID   = table.Rows[startRow][CN_StationId].ToString();
                voltage.TimeCollect = DateTime.Parse(table.Rows[startRow][CN_DataTime].ToString());
                if (!table.Rows[startRow][CN_Voltage].ToString().Equals(""))
                {
                    voltage.Voltage = Decimal.Parse(table.Rows[startRow][CN_Voltage].ToString());
                }
                else
                {
                    voltage.Voltage = -9999;
                }
                if (table.Rows[startRow][CN_State].ToString() != "")
                {
                    try
                    {
                        voltage.state = int.Parse(table.Rows[startRow][CN_State].ToString());
                    }
#pragma warning disable CS0168 // 声明了变量“ex”,但从未使用过
                    catch (Exception ex) { }
#pragma warning restore CS0168 // 声明了变量“ex”,但从未使用过
                }
                else
                {
                    voltage.state = 1;
                }
                voltage.TimeRecieved = DateTime.Parse(table.Rows[startRow][CN_RecvDataTime].ToString());
                voltage.ChannelType  = CEnumHelper.DBStrToChannelType(table.Rows[startRow][CN_TransType].ToString());
                voltage.MessageType  = CEnumHelper.DBStrToMessageType(table.Rows[startRow][CN_MsgType].ToString());
                result.Add(voltage);
            }
            return(result);
        }
Ejemplo n.º 8
0
 /// <summary>
 /// 根据界面的数据,生成添加的实体类
 /// </summary>
 private void GenerateAdddedDate()
 {
     if (chk_Rain.CheckState == CheckState.Checked)
     {
         // 新建雨量记录
         m_entityRain              = new CEntityRain();
         m_entityRain.StationID    = m_currentStation.StationID;
         m_entityRain.TimeCollect  = dtp_CollectTime.Value;
         m_entityRain.TimeRecieved = dtp_TimeReceived.Value;
         m_entityRain.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityRain.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         //m_entityRain.PeriodRain = number_PeriodRain.Value;
         //m_entityRain.DayRain = number_DayRain.Value;
         m_entityRain.TotalRain = number_TotalRain.Value;
         m_entityRain.BState    = 1;//默认是正常的
     }
     if (chk_Water.CheckState == CheckState.Checked)
     {
         // 新建水位记录
         m_entityWater              = new CEntityWater();
         m_entityWater.StationID    = m_currentStation.StationID;
         m_entityWater.TimeCollect  = dtp_CollectTime.Value;
         m_entityWater.TimeRecieved = dtp_TimeReceived.Value;
         m_entityWater.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityWater.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         m_entityWater.WaterStage   = number_WaterStage.Value;
         m_entityWater.WaterFlow    = number_WaterFlow.Value;
         m_entityWater.state        = 1;
     }
     if (chk_Voltage.CheckState == CheckState.Checked)
     {
         // 新建电压记录
         m_entityVoltage              = new CEntityVoltage();
         m_entityVoltage.StationID    = m_currentStation.StationID;
         m_entityVoltage.TimeCollect  = dtp_CollectTime.Value;
         m_entityVoltage.TimeRecieved = dtp_TimeReceived.Value;
         m_entityVoltage.MessageType  = CEnumHelper.UIStrToMesssageType(cmb_DataType.Text);
         m_entityVoltage.ChannelType  = CEnumHelper.UIStrToChannelType(cmb_ChannelType.Text);
         m_entityVoltage.Voltage      = number_Voltage.Value;
         m_entityVoltage.state        = 1;
     }
 }
 // 添加电压记录
 public void AddVoltage(CEntityVoltage entity)
 {
     m_listAdded.Add(entity);
 }