Ejemplo n.º 1
0
        public void AddNewRow(CEntityTSRain rain)
        {
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationId]    = rain.StationID;
            row[CN_DataTime]     = rain.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_TotalRain]    = rain.TotalRain;
            row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(rain.ChannelType);
            row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(rain.MessageType);
            row[CN_RecvDataTime] = rain.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            m_tableDataAdded.Rows.Add(row);
            m_mutexDataTable.ReleaseMutex();
            AddDataToDB();
        }
Ejemplo n.º 2
0
        public void AddNewRow(CEntityTSWater water)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationId]    = water.StationID;
            row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_WaterStage]   = water.WaterStage;
            row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
            row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
            row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            m_tableDataAdded.Rows.Add(row);
            m_mutexDataTable.ReleaseMutex();
            AddDataToDB();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 异步添加一个数据记录
        /// </summary>
        /// <param name="entity"></param>
        public void AddNewRow(CEntitySoilData entity)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            DataRow row = m_tableDataAdded.NewRow();

            row[CN_StationId]   = entity.StationID;
            row[CN_DataTime]    = entity.DataTime.ToString(CDBParams.GetInstance().DBDateTimeFormat);
            row[CN_Voltage]     = entity.DVoltage;
            row[CN_MessageType] = CEnumHelper.MessageTypeToDBStr(entity.MessageType);
            row[CN_ChannelType] = CEnumHelper.ChannelTypeToDBStr(entity.ChannelType);

            row[CN_Voltage10]  = entity.Voltage10;
            row[CN_Moisture10] = entity.Moisture10;

            row[CN_Voltage20]  = entity.Voltage20;
            row[CN_Moisture20] = entity.Moisture20;

            row[CN_Voltage30]  = entity.Voltage30;
            row[CN_Moisture30] = entity.Moisture30;

            row[CN_Voltage40]  = entity.Voltage40;
            row[CN_Moisture40] = entity.Moisture40;

            row[CN_Voltage60]  = entity.Voltage60;
            row[CN_Moisture60] = entity.Moisture60;

            row[CN_RecvTime] = entity.reciveTime;
            row[CN_State]    = entity.state;

            m_tableDataAdded.Rows.Add(row);
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 如果超过最大值,写入数据库
                //Task task = new Task(() => { AddDataToDB(); });
                //task.Start();
                //m_mutexDataTable.ReleaseMutex();
                //Thread.Sleep(10 * 1000);
                NewTask(() => { AddDataToDB(); });
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 4
0
        private String GetUpdateSQL(CEntitySerialPort entity)
        {
            String strPortNum    = entity.PortNumber.ToString();
            String strTransType  = CEnumHelper.SerialTransTypeToDBStr(entity.TransType);
            String strBaudrate   = entity.Baudrate.ToString();
            String strDataBit    = entity.DataBit.ToString();
            String strStopBit    = entity.StopBit.ToString();
            String strParityType = CEnumHelper.PortParityTypeToDBChar(entity.ParityType).ToString();
            String strStream     = CEnumHelper.SerialPortStreamTypeToDBStr(entity.Stream);
            String strBreak      = "NULL";

            if (entity.Break.HasValue)
            {
                strBreak = entity.Break.Value.ToString();
                //if (entity.Break.Value)
                //    strBreak = "1";
                //else
                //    strBreak = "0";
            }

            String strOpen = "NULL";

            if (entity.SwitchSatus.HasValue)
            {
                strOpen = entity.SwitchSatus.Value.ToString();
                //if (entity.SwitchSatus.Value)
                //    strOpen = "1";
                //else
                //    strOpen = "0";
            }

            return(String.Format(
                       "UPDATE {0} SET [{1}]={2},[{3}]={4},[{5}]={6},[{7}]={8},[{9}]={10},[{11}]={12},[{13}]={14},[{15}]={16} WHERE [{17}]={18}",
                       CT_TableName,

                       CN_TransType, strTransType,
                       CN_Baudrate, strBaudrate,
                       CN_Databit, strDataBit,
                       CN_Stopbit, strStopBit,
                       CN_Parity, strParityType,
                       CN_Stream, strStream,
                       CN_Break, strBreak,
                       CN_Open, strOpen,

                       CN_PortNumber, strPortNum
                       ));
        }
