예제 #1
0
        public void Save(InspectOriginalData oData, List <InspectItemData> itemDatas)
        {
            //创建数据库链接
            MongoClient mc     = new MongoClient(ConnectionManager.MongodbConectionStr);
            MongoServer server = mc.GetServer();

            server.Connect();

            //获得数据库
            MongoDatabase   db          = server.GetDatabase("InspectDB");
            MongoCollection colOdata    = db.GetCollection("InspectOriginalData");
            MongoCollection colItemdata = db.GetCollection("InspectItemData");

            try
            {
                //插入原始监测数据
                colOdata.Insert <InspectOriginalData>(oData);

                //插入监测项目数据
                colItemdata.InsertBatch <InspectItemData>(itemDatas);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //关闭数据库连接
                if (server != null)
                {
                    server.Disconnect();
                }
            }
        }
예제 #2
0
        public List <InspectItemData> ResolveItemData(InspectOriginalData oData)
        {
            List <InspectItemData> itemDatas = new List <InspectItemData>();

            //风速
            itemDatas.Add(
                new InspectItemData {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.windSpeed,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(6, 2) + oData.InspectData.Substring(4, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //风向
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.windDirection,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(10, 2) + oData.InspectData.Substring(8, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            return(itemDatas);
        }
예제 #3
0
        public List <InspectItemData> ResolveItemData(InspectOriginalData oData)
        {
            List <InspectItemData> itemDatas = new List <InspectItemData>();

            //温度值
            itemDatas.Add(
                new InspectItemData {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.temperatureCode,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(10, 4)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //温度值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.humidityCode,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(14, 4)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            return(itemDatas);
        }
예제 #4
0
        /// <summary>
        /// 采集的数据保存到数据库中
        /// </summary>
        /// <param name="oData"></param>
        /// <param name="itemDatas"></param>
        static void saveData(InspectOriginalData oData, List <InspectItemData> itemDatas)
        {
            //发布监测信息
            InspectMsg msg = new InspectMsg();

            msg.OriginalData = oData;
            msg.ItemDatas    = itemDatas;
            CollectInspectMsg(msg);
        }
예제 #5
0
        public InspectOriginalData CreateOriginalData(string DeviceSN, SuperSocket.SocketBase.Protocol.BinaryRequestInfo requestInfo)
        {
            InspectOriginalData data = new InspectOriginalData();

            data.InspectTime = CommonDateConvert.ConvertGMTToUTC(DateTime.Now);
            data.InspectData = requestInfo.Key + Tools.BytesToHexStr(requestInfo.Body, requestInfo.Body.Length);
            data.DeviceSN    = DeviceSN;

            return(data);
        }
예제 #6
0
        public List <InspectItemData> GetItemDatas(InspectOriginalData oData)
        {
            //创建数据库链接
            MongoClient mc     = new MongoClient(ConnectionManager.MongodbConectionStr);
            MongoServer server = mc.GetServer();

            server.Connect();

            //获得数据库
            MongoDatabase   db          = server.GetDatabase("InspectDB");
            MongoCollection colItemdata = db.GetCollection("InspectItemData");

            try
            {
                //QueryDocument query = new QueryDocument();
                //BsonDocument b = new BsonDocument();

                //if(oData.StartTime != null && !"".Equals(oData.StartTime))
                //{
                //    b.Add("$gt", DateTime.Parse(oData.StartTime));
                //}

                //if (oData.EndTime != null && !"".Equals(oData.EndTime))
                //{
                //    b.Add("$lt", DateTime.Parse(oData.EndTime));
                //}

                //query.Add("InspectTime", b);

                //查询全部集合里的数据
                List <InspectItemData> inspectItemData = colItemdata.FindAllAs <InspectItemData>()
                                                         .Where(p => p.InspectTime > DateTime.Parse(oData.StartTime) &&
                                                                p.InspectTime <= DateTime.Parse(oData.EndTime)).OrderBy(x => x.DeviceSN).ThenBy(x => x.ItemCode).ToList <InspectItemData>();

                return(inspectItemData);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //关闭数据库连接
                if (server != null)
                {
                    server.Disconnect();
                }
            }
        }
예제 #7
0
        public List <InspectItemData> ResolveItemData(InspectOriginalData oData)
        {
            List <InspectItemData> itemDatas = new List <InspectItemData>();

            //温度值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.temperatureCode,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(10, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //叶绿素值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.chlorophyll,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(14, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //浊度值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.turbidity,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(18, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.S,
                InspectData = (Tools.HexStringToString(oData.InspectData.Substring(22, 2), Encoding.UTF8)).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            return(itemDatas);
        }
예제 #8
0
        public List <InspectItemData> ResolveItemData(InspectOriginalData oData)
        {
            List <InspectItemData> itemDatas = new List <InspectItemData>();

            //电导率值
            itemDatas.Add(
                new InspectItemData {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.electricalConductivity,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(10, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //温度值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.temperatureCode,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(14, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            //盐度值
            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.salinity,
                InspectData = (Tools.HexStrToDecimal(oData.InspectData.Substring(18, 2)) / 10).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            itemDatas.Add(
                new InspectItemData
            {
                DeviceSN    = oData.DeviceSN,
                ItemCode    = ItemCodes.S,
                InspectData = (Tools.HexStringToString(oData.InspectData.Substring(22, 2), Encoding.UTF8)).ToString(),
                InspectTime = oData.InspectTime
            }
                );

            return(itemDatas);
        }
예제 #9
0
        /// <summary>
        /// 打印连接信息
        /// </summary>
        /// <param name="oData"></param>
        /// <param name="itemDatas"></param>
        static void printData(string SessionID, string ip, string port, InspectOriginalData oData, List <InspectItemData> itemDatas)
        {
            Console.WriteLine("received data");
            Console.WriteLine("sessionid:" + SessionID);
            Console.WriteLine("RemoteEndPoint:" + ip + ":" + port);
            Console.WriteLine("DeviceSN:" + oData.DeviceSN);
            Console.WriteLine("InspectTime:" + oData.InspectTime.ToString("yyyy-MM-dd HH:mm:ss"));
            Console.WriteLine("OriginalData:" + oData.InspectData);

            if (itemDatas != null && itemDatas.Count > 0)
            {
                foreach (InspectItemData itemData in itemDatas)
                {
                    Console.WriteLine(itemData.ItemCode + ":" + itemData.InspectData);
                }
            }
        }
예제 #10
0
        public List <InspectOriginalData> GetOriginalDatas(InspectOriginalData oData)
        {
            //创建数据库链接
            MongoClient mc     = new MongoClient(ConnectionManager.MongodbConectionStr);
            MongoServer server = mc.GetServer();

            server.Connect();

            //获得数据库
            MongoDatabase   db       = server.GetDatabase("InspectDB");
            MongoCollection colOdata = db.GetCollection("InspectOriginalData");

            try
            {
                //插入原始监测数据
                var query = new QueryDocument {
                };

                //查询全部集合里的数据
                MongoCursor <InspectOriginalData> inspectOriginalData = colOdata.FindAs <InspectOriginalData>(query);

                return(inspectOriginalData.ToList <InspectOriginalData>());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //关闭数据库连接
                if (server != null)
                {
                    server.Disconnect();
                }
            }
        }
예제 #11
0
        public void Execute(IJobExecutionContext context)
        {
            DateTime time      = DateTime.Now.AddHours(-1);
            string   startTime = time.ToString("yyyy-MM-dd") + " " + time.ToString("HH") + ":00:00";
            string   endTime   = time.ToString("yyyy-MM-dd") + " " + time.ToString("HH") + ":59:59";

            InspectOriginalData inspectOriginalData = new InspectOriginalData();

            inspectOriginalData.StartTime = startTime;
            inspectOriginalData.EndTime   = endTime;

            ////测试数据
            //inspectOriginalData.StartTime = "2018-03-30 21:00:00";
            //inspectOriginalData.EndTime = "2018-03-30 21:59:59";

            //返回结果集。计算最大最小值。平均值
            List <InspectItemData> itemDataList = new InspectDataService().GetItemDatas(inspectOriginalData);

            List <InspectResultData> resultList = new List <InspectResultData>();

            if (itemDataList != null && itemDataList.Count > 0)
            {
                decimal total    = 0;
                decimal max      = 0;
                decimal min      = 0;
                int     groupNum = 0;

                string DeviceSN = "";
                foreach (InspectItemData iid in itemDataList)
                {
                    string groupId = iid.DeviceSN + "^" + iid.ItemCode;
                    if (DeviceSN != groupId)
                    {
                        if (DeviceSN != "")
                        {
                            InspectResultData ird = new InspectResultData();
                            ird.ID           = Guid.NewGuid().ToString();
                            ird.DeviceCode   = DeviceSN.Split('^')[0];
                            ird.ItemCode     = DeviceSN.Split('^')[1];
                            ird.MaxDataValue = max;
                            ird.MinDataValue = min;
                            ird.AvgValue     = Convert.ToDecimal((total / groupNum).ToString("0.00"));
                            ird.ResultType   = "1";
                            ird.UpdateTime   = DateTime.Now;
                            ird.InspectTime  = DateTime.Parse(inspectOriginalData.StartTime);
                            ird.OrganID      = DeviceCache.getOrganIdByCode(ird.DeviceCode);
                            resultList.Add(ird);
                        }
                        max      = Convert.ToDecimal(iid.InspectData);
                        min      = Convert.ToDecimal(iid.InspectData);
                        groupNum = 0;
                        total    = 0;
                        DeviceSN = groupId;
                    }

                    decimal id = 0;
                    try
                    {
                        //非数字格式转换出异常时.此条数据丢弃
                        id = Convert.ToDecimal(iid.InspectData);
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }

                    //计算最大值
                    if (id > max)
                    {
                        max = id;
                    }
                    //计算最小值
                    if (id < min)
                    {
                        min = id;
                    }
                    //汇总
                    total += id;
                    groupNum++;
                }

                InspectResultData ird1 = new InspectResultData();
                ird1.ID           = Guid.NewGuid().ToString();
                ird1.DeviceCode   = DeviceSN.Split('^')[0];
                ird1.ItemCode     = DeviceSN.Split('^')[1];
                ird1.MaxDataValue = max;
                ird1.MinDataValue = min;
                ird1.AvgValue     = Convert.ToDecimal((total / groupNum).ToString("0.00"));
                ird1.ResultType   = "1";
                ird1.UpdateTime   = DateTime.Now;
                ird1.InspectTime  = DateTime.Parse(inspectOriginalData.StartTime);
                ird1.OrganID      = DeviceCache.getOrganIdByCode(ird1.DeviceCode);
                resultList.Add(ird1);
            }

            Console.WriteLine("每小时定时计算平均值!");

            if (resultList.Count > 0)
            {
                Console.ForegroundColor = ConsoleColor.Red;
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.White;
            }

            foreach (InspectResultData ird in resultList)
            {
                Console.WriteLine("按小时-设备号:" + ird.DeviceCode + ";项目号:" + ird.ItemCode + ";最大值:" + ird.MaxDataValue + ";最小值" + ird.MinDataValue + ";平均值:" + ird.AvgValue);
            }

            //插入到数据库中

            int count = 0;

            try
            {
                using (IDataSession session = AppDataFactory.CreateMainSession())
                {
                    //插入基本信息
                    count = session.Insert <InspectResultData>(resultList);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #12
0
파일: MonthCalJob.cs 프로젝트: 48401298/efp
        public void Execute(IJobExecutionContext context)
        {
            DateTime time      = DateTime.Now.AddMonths(-1);
            DateTime stime     = DateTime.Parse(DateTime.Now.ToString("yyyy-MM" + "-01"));
            DateTime eTime     = stime.AddMonths(1).AddSeconds(-1);
            string   startTime = stime.ToString("yyyy-MM-dd") + " " + "00:00:00";
            string   endTime   = eTime.ToString("yyyy-MM-dd") + " " + "23:59:59";

            InspectOriginalData inspectOriginalData = new InspectOriginalData();

            inspectOriginalData.StartTime = startTime;
            inspectOriginalData.EndTime   = endTime;

            ////测试数据
            //inspectOriginalData.StartTime = "2018-03-23 00:00:00";
            //inspectOriginalData.EndTime = "2018-03-23 23:59:59";

            //返回结果集。计算最大最小值。平均值
            List <InspectItemData> itemDataList = new InspectDataService().GetItemDatas(inspectOriginalData);

            List <InspectResultData> resultList = new List <InspectResultData>();

            if (itemDataList != null && itemDataList.Count > 0)
            {
                decimal total = 0;
                decimal max   = 0;
                decimal min   = 0;

                string DeviceSN = "";
                foreach (InspectItemData iid in itemDataList)
                {
                    string groupId = iid.DeviceSN + "_" + iid.ItemCode;
                    if (DeviceSN != groupId)
                    {
                        if (DeviceSN != "")
                        {
                            InspectResultData ird = new InspectResultData();
                            ird.ID           = Guid.NewGuid().ToString();
                            ird.DeviceCode   = DeviceSN.Split('_')[0];
                            ird.ItemCode     = DeviceSN.Split('_')[1];
                            ird.MaxDataValue = max;
                            ird.MinDataValue = min;
                            ird.AvgValue     = Convert.ToDecimal((total / itemDataList.Count).ToString("0.00"));
                            ird.ResultType   = "3";
                            ird.UpdateTime   = DateTime.Now;
                            ird.InspectTime  = DateTime.Parse(inspectOriginalData.StartTime.Substring(0, 14).Replace("T", ""));
                            ird.OrganID      = DeviceCache.getOrganIdByCode(ird.DeviceCode);
                            resultList.Add(ird);
                        }
                        max      = 0;
                        min      = 0;
                        total    = 0;
                        DeviceSN = groupId;
                    }

                    decimal id = Convert.ToDecimal(iid.InspectData);
                    //计算最大值
                    if (id > max)
                    {
                        max = id;
                    }
                    //计算最小值
                    if (id < min)
                    {
                        min = id;
                    }
                    //汇总
                    total += id;
                }

                InspectResultData ird1 = new InspectResultData();
                ird1.ID           = Guid.NewGuid().ToString();
                ird1.DeviceCode   = DeviceSN.Split('_')[0];
                ird1.ItemCode     = DeviceSN.Split('_')[1];
                ird1.MaxDataValue = max;
                ird1.MinDataValue = min;
                ird1.AvgValue     = Convert.ToDecimal((total / itemDataList.Count).ToString("0.00"));
                ird1.ResultType   = "3";
                ird1.UpdateTime   = DateTime.Now;
                ird1.InspectTime  = DateTime.Parse(inspectOriginalData.StartTime.Substring(0, 14).Replace("T", ""));
                ird1.OrganID      = DeviceCache.getOrganIdByCode(ird1.DeviceCode);
                resultList.Add(ird1);
            }

            Console.WriteLine("每月定时计算平均值!");

            foreach (InspectResultData ird in resultList)
            {
                //插入到数据库
                Console.WriteLine("按月-设备号:" + ird.DeviceCode + ";项目号:" + ird.ItemCode + ";最大值:" + ird.MaxDataValue + ";最小值" + ird.MinDataValue + ";平均值:" + ird.AvgValue);
            }
        }