Beispiel #1
0
        private void GetGridControlDataSource()
        {
            _sysEmergencyLinkageInfo = sysEmergencyLinkageService.GetSysEmergencyLinkageById(new Sys.Safety.Request.SysEmergencyLinkage.SysEmergencyLinkageGetRequest {
                Id = _emergencyLinkageId
            }).Data;

            //普通联动获取监控主控测点
            if (_sysEmergencyLinkageInfo != null && _sysEmergencyLinkageInfo.Type == 1)
            {
                realInfos = sysEmergencyLinkageService.GetAllMasterPointsById(new Sys.Safety.Request.SysEmergencyLinkage.SysEmergencyLinkageGetRequest {
                    Id = _emergencyLinkageId
                }).Data.Select(o => new DefInfoExtend
                {
                    Point     = o.Point,
                    Wz        = o.Wz,
                    DevName   = o.DevName,
                    Ssz       = o.Ssz,
                    DataState = EnumHelper.GetEnumDescription((DeviceDataState)o.DataState),
                    State     = EnumHelper.GetEnumDescription((DeviceRunState)o.State),
                }).ToList();
            }
            //大数据分析联动获取分析模型
            else if (_sysEmergencyLinkageInfo != null && _sysEmergencyLinkageInfo.Type == 2)
            {
                var analysisConfigs = largedataAnalysisConfigCacheService.GetAllLargeDataAnalysisConfigCache(new Sys.Safety.Request.LargeDataAnalysisCacheClientGetAllRequest()).Data;
                if (analysisConfigs != null && analysisConfigs.Count > 0)
                {
                    analysisConfig = analysisConfigs.Where(o => o.Id == _sysEmergencyLinkageInfo.MasterModelId).Select(o => new AnalysisConfigExtend
                    {
                        Name   = o.Name,
                        Result = o.AnalysisResult == 2 ? o.TrueDescription : o.FalseDescription
                    }).ToList();
                }
            }
        }
        public override void Load()
        {
            var response = largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(new LargeDataAnalysisCacheClientGetAllRequest());

            if (response.IsSuccess && response.Data != null)
            {
                _cache.Clear();
                _cache = response.Data;
            }
        }
