/// <summary> /// 船舶状态 /// </summary> /// <param name="status"></param> public void StatusData(SmartWeb.ProtoBuffer.Models.Status status) { //添加日志 ProtoBDManager.AddReceiveLog <SmartWeb.ProtoBuffer.Models.Status>("Status", status); switch (status.command) { case Status.Command.SET_REQ: //设置船状态 #region 陆地端修改船状态 var ship = new Ship(); int result = ProtoBDManager.ShipSet(status.statusrequest, ref ship); if (result == 0) { var components = ProtoBDManager.GetComponentByAI(); foreach (var item in components) { //向XMQ组件里的所有算法发送船信息 manager.SendStatusSet(ship, StatusRequest.Type.SAIL, item.Cid); } } manager.SendStatusRN(Status.Command.SET_REP, null, result); break; #endregion case Status.Command.QUERY_REQ: #region 陆地端查询船信息 ship = ProtoBDManager.StatusQuery(); manager.SendStatusRN(Status.Command.QUERY_REP, ship); break; #endregion case Status.Command.SET_REP: //接收设备成功与否 ManagerHelp.StatusResult = status.statusresponse.result.ToString(); break; case Status.Command.QUERY_REP: if (status.statusresponse != null) { ManagerHelp.StatusReponse = JsonConvert.SerializeObject(status.statusresponse); } break; default: break; } }
private void SendCrew() { if (ManagerHelp.isFaceAlgorithm && ManagerHelp.isInit == false) { string identity = ManagerHelp.GetShipToId(ComponentType.AI, ManagerHelp.FaceName); if (identity != "") { //等待15秒后发送底库数据 Thread.Sleep(15 * 1000); var crew = ProtoBDManager.CrewQuery(); foreach (var item in crew) { manager.SendCrewAdd(item, identity); } ManagerHelp.isFaceAlgorithm = false; } } }
/// <summary> /// 事件信息 /// </summary> /// <param name="captureInfo"></param> public void EventData(Event evt, string xmpId) { var dBManager = new ProtoBDManager(); switch (evt.command) { case Event.Command.CAPTURE_JPEG_REQ: break; case Event.Command.CAPTURE_JPEG_REP: //缺岗 dBManager.CaptureAdd(evt.captureinfo, xmpId); break; case Event.Command.SYNC_AIS: dBManager.AisAdd(evt.ais); break; default: break; } }
/// <summary> /// 添加考勤信息 /// </summary> /// <param name="alarmInfo"></param> /// <param name="context"></param> /// <param name="shipId"></param> /// <param name="identity"></param> /// <param name="cid"></param> /// <param name="picture"></param> private static bool AddAttendance(Models.AlarmInfo alarmInfo, string shipId, string cid, string cname) { bool flag = false;//是否向陆地端推送 if (alarmInfo.uid != "") { int uid = 0; string identity = Guid.NewGuid().ToString(); SmartWeb.Models.Crew crew = new SmartWeb.Models.Crew(); using (var context = new MyContext()) { #region 考勤信息入库 if (ManagerHelp.IsShipPort) { if (alarmInfo.uid == "0") { if (alarmInfo.alarmposition != null && alarmInfo.alarmposition.Count > 0) { uid = alarmInfo.alarmposition[0].w; } } else { //得到船员ID try { uid = Convert.ToInt32(alarmInfo.uid); } catch (Exception) { byte[] array = new byte[1]; array = System.Text.Encoding.ASCII.GetBytes(alarmInfo.uid); uid = array[0]; } } //查询传入的船员ID是否存在 crew = context.Crew.FirstOrDefault(c => c.Id == uid); if (crew == null) { return(flag); } alarmInfo.uid = uid + ":" + crew.Name + ":" + crew.Job; //重复打卡只取最后一次 int behavior = alarmInfo.type == ProtoBuffer.Models.AlarmInfo.Type.ATTENDANCE_IN ? 0 : 1; var attes = context.Attendance.Where(c => c.CameraId == cid && c.CrewId == uid && c.Behavior == behavior).OrderByDescending(c => c.CreateTime).Take(1).ToList(); if (attes.Count() > 0) { DateTime dtNow = DateTime.Now; var atte = attes[0]; //5分钟内重复打卡不记入数据库 if ((dtNow - atte.CreateTime).Minutes >= 5) { AttendanceAdd(alarmInfo, shipId, cid, cname); flag = true; } } else { AttendanceAdd(alarmInfo, shipId, cid, cname); flag = true; } } else if (alarmInfo.uid != "0") { AttendanceAdd(alarmInfo, shipId, cid, cname); flag = true; } #endregion } if (ManagerHelp.IsShipPort) { #region 将考勤数据存入内存中 if (alarmInfo.type == Models.AlarmInfo.Type.ATTENDANCE_IN && (!ManagerHelp.atWorks.Where(c => c.Uid == uid).Any())) { ManagerHelp.atWorks.Add(new AtWork() { Uid = uid, Line = 1 }); if (ManagerHelp.atWorks.Count > 0) { ManagerHelp.LiveTime = ""; } } else if (alarmInfo.type == Models.AlarmInfo.Type.ATTENDANCE_OUT && ManagerHelp.atWorks.Where(c => c.Uid == uid).Any()) { var atwork = ManagerHelp.atWorks.FirstOrDefault(c => c.Uid == uid); ManagerHelp.atWorks.Remove(atwork); } if (ManagerHelp.atWorks.Count == 0) { ManagerHelp.LiveTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } #endregion #region 发送考勤给IPad if (crew != null && flag) { try { ProtoBDManager.AddReceiveLog("IpadStart", "记录日志开始", "连接地址:" + ManagerHelp.PublisherIP); PublisherService service = new PublisherService(); //考勤类型 int Behavior = (alarmInfo.type == Models.AlarmInfo.Type.ATTENDANCE_IN) ? 0 : 1; //考勤时间 string SignInTime = alarmInfo.time; //考勤人员 string EmployeeName = string.IsNullOrEmpty(crew.Name) ? crew.Id.ToString() : crew.Name; //考勤图片 string PhotosBuffer = Convert.ToBase64String(alarmInfo.picture); string data = Behavior + "," + SignInTime + "," + EmployeeName + "," + PhotosBuffer; service.Send(data); ProtoBDManager.AddReceiveLog("IpadEnd", "记录日志结束"); } catch (Exception ex) { ProtoBDManager.AddReceiveLog("Ipad", "记录日志异常", "错误:" + ex.Message); } } #endregion } } return(flag); }
public void Receive() { ReceiveDataManager manager = new ReceiveDataManager(); while (true) { try { var mQFrames = dealer.ReceiveMultipartMessage(6); byte[] mory = mQFrames.Last.ToByteArray(); MSG revmsg = ProtoBufHelp.DeSerialize <MSG>(mory); //消息来源 var fromId = mQFrames[3].ConvertToString(); var toId = mQFrames[4].ConvertToString(); if (revmsg == null) { continue; } if (revmsg.type == MSG.Type.ALGORITHM || revmsg.type == MSG.Type.DEVICE || revmsg.type == MSG.Type.STATUS || revmsg.type == MSG.Type.CREW) { var component = ProtoBDManager.GetComponentById(fromId); if (component == null) { //记录从陆地端传过来的ID,船舶端发送时做为上级ID传值 ManagerHelp.UpToId = fromId; } } if (revmsg.type == MSG.Type.COMPONENT) { manager.ComponentData(revmsg.component); } if (revmsg.type == MSG.Type.ALARM) { if (revmsg.alarm.alarminfo != null) { string xmq = ""; //陆地端收到船舶推送的报警数据带有upload标识 //船舶端收到陆地端的响应带有request标识 if (mQFrames[2].ConvertToString() == "upload" || mQFrames[2].ConvertToString() == "request") { xmq = fromId; } manager.AlarmData(xmq, revmsg.alarm.alarminfo); //var ss = new ProtoBDManager(); //ss.AlarmAdd(revmsg.alarm.alarminfo, xmq); } } else if (revmsg.type == MSG.Type.EVENT) { if (revmsg.evt != null) { string xmqId = ""; if (mQFrames[2].ConvertToString() == "upload") { xmqId = fromId; } manager.EventData(revmsg.evt, xmqId); } } Task.Factory.StartNew(st => { try { if (revmsg.type == MSG.Type.ALGORITHM) { manager.AlgorithmData(revmsg.algorithm, fromId); } else if (revmsg.type == MSG.Type.CREW) { manager.CrewData(revmsg.crew); } else if (revmsg.type == MSG.Type.DEVICE) { manager.DeviceData(revmsg.device); } else if (revmsg.type == MSG.Type.STATUS) { manager.StatusData(revmsg.status); } } catch (Exception ex) { //异常日志入库 ProtoBDManager.AddReceiveLog <MSG>("Exception", revmsg, ex.Message); } }, TaskCreationOptions.LongRunning); } catch (Exception ex) { //异常日志入库 ProtoBDManager.AddReceiveLog("Exception", "数据处理异常", ex.Message); continue; } Thread.Sleep(100); } }
/// <summary> /// 算法处理 /// </summary> /// <param name="fromId">算法来源</param> /// <param name="algorithm"></param> public void AlgorithmData(SmartWeb.ProtoBuffer.Models.Algorithm algorithm, string fromId) { //添加日志 ProtoBDManager.AddReceiveLog <SmartWeb.ProtoBuffer.Models.Algorithm>("Algorithm/" + Enum.GetName(typeof(Models.Component.Command), Convert.ToInt32(algorithm.command)), algorithm); switch (algorithm.command) { case Models.Algorithm.Command.CONFIGURE_REQ: #region 陆地端发送算法设置请求 var request = algorithm.algorithmrequest; if (request == null) { manager.SendAlgorithmRN(Models.Algorithm.Command.CONFIGURE_REP, null, 1); break; } var devcid = request.algorithminfo.cid.Split(":"); //cid=did:cid:index(设备ID:摄像机ID:摄像机通道) var cid = devcid[1]; request.algorithminfo.cid = cid; int result = ProtoBDManager.AlgorithmSet(request.algorithminfo); if (result == 0) { if (request.algorithminfo.type == AlgorithmInfo.Type.CAPTURE) { ManagerHelp.LiveTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); } if (request.algorithminfo.type != AlgorithmInfo.Type.CAPTURE) { string name = Enum.GetName(typeof(AlgorithmType), request.algorithminfo.type); string identity = ManagerHelp.GetShipToId(ComponentType.AI, name); if (identity != "") { //向算法组件注册时只需要传入设备ID和摄像机通道 request.algorithminfo.cid = devcid[0] + ":" + devcid[1] + ":" + devcid[2]; ManagerHelp.isFaceAlgorithm = false; if (request.algorithminfo.type == AlgorithmInfo.Type.ATTENDANCE_IN || request.algorithminfo.type == AlgorithmInfo.Type.ATTENDANCE_OUT) { ManagerHelp.isFaceAlgorithm = true; } manager.SendAlgorithmSet(request.algorithminfo, identity); ManagerHelp.UpSend.Add("Algorithm"); } else { manager.SendAlgorithmRN(Models.Algorithm.Command.CONFIGURE_REP, null, 1); } } else { //向陆地端响应算法请求 manager.SendAlgorithmRN(Models.Algorithm.Command.CONFIGURE_REP, null, result); } } else { //向陆地端响应算法请求 manager.SendAlgorithmRN(Models.Algorithm.Command.CONFIGURE_REP, null, result); } break; #endregion case Models.Algorithm.Command.QUERY_REQ: #region 陆地端发送算法查询请求 //查询船舶端数据库获取所有算法数据 var algorithms = ProtoBDManager.AlgorithmQuery(true); //返回给陆地端 manager.SendAlgorithmRN(Models.Algorithm.Command.QUERY_REP, algorithms); break; #endregion case Models.Algorithm.Command.CONFIGURE_REP: if (ManagerHelp.UpSend.Where(c => c == "Algorithm").Any()) { //向陆地端响应请求 manager.SendAlgorithmRN(Models.Algorithm.Command.CONFIGURE_REP, null, algorithm.algorithmresponse.result); ManagerHelp.UpSend.Remove("Algorithm"); } else { ManagerHelp.AlgorithmResult = algorithm.algorithmresponse.result.ToString(); } if (ManagerHelp.IsShipPort) { //算法配置成功后把船状态推送给当前算法 if (algorithm.algorithmresponse.result == 0) { var ship = ProtoBDManager.StatusQuery(); manager.SendStatusSet(ship, StatusRequest.Type.SAIL, fromId); SendCrew(); } } break; case Models.Algorithm.Command.QUERY_REP: if (algorithm.algorithmresponse != null && algorithm.algorithmresponse.result == 0 && algorithm.algorithmresponse.configures != null) { ManagerHelp.AlgorithmReponse = JsonConvert.SerializeObject(algorithm.algorithmresponse.configures); } break; default: break; } }
/// <summary> /// 保存数据 /// </summary> /// <param name="xml"></param> /// <param name="alarm"></param> public void AlarmData(string xml, AlarmInfo alarm) { try { string shipId = xml; if (ManagerHelp.IsShipPort) { shipId = ProtoBDManager.StatusQuery().Id; //船舶端接收到的是陆地端的响应 if (xml != "") { ManagerHelp.LandResponse.Add(alarm); return; } } var dic = ManagerHelp.ReviceAlarms.FirstOrDefault(c => c.Id == shipId); if (dic == null) { ManagerHelp.ReviceAlarms = new List <MeterAsyncQueue>(); List <AlarmCache> list = new List <AlarmCache>() { new AlarmCache() { alarmInfos = alarm } }; ManagerHelp.ReviceAlarms.Add(new MeterAsyncQueue() { Id = shipId, alarmCaches = list }); } else { List <AlarmCache> list = dic.alarmCaches; if (ManagerHelp.IsShipPort) { AlarmCache cache = new AlarmCache() { alarmInfos = alarm }; list.Add(cache); dic.alarmCaches = list; } else { if (list.Where(c => c.alarmInfos.uid != alarm.uid).Any()) { AlarmCache cache = new AlarmCache() { alarmInfos = alarm }; list.Add(cache); dic.alarmCaches = list; } else { //响应船舶 string webId = alarm.cid.Split(':')[2]; string toId = shipId + ":" + webId; alarm.picture = Encoding.UTF8.GetBytes("1"); if ((int)alarm.type == 7) { alarm.type = AlarmInfo.Type.HELMET; } alarm.cid = "sss"; alarm.alarmposition = new List <Models.AlarmPosition>(); alarm.alarmposition.Add(new Models.AlarmPosition() { h = 1, x = 1, y = 1, w = 1 }); manager.SendAlarm("request", alarm, toId); } } } } catch (Exception ex) { } }
/// <summary> /// 船员处理 /// </summary> /// <param name="crew"></param> public void CrewData(SmartWeb.ProtoBuffer.Models.Crew crew) { int result = 1;//响应状态 switch (crew.command) { case Models.Crew.Command.NEW_REQ: #region 陆地端添加船员请求 if (crew.crewrequest == null) { manager.SendCrewRN(Models.Crew.Command.NEW_REP, null, 1); } else { var crewInfo = crew.crewrequest.crewinfo; result = ProtoBDManager.CrewAdd(ref crewInfo); if (result == 0) { string identity = ManagerHelp.GetShipToId(ComponentType.AI, ManagerHelp.FaceName); if (identity != "") { //向组件发送船员请求 manager.SendCrewAdd(crewInfo, identity); ManagerHelp.UpSend.Add("CrewAdd"); } else { //向陆地端响应算法请求 manager.SendCrewRN(Models.Crew.Command.NEW_REP, null, result); } } else { //向陆地端响应算法请求 manager.SendCrewRN(Models.Crew.Command.NEW_REP, null, result); } } break; #endregion case Models.Crew.Command.DELETE_REQ: #region 陆地端删除船员请求 if (crew.crewrequest == null) { manager.SendCrewRN(Models.Crew.Command.DELETE_REP, null, 1); } else { result = ProtoBDManager.CrewDelete(crew.crewrequest.crewinfo.uid); if (result == 0) { string identity = ManagerHelp.GetShipToId(ComponentType.AI, ManagerHelp.FaceName); //向组件发送船员请求 manager.SendCrewDelete(Convert.ToInt32(crew.crewrequest.crewinfo.uid), identity); ManagerHelp.UpSend.Add("CrewDel"); } else { manager.SendCrewRN(Models.Crew.Command.DELETE_REP, null, result); } } break; #endregion case Models.Crew.Command.MODIFY_REQ: #region 陆地端修改船员请求 if (crew.crewrequest == null) { manager.SendCrewRN(Models.Crew.Command.MODIFY_REP, null, 1); } else { result = ProtoBDManager.CrewUpdate(crew.crewrequest.crewinfo); if (result == 0) { string identity = ManagerHelp.GetShipToId(ComponentType.AI, ManagerHelp.FaceName); if (identity != "") { //向组件发送船员请求 //manager.SendCrewUpdate(crew.crewrequest.crewinfo, identity); manager.SendCrewAdd(crew.crewrequest.crewinfo, identity); ManagerHelp.UpSend.Add("CrewEdit"); } else { manager.SendCrewRN(Models.Crew.Command.MODIFY_REP, null, result); } } else { manager.SendCrewRN(Models.Crew.Command.MODIFY_REP, null, result); } } break; #endregion case Models.Crew.Command.QUERY_REQ: #region 陆地端查询船员请求 int uid = crew.crewrequest != null && crew.crewrequest.crewinfo != null?Convert.ToInt32(crew.crewrequest.crewinfo.uid) : 0; var crews = ProtoBDManager.CrewQuery(uid); manager.SendCrewRN(Models.Crew.Command.QUERY_REP, crews); break; #endregion case Models.Crew.Command.NEW_REP: if (ManagerHelp.UpSend.Where(c => c == "CrewAdd").Any()) { //向陆地端响应请求 manager.SendCrewRN(Models.Crew.Command.NEW_REP, null, crew.crewresponse.result); ManagerHelp.UpSend.Remove("CrewAdd"); } else { ManagerHelp.CrewResult = crew.crewresponse.result.ToString(); } break; case Models.Crew.Command.DELETE_REP: if (ManagerHelp.UpSend.Where(c => c == "CrewDel").Any()) { //向陆地端响应请求 manager.SendCrewRN(Models.Crew.Command.DELETE_REP, null, crew.crewresponse.result); ManagerHelp.UpSend.Remove("CrewDel"); } else { ManagerHelp.CrewResult = crew.crewresponse.result.ToString(); } break; case Models.Crew.Command.MODIFY_REP: if (ManagerHelp.UpSend.Where(c => c == "CrewEdit").Any()) { //向陆地端响应请求 manager.SendCrewRN(Models.Crew.Command.MODIFY_REP, null, crew.crewresponse.result); ManagerHelp.UpSend.Remove("CrewEdit"); } else { ManagerHelp.CrewResult = crew.crewresponse.result.ToString(); } break; case Models.Crew.Command.QUERY_REP: if (crew.crewresponse != null && crew.crewresponse.result == 0 && crew.crewresponse.crewinfos != null) { ManagerHelp.CrewReponse = JsonConvert.SerializeObject(crew.crewresponse.crewinfos); } break; default: break; } }
/// <summary> /// 组件处理 /// </summary> /// <param name="response"></param> public void ComponentData(SmartWeb.ProtoBuffer.Models.Component component) { //添加日志 ProtoBDManager.AddReceiveLog <SmartWeb.ProtoBuffer.Models.Component>("Component/" + Enum.GetName(typeof(Models.Component.Command), Convert.ToInt32(component.command)), component); ManagerHelp.ComponentReponse = ""; try { switch (component.command) { case Models.Component.Command.SIGNIN_REQ: break; case Models.Component.Command.SIGNIN_REP: if (component.componentresponse != null && component.componentresponse.result == 0) { //if (ManagerHelp.Cid == "") //{ ProtoBDManager.ComponentAdd(component.componentresponse.cid); //} } if (component.componentresponse.result != 0) { ManagerHelp.ComponentReponse = component.componentresponse.result.ToString(); } //心跳是否有响应 if (ManagerHelp.SendCount > 0) { ManagerHelp.SendCount--; } break; case Models.Component.Command.SIGNOUT_REQ: break; case Models.Component.Command.SIGNOUT_REP: break; case Models.Component.Command.QUERY_REQ: break; case Models.Component.Command.QUERY_REP: List <ComponentInfo> infos = component.componentresponse.componentinfos; //陆地端查询组件时返回已在线船舶(XMQ陆地端的船舶) if (!infos.Where(c => c.type == ComponentInfo.Type.XMQ).Any()) { ManagerHelp.ComponentReponse = JsonConvert.SerializeObject(component.componentresponse); } if (component.componentresponse != null && component.componentresponse.result == 0) { ProtoBDManager.ComponentUpdateRange(component.componentresponse.componentinfos); } break; default: break; } } catch (Exception ex) { ProtoBDManager.AddReceiveLog <SmartWeb.ProtoBuffer.Models.Component>("ExceptionComponent", component, ex.Message); } }
/// <summary> /// 设备处理 /// </summary> /// <param name="device"></param> public void DeviceData(SmartWeb.ProtoBuffer.Models.Device device) { //添加日志 ProtoBDManager.AddReceiveLog <SmartWeb.ProtoBuffer.Models.Device>("Device/" + Enum.GetName(typeof(Models.Component.Command), Convert.ToInt32(device.command)), device); switch (device.command) { //上游陆地端的请求 case Models.Device.Command.NEW_REQ: #region 陆地端增加设备请求 if (device.devicerequest != null) { var model = ProtoBDManager.DeviceAdd(device.devicerequest.deviceinfo); if (model != null) { //获取设置的组件ID string identity = ManagerHelp.GetShipToId(ManagerHelp.GetComponentType((int)model.factory)); if (identity != "") { manager.SendDeveiceAdd(model, identity); ManagerHelp.UpSend.Add(model.Id + "Add"); } else { manager.SendDeviceRN(Models.Device.Command.MODIFY_REP, "", null, 1); } } } else { manager.SendDeviceRN(Models.Device.Command.NEW_REP, "", null, 1); } break; #endregion case Models.Device.Command.DELETE_REQ: #region 陆地端删除设备请求 if (device.devicerequest != null && !string.IsNullOrEmpty(device.devicerequest.deviceinfo.did)) { //删除船舶端数据 var result = ProtoBDManager.DeviceDelete(device.devicerequest.deviceinfo.did); manager.SendDeviceRN(Models.Device.Command.DELETE_REP, device.devicerequest.deviceinfo.did, null, result); } else { manager.SendDeviceRN(Models.Device.Command.DELETE_REP, "", null, 1); } break; #endregion case Models.Device.Command.MODIFY_REQ: #region 陆地端编辑设备请求 if (device.devicerequest != null && !string.IsNullOrEmpty(device.devicerequest.did)) { bool isSend = false; //修改船舶端数据库信息 var model = ProtoBDManager.DeviceUpdate(device.devicerequest.did, device.devicerequest.deviceinfo, ref isSend); if (model != null && isSend) { //获取设置的组件ID string identity = ManagerHelp.GetShipToId(ManagerHelp.GetComponentType((int)model.factory)); if (identity != "") { manager.SendDeveiceUpdate(model, identity); ManagerHelp.UpSend.Add(model.Id + "Edit"); } else { manager.SendDeviceRN(Models.Device.Command.MODIFY_REP, "", null, 1); } } else { manager.SendDeviceRN(Models.Device.Command.MODIFY_REP, "", null, isSend?0:1); } } else { manager.SendDeviceRN(Models.Device.Command.MODIFY_REP, "", null, 1); } break; #endregion case Models.Device.Command.QUERY_REQ: #region 陆地端查询设备请求 var info = device.devicerequest == null ? null : device.devicerequest.deviceinfo; string did = device.devicerequest != null ? device.devicerequest.did : ""; var devices = ProtoBDManager.DeviceQuery(info, did); manager.SendDeviceRN(Models.Device.Command.QUERY_REP, did, devices); break; #endregion case Models.Device.Command.NEW_REP: #region XMQ响应设备增加 did = ""; if (device.deviceresponse.result == 0 && device.deviceresponse.deviceinfos != null) { var dev = device.deviceresponse.deviceinfos[0]; ProtoBDManager.AddCameras(dev.camerainfos, dev.did); did = dev.did; } if (ManagerHelp.UpSend.Where(c => c == did + "Add").Any()) { //向陆地端响应请求 manager.SendDeviceRN(Models.Device.Command.NEW_REP, did); ManagerHelp.UpSend.Remove(did + "Add"); } else { ManagerHelp.DeviceResult = device.deviceresponse.result.ToString(); //-101设备已经存在 -2设备未添加就执行了修改 if (device.deviceresponse.result != 0 && device.deviceresponse.result != -2 && device.deviceresponse.result != -101) { if (device.deviceresponse != null && device.deviceresponse.deviceinfos != null && device.deviceresponse.deviceinfos.Count > 0) { did = device.deviceresponse.deviceinfos[0].did; ProtoBDManager.DeviceDelete(did); } } } break; #endregion case Models.Device.Command.DELETE_REP: ManagerHelp.DeviceResult = device.deviceresponse.result.ToString(); break; case Models.Device.Command.MODIFY_REP: #region XMQ响应设备修改 did = device.deviceresponse.did; if (device.deviceresponse.result == 0 && device.deviceresponse.deviceinfos != null) { ProtoBDManager.DeviceUpdate(did, device.deviceresponse.deviceinfos[0]); } if (ManagerHelp.UpSend.Where(c => c == did + "Edit").Any()) { //向陆地端响应请求 manager.SendDeviceRN(Models.Device.Command.MODIFY_REP, did); ManagerHelp.UpSend.Remove(did + "Edit"); } else { ManagerHelp.DeviceResult = device.deviceresponse.result.ToString(); } break; #endregion case Models.Device.Command.QUERY_REP: if (device.deviceresponse != null && device.deviceresponse.result == 0 && device.deviceresponse.deviceinfos != null) { ManagerHelp.DeviceReponse = JsonConvert.SerializeObject(device.deviceresponse.deviceinfos); } break; default: break; } }