Ejemplo n.º 5
0
        public void AddOrUpdate(List <CEntityWater> listWaters)
        {
            m_mutexDataTable.WaitOne(); //等待互斥量
            foreach (CEntityWater water in listWaters)
            {
                StringBuilder sql = new StringBuilder();
                try
                {
                    DataRow row = m_tableDataAdded.NewRow();
                    row[CN_StationId]    = water.StationID;
                    row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                    row[CN_WaterStage]   = water.WaterStage;
                    row[CN_WaterFlow]    = water.WaterFlow;
                    row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
                    row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
                    row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                    m_tableDataAdded.Rows.Add(row);

                    // 判断是否需要创建新分区
                    //CSQLPartitionMgr.Instance.MaintainWater(water.TimeCollect);
                    NewTask(() => { AddDataToDB(); });
                }
#pragma warning disable CS0168 // 声明了变量“e”,但从未使用过
                catch (Exception e)
#pragma warning restore CS0168 // 声明了变量“e”,但从未使用过
                {
                    sql.AppendFormat("update {0} set {1}={2},{3}={4},{5}={6},{7}={8},{9}={10} where {11}={12} and {13}='{14}';",
                                     CT_TableName,
                                     CN_WaterStage, water.WaterStage,
                                     CN_WaterFlow, (water.WaterFlow.HasValue ? water.WaterFlow.Value.ToString() : "null"),
                                     CN_TransType, CEnumHelper.ChannelTypeToDBStr(water.ChannelType),
                                     CN_MsgType, CEnumHelper.MessageTypeToDBStr(water.MessageType),
                                     CN_RecvDataTime, DateTimeToDBStr(water.TimeRecieved),
                                     CN_StationId, water.StationID,
                                     CN_DataTime, water.TimeCollect.ToString()
                                     );
                    if (!this.ExecuteSQLCommand(sql.ToString()))
                    {
                        return;
                    }
                    sql.Clear(); //清除以前的所有命令
                }
                ResetAll();
            }
            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 6
0
        public bool UpdateRows(List <CEntityRealTime> realtimes)
        {
            // 除主键和站点信息外,其余信息随意修改
            StringBuilder sql = new StringBuilder();
            int           currentBatchCount = 0;

            for (int i = 0; i < realtimes.Count; i++)
            {
                ++currentBatchCount;
                sql.AppendFormat("update {0} set {1}={2},{3}={4},{5}={6},{7}={8},{9}={10},{11}={12},{13}={14},{15}={16},{17}={18},{19}={20} where {21}={22} and {23}='{24}';",
                                 CT_TableName,
                                 CN_YesterdayRain, realtimes[i].LastDayRainFall,
                                 CN_TodayRain, realtimes[i].DDayRainFall,
                                 CN_PeriodRain, realtimes[i].DPeriodRain,
                                 CN_WaterStage, realtimes[i].DWaterYield,
                                 CN_WaterFlow, realtimes[i].DWaterFlowActual,
                                 CN_Voltage, realtimes[i].Dvoltage,
                                 CN_TransType, CEnumHelper.ChannelTypeToDBStr(realtimes[i].EIChannelType),
                                 CN_MsgType, CEnumHelper.MessageTypeToDBStr(realtimes[i].EIMessageType),
                                 CN_DataTime, realtimes[i].TimeDeviceGained,
                                 CN_DataState, realtimes[i].EIStationType,
                                 CN_StationId, realtimes[i].StrStationID,
                                 CN_CName, realtimes[i].StrStationName.ToString()
                                 //    CN_VoltageID, voltages[i].VoltageID
                                 );
                //if (currentBatchCount >= CDBParams.GetInstance().UpdateBufferMax)
                //{
                //    // 更新数据库
                //    if (!this.ExecuteSQLCommand(sql.ToString()))
                //    {
                //        // 保存失败
                //        return false;
                //    }
                //    sql.Clear(); //清除以前的所有命令
                //    currentBatchCount = 0;
                //}
            }
            // 更新数据库
            if (!this.ExecuteSQLCommand(sql.ToString()))
            {
                return(false);
            }
            sql.Clear(); //清除以前的所有命令
            ResetAll();
            return(true);
        }
        // 生成更新过的数据列表
        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.º 8
0
 public void AddNewRows(List <CEntityTSWater> waters)
 {
     m_mutexDataTable.WaitOne(); //等待互斥量
     foreach (CEntityTSWater water in waters)
     {
         DataRow row = m_tableDataAdded.NewRow();
         row[CN_StationId]    = water.StationID;
         row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
         row[CN_WaterStage]   = water.WaterStage;
         row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
         row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
         row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
         m_tableDataAdded.Rows.Add(row);
     }
     AddDataToDB();
     m_mutexDataTable.ReleaseMutex();
 }
Ejemplo n.º 9
0
        public bool UpdateRows(List <CEntitySoilData> listData)
        {
            // 除主键外和站点外,其余信息随意修改
            StringBuilder sql = new StringBuilder();
            int           currentBatchCount = 0;

            for (int i = 0; i < listData.Count; i++)
            {
                ++currentBatchCount;
                sql.AppendFormat("update {0} set {1}={2},{3}={4},{5}={6},{7}='{8}',{9}={10},{11}={12},{13}={14},{15}={16},{17}={18}, {19}={20}, {21}={22} where {23}={24} and {25}='{26}';",
                                 CT_TableName,
                                 CN_Voltage, listData[i].DVoltage,
                                 CN_ChannelType, CEnumHelper.ChannelTypeToDBStr(listData[i].ChannelType),
                                 CN_MessageType, CEnumHelper.MessageTypeToDBStr(listData[i].MessageType),
                                 CN_RecvTime, listData[i].reciveTime.ToString(),
                                 CN_Moisture10, listData[i].Moisture10,
                                 CN_Moisture20, listData[i].Moisture20,
                                 CN_Moisture40, listData[i].Moisture40,
                                 CN_Voltage10, listData[i].Voltage10,
                                 CN_Voltage20, listData[i].Voltage20,
                                 CN_Voltage40, listData[i].Voltage40,
                                 CN_State, listData[i].state,
                                 CN_StationId, listData[i].StationID,
                                 CN_DataTime, listData[i].DataTime.ToString()
                                 //    CN_VoltageID, voltages[i].VoltageID
                                 );
                //if (currentBatchCount >= CDBParams.GetInstance().UpdateBufferMax)
                //{
                // 更新数据库
                //if (!this.ExecuteSQLCommand(sql.ToString()))
                //{
                //    // 保存失败
                //    return false;
                //}

                //currentBatchCount = 0;
            }
            // 更新数据库
            if (!this.ExecuteSQLCommand(sql.ToString()))
            {
                return(false);
            }
            sql.Clear(); //清除以前的所有命令
            ResetAll();
            return(true);
        }
Ejemplo n.º 10
0
        private String GetInsertSQL(CEntitySerialPort entity)
        {
            String strPortNum    = entity.PortNumber.ToString();
            String strTransType  = CEnumHelper.SerialTransTypeToDBStr(entity.TransType);
            String strBaudrate   = entity.Baudrate.ToString();
            String strDataBit    = entity.DataBit.ToString();
            String strStopBit    = entity.StopBit.ToString();
            String strParityType = CEnumHelper.PortParityTypeToDBChar(entity.ParityType).ToString();
            String strStream     = CEnumHelper.SerialPortStreamTypeToDBStr(entity.Stream);
            String strBreak      = "NULL";

            if (entity.Break.HasValue)
            {
                strBreak = entity.Break.Value.ToString();
                //if (entity.Break.Value)
                //    strBreak = "1";
                //else
                //    strBreak = "0";
            }

            String strOpen = "NULL";

            if (entity.SwitchSatus.HasValue)
            {
                strBreak = entity.SwitchSatus.Value.ToString();
                //if (entity.SwitchSatus.Value)
                //    strOpen = "1";
                //else
                //    strOpen = "0";
            }

            return(String.Format(
                       "INSERT INTO {0} ([{1}],[{2}],[{3}],[{4}],[{5}],[{6}],[{7}],[{8}],[{9}]) VALUES ({10},{11},{12},{13},{14},{15},{16},{17},{18})",
                       CT_TableName,

                       CN_PortNumber, CN_TransType, CN_Baudrate,
                       CN_Databit, CN_Stopbit, CN_Parity,
                       CN_Stream, CN_Break, CN_Open,

                       strPortNum, strTransType, strBaudrate,
                       strDataBit, strStopBit, strParityType,
                       strStream, strBreak, strOpen
                       ));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 异步添加数据到数据库
        /// </summary>
        /// <param name="listData"></param>
        public void AddSoilDataRange(List <CEntitySoilData> listData)
        {
            m_mutexDataTable.WaitOne(); //等待互斥量
            foreach (CEntitySoilData entity in listData)
            {
                DataRow row = m_tableDataAdded.NewRow();
                row[CN_StationId]   = entity.StationID;
                row[CN_DataTime]    = entity.DataTime.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_Voltage]     = entity.DVoltage;
                row[CN_MessageType] = CEnumHelper.MessageTypeToDBStr(entity.MessageType);
                row[CN_ChannelType] = CEnumHelper.ChannelTypeToDBStr(entity.ChannelType);

                row[CN_Voltage10]  = entity.Voltage10;
                row[CN_Moisture10] = entity.Moisture10;

                row[CN_Voltage20]  = entity.Voltage20;
                row[CN_Moisture20] = entity.Moisture20;

                row[CN_Voltage30]  = entity.Voltage30;
                row[CN_Moisture30] = entity.Moisture30;

                row[CN_Voltage40]  = entity.Voltage40;
                row[CN_Moisture40] = entity.Moisture40;

                row[CN_Voltage60]  = entity.Voltage60;
                row[CN_Moisture60] = entity.Moisture60;

                row[CN_RecvTime] = entity.reciveTime;
                row[CN_State]    = entity.state;

                m_tableDataAdded.Rows.Add(row);
            }
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 超过最大缓存,开线程写入数据库
                NewTask(() => { AddDataToDB(); });
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer.Start();
            }
            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 12
0
 public void AddNewRows(List <PWDData> pwdDatas)
 {
     m_mutexDataTable.WaitOne(); //等待互斥量
     foreach (PWDData pwd in pwdDatas)
     {
         DataRow row = m_tableDataAdded.NewRow();
         row[CN_StationId]    = pwd.StationID;
         row[CN_DataTime]     = pwd.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
         row[CN_Visi1min]     = pwd.Visi1min;
         row[CN_Visi10min]    = pwd.Visi10min;
         row[CN_transtype]    = CEnumHelper.ChannelTypeToDBStr(pwd.ChannelType);
         row[CN_messagetype]  = CEnumHelper.MessageTypeToDBStr(pwd.MessageType);
         row[CN_recvdatatime] = pwd.TimeRecieved;
         row[CN_State]        = pwd.BState;
         m_tableDataAdded.Rows.Add(row);
     }
     NewTask(() => { InsertSqlBulk(m_tableDataAdded); });
     m_mutexDataTable.ReleaseMutex();
 }
Ejemplo n.º 13
0
        public bool UpdateRows(List <Hydrology.Entity.CEntityWater> waters)
        {
            // 除主键外,其余信息随意修改
            StringBuilder sql = new StringBuilder();
            int           currentBatchCount = 0;

            for (int i = 0; i < waters.Count; i++)
            {
                ++currentBatchCount;
                CTF_TableName = "water" + waters[i].TimeCollect.Year.ToString() + waters[i].TimeCollect.Month.ToString() + (waters[i].TimeCollect.Day > 15 ? "B" : "A");
                sql.AppendFormat("update {0} set {1}={2},{3}={4},{5}={6},{7}={8},{9}={10},{11}={12} where {13}={14} and {15}='{16}';",
                                 CTF_TableName,
                                 CN_WaterStage, waters[i].WaterStage,
                                 CN_WaterFlow, (waters[i].WaterFlow.HasValue ? waters[i].WaterFlow.Value.ToString() : "null"),
                                 CN_TransType, CEnumHelper.ChannelTypeToDBStr(waters[i].ChannelType),
                                 CN_MsgType, CEnumHelper.MessageTypeToDBStr(waters[i].MessageType),
                                 CN_State, waters[i].state,
                                 CN_RecvDataTime, DateTimeToDBStr(waters[i].TimeRecieved),
                                 CN_StationId, waters[i].StationID,
                                 CN_DataTime, waters[i].TimeCollect.ToString()
                                 //   CN_WaterID, waters[i].WaterID
                                 );
                //if (currentBatchCount >= CDBParams.GetInstance().UpdateBufferMax)
                //{
                //    // 更新数据库
                //    if (!this.ExecuteSQLCommand(sql.ToString()))
                //    {
                //        return false;
                //    }
                //    sql.Clear(); //清除以前的所有命令
                //    currentBatchCount = 0;
                //}
            }
            // 更新数据库
            if (!this.ExecuteSQLCommand(sql.ToString()))
            {
                return(false);
            }
            sql.Clear(); //清除以前的所有命令
            ResetAll();
            return(true);
        }
Ejemplo n.º 14
0
        public bool UpdateRows(List <CEntityVoltage> voltages)
        {
            // 除主键外和站点外,其余信息随意修改
            StringBuilder sql = new StringBuilder();
            int           currentBatchCount = 0;

            for (int i = 0; i < voltages.Count; i++)
            {
                ++currentBatchCount;
                CTF_TableName = "voltage" + voltages[i].TimeCollect.Year.ToString() + voltages[i].TimeCollect.Month.ToString() + (voltages[i].TimeCollect.Day < 15 ? "A" : "B");
                sql.AppendFormat("update {0} set {1}={2},{3}={4},{5}={6},{7}={8},{9}={10} where {11}={12} and {13}='{14}';",
                                 CTF_TableName,
                                 CN_Voltage, voltages[i].Voltage,
                                 CN_TransType, CEnumHelper.ChannelTypeToDBStr(voltages[i].ChannelType),
                                 CN_MsgType, CEnumHelper.MessageTypeToDBStr(voltages[i].MessageType),
                                 CN_State, voltages[i].state,
                                 CN_RecvDataTime, DateTimeToDBStr(voltages[i].TimeRecieved),
                                 CN_StationId, voltages[i].StationID,
                                 CN_DataTime, voltages[i].TimeCollect.ToString()
                                 //    CN_VoltageID, voltages[i].VoltageID
                                 );
                //if (currentBatchCount >= CDBParams.GetInstance().UpdateBufferMax)
                //{
                //    // 更新数据库
                //    if (!this.ExecuteSQLCommand(sql.ToString()))
                //    {
                //        // 保存失败
                //        return false;
                //    }
                //    sql.Clear(); //清除以前的所有命令
                //    currentBatchCount = 0;
                //}
            }
            // 更新数据库
            if (!this.ExecuteSQLCommand(sql.ToString()))
            {
                return(false);
            }
            sql.Clear(); //清除以前的所有命令
            ResetAll();
            return(true);
        }
Ejemplo n.º 15
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.º 16
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;
     }
 }
