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()); } } }
/// <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); } } }
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> /// 更新站点在线信息 /// </summary> /// <param name="db"></param> /// <param name="p"></param> public static void updateStationOnlineInfo(SWSDataContext db, int stationId) { try { country_station station = db.country_station.SingleOrDefault(c => c.id == stationId); if (station != null) { station_online_info online_info = db.station_online_info.SingleOrDefault(c => c.stationid == stationId); if (online_info != null) { online_info.name = station.name; online_info.register_time = DateTime.Now; online_info.last_visit_time = DateTime.Now; online_info.stationid = stationId; } else { online_info = new station_online_info(); online_info.name = station.name; online_info.register_time = DateTime.Now; online_info.last_visit_time = DateTime.Now; online_info.stationid = stationId; db.station_online_info.InsertOnSubmit(online_info); } List <station_online_info> deletes = db.station_online_info.Where(c => c.stationid == online_info.stationid && c.id != online_info.id).ToList(); if (deletes.Count > 0) { db.station_online_info.DeleteAllOnSubmit(deletes); } db.SubmitChanges(); } } catch (Exception ex) { LogMg.AddError("保存广岱客户端在线信息失败,\r\n" + ex.ToString()); } }
/// <summary> /// 根据电话号码找出站点名称 /// </summary> /// <param name="tel"></param> /// <returns></returns> public static string GetStationNameByTel(string tel) { string stationName = string.Empty; Clazz.Config.XML_Station station = SysConfig.DTU_StationConfig.GetStationByTel(tel); if (station != null) { stationName = station.Name; } else { bool ExistStation = false; foreach (XML_Org item in SysConfig.orgConfig.Orgs) { try { SWSDataContext db = new SWSDataContext(ServerSocketHelper.GetConnection(item.DBName)); country_station s = db.country_station.SingleOrDefault(c => c.jiankongyitiji_version == 2 && c.transfer_code == tel); if (s != null) { ExistStation = true; stationName = s.name; } } catch (Exception ex) { LogMg.AddError(ex); } } if (ExistStation == false) { stationName = "未知的客户端"; } } return(stationName); }
/// <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); }