Beispiel #3
0
        private void RefreshData()
        {
            while (!StaticClass.SystemOut)
            {
                try
                {
                    Basic.Framework.Web.BasicResponse <List <JC_LargedataAnalysisConfigInfo> > response = largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(new Sys.Safety.Request.LargeDataAnalysisCacheClientGetAllRequest());
                    if (response.Data != null)
                    {
                        //var dataSource = from q in response.Data.AsQueryable()
                        //                 select new
                        //                 {
                        //                     Name = q.Name,
                        //                     AnalysisTime = q.AnalysisTime.HasValue ? q.AnalysisTime.Value.ToString("yyyy/MM/dd HH:mm:ss") : string.Empty,
                        //                     AnalysisResultText = q.AnalysisResultText,
                        //                     ExpressionRealTimeResultList = (
                        //                     from rt in q.ExpressionRealTimeResultList
                        //                     select new { AnalysisModelName = rt.AnalysisModelName,
                        //                         ExpressionText = rt.ExpressionText,
                        //                         FirstSuccessfulTime = rt.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : rt.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss"),
                        //                         LastAnalysisTime = rt.LastAnalysisTime == DateTime.MinValue ? string.Empty : rt.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss"),
                        //                         AnalysisResultText = rt.AnalysisResultText,
                        //                         ActualContinueTime = string.Format("{0}:{1}:{2}", (rt.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                        //                         (rt.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (rt.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0')) }).ToList()
                        //                 };

                        //gridList.Clear();
                        foreach (var item in response.Data)
                        {
                            bool isHaveModel = false;
                            foreach (var itemGrid in gridList)
                            {     //old列表
                                if (itemGrid.Id == item.Id)
                                { //分析模型已存在
                                    isHaveModel                 = true;
                                    itemGrid.AnalysisTime       = item.AnalysisTime;
                                    itemGrid.AnalysisResultText = item.AnalysisResultText;
                                    itemGrid.Name               = item.Name;

                                    #region 分析列表
                                    if (item.ExpressionRealTimeResultList != null)
                                    {         //old列表
                                        if (itemGrid.ExpressionRealTimeResultList != null && itemGrid.ExpressionRealTimeResultList.Count > 0)
                                        {     //追加
                                            foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                            { //新分析数据
                                                bool isAdd = true;
                                                foreach (var itemResult in itemGrid.ExpressionRealTimeResultList)
                                                {//old列表
                                                    if (itemResult.ExpressionId == itemExpression.ExpressionId)
                                                    {
                                                        isAdd = false;
                                                        itemResult.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                        itemResult.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                        itemResult.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                        itemResult.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                          (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                        break;
                                                    }
                                                }

                                                if (isAdd)
                                                {
                                                    ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                                    modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                                    modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                                    modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                    modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                    modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                    modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                     (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                    itemGrid.ExpressionRealTimeResultList.Add(modelInfo);
                                                }
                                            }
                                        }
                                        else
                                        {//新增
                                            List <ExpressionRealTimeResultInfo> expressionRealTimeResultList = new List <ExpressionRealTimeResultInfo>();

                                            foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                            {
                                                ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                                modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                                modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                                modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                                modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                                modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                                 (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                                expressionRealTimeResultList.Add(modelInfo);
                                            }
                                            itemGrid.ExpressionRealTimeResultList = expressionRealTimeResultList;
                                        }
                                    }

                                    #endregion
                                }
                            }

                            if (isHaveModel == false)
                            {
                                JC_LargedataAnalysisConfigInfo model = new JC_LargedataAnalysisConfigInfo();
                                model.Id                 = item.Id;
                                model.Name               = item.Name;
                                model.AnalysisTime       = item.AnalysisTime;
                                model.AnalysisResultText = item.AnalysisResultText;

                                List <ExpressionRealTimeResultInfo> expressionRealTimeResultList = new List <ExpressionRealTimeResultInfo>();
                                if (item.ExpressionRealTimeResultList != null)
                                {
                                    foreach (var itemExpression in item.ExpressionRealTimeResultList)
                                    {
                                        ExpressionRealTimeResultInfo modelInfo = new ExpressionRealTimeResultInfo();
                                        modelInfo.ExpressionText          = itemExpression.ExpressionText;
                                        modelInfo.ExpressionId            = itemExpression.ExpressionId;
                                        modelInfo.ShowFirstSuccessfulTime = itemExpression.FirstSuccessfulTime == DateTime.MinValue ? string.Empty : itemExpression.FirstSuccessfulTime.ToString("yyyy/MM/dd HH:mm:ss");
                                        modelInfo.ShowLastAnalysisTime    = itemExpression.LastAnalysisTime == DateTime.MinValue ? string.Empty : itemExpression.LastAnalysisTime.ToString("yyyy/MM/dd HH:mm:ss");
                                        modelInfo.AnalysisResultText      = itemExpression.AnalysisResultText;

                                        modelInfo.ShowActualContinueTime = string.Format("{0}:{1}:{2}", (itemExpression.ActualContinueTime / 3600).ToString().PadLeft(2, '0'),
                                                                                         (itemExpression.ActualContinueTime % 3600 / 60).ToString().PadLeft(2, '0'), (itemExpression.ActualContinueTime % 3600 % 60).ToString().PadLeft(2, '0'));

                                        expressionRealTimeResultList.Add(modelInfo);
                                    }
                                }
                                model.ExpressionRealTimeResultList = expressionRealTimeResultList;
                                gridList.Add(model);
                            }
                        }
                        MethodInvoker In = new MethodInvoker(() =>
                        {
                            if (gridList != null)
                            {
                                int topRowIndex = gridView1.TopRowIndex;
                                gridView1.RefreshData();
                                for (int i = 0; i < gridView1.RowCount; i++)
                                {
                                    //默认展开所有子项
                                    //gridView1.ExpandMasterRow(i);
                                    DevExpress.XtraGrid.Views.Base.BaseView childView = gridView1.GetVisibleDetailView(i);
                                    if (childView != null)
                                    {
                                        childView.RefreshData();
                                    }
                                }
                                gridView1.TopRowIndex = topRowIndex;
                            }
                        });
                        if (gridControlData.InvokeRequired)
                        {
                            gridControlData.Invoke(In);
                        }
                    }
                }
                catch (Exception ex)
                {
                    LogHelper.Error(ex.Message);
                }
                Thread.Sleep(4000);
            }
        }
Beispiel #4
0
        /// <summary>
        /// 获取所有测点的实时值
        /// </summary>
        /// <returns>返回格式:测点号,实时值,设备状态,数据状态值,是否报警(1:报警,0:不报警),数据状态文本,设备状态文本,人员定位设备是否呼叫(1:井上呼叫,2,井下呼叫,3,井上和惊吓呼叫,0:不呼叫)</returns>
        private void setAllPointSsz()
        {
            _rwLocker.AcquireWriterLock(-1);
            try
            {
                PointSsz.Clear();
                string pointssz = string.Empty;

                //修改为从实时缓存中读取数据
                DataTable pointsdt = PointInMap;

                var       pointResponse = graphicsbaseinfService.GetDefPointInformationInCache();
                DataTable pointsszdt    = ObjectConverter.ToDataTable <Jc_DefInfo>(pointResponse.Data);

                var       masResponse = graphicsbaseinfService.GetSwitchInformationInCache();
                DataTable dt_ip       = ObjectConverter.ToDataTable <Jc_MacInfo>(masResponse.Data);

                //应急联动配置
                var SysEmergencyLinkageInfos = sysEmergencyLinkageService.GetAllSysEmergencyLinkageList().Data;

                //大数据分析模型
                var largeDataAnalysisInfos = largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(new LargeDataAnalysisCacheClientGetAllRequest()).Data;

                //人员定位
                var prealinfos = prealSerive.GetAllPrealCacheList(new RPrealCacheGetAllRequest()).Data;
                var rdefinfos  = rdefService.GetAllPointDefineCache().Data;
                if (prealinfos == null)
                {
                    prealinfos = new List <R_PrealInfo>();
                }
                var rcallinfos = rcallService.GetAllRCallCache(new RCallCacheGetAllRequest()).Data;

                //视频
                var videoinfos = vdefService.GetAllVideoDefCache().Data;
                //广播
                var bdefinfos = _bdefService.GetAllPointDefineCache().Data;

                //当前应急联动配置
                var currSysEmergencyLinkageInfo = SysEmergencyLinkageInfos.FirstOrDefault(o => o.Id == SysEmergencyLinkageInfoId);
                //应急联动呼叫关联MasterId
                var masterid = "";
                if (currSysEmergencyLinkageInfo != null)
                {
                    masterid = currSysEmergencyLinkageInfo.Type == 2 ? currSysEmergencyLinkageInfo.MasterModelId : currSysEmergencyLinkageInfo.Id;
                }

                dt_ip.Columns.Add("ssz");
                dt_ip.Columns.Add("type");
                DataView dv = pointsszdt.DefaultView;
                dv.Sort    = "alarm Asc";
                pointsszdt = dv.ToTable();
                foreach (DataRow tmpdr in dt_ip.Rows)
                {
                    DataRow drtemp = pointsszdt.NewRow();
                    drtemp["state"]     = tmpdr["state"];
                    drtemp["datastate"] = tmpdr["state"];
                    drtemp["Point"]     = tmpdr["IP"];
                    drtemp["ID"]        = tmpdr["ID"];
                    DataRow[] drstateIP = dtStateVal.Select("lngEnumValue='" + tmpdr["state"].ToString() + "'");
                    if (drstateIP.Length > 0)
                    {
                        drtemp["ssz"]   = drstateIP[0]["strEnumDisplay"].ToString();
                        drtemp["alarm"] = "0";
                    }
                    else
                    {
                        drtemp["ssz"]   = "未知";
                        drtemp["alarm"] = "0";
                    }
                    pointsszdt.Rows.InsertAt(drtemp, 0);
                }

                for (int i = 0; i < pointsdt.Rows.Count; i++)
                {
                    pointssz = "";
                    string callstate = "0";
                    pointssz += pointsdt.Rows[i]["Point"].ToString() + ",";

                    int sysid = Convert.ToInt32(pointsdt.Rows[i]["SysId"].ToString());
                    switch (sysid)
                    {
                    case 0:
                    case (int)SystemEnum.Security:
                        pointssz += SecurityHandle(pointsdt, i, pointsszdt);
                        break;

                    case (int)SystemEnum.Broadcast:
                        pointssz += BroadCastHandle(pointsdt, i, bdefinfos);
                        break;

                    case (int)SystemEnum.Personnel:
                        pointssz += PersonnelHandle(pointsdt, i, pointsszdt, rdefinfos, rcallinfos, prealinfos, masterid, ref callstate);
                        break;

                    case (int)SystemEnum.Video:
                        pointssz += VideoHandle(pointsdt, i, videoinfos, currSysEmergencyLinkageInfo, SysEmergencyLinkageInfos);
                        break;

                    case -1:
                        pointssz += AnalysisConfigHandle(pointsdt, i, largeDataAnalysisInfos);
                        break;

                    default:
                        pointssz += "无数据,0,46,0,未知,未知";
                        break;
                    }

                    pointssz += "," + callstate;
                    PointSsz.Add(pointssz);
                }

                isConnLose = false;
            }
            catch (Exception ex)
            {
                LogHelper.Error("RefPointSsz-setAllPointSsz" + ex.Message + ex.StackTrace);
                isConnLose = true;
            }
            finally
            {
                _rwLocker.ReleaseWriterLock();
            }
        }
 public BasicResponse <List <JC_LargedataAnalysisConfigInfo> > GetAllLargeDataAnalysisConfigCache(LargeDataAnalysisCacheClientGetAllRequest getAllRequest)
 {
     return(largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(getAllRequest));
 }
Beispiel #6
0
        protected override void DoWork()
        {
            DateTime analysisModelServerSideTime = DateTime.MinValue;

            try
            {
                BasicResponse <string> analysisModelLastChangedTimeResponse = largeDataAnalysisLastChangedService.GetAnalysisModelLastChangedTime(new LargeDataAnalysisLastChangedRequest());
                if (analysisModelLastChangedTimeResponse.IsSuccess && !string.IsNullOrEmpty(analysisModelLastChangedTimeResponse.Data))
                {
                    analysisModelServerSideTime = DateTime.Parse(analysisModelLastChangedTimeResponse.Data);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(string.Format("检查服务端分析模型最后修改时间时出错:{0}", ex.StackTrace));
            }

            if (analysisModelServerSideTime > analysisModelLastChangedTime || analysisModelCache.Count == 0)
            {
                BasicResponse <List <JC_LargedataAnalysisConfigInfo> > analysisConfigInfoListResponse;
                try
                {
                    analysisConfigInfoListResponse = largeDataAnalysisCacheClientService.GetAllLargeDataAnalysisConfigCache(new LargeDataAnalysisCacheClientGetAllRequest());
                    if (analysisConfigInfoListResponse.IsSuccess && analysisConfigInfoListResponse.Data != null)
                    {
                        var newestAnalysisConfigInfoList = analysisConfigInfoListResponse.Data;
                        foreach (var item in newestAnalysisConfigInfoList)
                        {
                            JC_LargedataAnalysisConfigInfo existsAnalysisModel = analysisModelCache.Query(q => q.Id == item.Id, false).FirstOrDefault();
                            if (null == existsAnalysisModel)
                            {
                                //有新的分析模型加入
                                if (AnalysisModelChangedEvent != null)
                                {
                                    AnalysisModelChangedEvent(new AnalysisChangedEventArgs()
                                    {
                                        Action = "Add", AnalysisConfig = item
                                    });
                                }
                            }
                            else
                            {
                                if (item.UpdatedTime > existsAnalysisModel.UpdatedTime)
                                {
                                    //分析模型有更新。
                                    if (AnalysisModelChangedEvent != null)
                                    {
                                        AnalysisModelChangedEvent(new AnalysisChangedEventArgs()
                                        {
                                            Action = "Update", AnalysisConfig = item
                                        });
                                    }
                                }
                            }
                        }
                        var cachedItems = analysisModelCache.Query();
                        for (int i = cachedItems.Count - 1; i >= 0; i--)
                        {
                            if (!newestAnalysisConfigInfoList.Any(q => q.Id == cachedItems[i].Id))
                            {
                                //内部维护的分析模型在服务端已被删除
                                if (AnalysisModelChangedEvent != null)
                                {
                                    AnalysisModelChangedEvent(new AnalysisChangedEventArgs()
                                    {
                                        Action = "Delete", AnalysisConfig = cachedItems[i]
                                    });
                                }
                            }
                        }
                    }
                    analysisModelLastChangedTime = analysisModelServerSideTime;
                }
                catch (Exception ex)
                {
                    LogHelper.Error(string.Format("更新内部维护的分析模型时出错:{0}", ex.StackTrace));
                }
            }
            base.DoWork();
        }
Beispiel #7
0
        /// <summary>
        /// 获取应急联动实时主控和被控测点
        /// </summary>
        private string RefreshRealPoint()
        {
            try
            {
                string jsonStr = string.Empty;
                if (!string.IsNullOrEmpty(selectid))
                {
                    var selectSysEmergencyLinkageInfo = SysEmergencyLinkageInfos.FirstOrDefault(o => o.Id == selectid);

                    //获取选中应急联动配置的主控测点
                    SysEmergencyLinkageGetRequest getrequest = new SysEmergencyLinkageGetRequest();
                    getrequest.Id = selectid;
                    var masterpoints = sysEmergencyLinkageService.GetAllMasterPointsById(getrequest).Data;
                    //如果不存在主控测点,则获取关联大数据分析模型配置
                    if (masterpoints.Count > 0)
                    {
                        masterpoints.ForEach(o =>
                        {
                            jsonStr += o.Point + "|";
                        });
                    }
                    else if (!string.IsNullOrEmpty(selectSysEmergencyLinkageInfo.MasterModelId))
                    {
                        var analysisConfigs = largedataAnalysisConfigCacheService.GetAllLargeDataAnalysisConfigCache(new Sys.Safety.Request.LargeDataAnalysisCacheClientGetAllRequest()).Data;
                        if (analysisConfigs != null && analysisConfigs.Count > 0)
                        {
                            var analysisConfig = analysisConfigs.FirstOrDefault(o => o.Id == selectSysEmergencyLinkageInfo.MasterModelId);
                            if (analysisConfig != null)
                            {
                                jsonStr += analysisConfig.Name + "|";
                            }
                        }
                    }

                    //获取选中应急联动配置的被控测点
                    //如果应急联动配置存在被控区域,则获取此区域的人员设备和广播设备
                    if (selectSysEmergencyLinkageInfo.PassiveAreas.Count > 0)
                    {
                        selectSysEmergencyLinkageInfo.PassiveAreas.ForEach(area =>
                        {
                            //处理区域广播呼叫
                            var bdefinforesponse = bdefService.GetAllPointDefineCache();
                            if (bdefinforesponse.IsSuccess)
                            {
                                var areabdefinfos = bdefinforesponse.Data.Where(b => b.Areaid == area.AreaId).ToList();
                                areabdefinfos.ForEach(def => jsonStr += def.Point + "|");
                            }

                            //处理区域人员呼叫
                            var rdefinforesponse = rdefService.GetAllPointDefineCache();
                            if (rdefinforesponse.IsSuccess)
                            {
                                var areardefinfos = rdefinforesponse.Data.Where(b => b.Areaid == area.AreaId).ToList();
                                areardefinfos.ForEach(def => jsonStr += def.Point + "|");
                            }
                        });
                    }

                    //如果应急联动配置存在被控人员,则获取被控人员实时识别器列表
                    if (selectSysEmergencyLinkageInfo.PassivePersons.Count > 0)
                    {
                        var prealinfos = prealService.GetAllPrealCacheList(new RPrealCacheGetAllRequest()).Data;

                        if (prealinfos != null)
                        {
                            selectSysEmergencyLinkageInfo.PassivePersons.ForEach(p =>
                            {
                                var personreponse = personinfoService.GetAllDefinedPersonInfoCache(new BasicRequest());
                                if (personreponse.IsSuccess)
                                {
                                    var person = personinfoService.GetPersoninfCache(new R_PersoninfGetRequest()
                                    {
                                        Id = p.PersonId
                                    }).Data;
                                    var preal = prealinfos.FirstOrDefault(pr => pr.Bh == person.Bh);

                                    if (preal != null)
                                    {
                                        var persondef = rdefService.GetPointDefineCacheByPointID(new PointDefineGetByPointIDRequest {
                                            PointID = preal.Pointid
                                        }).Data;
                                        if (persondef != null && !jsonStr.Contains(persondef.Point))
                                        {
                                            jsonStr += persondef.Point + "|";
                                        }
                                    }
                                }
                            });
                        }
                    }

                    //如果应急联动配置存在被控设备,则根据类型获取被控测点
                    if (selectSysEmergencyLinkageInfo.PassivePoints.Count > 0)
                    {
                        selectSysEmergencyLinkageInfo.PassivePoints.ForEach(p =>
                        {
                            //人员定位
                            if (p.Sysid == (int)SystemEnum.Personnel)
                            {
                                var rdef = rdefService.GetPointDefineCacheByPointID(new PointDefineGetByPointIDRequest {
                                    PointID = p.PointId
                                }).Data;
                                if (rdef != null && !jsonStr.Contains(rdef.Point))
                                {
                                    jsonStr += rdef.Point + "|";
                                }
                            }
                            //广播
                            else if (p.Sysid == (int)SystemEnum.Broadcast)
                            {
                                var bdef = bdefService.GetPointDefineCacheByPointID(new PointDefineGetByPointIDRequest {
                                    PointID = p.PointId
                                }).Data;

                                var bdefpoints = jsonStr.Split('|');
                                if (bdef != null && !bdefpoints.Contains(bdef.Point))
                                {
                                    jsonStr += bdef.Point + "|";
                                }
                            }
                            //视频
                            else if (p.Sysid == (int)SystemEnum.Video)
                            {
                                var vdef = vdefService.GetDefById(new Sys.Safety.Request.Def.DefGetRequest {
                                    Id = p.PointId
                                }).Data;
                                if (vdef != null && !jsonStr.Contains(vdef.IPAddress))
                                {
                                    jsonStr += vdef.IPAddress + "|";
                                }
                            }
                        });
                    }

                    if (jsonStr.LastIndexOf('|') > 0)
                    {
                        jsonStr = jsonStr.Substring(0, jsonStr.Length - 1);
                    }
                }

                return(jsonStr);
            }
            catch (Exception ex)
            {
                LogHelper.Info("获取应急联动配置主控被控测点出错:" + ex.Message);
                return(string.Empty);
            }
        }