Ejemplo n.º 17
0
        public void AddNewRows(List <CEntityWater> waters)
        {
            // 记录超过写入上线条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            string id = "";

            foreach (CEntityWater water in waters)
            {
                DataRow row = m_tableDataAdded.NewRow();
                row[CN_StationId]    = water.StationID;
                row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_WaterStage]   = water.WaterStage;
                row[CN_WaterFlow]    = water.WaterFlow;
                row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
                row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
                row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_State]        = water.state;
                m_tableDataAdded.Rows.Add(row);

                // 用于中游局Debug
                if (id != water.StationID)
                {
                    id = water.StationID;
                    CDBLog.Instance.AddInfo(string.Format("写入站点{0}数据到水位表", id));
                }
                // 判断是否需要创建新分区
                //CSQLPartitionMgr.Instance.MaintainWater(water.TimeCollect);
            }
            if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
            {
                // 如果超过最大值,写入数据库
                // NewTask(() => { AddDataToDB(); });
                NewTask(() => { InsertSqlBulk(m_tableDataAdded); });
            }
            else
            {
                // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                m_addTimer_1.Start();
            }
            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 18
0
 public void AddNewRows(List <CEntityRealTime> realtimes)
 {
     // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
     m_mutexDataTable.WaitOne(); //等待互斥量
     foreach (CEntityRealTime realtime in realtimes)
     {
         if (realtime.TimeDeviceGained != DateTime.MinValue)
         {
             DataRow row = m_tableDataAdded.NewRow();
             row[CN_CName]         = realtime.StrStationName;
             row[CN_StationId]     = realtime.StrStationID;
             row[CN_StationType]   = realtime.EIStationType;
             row[CN_DataTime]      = realtime.TimeDeviceGained.ToString(CDBParams.GetInstance().DBDateTimeFormat);
             row[CN_YesterdayRain] = realtime.LastDayRainFall;
             row[CN_TodayRain]     = realtime.DDayRainFall;
             row[CN_PeriodRain]    = realtime.DPeriodRain;
             row[CN_WaterStage]    = realtime.DWaterYield;
             row[CN_WaterFlow]     = realtime.DWaterFlowActual;
             row[CN_Voltage]       = realtime.Dvoltage;
             row[CN_DataState]     = realtime.ERTDState;
             row[CN_MsgType]       = CEnumHelper.MessageTypeToDBStr(realtime.EIMessageType);
             row[CN_TransType]     = CEnumHelper.ChannelTypeToDBStr(realtime.EIChannelType);
             m_tableDataAdded.Rows.Add(row);
         }
         // 判断是否需要创建新分区
         //CSQLPartitionMgr.Instance.MaintainVoltage(voltage.TimeCollect);
     }
     if (m_tableDataAdded.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
     {
         // 如果超过最大值,写入数据库
         // NewTask(() => { AddDataToDB(); });
         NewTask(() => { InsertSqlBulk(m_tableDataAdded); });
     }
     else
     {
         // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
         m_addTimer_1.Start();
     }
     m_mutexDataTable.ReleaseMutex();
 }
        public void SetWaters(List <CEntityTSWater> listWater)
        {
            // 清空所有数据,是否一定要这样?好像可以考虑其它方式
            base.m_dataTable.Rows.Clear();
            // 判断状态值
            List <string[]>   newRows = new List <string[]>();
            List <EDataState> states  = new List <EDataState>();

            for (int i = 0; i < listWater.Count; ++i)
            {
                EDataState state;
                double     rate = 0.5;
                state = GetState(rate);
                string         strStationName = "";
                string         strStationId   = "";
                CEntityStation station        = CDBDataMgr.Instance.GetStationById(listWater[i].StationID);
                if (null != station)
                {
                    strStationName = station.StationName;
                    strStationId   = station.StationID;
                }

                string[] newRow = new string[]
                {
                    strStationId,
                    strStationName,                                           /*站名*/
                    listWater[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                    listWater[i].WaterStage.ToString(),                       /*水位*/
                    listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                    CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                    CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)  /*报文类型*/
                };
                newRows.Add(newRow);
                states.Add(state);
            }
            base.ClearAllRows();
            base.AddRowRange(newRows, states);
            base.UpdateDataToUI();
        }
Ejemplo n.º 20
0
 public bool GetLastData(ref Nullable <Decimal> lastWaterStage, ref Nullable <Decimal> lastWaterFlow, ref Nullable <DateTime> lastDayTime, ref Nullable <EChannelType> lastChannelType, ref Nullable <EMessageType> lastMessageType, string stationId)
 {
     // 获取计算雨量值所需的数据
     try
     {
         // 获取最近一条的雨量值
         string sql = string.Format("select top 1 * from {0} where {1} = '{2}' order by {3} desc;",
                                    CT_TableName,
                                    CN_StationId, stationId,
                                    CN_DataTime);
         SqlDataAdapter adapter      = new SqlDataAdapter(sql, CDBManager.GetInstacne().GetConnection());
         DataTable      dataTableTmp = new DataTable();
         adapter.Fill(dataTableTmp);
         if (dataTableTmp.Rows.Count > 0)
         {
             lastWaterStage = Decimal.Parse(dataTableTmp.Rows[0][CN_WaterStage].ToString());
             if (dataTableTmp.Rows[0][CN_WaterFlow].ToString() != "")
             {
                 lastWaterFlow = Decimal.Parse(dataTableTmp.Rows[0][CN_WaterFlow].ToString());
             }
             lastDayTime     = DateTime.Parse(dataTableTmp.Rows[0][CN_DataTime].ToString());
             lastChannelType = CEnumHelper.DBStrToChannelType(dataTableTmp.Rows[0][CN_TransType].ToString());
             lastMessageType = CEnumHelper.DBStrToMessageType(dataTableTmp.Rows[0][CN_MsgType].ToString());
         }
         else
         {
             //      Debug.WriteLine(string.Format("查询水位表为空,站点{0}", stationId));
         }
         return(true);
     }
     catch (System.Exception ex)
     {
         Debug.WriteLine(ex.ToString());
         return(false);
     }
     finally
     {
     }
 }
Ejemplo n.º 21
0
        public void AddNewRows(List <CEntityWater> waters)
        {
            // 记录超过写入上线条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
                                        //string id = "";

            foreach (CEntityWater water in waters)
            {
                DataRow row = m_tableDataAdded.NewRow();
                row[CN_StationId]    = water.StationID;
                row[CN_DataTime]     = water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_WaterStage]   = water.WaterStage;
                row[CN_WaterFlow]    = water.WaterFlow;
                row[CN_MsgType]      = CEnumHelper.MessageTypeToDBStr(water.MessageType);
                row[CN_TransType]    = CEnumHelper.ChannelTypeToDBStr(water.ChannelType);
                row[CN_RecvDataTime] = water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_State]        = water.state;
                m_tableDataAdded.Rows.Add(row);
            }
            NewTask(() => { InsertSqlBulk(m_tableDataAdded); });
            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 22
