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(); }
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(); }
/// <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(); }
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 )); }
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(); }
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(); //清空标记为删除的记录 }
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(); }
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); }
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 )); }
/// <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(); }
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(); }
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); }
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); }
// 将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); }
/// <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 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(); }
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(); }
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 { } }
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(); }
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); }
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(); }
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); }
/// <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 )); }
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(); } } }
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); } }