public BasicResponse DeleteCall(B_CallDeleteRequest callRequest) { //_Repository.DeleteCall(callRequest.Id); //var callresponse = new BasicResponse(); //return callresponse; var callresponse = new BasicResponse(); //判断缓存中是否存在 B_CallInfo oldB_CallInfo = null; BCallCacheGetByKeyRequest BCallCacheRequest = new BCallCacheGetByKeyRequest(); BCallCacheRequest.Id = callRequest.Id; oldB_CallInfo = _BCallCacheService.GetByKeyBCallCache(BCallCacheRequest).Data; if (oldB_CallInfo == null) { //缓存中存在此测点 callresponse.Code = 1; callresponse.Message = "当前删除的呼叫控制记录不存在!"; return(callresponse); } _Repository.DeleteCall(callRequest.Id); //更新缓存 BCallCacheDeleteRequest BCallCacheDeleteRequest = new BCallCacheDeleteRequest(); BCallCacheDeleteRequest.BCallInfo = oldB_CallInfo; _BCallCacheService.DeleteBCallCache(BCallCacheDeleteRequest); return(callresponse); }
public BasicResponse <B_CallInfo> AddCall(B_CallAddRequest callRequest) { //var _call = ObjectConverter.Copy<B_CallInfo, B_CallModel>(callRequest.CallInfo); //var resultcall = _Repository.AddCall(_call); //var callresponse = new BasicResponse<B_CallInfo>(); //callresponse.Data = ObjectConverter.Copy<B_CallModel, B_CallInfo>(resultcall); //return callresponse; var callresponse = new BasicResponse <B_CallInfo>(); //判断缓存中是否存在 B_CallInfo oldB_CallInfo = null; BCallCacheGetByKeyRequest RCallCacheRequest = new BCallCacheGetByKeyRequest(); RCallCacheRequest.Id = callRequest.CallInfo.Id; oldB_CallInfo = _BCallCacheService.GetByKeyBCallCache(RCallCacheRequest).Data; if (oldB_CallInfo != null) { //缓存中存在此测点 callresponse.Code = 1; callresponse.Message = "当前添加的呼叫控制已存在!"; return(callresponse); } var _call = ObjectConverter.Copy <B_CallInfo, B_CallModel>(callRequest.CallInfo); var resultcall = _Repository.AddCall(_call); // if (callRequest.CallInfo.CallPointList != null && callRequest.CallInfo.CallPointList.Count > 0) { var callpointlist = ObjectConverter.CopyList <B_CallpointlistInfo, B_CallpointlistModel>(callRequest.CallInfo.CallPointList); _bcallPointListRepository.Insert(callpointlist); } //更新缓存 BCallCacheAddRequest BCallCacheAddRequest = new BCallCacheAddRequest(); BCallCacheAddRequest.BCallInfo = callRequest.CallInfo; _BCallCacheService.AddBCallCache(BCallCacheAddRequest); callresponse.Data = ObjectConverter.Copy <B_CallModel, B_CallInfo>(resultcall); return(callresponse); }
public BasicResponse <B_CallInfo> UpdateCall(B_CallUpdateRequest callRequest) { //var _call = ObjectConverter.Copy<B_CallInfo, B_CallModel>(callRequest.CallInfo); //_Repository.UpdateCall(_call); //var callresponse = new BasicResponse<B_CallInfo>(); //callresponse.Data = ObjectConverter.Copy<B_CallModel, B_CallInfo>(_call); //return callresponse; var callresponse = new BasicResponse <B_CallInfo>(); //判断缓存中是否存在 B_CallInfo oldB_CallInfo = null; BCallCacheGetByKeyRequest BCallCacheRequest = new BCallCacheGetByKeyRequest(); BCallCacheRequest.Id = callRequest.CallInfo.Id; oldB_CallInfo = _BCallCacheService.GetByKeyBCallCache(BCallCacheRequest).Data; if (oldB_CallInfo == null) { //缓存中存在此测点 callresponse.Code = 1; callresponse.Message = "当前更新的呼叫控制记录不存在!"; return(callresponse); } var _call = ObjectConverter.Copy <B_CallInfo, B_CallModel>(callRequest.CallInfo); _Repository.UpdateCall(_call); //更新缓存 BCallCacheUpdateRequest BCallCacheUpdateRequest = new BCallCacheUpdateRequest(); BCallCacheUpdateRequest.BCallInfo = callRequest.CallInfo; _BCallCacheService.UpdateBCallCache(BCallCacheUpdateRequest); callresponse.Data = ObjectConverter.Copy <B_CallModel, B_CallInfo>(_call); return(callresponse); }
/// <summary> /// 多系统融合应急联动输出 /// </summary> /// <param name="responsesysEmergencyLinkInfos"></param> private void SysEmergencyLinkHandle(JC_LargedataAnalysisConfigInfo analysisConfigInfo, SysEmergencyLinkageInfo responsesysEmergencyLinkInfo) { try { //如果模型成立则1.添加控制 2.更新配置缓存 3.写运行记录 if (analysisConfigInfo.AnalysisResult == 2) { //如果不是强制结束则立即执行,如果是强制结束则在大于延迟时间时执行 var isforceend = responsesysEmergencyLinkInfo.IsForceEnd; TimeSpan span = DateTime.Now - responsesysEmergencyLinkInfo.EndTime; if (!isforceend || (isforceend && span.TotalSeconds > responsesysEmergencyLinkInfo.DelayTime)) { #region 1.更新控制缓存 string bpointlist = string.Empty; string rpointlist = string.Empty; string rpersonlist = string.Empty; //如果应急联动配置存在被控区域,则获取此区域的人员设备和广播设备 if (responsesysEmergencyLinkInfo.PassiveAreas != null && responsesysEmergencyLinkInfo.PassiveAreas.Count > 0) { responsesysEmergencyLinkInfo.PassiveAreas.ForEach(area => { //处理区域广播呼叫 var bdefinfos = b_defCacheService.GetPointDefineCacheByAreaID(new PointDefineGetByAreaIDRequest { AreaId = area.AreaId }).Data; bdefinfos.ForEach(b => { bpointlist += b.PointID + ","; }); //处理区域人员呼叫 var rdefinfos = rdefCacheService.GetPointDefineCacheByAreaID(new PointDefineGetByAreaIDRequest { AreaId = area.AreaId }).Data; rdefinfos.ForEach(r => { rpointlist += r.Point + ","; }); }); } //如果应急联动配置存在被控人员,则获取被控人员列表 if (responsesysEmergencyLinkInfo.PassivePersons != null && responsesysEmergencyLinkInfo.PassivePersons.Count > 0) { responsesysEmergencyLinkInfo.PassivePersons.ForEach(p => { RPersoninfCacheGetByKeyRequest persongetrequest = new RPersoninfCacheGetByKeyRequest(); var person = personService.GetPersoninfCache(new R_PersoninfGetRequest() { Id = p.PersonId }).Data; if (person != null) { rpersonlist += person.Bh + ","; } }); } //如果应急联动配置存在被控设备,则根据类型获取被控测点 if (responsesysEmergencyLinkInfo.PassivePoints != null && responsesysEmergencyLinkInfo.PassivePoints.Count > 0) { responsesysEmergencyLinkInfo.PassivePoints.ForEach(p => { //人员定位 if (p.Sysid == (int)SystemEnum.Personnel) { var rdef = rdefCacheService.GetPointDefineCacheByPointID(new PointDefineGetByPointIDRequest { PointID = p.PointId }).Data; if (rdef != null && !string.IsNullOrEmpty(rdef.PointID)) { rpointlist += rdef.Point + "|"; } } //广播 else if (p.Sysid == (int)SystemEnum.Broadcast) { var bdef = b_defCacheService.GetPointDefineCacheByPointID(new PointDefineGetByPointIDRequest { PointID = p.PointId }).Data; if (bdef != null && !string.IsNullOrEmpty(bdef.PointID)) { bpointlist += bdef.PointID + "|"; } } }); } //添加广播呼叫 if (bpointlist.Length > 0) { BCallInfoGetByMasterIDRequest b_defExistsRequest = new BCallInfoGetByMasterIDRequest(); b_defExistsRequest.MasterId = analysisConfigInfo.Id; b_defExistsRequest.CallType = 1; var bcallinfo = bCallService.GetBCallInfoByMasterID(b_defExistsRequest).Data.FirstOrDefault(); if (bcallinfo == null) { bpointlist = bpointlist.Substring(0, bpointlist.Length - 1); var bpointarr = bpointlist.Split('|'); B_CallInfo bcalladdinfo = new B_CallInfo(); string callid = IdHelper.CreateLongId().ToString(); bcalladdinfo.Id = callid; bcalladdinfo.CallType = 1; bcalladdinfo.CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); bcalladdinfo.MasterId = analysisConfigInfo.Id; bcalladdinfo.Message = analysisConfigInfo.TrueDescription; //bcalladdinfo.PointList = bpointlist; List <B_CallpointlistInfo> callpointdetails = new List <B_CallpointlistInfo>(); Array.ForEach(bpointarr, point => { B_CallpointlistInfo callpointdetail = new B_CallpointlistInfo(); callpointdetail.Id = IdHelper.CreateLongId().ToString(); callpointdetail.BCallId = callid; callpointdetail.CalledPointId = point; callpointdetails.Add(callpointdetail); }); bcalladdinfo.CallPointList = callpointdetails; bCallService.AddCall(new B_CallAddRequest { CallInfo = bcalladdinfo }); } } //添加人员定位设备呼叫 if (rpointlist.Length > 0) { RCallInfoGetByMasterIDRequest rcallgetRequest = new RCallInfoGetByMasterIDRequest(); rcallgetRequest.MasterId = analysisConfigInfo.Id; rcallgetRequest.CallType = 1; rcallgetRequest.IsQueryByType = true; rcallgetRequest.Type = 1; var rcallinfo = rCallService.GetRCallInfoByMasterID(rcallgetRequest).Data.FirstOrDefault(); if (rcallinfo == null) { rpointlist = rpointlist.Substring(0, rpointlist.Length - 1); R_CallInfo rcalladdinfo = new R_CallInfo(); rcalladdinfo.Id = IdHelper.CreateLongId().ToString(); rcalladdinfo.Type = 1; rcalladdinfo.CallType = 1; rcalladdinfo.CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); rcalladdinfo.MasterId = analysisConfigInfo.Id; rcalladdinfo.CallPersonDefType = 4; rcalladdinfo.PointList = rpointlist; rCallService.AddCall(new R_CallAddRequest { CallInfo = rcalladdinfo }); } } //添加人员卡号呼叫 if (rpersonlist.Length > 0) { RCallInfoGetByMasterIDRequest rcallgetRequest = new RCallInfoGetByMasterIDRequest(); rcallgetRequest.MasterId = analysisConfigInfo.Id; rcallgetRequest.CallType = 1; rcallgetRequest.IsQueryByType = true; rcallgetRequest.Type = 0; var rcallinfo = rCallService.GetRCallInfoByMasterID(rcallgetRequest).Data.FirstOrDefault(); if (rcallinfo == null) { rpersonlist = rpersonlist.Substring(0, rpersonlist.Length - 1); R_CallInfo rcalladdinfo = new R_CallInfo(); rcalladdinfo.Id = IdHelper.CreateLongId().ToString(); rcalladdinfo.Type = 0; rcalladdinfo.CallType = 1; rcalladdinfo.CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); rcalladdinfo.MasterId = analysisConfigInfo.Id; rcalladdinfo.CallPersonDefType = 2; rcalladdinfo.BhContent = rpersonlist; rCallService.AddCall(new R_CallAddRequest { CallInfo = rcalladdinfo }); } } #endregion } if (responsesysEmergencyLinkInfo.EmergencyLinkageState != 1) { //2.更新配置缓存 responsesysEmergencyLinkInfo.EmergencyLinkageState = 1; sysEmergencyLinkageService.UpdateSysEmergencyLinkage(new SysEmergencyLinkageUpdateRequest { SysEmergencyLinkageInfo = responsesysEmergencyLinkInfo }); //3.写运行记录 EmergencyLinkHistoryAddRequest ehistoryaddrequest = new EmergencyLinkHistoryAddRequest(); EmergencyLinkHistoryInfo ehistory = new EmergencyLinkHistoryInfo(); ehistory.Id = IdHelper.CreateLongId().ToString(); ehistory.IsForceEnd = 0; ehistory.SysEmergencyLinkageId = responsesysEmergencyLinkInfo.Id; ehistory.StartTime = DateTime.Now; ehistory.EndTime = new DateTime(1900, 1, 1, 0, 0, 0); ehistoryaddrequest.EmergencyLinkHistoryInfo = ehistory; emergencyLinkHistoryService.AddEmergencyLinkHistory(ehistoryaddrequest); } } //如果模型不成立则1.解除控制 2.更新配置缓存 3.更新运行记录 else { //解除广播控制 BCallInfoGetByMasterIDRequest b_defExistsRequest = new BCallInfoGetByMasterIDRequest(); b_defExistsRequest.MasterId = analysisConfigInfo.Id; b_defExistsRequest.CallType = 1; var bcallinfo = bCallService.GetBCallInfoByMasterID(b_defExistsRequest).Data.FirstOrDefault(); if (bcallinfo != null && bcallinfo.CallType != 2) { bcallinfo.CallType = 2; bCallService.UpdateCall(new B_CallUpdateRequest { CallInfo = bcallinfo }); } //解除人员定位控制 RCallInfoGetByMasterIDRequest rcallgetRequest = new RCallInfoGetByMasterIDRequest(); rcallgetRequest.MasterId = analysisConfigInfo.Id; rcallgetRequest.CallType = 1; rcallgetRequest.IsQueryByType = false; rcallgetRequest.Type = 0; var rcallinfo = rCallService.GetRCallInfoByMasterID(rcallgetRequest).Data; if (rcallinfo.Count > 0) { rcallinfo.ForEach(o => { if (o.CallType != 2) { o.CallType = 2; rCallService.UpdateCall(new R_CallUpdateRequest { CallInfo = o }); } }); } if (responsesysEmergencyLinkInfo.EmergencyLinkageState != 0) { //2.更新配置缓存 responsesysEmergencyLinkInfo.EmergencyLinkageState = 0; sysEmergencyLinkageService.UpdateSysEmergencyLinkage(new SysEmergencyLinkageUpdateRequest { SysEmergencyLinkageInfo = responsesysEmergencyLinkInfo }); } //3.更新运行记录 var emergencyLinkHistory = emergencyLinkHistoryService.GetEmergencyLinkHistoryByEmergency(new EmergencyLinkHistoryGetByEmergencyRequest { EmergencyId = responsesysEmergencyLinkInfo.Id }).Data; if (emergencyLinkHistory != null && !string.IsNullOrEmpty(emergencyLinkHistory.Id) && emergencyLinkHistory.EndTime.Year == 1900) { emergencyLinkHistory.EndTime = DateTime.Now; emergencyLinkHistoryService.UpdateEmergencyLinkHistory(new EmergencyLinkHistoryUpdateRequest { EmergencyLinkHistoryInfo = emergencyLinkHistory }); } } } catch (Exception ex) { LogHelper.Info(" 多系统融合应急联动输出出错!" + ex.Message); } }
/// <summary>新增历史记录和call,更新实时状态 /// /// </summary> private static void AddLinkageHisAndCall(SysEmergencyLinkageInfo item, List <Jc_BInfo> satisfyJcb, DateTime nowTime, bool ifUpdateRealTimeValue) { var allPosition = PositionService.GetAllPositionCache().Data; //新增联动历史记录 var emergencyLinkHistoryInfo = new EmergencyLinkHistoryInfo() { SysEmergencyLinkageId = item.Id, StartTime = nowTime, EndTime = new DateTime(1900, 1, 1), IsForceEnd = 0, EndPerson = "0" }; var emergencyLinkageHistoryMasterPointAssList = new List <EmergencyLinkageHistoryMasterPointAssInfo>(); foreach (var item2 in satisfyJcb) { var newItem = new EmergencyLinkageHistoryMasterPointAssInfo { PointId = item2.PointID, DataState = item2.Type }; emergencyLinkageHistoryMasterPointAssList.Add(newItem); } var req = new AddEmergencyLinkHistoryAndAssRequest { EmergencyLinkHistoryInfo = emergencyLinkHistoryInfo, LinkageHistoryMasterPointAssInfoList = emergencyLinkageHistoryMasterPointAssList }; EmergencyLinkHistoryService.AddEmergencyLinkHistoryAndAss(req); //新增人员rcall if (item.PassivePersonAssId != "0") { var req2 = new LongIdRequest() { Id = Convert.ToInt64(item.PassivePersonAssId) }; var res2 = SysEmergencyLinkageService.GetPassivePersonByAssId(req2); var passivePerson = res2.Data; StringBuilder sbPersonCard = new StringBuilder(); foreach (var item2 in passivePerson) { sbPersonCard.Append(item2.Bh + ","); } if (sbPersonCard.Length > 0) { sbPersonCard.Remove(sbPersonCard.Length - 1, 1); } var newRcall = new R_CallInfo() { Id = IdHelper.CreateLongId().ToString(), MasterId = item.Id, Type = 0, CallType = 1, CallPersonDefType = 2, BhContent = sbPersonCard.ToString(), CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) }; var req5 = new R_CallAddRequest() { CallInfo = newRcall }; RcallService.AddCall(req5); } //被控区域测点及所选测点获取 List <IdTextCheck> lisAllAssDef = new List <IdTextCheck>(); //所有关联被控测点 if (item.PassiveAreaAssId != "0") { var req6 = new LongIdRequest { Id = Convert.ToInt64(item.PassiveAreaAssId) }; var res6 = SysEmergencyLinkageService.GetPassiveAreaInfoByAssId(req6); var allPassiveArea = res6.Data; var allPassiveAreaId = new List <string>(); foreach (var item2 in allPassiveArea) { allPassiveAreaId.Add(item2.Areaid); } var res7 = SysEmergencyLinkageService.GetAllPassivePointInfo(); var allPassivePoint = res7.Data; var passiveAreaPoint = allPassivePoint.Where(a => allPassiveAreaId.Contains(a.AreaId)).ToList(); lisAllAssDef.AddRange(passiveAreaPoint); } if (item.PassivePointAssId != "0") { var req6 = new LongIdRequest() { Id = Convert.ToInt64(item.PassivePointAssId) }; var res6 = SysEmergencyLinkageService.GetPassivePointInfoByAssId(req6); lisAllAssDef.AddRange(res6.Data); } //插入测点rcall var handlePersonPoint = lisAllAssDef.Where(a => a.SysId == "11").ToList(); if (handlePersonPoint.Count > 0) { var handlePersonPointStr = new StringBuilder(); //人员定位系统关联的被控测点字符串 foreach (var item2 in handlePersonPoint) { handlePersonPointStr.Append(item2.Point + ","); } handlePersonPointStr.Remove(handlePersonPointStr.Length - 1, 1); var rcall = new R_CallInfo() { Id = IdHelper.CreateLongId().ToString(), MasterId = item.Id, Type = 1, CallType = 1, CallPersonDefType = 4, PointList = handlePersonPointStr.ToString(), CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) }; var req8 = new R_CallAddRequest() { CallInfo = rcall }; RcallService.AddCall(req8); } //插入bcall var handleBroadcastPoint = lisAllAssDef.Where(a => a.SysId == "12").ToList(); if (handleBroadcastPoint.Count > 0) { //var handleBroadcastPointStr = new StringBuilder(); //广播系统关联的被控测点字符串 //foreach (var item2 in handleBroadcastPoint) //{ // handleBroadcastPointStr.Append(item2.Point + ","); //} //handleBroadcastPointStr.Remove(handleBroadcastPointStr.Length - 1, 1); var bcallId = IdHelper.CreateLongId().ToString(); var handleBroadcastPointList = new List <B_CallpointlistInfo>(); foreach (var item2 in handleBroadcastPoint) { var newItem = new B_CallpointlistInfo() { Id = IdHelper.CreateLongId().ToString(), BCallId = bcallId, CalledPointId = item2.Id }; handleBroadcastPointList.Add(newItem); } var broadcastDetail = new StringBuilder(); //广播内容 broadcastDetail.Append(item.Name + ","); foreach (var item2 in satisfyJcb) { var wzInfo = allPosition.FirstOrDefault(a => a.WzID == item2.Wzid); var wzName = ""; if (wzInfo != null) { wzName = wzInfo.Wz; } broadcastDetail.Append(wzName + "," + EnumHelper.GetEnumDescription((DeviceDataState)item2.Type) + ","); } broadcastDetail.Remove(broadcastDetail.Length - 1, 1); var bcall = new B_CallInfo() { Id = bcallId, MasterId = item.Id, CallType = 1, //PointList = handleBroadcastPointStr.ToString(),//注释,调整了表结构,此处需要修改 20171227 CallPointList = handleBroadcastPointList, Message = broadcastDetail.ToString(), CallTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) }; var req9 = new B_CallAddRequest() { CallInfo = bcall }; BcallService.AddCall(req9); } //更新实时状态 if (ifUpdateRealTimeValue) { var req17 = new UpdateRealTimeStateRequest { LinkageId = item.Id, State = "1" }; SysEmergencyLinkageService.UpdateRealTimeState(req17); } }