0
        private List <PWDData> CopyDataToList(int key, int startRow)
        {
            List <PWDData> result = new List <PWDData>();

            try
            {
                // 取最小值 ,保证不越界
                int       endRow = Math.Min(m_mapDataTable[key].Rows.Count, startRow + CDBParams.GetInstance().UIPageRowCount);
                DataTable table  = m_mapDataTable[key];
                for (; startRow < endRow; ++startRow)
                {
                    PWDData pwd = new PWDData();
                    //  rain.RainID = long.Parse(table.Rows[startRow][CN_RainID].ToString());
                    pwd.StationID   = table.Rows[startRow][CN_StationId].ToString();
                    pwd.TimeCollect = DateTime.Parse(table.Rows[startRow][CN_DataTime].ToString());
                    if (!table.Rows[startRow][CN_Visi1min].ToString().Equals(""))
                    {
                        pwd.Visi1min = Decimal.Parse(table.Rows[startRow][CN_Visi1min].ToString());
                    }
                    if (!table.Rows[startRow][CN_Visi10min].ToString().Equals(""))
                    {
                        pwd.Visi10min = Decimal.Parse(table.Rows[startRow][CN_Visi10min].ToString());
                    }

                    pwd.BState       = 1;
                    pwd.ChannelType  = CEnumHelper.DBStrToChannelType(table.Rows[startRow][CN_transtype].ToString());
                    pwd.MessageType  = CEnumHelper.DBStrToMessageType(table.Rows[startRow][CN_messagetype].ToString());
                    pwd.TimeRecieved = DateTime.Parse(table.Rows[startRow][CN_recvdatatime].ToString());

                    result.Add(pwd);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("" + e.ToString());
            }
            return(result);
        }
Ejemplo n.º 23
0
        public void AddNewRows_1(List <CEntityVoltage> voltages)
        {
            // 记录超过1000条,或者时间超过1分钟,就将当前的数据写入数据库
            m_mutexDataTable.WaitOne(); //等待互斥量
            foreach (CEntityVoltage voltage in voltages)
            {
                DataRow row = m_tableDataAdded.NewRow();
                row[CN_StationId]    = voltage.StationID;
                row[CN_DataTime]     = voltage.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                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_Voltage]      = voltage.Voltage;
                row[CN_Voltage]      = voltage.state;
                m_tableDataAdded.Rows.Add(row);
                // 判断是否需要创建新分区
                //CSQLPartitionMgr.Instance.MaintainVoltage(voltage.TimeCollect);
            }

            // 如果超过最大值,写入数据库
            NewTask(() => { AddDataToDB(); });

            m_mutexDataTable.ReleaseMutex();
        }
