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(); } } }
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); }
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); }
/// <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); }
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); }
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(); } } }
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); }
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); }
/// <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); } } }
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(); } } }
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; } }
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); } }