Exemplo n.º 1
0
        private void SaveAnalyData(string coalCode, string type, string datas)
        {
            ServerAnalys serverAnalys = new ServerAnalys(this.WsDownvalue ,this.WsUpvalue,this.CODownvalue,this.COUpvalue);
            StringBuilder strbSaveSql = new StringBuilder();
            CheckDbTableByCoalCode(coalCode);
            switch (type)
            {
                case "SwitchAnaly":
                    strbSaveSql.Append(SQL_INSERT_TURNANALY);
                    break;
                case "FaultAnaly":
                    strbSaveSql.Append(SQL_INSERT_FAULT);
                    break;
                case "AlarmAnaly":
                    strbSaveSql.Append(SQL_INSERT_ALARMRECODE);
                    break;
                case "MinuteAnaly":
                    strbSaveSql.Append(SQL_INSERT_MINUTE.Replace("TableCoalCode", coalCode));
                    break;
            }
            string[] dataList = null;

            if (type == "MinuteAnaly")
            {
                dataList = datas.Split('Ï'); //serverAnalys.MiniterAnalys(datas).Split('Ï');
            }
            else if (type == "AlarmAnaly")
            {
                dataList = datas.Split('Ï'); //serverAnalys.AlarmAnalys(datas).Split('Ï');
            }
            else if (type == "FaultAnaly")
            {
                dataList = datas.Split('Ï'); // serverAnalys.FaultAnalys(datas).Split('Ï');
            }
            else
            {
                dataList = datas.Split('Ï');
            }
            int dataListCount = dataList.Length;

            for (int i = 0; i < dataListCount; i++)
            {
                if (i > 0 && dataList[i].Length > 0)
                    strbSaveSql.Append("UNION ");
                if (dataList[i].Length > 0)
                {
                    strbSaveSql.Append("SELECT ");
                    strbSaveSql.Append(dataList[i]);
                }
            }
            if (type == "MinuteAnaly")
                ExecuteSqlByTranscation(strbSaveSql.ToString());

            else
                ExecuteAnalySqlByTranscation(strbSaveSql.ToString());
        }
