コード例 #1
0
        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());
                }
            }
        }
コード例 #2
0
        /// <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);
                }
            }
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
 /// <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());
     }
 }
コード例 #5
0
        /// <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);
        }
コード例 #6
0
        /// <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);
        }
コード例 #7
0
        /// <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);
            }
        }
コード例 #8
0
        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);
        }