private void button_Add_Click(object sender, EventArgs e) { if (Validate(textBox_Val.Text.Trim()) && comboBox_STCD.SelectedValue != null) { Service.Model.YY_DATA_AUTO model = new Service.Model.YY_DATA_AUTO(); model.STCD = comboBox_STCD.SelectedValue.ToString(); model.TM = DateTime.Parse(dateTimePicker_Add.Text); model.CorrectionVALUE = decimal.Parse(textBox_Val.Text.Trim()); model.DATAVALUE = decimal.Parse(textBox_Val.Text.Trim()); model.DOWNDATE = DateTime.Now; model.NFOINDEX = 5; model.ItemID = comboBox_Item.SelectedValue.ToString(); //model.DATATYPE = ""; bool b = PublicBD.db.AddRealTimeData(model); if (b) { dateTimePicker_Add.ResetText(); textBox_Val.Text = ""; DevComponents.DotNetBar.MessageBoxEx.Show("数据添加成功!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { DevComponents.DotNetBar.MessageBoxEx.Show("数据添加失败!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } } }
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex != -1 && e.ColumnIndex != -1) { Service.Model.YY_DATA_AUTO model = new Service.Model.YY_DATA_AUTO(); model.STCD = dataGridView1.Rows[e.RowIndex].Cells["Column1"].Value.ToString(); model.TM = (DateTime)dataGridView1.Rows[e.RowIndex].Cells["Column5"].Value;//此字段为记录原始采集时间(精确到毫秒的主键) decimal CorrectionVALUE; if (decimal.TryParse(dataGridView1.Rows[e.RowIndex].Cells["Column4"].Value.ToString(), out CorrectionVALUE)) { model.CorrectionVALUE = CorrectionVALUE; } else { model.CorrectionVALUE = null; } model.DOWNDATE = DateTime.Now; model.NFOINDEX = 5; model.ItemID = dataGridView1.Rows[e.RowIndex].Cells["Column9"].Value.ToString(); //model.DATATYPE = ""; string Where = "where stcd='" + model.STCD + "' and ItemID='" + model.ItemID + "' and TM='" + model.TM.ToString("yyyy-MM-dd HH:mm:ss.fff") + "'"; if (PublicBD.DB == "ORACLE") { Where = "where stcd='" + model.STCD + "' and ItemID='" + model.ItemID + "' and TM=to_date('" + model.TM.ToString() + "','yyyy-MM-dd HH24:MI:SS')"; } if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "删 除") { bool b = PublicBD.db.DelRealTimeData(Where); if (b) { Search(); DevComponents.DotNetBar.MessageBoxEx.Show("数据删除成功!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { DevComponents.DotNetBar.MessageBoxEx.Show("数据删除失败!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } } if (dataGridView1.Columns[e.ColumnIndex].HeaderText == "更 新") { bool b = PublicBD.db.UdpRealTimeData(model, Where); if (b) { Search(); DevComponents.DotNetBar.MessageBoxEx.Show("数据更新成功!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { DevComponents.DotNetBar.MessageBoxEx.Show("数据更新失败!", "[提示]", MessageBoxButtons.OK, MessageBoxIcon.Information); } } } }
private string AddDataToAQ(Service.Model.YY_DATA_AUTO model) { string message = ""; string FileName = "Info" + DateTime.Now.ToString("yyyy-MM-dd"); string append = ""; try { if (client != null) { byte[] b = (new System.Text.ASCIIEncoding()).GetBytes(model.TM.ToString("yyyy-MM-ddTHH:mm:ss.fffzzz") + "," + model.DATAVALUE); var Item = from il in list where il.ItemID == model.ItemID select il; string QW_ts = Item.First().ItemName + "@" + model.STCD; if (TimeSeriesList != null && TimeSeriesList.Count > 0) { if (model.DATATYPE == 2011) { var TS = from Ts in TimeSeriesList where Ts.QWService == QW_ts && (Ts.DataType == "" || Ts.DataType == "2011") select Ts; if (TS.Count() > 0) { append = client.AppendTimeSeriesAsync(authToken, Guid.Parse(TS.First().AQ), b); //NGAQ上数 } } else { var TS = from Ts in TimeSeriesList where Ts.QWService == QW_ts && Ts.DataType == model.DATATYPE.ToString() select Ts; if (TS.Count() > 0) { append = client.AppendTimeSeriesAsync(authToken, Guid.Parse(TS.First().AQ), b); //NGAQ上数 } } } } } catch (Exception e) { message = "站号:" + model.STCD + " 监测项:" + model.ItemID + " 监测时间:" + model.TM + " 监测值:" + model.DATAVALUE + "-----失败"; Service._51Data.SystemError.SystemLog(FieldPath, FileName, message); Console.Write(e.ToString()); append = ""; lock (ToAqDataQueue) { ToAqDataQueue.Enqueue(model); } } return(append); }
public void Resave(Service.Model.YY_DATA_AUTO model) { AddDataToAQ(model); }
/// <summary> /// 上传监测数据报 /// </summary> /// <param name="data"></param> /// <param name="NFOINDEX"></param> /// <param name="Server"></param> internal static void Process_DATA(string data, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server) { DataModel DM = pd.UnPack(data); DateTime DOWNDATE = DateTime.Now; #region tcp回复 if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; List <TcpService.TcpSocket> Ts = TS.Ts; var tcps = from t in Ts where t.STCD == DM.Code && t.TCPSOCKET != null select t; List <TcpService.TcpSocket> Tcps = tcps.ToList <TcpService.TcpSocket>(); if (Tcps.Count() > 0) { byte[] sendData = Encoding.ASCII.GetBytes(DM.Reply); Tcps.First().TCPSOCKET.Send(sendData); //回复通知界面 Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, DM.Code, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text); } } #endregion #region udp回复 if ((int)NFOINDEX == 2) { UdpService.UdpServer US = Server as UdpService.UdpServer; List <UdpService.UdpSocket> Us = US.Us; var udps = from u in Us where u.STCD == DM.Code && u.IpEndPoint != null select u; if (udps.Count() > 0) { byte[] sendData = Encoding.ASCII.GetBytes(DM.Reply); US.UDPClient.Send(sendData, sendData.Length, udps.First().IpEndPoint); Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, DM.Code, "回复数据", sendData, Service.ServiceEnum.EnCoderType.ASCII, Service.ServiceEnum.DataType.Text); } } #endregion if (DM.Item_data.Count() > 0) { for (int i = 0; i < DM.Item_data.Count(); i++) { string ItemName = GetItemName(DM.Item_data[i].Item); #region //入实时表 Service.Model.YY_DATA_AUTO model = new Service.Model.YY_DATA_AUTO(); model.STCD = DM.Code; model.TM = DM.Datetime; //监测时间 model.ItemID = DM.Item_data[i].Item; //监测项 model.DOWNDATE = DOWNDATE; model.DATAVALUE = decimal.Parse(DM.Item_data[i].Data); //值 model.CorrectionVALUE = model.DATAVALUE; //存入数据库,2015.8.25添加,请检查数据库YY_DATA_AUTO表是否建立STTYPE字段 model.STTYPE = DM.PacketCode.ToString(); model.NFOINDEX = (int)NFOINDEX; //数据类型暂存包号 2016.6.6 //model.DATATYPE = DM.PacketCode; Service.PublicBD.db.AddRealTimeData(model); ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #region tcp通知界面 if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; //回复通知界面 Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in TS.Ts where rtu.STCD == DM.Code select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region udp通知界面 if ((int)NFOINDEX == 2) { UdpService.UdpServer US = Server as UdpService.UdpServer; Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in US.Us where rtu.STCD == DM.Code select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region gsm通知界面 if ((int)NFOINDEX == 3) { GsmService.GsmServer GS = Server as GsmService.GsmServer; Service.ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #region com通知界面 if ((int)NFOINDEX == 4) { ComService.ComServer CS = Server as ComService.ComServer; Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #endregion } } }
/// <summary> /// 上传监测数据报 /// </summary> /// <param name="data"></param> /// <param name="NFOINDEX"></param> /// <param name="Server"></param> internal static void Process_FD(string data, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server) { DataModel DM = pd.UnPack(data); #region 数据报信息 string PacketType = ""; switch (DM.PacketType) { case "01": PacketType = "定时报"; break; case "02": PacketType = "加报"; break; default: PacketType = "手动召测"; break; } //TCP if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; string Explain = "接收到数据报(" + PacketType + "),报头(" + DM.TiltleCode + "),RTU地址(" + DM.Code + ") 测量时间(" + DM.Datetime + ") 计算算法(" + DM.Algorithm + ") 测流历时(" + DM.Take + "秒) 左岸系数(" + DM.LeftBank + ") 右岸系数(" + DM.RightBank + ") 起算水位(" + DM.StartStage + ") 断面面积(" + DM.Section + "平方米) 参与计算的探头数量/探头数量(" + DM.ComputeSensorCount + "/" + DM.SensorCount + ")"; Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, DM.Code, Explain, new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion DateTime DOWNDATE = DateTime.Now; if (DM.Item_data.Count() > 0) { for (int i = 0; i < DM.Item_data.Count(); i++) { string ItemName = GetItemName(DM.Item_data[i].Item); #region //入实时表 Service.Model.YY_DATA_AUTO model = new Service.Model.YY_DATA_AUTO(); model.STCD = DM.Code; model.TM = DM.Datetime; //监测时间 model.ItemID = DM.Item_data[i].Item; //监测项 model.DOWNDATE = DOWNDATE; model.DATAVALUE = DM.Item_data[i].Data; //值 model.CorrectionVALUE = model.DATAVALUE; model.NFOINDEX = (int)NFOINDEX; Service.PublicBD.db.AddRealTimeData(model); ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #region tcp通知界面 if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; //回复通知界面 Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in TS.Ts where rtu.STCD == DM.Code select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region udp通知界面 if ((int)NFOINDEX == 2) { UdpService.UdpServer US = Server as UdpService.UdpServer; Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in US.Us where rtu.STCD == DM.Code select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region gsm通知界面 if ((int)NFOINDEX == 3) { GsmService.GsmServer GS = Server as GsmService.GsmServer; Service.ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #region com通知界面 if ((int)NFOINDEX == 4) { ComService.ComServer CS = Server as ComService.ComServer; Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, DM.Code, "接收到数据报数据,数据特征[" + ItemName + "-" + DM.Item_data[i].Item + "],时间[" + DM.Datetime + "],值[" + DM.Item_data[i].Data + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #endregion } } }
/// <summary> /// 上传污染物小时数据 /// </summary> /// <param name="data"></param> /// <param name="NFOINDEX"></param> /// <param name="Server"></param> internal static void Process_2061(string data, Service.ServiceEnum.NFOINDEX NFOINDEX, object Server) { try { if (pd.GetValidataLength(data)) { string MN = pd.GetMN(data); DateTime DOWNDATE = DateTime.Now; CN_DataList CD = pd.GetValues(data); //获得回复---------------------------------- if (true) { #region tcp回复 if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; List <TcpService.TcpSocket> Ts = TS.Ts; var tcps = from t in Ts where t.STCD == MN && t.TCPSOCKET != null select t; List <TcpService.TcpSocket> Tcps = tcps.ToList <TcpService.TcpSocket>(); //没有该测站信息,不能向下执行,上“生成回复数据”没成功。 if ("" == null)//生成回复报失败---------------------- { Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, MN, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); return; } if (Tcps.Count() > 0) { byte[] sendData = new byte[] { }; //回复报的内容------------------------------------- Tcps.First().TCPSOCKET.Send(sendData); //回复通知界面 Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, MN, "回复数据", sendData, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } } #endregion #region udp回复 if ((int)NFOINDEX == 2) { UdpService.UdpServer US = Server as UdpService.UdpServer; List <UdpService.UdpSocket> Us = US.Us; var udps = from u in Us where u.STCD == MN && u.IpEndPoint != null select u; //没有该测站信息,不能向下执行,上“生成回复数据”没成功。 if ("" == null)//生成回复报失败---------------------- { Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, MN, "生成回复报出现异常!", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); return; } if (udps.Count() > 0) { byte[] sendData = new byte[] { }; //回复报的内容------------------------------------- US.UDPClient.Send(sendData, sendData.Length, udps.First().IpEndPoint); Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, MN, "回复数据", sendData, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } } #endregion } if (CD.DM.Count() > 0) { for (int i = 0; i < CD.DM.Count(); i++) { string ItemName = null; #region //入实时表 Service.Model.YY_DATA_AUTO model = new Service.Model.YY_DATA_AUTO(); model.STCD = MN; model.TM = CD.TM; //监测时间 model.ItemID = CD.DM[i].ItemCode; //监测项 model.DOWNDATE = DOWNDATE; model.DATAVALUE = CD.DM[i].DATAVALUE; //值 model.CorrectionVALUE = CD.DM[i].DATAVALUE; //存入数据库,2015.8.25添加,请检查数据库YY_DATA_AUTO表是否建立STTYPE字段 model.STTYPE = CD.ST; model.NFOINDEX = (int)NFOINDEX; model.DATATYPE = int.Parse(CD.CN); #region //2061*100 + 1 =206101 =小时数据累计值 (参考HJT212_2005.ParseData.Key) model.DATATYPE = model.DATATYPE * 100 + Convert.ToInt32(Enum.Parse(typeof(HJT212_2005.ParseData.Key), CD.DM[i].KEY)); model.TM = model.TM.AddMilliseconds(10 * Convert.ToInt32(Enum.Parse(typeof(HJT212_2005.ParseData.Key), CD.DM[i].KEY))); //避免主键冲突 #endregion #region 环保212协议特殊添加 string s4 = model.DATATYPE.ToString().Substring(0, 4); string s2 = model.DATATYPE.ToString().Substring(4, 2); switch (s4) { case "2031": ItemName = "日"; break; case "2051": ItemName = "分钟"; break; case "2061": ItemName = "小时"; break; } switch (s2) { case "01": ItemName += "|累计|"; break; case "02": ItemName += "|最大|"; break; case "03": ItemName += "|最小|"; break; case "04": ItemName += "|平均|"; break; } #endregion ItemName += GetItemName(CD.DM[i].ItemCode); Service.PublicBD.db.AddRealTimeData(model); ////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// ///////////////////////////////////////////////////////// #region tcp通知界面 if ((int)NFOINDEX == 1) { TcpService.TcpServer TS = Server as TcpService.TcpServer; //回复通知界面 Service.ServiceBussiness.WriteQUIM("TCP", TS.ServiceID, MN, "接收到小时数据,数据特征[" + ItemName + "-" + CD.DM[i].ItemCode + "],时间[" + CD.TM + "],值[" + CD.DM[i].DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in TS.Ts where rtu.STCD == MN select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region udp通知界面 if ((int)NFOINDEX == 2) { UdpService.UdpServer US = Server as UdpService.UdpServer; Service.ServiceBussiness.WriteQUIM("UDP", US.ServiceID, MN, "接收到小时数据,数据特征[" + ItemName + "-" + CD.DM[i].ItemCode + "],时间[" + CD.TM + "],值[" + CD.DM[i].DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); var list = from rtu in US.Us where rtu.STCD == MN select rtu; if (list.Count() > 0) { list.First().CanSend = false; } } #endregion #region gsm通知界面 if ((int)NFOINDEX == 3) { GsmService.GsmServer GS = Server as GsmService.GsmServer; Service.ServiceBussiness.WriteQUIM("GSM", GS.ServiceID, MN, "接收到小时数据,数据特征[" + ItemName + "-" + CD.DM[i].ItemCode + "],时间[" + CD.TM + "],值[" + CD.DM[i].DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #region com通知界面 if ((int)NFOINDEX == 4) { ComService.ComServer CS = Server as ComService.ComServer; Service.ServiceBussiness.WriteQUIM("COM", CS.ServiceID, MN, "接收到小时数据,数据特征[" + ItemName + "-" + CD.DM[i].ItemCode + "],时间[" + CD.TM + "],值[" + CD.DM[i].DATAVALUE + "]", new byte[] { }, Service.ServiceEnum.EnCoderType.HEX, Service.ServiceEnum.DataType.Text); } #endregion #endregion } } } } catch (Exception ex) { log.Error(DateTime.Now + "2061操作异常" + ex.ToString()); } }