/// <summary> /// 保存客户端的IP地址 /// </summary> /// <param name="socket"></param> /// <param name="c_to_s_data"></param> public void SaveClientIp(Socket socket, C_To_S_Data <CSDataStandard.Transfer.RealRec> c_to_s_data) { IPEndPoint ipEndPoint = (IPEndPoint)socket.RemoteEndPoint; string ip = ipEndPoint.Address.ToString(); Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(c_to_s_data.OrgId); if (_org == null) { //将信息写入到日志文件中 orgid为***的污水厂不存在 LogMg.AddError(String.Format("OrgId:{0} 不存在", c_to_s_data.OrgId)); //isSuccess = false; } else { try { SWSDataContext SWS = new SWSDataContext(ServerSocketHelper.GetConnection(_org.DBName)); //建立一个分厂数据源提供程序实例 country_station station = SWS.country_station.SingleOrDefault(c => c.id == c_to_s_data.StationId); if (station == null) { LogMg.AddError("StationId: " + c_to_s_data.StationId + " 不存在"); } else { station.ip = ip; //保存客户端IP地址 SWS.SubmitChanges(); } } catch (Exception ex) { LogMg.AddError(ex); } } }
private void DeviceControlCallBack(Socket socket, string json) { C_To_S_Data <CSDataStandard.Transfer.DeviceControl> receiveObj = Utility.JsonHelper.JsonDeserialize <C_To_S_Data <CSDataStandard.Transfer.DeviceControl> >(json); //获取所有Org Clazz.Config.XML_Org org = SysConfig.orgConfig.GetOrgByOrgId(receiveObj.OrgId); if (org == null) //判断Org是否存在 { string msg = "OrgId:" + receiveObj.OrgId + "不存在"; LogMg.AddError(msg); lb_msg.Items.Add(msg); } else { try { SWSDataContext db = new SWSDataContext(ServerSocketHelper.GetConnection(org.DBName)); string stationName = "未知的客户端"; country_station station = db.country_station.SingleOrDefault(c => c.id == receiveObj.StationId); if (station != null) { stationName = station.name; } saveData(db, receiveObj, stationName); sendData(db, socket, stationName, receiveObj.StationId); } catch (Exception ex) { LogMg.AddError(ex); DEBUG.MsgBox(ex.ToString()); } } }
public void Save(Socket socket, string json) { C_To_S_Data <object> obj = Utility.JsonHelper.JsonDeserialize <C_To_S_Data <object> >(json); Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(obj.OrgId); if (_org == null) { //将信息写入到日志文件中 orgid为***的污水厂不存在 LogMg.AddError("OrgId:\"{0}\"不存在"); //isSuccess = false; } else { try { SWSDataContext SWS = new SWSDataContext(ServerSocketHelper.GetConnection(_org.DBName)); //建立一个分厂数据源提供程序实例 country_station station = SWS.country_station.SingleOrDefault(c => c.id == obj.StationId); if (station == null) { LogMg.AddError("StationId: " + obj.StationId + " 不存在"); } else { station.ip = obj.Data[0].ToString(); //保存客户端IP地址 SWS.SubmitChanges(); } } catch (Exception ex) { LogMg.AddError(ex); } } }
/// <summary> /// 获取所有的Org /// </summary> /// <returns></returns> private List <Clazz.Config.XML_Org> GetAllOrg() { List <Clazz.Config.XML_Org> list = new List <Clazz.Config.XML_Org>(); try { XmlNodeList xnl = Utility.XmlHelper.GetXmlNodeListByXpath(filePath, "/Config/Orgs/Org"); foreach (XmlNode item in xnl) { XmlElement xe = (XmlElement)item; Clazz.Config.XML_Org org = new Clazz.Config.XML_Org(); org.OrgId = xe.GetAttribute("OrgId"); org.Name = xe.GetAttribute("Name"); org.DBName = xe.GetAttribute("DBName"); org.gdServerCfg = xe.GetAttribute("gdServerCfg"); list.Add(org); } } catch (Exception e) { LogMg.AddError(e); DEBUG.MsgBox(e.ToString()); } return(list); }
/// <summary> /// 根据orgId返回Org.XML中的对象 如果不存在则返回null /// </summary> /// <param name="orgId"></param> /// <returns></returns> public Clazz.Config.XML_Org GetOrgByOrgId(string orgId) { Clazz.Config.XML_Org org = null; try { org = Orgs.SingleOrDefault(c => c.OrgId == orgId); } catch (Exception e) { LogMg.AddError(e); DEBUG.MsgBox(e.ToString()); } return(org); }
private SqlConnection getConByOrgId(string orgId) { string dbname = ""; try { Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(orgId); dbname = _org.DBName; } catch (Exception ex) { LogMg.AddError("orgId:" + orgId + System.Environment.NewLine + ex.ToString()); DEBUG.ThrowException(ex); } return(Util.ServerSocketHelper.GetConnection(dbname)); //返回分厂数据库连接 }
/// <summary> /// 将json字符串转换成对象, 再把对象保存到数据库中 /// </summary> /// <param name="json"></param> /// <returns></returns> private bool Save(string json, Socket socket) { bool isSuccess = true; string stationName = ""; //分厂名称 C_To_S_Data <CSDataStandard.Transfer.RealRec> c_to_s_data = Utility.JsonHelper.JsonDeserialize <C_To_S_Data <CSDataStandard.Transfer.RealRec> >(json); Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(c_to_s_data.OrgId); if (_org == null) { //将信息写入到日志文件中 orgid为***的污水厂不存在 LogMg.AddError(string.Format("OrgId:{0}不存在", c_to_s_data.OrgId)); isSuccess = false; } else { try { SWSDataContext SWS = new SWSDataContext(Util.ServerSocketHelper.GetConnection(_org.DBName)); //建立一个分厂数据源提供程序实例 //查找站点名称 country_station _station = SWS.country_station.SingleOrDefault(c => c.id == c_to_s_data.StationId); //更新站点的IP _station.ip = ((System.Net.IPEndPoint)socket.RemoteEndPoint).Address.ToString(); if (_station != null) { stationName = _station.name; //站点名称 } //遍历数据 并把数据添加到数据库中 List <realrec> listrealrec = new List <realrec>(); List <testrec> listtestrec = new List <testrec>(); foreach (CSDataStandard.Transfer.RealRec item in c_to_s_data.Data) { test test = SWS.test.SingleOrDefault(c => c.testid == item.TestId); if (test == null) { LogMg.AddError(string.Format("testid为 {0} 的检测点不存在", item.TestId)); //记录日志 isSuccess = false; } else { if (test.means.Trim() == "屏幕取词" || test.means.Trim() == "自动获取") { realrec _realrec = new realrec(); _realrec.testid = item.TestId; _realrec.testtime = item.TestTime; _realrec.value = (decimal)item.Value; listrealrec.Add(_realrec); } if (test.means.Trim() == "检测录入") { testrec _testrec = SWS.testrec.SingleOrDefault(c => c.testid == item.TestId && c.testtime == item.TestTime); //判断检测当前数据在数据库中是否已经存在 if (_testrec == null) { _testrec = new testrec(); _testrec.testid = item.TestId; _testrec.testtime = item.TestTime; _testrec.value = (decimal)item.Value; listtestrec.Add(_testrec); } else { _testrec.testid = item.TestId; _testrec.testtime = item.TestTime; _testrec.value = (decimal)item.Value; } } } } SWS.realrec.InsertAllOnSubmit(listrealrec); SWS.testrec.InsertAllOnSubmit(listtestrec); SWS.SubmitChanges(); isSuccess = true; } catch (Exception ex) { isSuccess = false; //把错误信息输出到日志文件中 LogMg.AddError(ex.ToString()); DEBUG.ThrowException(ex); } } //lock (lb_msg) //{ // if (lb_msg.Items.Count > 200) // lb_msg.Items.Clear(); // this.lb_msg.Items.Add(string.Format("时间:{0} 客户端:{1} 数据行数{2} 保存{3}", DateTime.Now.ToString(), stationName, c_to_s_data.Data.Count, isSuccess ? "成功" : "失败")); // } SaveClientIp(socket, c_to_s_data); return(isSuccess); }
/// <summary> /// 添加客户端 /// </summary> private static void AddClient(string orgId, int stationId) { try { //如果站点Id为0 那就不用执行下去了 if (stationId != 0) { Clazz.Config.ClientConfig.XML_Station XML_station = SysConfig.clientConfig.AllStation.SingleOrDefault(c => c.StationId == stationId && c.OrgId == orgId); if (XML_station != null) { lock (ClientSockets) { Clazz.ClientInfo client = ClientSockets.SingleOrDefault(c => c.TransferCode == XML_station.TransferCode); if (client == null) { Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(orgId); if (_org == null) { //将信息写入到日志文件中 orgid为***的污水厂不存在 LogMg.AddError(String.Format("OrgId:{0} 不存在", orgId)); //isSuccess = false; } else { SWSDataContext db = new SWSDataContext(GetConnection(_org.DBName)); string name = "未知的客户端"; country_station station = db.country_station.SingleOrDefault(c => c.id == stationId); if (station != null) { name = station.name; } client = new Clazz.ClientInfo(); client.TransferCode = XML_station.TransferCode; client.StationId = stationId; client.RegisterTime = DateTime.Now; client.LastVisitTime = DateTime.Now; client.Name = name; ClientSockets.Add(client); } } else { client.RegisterTime = DateTime.Now; client.LastVisitTime = DateTime.Now; } } } ///执行委托 if (ClientChangeHander != null) { ClientChangeHander(); } } } catch (Exception ex) { LogMg.AddError(ex); } }
private bool Save(string json, Socket RSocket) { bool isSuccess = true; string stationName = ""; //站点名称 C_To_S_Data <CSDataStandard.Transfer.RealRec> c_to_s_data = Utility.JsonHelper.JsonDeserialize <C_To_S_Data <CSDataStandard.Transfer.RealRec> >(json); Clazz.Config.XML_Org _org = SysConfig.orgConfig.GetOrgByOrgId(c_to_s_data.OrgId); if (_org == null) { //将信息写入到日志文件中 orgid为***的污水厂不存在 LogMg.AddError("OrgId:\"{0}\"不存在"); isSuccess = false; } else { try { SWSDataContext SWS = new SWSDataContext(Util.ServerSocketHelper.GetConnection(_org.DBName)); //建立一个分厂数据源提供程序实例 //查找站点名称 country_station _station = SWS.country_station.SingleOrDefault(c => c.id == c_to_s_data.StationId); if (_station != null) { stationName = _station.name; //站点名称 } //遍历数据 并把数据添加到数据库中 List <testrec> list = new List <testrec>(); List <test> listTest = new List <test>(); foreach (CSDataStandard.Transfer.RealRec item in c_to_s_data.Data) { //判断检测当前数据在数据库中是否已经存在 if (SWS.realrec.SingleOrDefault(c => c.testid == item.TestId && c.testtime == item.TestTime) == null) { testrec _testrec = new testrec(); _testrec.testid = item.TestId; _testrec.testtime = item.TestTime; _testrec.value = (decimal)item.Value; list.Add(_testrec); } //修改test表 SWS.ExecuteCommand(string.Format("update test set [value]={0} where testid={1}", item.Value, item.TestId)); } SWS.testrec.InsertAllOnSubmit(list); SWS.SubmitChanges(); isSuccess = true; } catch (Exception ex) { isSuccess = false; //把错误信息输出到日志文件中 LogMg.AddError(ex.ToString()); DEBUG.ThrowException(ex); } } lock (lb_msg) { if (lb_msg.Items.Count > 200) { lb_msg.Items.Clear(); } this.lb_msg.Items.Add(string.Format("时间:{0} 客户端:{1} 数据行数{2} 保存{3}", DateTime.Now.ToString(), stationName, c_to_s_data.Data.Count, isSuccess ? "成功" : "失败")); } return(isSuccess); }