Ejemplo n.º 24
0
        private List <CEntityTSRain> CopyDataToList(int key, int startRow)
        {
            List <CEntityTSRain> result = new List <CEntityTSRain>();
            // 取最小值 ,保证不越界
            int       endRow = Math.Min(m_mapDataTable[key].Rows.Count, startRow + CDBParams.GetInstance().UIPageRowCount);
            DataTable table  = m_mapDataTable[key];

            for (; startRow < endRow; ++startRow)
            {
                CEntityTSRain rain = new CEntityTSRain();
                //  rain.RainID = long.Parse(table.Rows[startRow][CN_RainID].ToString());
                rain.StationID   = table.Rows[startRow][CN_StationId].ToString();
                rain.TimeCollect = DateTime.Parse(table.Rows[startRow][CN_DataTime].ToString());
                if (!table.Rows[startRow][CN_TotalRain].ToString().Equals(""))
                {
                    rain.TotalRain = Decimal.Parse(table.Rows[startRow][CN_TotalRain].ToString());
                }
                rain.TimeRecieved = DateTime.Parse(table.Rows[startRow][CN_RecvDataTime].ToString());
                rain.ChannelType  = CEnumHelper.DBStrToChannelType(table.Rows[startRow][CN_TransType].ToString());
                rain.MessageType  = CEnumHelper.DBStrToMessageType(table.Rows[startRow][CN_MsgType].ToString());
                result.Add(rain);
            }
            return(result);
        }
        // 设置显示的雨量记录
        public void SetWaters(List <CEntityWater> listWater)
        {
            // 清空所有数据,是否一定要这样?好像可以考虑其它方式
            base.m_dataTable.Rows.Clear();
            // 判断状态值
            List <string[]>   newRows = new List <string[]>();
            List <EDataState> states  = new List <EDataState>();

            if (!m_bIsEditable)
            {
                string[] newRow;
                // 只读模式
                for (int i = 0; i < listWater.Count; ++i)
                {
                    EDataState     state          = EDataState.ENormal; //默认所有数据都是正常的
                    string         strStationName = "";
                    string         strStationId   = "";
                    string         state_1        = CS_DataState_Normal;
                    CEntityStation station        = CDBDataMgr.Instance.GetStationById(listWater[i].StationID);
                    if (null != station)
                    {
                        strStationName = station.StationName;
                        strStationId   = station.StationID;
                    }
                    if (listWater[i].state == 0)
                    {
                        // 不正常
                        state   = CExDataGridView.EDataState.EError;//红色显示
                        state_1 = CS_DataState_AbNormal;
                    }
                    //水位可以小于0,流量不行
                    //if (listWater[i].WaterFlow < 0 && listWater[i].WaterStage !=-9999)
                    //{
                    //    newRow = new string[]
                    //        {
                    //            strStationId,
                    //            strStationName,/*站名*/
                    //            listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                    //            listWater[i].WaterStage.ToString(), /*水位*/
                    //             "--",
                    //            listWater[i].TimeRecieved.ToString(CS_TimeFormat), /*接收时间*/
                    //            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                    //            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType) /*报文类型*/
                    //        };
                    //}
                    if (listWater[i].WaterStage == -9999 && listWater[i].WaterFlow > 0)
                    {
                        newRow = new string[]
                        {
                            strStationId,
                            strStationName,                                                             /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat),                           /*采集时间*/
                            "--",                                                                       /*水位*/
                            listWater[i].WaterFlow.HasValue?listWater[i].WaterFlow.Value.ToString():"", /*流量*/
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),                          /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType),                   /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)                    /*报文类型*/
                        };
                    }
                    else if (listWater[i].WaterStage != -9999 && listWater[i].WaterFlow < 0)
                    {
                        newRow = new string[]
                        {
                            strStationId,
                            strStationName,                                   /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                            listWater[i].WaterStage.ToString(),               /*水位*/
                            "--",
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)  /*报文类型*/
                        };
                    }
                    else if (listWater[i].WaterStage == -9999 && listWater[i].WaterFlow < 0)
                    {
                        newRow = new string[]
                        {
                            strStationId,
                            strStationName,                                   /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                            "--",
                            "--",
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)  /*报文类型*/
                        };
                    }
                    else
                    {
                        newRow = new string[]
                        {
                            m_strStaionId,
                            strStationName,                                           /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                            listWater[i].WaterStage.ToString(),                       /*水位*/
                            listWater[i].WaterFlow.ToString(),                        /*流量*/
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType), /*报文类型*/
                            //        listWater[i].WaterID.ToString() /*水量ID*/
                        };
                    }
                    newRows.Add(newRow);
                    states.Add(state);
                }
                // 添加到集合的数据表中
                base.AddRowRange(newRows, states);
            }
            else
            {
                string[] newRow;
                // 编辑模式,需要将更新的数据和删除的数据,与当前数据进行合并
                for (int i = 0; i < listWater.Count; ++i)
                {
                    EDataState     state          = EDataState.ENormal; //默认所有数据都是正常的
                    string         strStationName = "";
                    string         state_1        = CS_DataState_Normal;
                    CEntityStation station        = CDBDataMgr.Instance.GetStationById(listWater[i].StationID);
                    if (null != station)
                    {
                        strStationName = station.StationName;
                    }
                    if (listWater[i].state == 0)
                    {
                        // 不正常
                        state   = CExDataGridView.EDataState.EError;//红色显示
                        state_1 = CS_DataState_AbNormal;
                    }
                    //    string[] newRow = new string[]
                    //    {
                    //        "False", /*未选中*/
                    //        m_strStaionId,
                    //        strStationName,/*站名*/
                    //        listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                    //        listWater[i].WaterStage.ToString(), /*水位*/
                    //        listWater[i].WaterFlow.ToString(), /*流量*/
                    //        listWater[i].TimeRecieved.ToString(CS_TimeFormat), /*接收时间*/
                    //        CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                    //        CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType), /*报文类型*/
                    ////        listWater[i].WaterID.ToString() /*水量ID*/
                    //    };

                    if (listWater[i].WaterStage == -9999 && listWater[i].WaterFlow > 0)
                    {
                        newRow = new string[]
                        {
                            "False",                                                                    /*未选中*/
                            m_strStaionId,
                            strStationName,                                                             /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat),                           /*采集时间*/
                            "",                                                                         /*水位*/
                            listWater[i].WaterFlow.HasValue?listWater[i].WaterFlow.Value.ToString():"", /*流量*/
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),                          /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType),                   /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)                    /*报文类型*/
                        };
                    }
                    else if (listWater[i].WaterStage != -9999 && listWater[i].WaterFlow < 0)
                    {
                        newRow = new string[]
                        {
                            "False",                                          /*未选中*/
                            m_strStaionId,
                            strStationName,                                   /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                            listWater[i].WaterStage.ToString(),               /*水位*/
                            "",
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)  /*报文类型*/
                        };
                    }
                    else if (listWater[i].WaterStage == -9999 && listWater[i].WaterFlow < 0)
                    {
                        newRow = new string[]
                        {
                            "False",                                          /*未选中*/
                            m_strStaionId,
                            strStationName,                                   /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat), /*采集时间*/
                            "",
                            "",
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType)  /*报文类型*/
                        };
                    }
                    else
                    {
                        newRow = new string[]
                        {
                            "False",                                                  /*未选中*/
                            m_strStaionId,
                            strStationName,                                           /*站名*/
                            listWater[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                            listWater[i].WaterStage.ToString(),                       /*水位*/
                            listWater[i].WaterFlow.ToString(),                        /*流量*/
                            state_1,
                            listWater[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listWater[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listWater[i].MessageType), /*报文类型*/
                            //        listWater[i].WaterID.ToString() /*水量ID*/
                        };
                    }
                    newRows.Add(newRow);
                    states.Add(state);
                }
                // 添加到集合的数据表中
                base.AddRowRange(newRows, states);
            }
        }
        private void EH_MI_ExportToExcel_Click(object sender, EventArgs e)
        {
            // 弹出对话框,并导出到Excel文件
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = "Excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
            if (DialogResult.OK == dlg.ShowDialog())
            {
                // 保存到Excel表格中
                DataTable dataTable = new DataTable();
                // dataTable.Columns.Add(CS_WaterID, typeof(Int64));
                dataTable.Columns.Add(CS_StationID);
                dataTable.Columns.Add(CS_StationName, typeof(string));
                dataTable.Columns.Add(CS_WaterStage, typeof(string));
                dataTable.Columns.Add(CS_WaterFlow, typeof(string)); //可空吗??
                dataTable.Columns.Add(CS_TimeCollected, typeof(DateTime));
                dataTable.Columns.Add(CS_TimeReceived, typeof(DateTime));
                dataTable.Columns.Add(CS_MsgType, typeof(string));
                dataTable.Columns.Add(CS_ChannelType, typeof(string));
                // 逐页读取数据
                for (int i = 0; i < m_iTotalPage; ++i)
                {
                    List <CEntityWater> tmpWaters = m_proxyWater.GetPageData(i + 1);
                    foreach (CEntityWater water in tmpWaters)
                    {
                        // 赋值到dataTable中去
                        DataRow row = dataTable.NewRow();
                        // row[CS_WaterID] = water.WaterID;
                        row[CS_StationID]   = water.StationID;
                        row[CS_StationName] = CDBDataMgr.Instance.GetStationById(water.StationID).StationName;
                        if (water.WaterStage != -9999)
                        {
                            row[CS_WaterStage] = water.WaterStage;
                        }
                        else
                        {
                            row[CS_WaterStage] = "";
                        }
                        if (water.WaterFlow != -9999)
                        {
                            row[CS_WaterFlow] = water.WaterFlow;
                        }
                        else
                        {
                            row[CS_WaterFlow] = "";
                        }
                        row[CS_TimeCollected] = water.TimeCollect;
                        row[CS_TimeReceived]  = water.TimeRecieved;
                        row[CS_MsgType]       = CEnumHelper.MessageTypeToUIStr(water.MessageType);
                        row[CS_ChannelType]   = CEnumHelper.ChannelTypeToUIStr(water.ChannelType);
                        dataTable.Rows.Add(row);
                    }
                }
                // 显示提示框
                CMessageBox box = new CMessageBox()
                {
                    MessageInfo = "正在导出表格,请稍候"
                };
                box.ShowDialog(this);
                if (CExcelExport.ExportToExcelWrapper(dataTable, dlg.FileName, "水位流量表"))
                {
                    //box.Invoke((Action)delegate { box.Close(); });
                    box.CloseDialog();
                    MessageBox.Show(string.Format("导出成功,保存在文件\"{0}\"中", dlg.FileName));
                }
                else
                {
                    //box.Invoke((Action)delegate { box.Close(); });
                    box.CloseDialog();
                    MessageBox.Show("导出失败");
                }
            }//end of if dialog okay
        }
        // 设置显示的电压记录
        public void SetVoltage(List <CEntityVoltage> listVoltage)
        {
            // 清空所有数据,是否一定要这样?好像可以考虑其它方式
            base.m_dataTable.Rows.Clear();
            // 判断状态值
            List <string[]>   newRows = new List <string[]>();
            List <EDataState> states  = new List <EDataState>();

            if (!m_bIsEditable)
            {
                // 只读模式
                for (int i = 0; i < listVoltage.Count; ++i)
                {
                    CEntityStation station        = CDBDataMgr.Instance.GetStationById(listVoltage[i].StationID);
                    string         strStationName = "";
                    string         strStationId   = "";
                    string         state_1        = CS_DataState_Normal;
                    if (station != null)
                    {
                        strStationName = station.StationName;
                        strStationId   = station.StationID;
                    }
                    EDataState state = EDataState.ENormal; //默认所有数据都是正常的
                    string[]   newRow;
                    if (listVoltage[i].state == 0)
                    {
                        // 不正常
                        state   = CExDataGridView.EDataState.EError;//红色显示
                        state_1 = CS_DataState_AbNormal;
                    }
                    if (listVoltage[i].Voltage < 0)
                    {
                        newRow = new string[]
                        {
                            strStationId,
                            strStationName,                                             /*站名*/
                            listVoltage[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                            "--",                                                       /*电压值*/
                            state_1,
                            listVoltage[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listVoltage[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listVoltage[i].MessageType)  /*报文类型*/
                        };
                    }
                    else
                    {
                        newRow = new string[]
                        {
                            strStationId,
                            strStationName,                                             /*站名*/
                            listVoltage[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                            listVoltage[i].Voltage.ToString(),                          /*电压值*/
                            state_1,
                            listVoltage[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                            CEnumHelper.ChannelTypeToUIStr(listVoltage[i].ChannelType), /*通讯方式*/
                            CEnumHelper.MessageTypeToUIStr(listVoltage[i].MessageType)  /*报文类型*/
                        };
                    }
                    newRows.Add(newRow);
                    states.Add(state);
                }
            }
            else
            {
                // 编辑模式,需要将更新的数据和删除的数据,与当前数据进行合并
                for (int i = 0; i < listVoltage.Count; ++i)
                {
                    CEntityStation station        = CDBDataMgr.Instance.GetStationById(listVoltage[i].StationID);
                    string         strStationName = "";
                    string         strStationId   = "";
                    string         state_1        = CS_DataState_Normal;
                    if (station != null)
                    {
                        strStationName = station.StationName;
                        strStationId   = station.StationID;
                    }
                    EDataState state = EDataState.ENormal; //默认所有数据都是正常的
                    if (listVoltage[i].state == 0)
                    {
                        // 不正常
                        state   = CExDataGridView.EDataState.EError;//红色显示
                        state_1 = CS_DataState_AbNormal;
                    }
                    string[] newRow = new string[]
                    {
                        "False",                                                    /*未选中*/
                        strStationId,
                        strStationName,                                             /*站名*/
                        listVoltage[i].TimeCollect.ToString(CS_TimeFormat),         /*采集时间*/
                        listVoltage[i].Voltage.ToString(),                          /*电压值*/
                        state_1,
                        listVoltage[i].TimeRecieved.ToString(CS_TimeFormat),        /*接收时间*/
                        CEnumHelper.ChannelTypeToUIStr(listVoltage[i].ChannelType), /*通讯方式*/
                        CEnumHelper.MessageTypeToUIStr(listVoltage[i].MessageType), /*报文类型*/
                        //     listVoltage[i].VoltageID.ToString() /*电压ID,不可见,隐藏列*/
                    };
                    newRows.Add(newRow);
                    states.Add(state);
                }
            }
            // 添加到集合的数据表中
            base.AddRowRange(newRows, states);
        }
Ejemplo n.º 28
0
        /// <summary>
        /// 添加站点,不用
        /// </summary>
        //private void Add(CEntityStation entity)
        //{
        //    String sqlStr = GetInsertSQL(entity);
        //    ExecuteNonQuery(sqlStr);
        //}

        //private String GetInsertSQL(CEntityStation entity)
        //{
        //    String strStationID = entity.StationID;
        //    String strSubCenterID = entity.SubCenterID.HasValue ? entity.SubCenterID.Value.ToString() : "null";
        //    String strCName = String.Format("'{0}'", entity.StationName);
        //    String strCType = CEnumHelper.StationTypeToDBStr(entity.StationType);

        //    String strWaterBase = entity.DWaterBase.HasValue ? entity.DWaterBase.ToString() : "null";
        //    String strWaterMax = entity.DWaterMax.HasValue ? entity.DWaterMax.ToString() : "null";
        //    String strWaterMin = entity.DWaterMin.HasValue ? entity.DWaterMin.ToString() : "null";
        //    String strWaterChange = entity.DWaterChange.HasValue ? entity.DWaterChange.ToString() : "null";

        //    String strRainAccuracy = entity.DRainAccuracy.ToString();
        //    String strRainChange =entity.DRainChange.ToString();
        //    String strCommParam = entity.CommParam == null ? "null" : String.Format("'{0}'", entity.CommParam);
        //    String strGSM = entity.GSM == null ? "null" : String.Format("'{0}'", entity.GSM);

        //    String strGprs = entity.GPRS == null ? "null" : String.Format("'{0}'", entity.GPRS);
        //    String strPstv = entity.PSTV == null ? "null" : String.Format("'{0}'", entity.PSTV);
        //    String strBD = entity.BDSatellite == null ? "null" : String.Format("'{0}'", entity.BDSatellite);
        //    String strSerialPort = entity.SerialPort == null ? "null" : String.Format("'{0}'", entity.SerialPort);
        //    return String.Format(
        //        "INSERT INTO {0} ([{1}],[{2}],[{3}],[{4}],[{5}],[{6}],[{7}],[{8}],[{9}],[{10}],[{11}],[{12}],[{13}],[{14}],[{15}],[{16}]) VALUES ({17},{18},{19},{20},{21},{22},{23},{24},{25},{26},{27},{28},{29},{30},{31},{32})",

        //        CT_TableName,

        //        CN_StationID, CN_SubCenterID, CN_StationName, CN_StationType,
        //        CN_WaterBase, CN_WaterMax, CN_WaterMin, CN_WaterChange,
        //        CN_RainAccuracy, CN_RainChange, CN_CommParam, CN_GSM,
        //        CN_GPRS, CN_PSTV, CN_BDSatellite, CN_SerialPort,

        //        strStationID, strSubCenterID, strCName, strCType,
        //        strWaterBase, strWaterMax, strWaterMin, strWaterChange,
        //        strRainAccuracy, strRainChange, strCommParam, strGSM,
        //        strGprs, strPstv, strBD, strSerialPort
        //    );
        //}

        ///// <summary>
        ///// 删除分站点
        ///// </summary>
        //public void Delete(CEntityStation entity)
        //{
        //    String sqlStr = GetDeleteSQL(entity);
        //    ExecuteNonQuery(sqlStr);
        //}

        //private String GetDeleteSQL(CEntityStation entity)
        //{
        //    return String.Format("DELETE FROM {0} WHERE [{1}]={2}",
        //        CT_TableName,

        //        CN_StationID, entity.StationID
        //    );
        //}

        /// <summary>
        /// 修改站点信息
        /// </summary>
        //public void Update(CEntityStation entity)
        //{
        //    String sqlStr = GetUpdateSQL(entity);
        //    ExecuteNonQuery(sqlStr);
        //}

        private String GetUpdateSQL(CEntityStation entity)
        {
            String strStationID   = entity.StationID;
            String strSubCenterID = entity.SubCenterID.HasValue ? entity.SubCenterID.Value.ToString() : "null";
            String strCName       = String.Format("'{0}'", entity.StationName);
            String strCType       = CEnumHelper.StationTypeToDBStr(entity.StationType);

            String strWaterBase   = entity.DWaterBase.HasValue ? entity.DWaterBase.ToString() : "null";
            String strWaterMax    = entity.DWaterMax.HasValue ? entity.DWaterMax.ToString() : "null";
            String strWaterMin    = entity.DWaterMin.HasValue ? entity.DWaterMin.ToString() : "null";
            String strWaterChange = entity.DWaterChange.HasValue ? entity.DWaterChange.ToString() : "null";
            String strVoltageMin  = entity.DVoltageMin.HasValue ? entity.DVoltageMin.ToString() : "null";

            String strRainAccuracy = entity.DRainAccuracy.ToString();
            String strRainChange   = entity.DRainChange.HasValue ? entity.DRainChange.ToString() : "null";

            String strGSM  = entity.GSM == null ? "null" : String.Format("'{0}'", entity.GSM);
            String strGprs = entity.GPRS == null ? "null" : String.Format("'{0}'", entity.GPRS);

            String strBD       = entity.BDSatellite == null ? "null" : String.Format("'{0}'", entity.BDSatellite);
            String strBDMember = entity.BDMemberSatellite == null ? "null" : String.Format("'{0}'", entity.BDMemberSatellite);

            String strMaintran       = entity.Maintran == null ? "null" : String.Format("'{0}'", entity.Maintran);
            String strSubtran        = entity.Subtran == null ? "null" : String.Format("'{0}'", entity.Subtran);
            String strDataprotocol   = entity.Datapotocol == null ? "null" : String.Format("'{0}'", entity.Datapotocol);
            String strWatersensor    = entity.Watersensor == null ? "null" : String.Format("'{0}'", CEnumHelper.WaterSensorTypeToDBStr(entity.Watersensor));
            String strRainsensor     = entity.Rainsensor == null ? "null" : String.Format("'{0}'", CEnumHelper.RainSensorTypeToDBStr(entity.Rainsensor));
            String strReportinterval = entity.Reportinterval == null ? "null" : String.Format("'{0}'", entity.Reportinterval);

            //  String strSerialPort = entity.SerialPort == null ? "null" : String.Format("'{0}'", entity.SerialPort);

            //  string strBatchType = CEnumHelper.StationBatchTypeToDBStr(entity.BatchTranType);

            return(String.Format(
                       "UPDATE {0} SET [{1}]={2},[{3}]={4},[{5}]={6},[{7}]={8},[{9}]={10},[{11}]={12},[{13}]={14},[{15}]={16},[{17}]={18},[{19}]={20},[{21}]={22},[{23}]={24},[{25}]={26},[{27}]={28},[{29}]={30},[{31}]={32},[{33}]={34} ,[{35}]={36},[{37}]={38},[{39}]={40} WHERE [{41}]='{42}';",
                       CT_TableName,

                       CN_SubCenterID, strSubCenterID,
                       CN_StationName, strCName,
                       CN_StationType, strCType,
                       CN_WaterBase, strWaterBase,
                       CN_WaterMax, strWaterMax,
                       CN_WaterMin, strWaterMin,
                       CN_WaterChange, strWaterChange,
                       CN_RainAccuracy, strRainAccuracy,
                       CN_RainChange, strRainChange,
                       CN_GSM, strGSM,
                       CN_GPRS, strGprs,
                       CN_BDSatellite, strBD,
                       CN_BDMember, strBDMember,
                       CN_VoltageMin, strVoltageMin,
                       CN_Maintran, strMaintran,
                       CN_Subtran, strSubtran,
                       CN_Dataprotocol, strDataprotocol,
                       CN_Watersensor, strWatersensor,
                       CN_Rainsensor, strRainsensor,
                       CN_Reportinterval, strReportinterval,
                       CN_StationID, strStationID
                       ));
        }
Ejemplo n.º 29
0
        public void AddNewRow_2(CEntityRealTime realtime)
        {
            if (IsInDB(realtime))
            {
                // 如果数据库中有,就判断是否为最新数据
                //if (IsNew(realtime))
                //{

                //}
                m_mutexDataTable.WaitOne(); //等待互斥量

                DataRow row = m_tableDataUpdated.NewRow();
                row[CN_CName]         = realtime.StrStationName;
                row[CN_StationId]     = realtime.StrStationID;
                row[CN_StationType]   = realtime.EIStationType;
                row[CN_DataTime]      = realtime.TimeDeviceGained.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_YesterdayRain] = realtime.LastDayRainFall;
                row[CN_TodayRain]     = realtime.DDayRainFall;
                row[CN_PeriodRain]    = realtime.DPeriodRain;
                row[CN_WaterStage]    = realtime.DWaterYield;
                row[CN_WaterFlow]     = realtime.DWaterFlowActual;
                row[CN_Voltage]       = realtime.Dvoltage;
                row[CN_DataState]     = realtime.ERTDState;
                row[CN_MsgType]       = CEnumHelper.MessageTypeToDBStr(realtime.EIMessageType);
                row[CN_TransType]     = CEnumHelper.ChannelTypeToDBStr(realtime.EIChannelType);
                m_tableDataUpdated.Rows.Add(row);

                m_mutexDataTable.ReleaseMutex();

                // 判断是否需要创建新分区
                //CSQLPartitionMgr.Instance.MaintainVoltage(voltage.TimeCollect);
                if (m_tableDataUpdated.Rows.Count >= CDBParams.GetInstance().AddBufferMax)
                {
                    // 如果超过最大值,写入数据库
                    NewTask(() => { AddDataToDB(); });
                }
                else
                {
                    // 没有超过缓存最大值,开启定时器进行检测,多次调用Start()会导致重新计数
                    m_updateTimer.Start();
                }
            }
            else
            {
                // 如果数据库中没有,就将当前的数据写入数据库
                m_mutexDataTable.WaitOne(); //等待互斥量
                DataRow row = m_tableDataAdded.NewRow();
                row[CN_CName]         = realtime.StrStationName;
                row[CN_StationId]     = realtime.StrStationID;
                row[CN_StationType]   = realtime.EIStationType;
                row[CN_DataTime]      = realtime.TimeDeviceGained.ToString(CDBParams.GetInstance().DBDateTimeFormat);
                row[CN_YesterdayRain] = realtime.LastDayRainFall;
                row[CN_TodayRain]     = realtime.DDayRainFall;
                row[CN_PeriodRain]    = realtime.DPeriodRain;
                row[CN_WaterStage]    = realtime.DWaterYield;
                row[CN_WaterFlow]     = realtime.DWaterFlowActual;
                row[CN_Voltage]       = realtime.Dvoltage;
                row[CN_DataState]     = realtime.ERTDState;
                row[CN_MsgType]       = CEnumHelper.MessageTypeToDBStr(realtime.EIMessageType);
                row[CN_TransType]     = CEnumHelper.ChannelTypeToDBStr(realtime.EIChannelType);
                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.º 30
0
        public void batchInsertRows(List <CEntityWater> waters)
        {
            if (waters == null || waters.Count == 0)
            {
                return;
            }
            // 记录超过写入上线条,或者时间超过1分钟,就将当前的数据写入数据库
            CDBLog.Instance.AddInfo("batch insert的方式批量插入水位数据开始!");
            StringBuilder sql = new StringBuilder();

            foreach (CEntityWater water in waters)
            {
                sql.Append("insert INTO water(stationid,datatime,waterstage,waterflow,transtype,messagetype,recvdatatime,state) VALUES");
                sql.AppendFormat("({0},{1},{2},{3},{4},{5},{6},{7}),", "'" + water.StationID + "'", "'" + water.TimeCollect.ToString(CDBParams.GetInstance().DBDateTimeFormat) + "'", water.WaterStage,
                                 "null", CEnumHelper.ChannelTypeToDBStr(water.ChannelType).ToString(), CEnumHelper.MessageTypeToDBStr(water.MessageType).ToString(), "'" + water.TimeRecieved.ToString(CDBParams.GetInstance().DBDateTimeFormat) + "'", water.state.ToString());
                sql.Remove(sql.Length - 1, 1);
                sql.Append(";");
            }
            try
            {
                ExecuteSQLCommand(sql.ToString().Substring(0, sql.ToString().Length - 1));
            }catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }