/// <summary> /// 向陆地端推送数据 /// </summary> /// <param name="item"></param> /// <param name="alarmInfo"></param> private void ShipPushAlarm(SmartWeb.Models.Alarm item, AlarmInfo alarmInfo) { List <SmartWeb.Models.Alarm> recordAlarm = new List <SmartWeb.Models.Alarm>(); assembly.SendAlarm("upload", alarmInfo); Console.WriteLine("已推送数据" + alarmInfo.uid); recordAlarm.Add(item); bool flag = true; new TaskFactory().StartNew(() => { while (recordAlarm.Count != 0) { if (ManagerHelp.LandResponse.Count > 0) { flag = false; //修改同步状态 UpdateAlarmSyncStatus(recordAlarm); } Thread.Sleep(1000); } }).Wait(3000); if (flag) { ShipPushAlarm(item, alarmInfo); } }
/// <summary> /// 将缺岗数据插入报警表 /// </summary> /// <param name="captureInfo"></param> public void CaptureAdd(CaptureInfo captureInfo, string xmq) { try { if (captureInfo != null) { using (var context = new MyContext()) { string shipId = ""; string cname = ""; string cid = ""; if (ManagerHelp.IsShipPort) { cid = captureInfo.cid; var camera = context.Camera.FirstOrDefault(c => c.Id == captureInfo.cid); if (camera != null) { cname = camera.NickName; } } if (cid == "") { return; } SmartWeb.Models.Alarm alarm = new SmartWeb.Models.Alarm() { Type = SmartWeb.Models.Alarm.AlarmType.CAPTURE, Cid = cid, Cname = cname, Id = Guid.NewGuid().ToString(), Picture = Convert.FromBase64String(captureInfo.picture), ShipId = shipId, Time = DateTime.Now }; context.Alarm.Add(alarm); context.SaveChanges(); } } } catch (Exception) { } }
/// <summary> /// 报警信息入库 /// </summary> /// <param name="alarmInfo"></param> /// <param name="shipId"></param> /// <param name="cid"></param> /// <param name="cname"></param> private void AddAlarm(Models.AlarmInfo alarmInfo, string shipId, string cid, string cname, string shipAlarmId = "") { using (var context = new MyContext()) { SmartWeb.Models.Alarm model = new SmartWeb.Models.Alarm() { Id = Guid.NewGuid().ToString(), Picture = alarmInfo.picture, Time = Convert.ToDateTime(alarmInfo.time), ShipId = ManagerHelp.IsShipPort?"":shipId, Cid = cid, Cname = cname, Type = (SmartWeb.Models.Alarm.AlarmType)alarmInfo.type, ShipAlarmId = shipAlarmId //Uid = alarmInfo.uid }; var replist = alarmInfo.alarmposition; if (replist != null && replist.Count > 0) { model.alarmPositions = new List <SmartWeb.Models.AlarmPosition>(); foreach (var item in replist) { SmartWeb.Models.AlarmPosition position = new SmartWeb.Models.AlarmPosition() { AlarmId = model.Id, ShipId = shipId, Id = Guid.NewGuid().ToString(), H = item.h, W = item.w, X = item.x, Y = item.y }; model.alarmPositions.Add(position); } } context.Alarm.Add(model); context.SaveChanges(); } }
/// <summary> /// 组合protobuf的报警信息 /// </summary> /// <param name="alarmPos"></param> /// <param name="item"></param> /// <returns></returns> private static AlarmInfo GetAlarmInfo(List <SmartWeb.Models.AlarmPosition> alarmPos, SmartWeb.Models.Alarm item) { Models.AlarmInfo alarmInfo = new Models.AlarmInfo() { cid = item.Cid + ":" + item.Cname + ":" + ManagerHelp.ComponentId, picture = item.Picture, time = item.Time.ToString("yyyy-MM-dd HH:mm:ss"), type = (Models.AlarmInfo.Type)item.Type, uid = item.Id, alarmposition = new List <Models.AlarmPosition>() }; if (alarmPos == null) { return(alarmInfo); } var positions = alarmPos.Where(c => c.AlarmId == item.Id).ToList(); foreach (var pos in positions) { alarmInfo.alarmposition.Add(new Models.AlarmPosition() { h = pos.H, w = pos.W, x = pos.X, y = pos.Y }); } return(alarmInfo); }