Exemplo n.º 2
0
        /// <summary>
        /// 保存数据
        /// </summary>
        /// <param name="mess">消息队列</param>
        public void Save(System.Messaging.Message mess)
        {
            ServerAnalys serverAnalys = new ServerAnalys(this.WsDownvalue ,this.WsUpvalue,this.CODownvalue,this.COUpvalue);
            using (Lock l = new Lock(syncSave, 60000, false))//lock超时为1分钟
            {
                try
                {
                    string tilte = mess.Label;
                    int count = mess.Body.ToString().Split('\n').Length;
                    string[] tiltes = tilte.Split(',');
                    if (tiltes.Length < 5 || tiltes[0].Trim().Length == 0 || tiltes[1].Trim().Length == 0)
                    {
                        Log.Write("非法连接-->" + tilte);
                        return;
                    }
                    //接受新数据事件已经没用,因此刘刚于2010-1-28日注释掉。
                    //if (ReciveNewDataEvent != null)
                    //    ReciveNewDataEvent(mess);
                    CacheModel cCheck = CacheDataList.Find(cd => (cd.CoalCode == tiltes[0].Trim() && cd.CIP != tiltes[3]));
                    if (cCheck != null)
                    {
                        Log.Write("CoalCode-->" + tiltes[0] + "已经存在,拒绝连接!");
                        return;
                    }

                    string coalCode = tiltes[0];

                    if (userGB)//启用用户设置的瓦斯、一氧化碳的最大值分析
                    {
                        if (mess.Body.ToString().Contains("Ï"))//分析数据
                        {
                            //if (tiltes[4].ToString() == "MinuteAnaly")//分钟数据 
                            //{
                            //    SaveMinRealDev(tiltes, mess.Body.ToString(), this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
                            //}
                        }
                        else
                        {
                            SaveRealDev(tiltes, mess.Body.ToString(), this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
                        }
                        userGB = false;
                    }

                    if (tiltes[4].ToLower() == "true")
                    {
                        if (mess.Body.ToString().Contains("Ï"))//分析数据
                        {
                            //if (tiltes[4].ToString() == "MinuteAnaly")//分钟数据 
                            //{
                            //    SaveMinRealDev(tiltes, mess.Body.ToString(), this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
                            //}
                        }
                        else//每笔数据 
                        {
                            SaveRealDev(tiltes, mess.Body.ToString(), this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
                        }
                        //SaveRealDev(tiltes, mess.Body.ToString(), this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
                    }

                    if (tiltes.Length == 6)
                    {

                        if (tiltes[5] == "AlarmAnaly")
                        {
                            AlarmAnalydata(coalCode, tiltes[5], mess.Body.ToString());
                        }
                        else
                        {
                            SaveAnalyData(coalCode, tiltes[5], mess.Body.ToString());//保存客户端上传分析数据
                        }
                        return;
                    }
                    CacheModel cacheMod = CacheDataList.FindLast(cache => cache.CoalCode == coalCode);
                    //     SaveCoalItems(tiltes[1]);

                    if (cacheMod != null)
                    {
                        cacheMod.DataCount += count;
                        count = cacheMod.DataCount;
                    }
                    CacheDataList.Add(new CacheModel
                    {
                        CoalCode = coalCode,
                        Datas = mess.Body.ToString(), // serverAnalys.MessageAnalys(mess.Body.ToString()),
                        DataCount = count,
                        CoalName = tiltes[1],
                        CIP = tiltes[3],
                        Atime = DateTime.Now
                    });
                    if (count > InitConfig.CountCanSave)
                    {
                        string datas = string.Empty;
                        List<CacheModel> tCacheModels = CacheDataList.FindAll(cache => cache.CoalCode == coalCode);
                        foreach (CacheModel cm in tCacheModels)
                        {
                            datas += cm.Datas;
                            CacheDataList.Remove(cm);
                        }
                        string filePath = dtsPath + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff_") + coalCode + ".txt";
                        UseDtsSave(filePath, coalCode, datas);
                    }
                }
                catch (Exception ex)
                {
                    Tcs.Libary.Log.Write(System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ex.ToString());
                }
            
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 保存报警数据(判断数据库里面10秒钟前有没有相同的报警,有的话更新数据,没有插入)
        /// </summary>
        /// <param name="coalCode"></param>
        /// <param name="type"></param>
        /// <param name="datas"></param>
        private void AlarmAnalydata(string coalCode, string type, string datas)
        {
            //'3001101','1-1','瓦斯','模拟量','采区1','%','0','4','1','.5','.5','.48','2011/12/26 11:52:06','2011/12/26 11:52:16','10','0','','1.42','2011/12/26 11:52:06','1'Ï

            string sql;
            ServerAnalys serverAnalys = new ServerAnalys(this.WsDownvalue, this.WsUpvalue, this.CODownvalue, this.COUpvalue);
            string[] dataList = null;
            dataList = serverAnalys.AlarmAnalys(datas).Split('Ï');
            int dataListCount = dataList.Length;
            for (int i = 0; i < dataListCount; i++)
            {
                if (dataList[i].Contains(","))
                {
                    string[] data = dataList[i].Split(',');
                    string[] DateTime = data[12].Split('\'');
                    //SELECT * FROM [SafetyNetworking].[dbo].[TN_AlarmRecode] where CoalCode= '3001101' and DevCode= '1-1' and AlarmETime >'2011-12-26 11:51:06'
                    sql = "SELECT * FROM [SafetyNetworking].[dbo].[TN_AlarmRecode] where CoalCode = " + data[0]
                       + " and DevCode= " + data[1] + " and  AlarmETime >= '" + Convert.ToDateTime(DateTime[1]).AddSeconds(-10).ToString() + "'";
                    DataSet ds = DQuery(sql);
                    if (ds.Tables[0].Rows.Count > 0)
                    {
                        int Duration = Convert.ToInt32(ds.Tables[0].Rows[0]["Duration"]) + Convert.ToInt32(data[14].Split('\'')[1]);
                        if (Convert.ToDecimal(ds.Tables[0].Rows[0]["DevMaxValue"]) < Convert.ToDecimal(data[17].Split('\'')[1]))
                        {
                            sql = "UPDATE [SafetyNetworking].[dbo].[TN_AlarmRecode] SET [AlarmETime] = "
                                   + data[13].ToString() + ", [Duration] = '" + Duration.ToString()
                                   + "' , [DevMaxValue] = " + data[17]
                                    + ", [DevMaxTime] = " + data[18]
                                   + " where CoalCode = " + data[0]
                               + " and DevCode= " + data[1] + " and  AlarmETime >= '"
                               + Convert.ToDateTime(DateTime[1]).AddSeconds(-10).ToString() + "'";
                        }
                        else
                        {
                            sql = "UPDATE [SafetyNetworking].[dbo].[TN_AlarmRecode] SET [AlarmETime] = "
                                + data[13].ToString() + " , [Duration] = '" + Duration.ToString()
                                + "' where CoalCode = " + data[0]
                            + " and DevCode= " + data[1] + " and  AlarmETime >= '"
                            + Convert.ToDateTime(DateTime[1]).AddSeconds(-10).ToString() + "'";
                        }
                    }
                    else
                    {
                        sql = SQL_INSERT_ALARMRECODE;
                        sql += "SELECT ";
                        sql += dataList[i];
                    }
                    ExecuteAnalySqlByTranscation(sql);
                }
            }

        }