예제 #1
0
        /// <summary>
        /// 人员定位实时值刷新
        /// </summary>
        /// <param name="pointsdt"></param>
        /// <param name="rowindex"></param>
        /// <param name="pointsszdt"></param>
        /// <param name="rdefinfos"></param>
        /// <param name="rcallinfos"></param>
        /// <param name="prealinfos"></param>
        /// <param name="masterid"></param>
        /// <param name="callstate"></param>
        /// <returns></returns>
        private string PersonnelHandle(DataTable pointsdt, int rowindex, DataTable pointsszdt, List <Jc_DefInfo> rdefinfos, List <R_CallInfo> rcallinfos, List <R_PrealInfo> prealinfos, string masterid, ref string callstate)
        {
            string pointssz = string.Empty;

            try
            {
                string    tempdatatext = "", tempstatetext = "";
                DataRow[] drdata, drstate;

                var rdef = rdefinfos.FirstOrDefault(o => o.Point == pointsdt.Rows[rowindex]["Point"].ToString());
                if (rdef != null)
                {
                    //实时值
                    pointssz += rdef.Ssz + ",";
                    //设备状态
                    pointssz += rdef.State.ToString() + ",";
                    var defprealinfos = prealinfos.Where(o => o.Pointid == rdef.PointID).ToList();

                    bool isalarm = false;

                    bool isupcall   = false;
                    bool isdowncall = false;
                    var  phjinfos   = r_PhjService.GetPhjAlarmedList().Data;

                    //如果此识别器没有人员实时信息
                    if (defprealinfos.Count == 0)
                    {
                        //数据状态
                        //pointssz += rdef.DataState.ToString() + ",";

                        List <R_CallInfo> defcalls = new List <R_CallInfo>();

                        //如果是应急联动刷新,则取应急联动生成的RCall记录;否则取全部的RCall记录
                        if (string.IsNullOrEmpty(SysEmergencyLinkageInfoId))
                        {
                            defcalls = rcallinfos.Where(o => !string.IsNullOrEmpty(o.PointList) && o.PointList.Contains(rdef.Point)).ToList();
                        }
                        else
                        {
                            defcalls = rcallinfos.Where(o => !string.IsNullOrEmpty(o.PointList) && o.PointList.Contains(rdef.Point) && o.MasterId == masterid).ToList();
                        }

                        if (defcalls != null && defcalls.Count > 0)
                        {
                            isupcall = true;
                        }
                    }
                    //如果此识别器有人员实时信息,则根据人员信息判断识别器状态
                    else
                    {
                        //bool isalarm = false;

                        //bool isupcall = false;
                        //bool isdowncall = false;
                        //var phjinfos = r_PhjService.GetPhjAlarmedList().Data;

                        //判断是否存在呼叫
                        foreach (var preal in defprealinfos)
                        {
                            List <R_CallInfo> personcalls = new List <R_CallInfo>();
                            //如果是应急联动刷新,则取应急联动生成的RCall记录;否则取全部的RCall记录
                            if (string.IsNullOrEmpty(SysEmergencyLinkageInfoId))
                            {
                                personcalls = rcallinfos.Where(o => !string.IsNullOrEmpty(o.BhContent) && o.BhContent.Contains(preal.Bh)).ToList();
                            }
                            else
                            {
                                personcalls = rcallinfos.Where(o => !string.IsNullOrEmpty(o.BhContent) && o.BhContent.Contains(preal.Bh) && o.MasterId == masterid).ToList();
                            }
                            if (personcalls.Count > 0)
                            {
                                isupcall  = true;
                                callstate = "1";
                            }

                            if (phjinfos.Contains(preal.Bh))
                            {
                                isdowncall = true;
                            }

                            if (preal.Bjtype > 0)
                            {
                                //报警
                                isalarm = true;
                            }
                        }
                    }

                    //井上呼叫
                    if (isupcall && !isdowncall)
                    {
                        callstate = "1";
                    }
                    //井下呼叫
                    else if (!isupcall && isdowncall)
                    {
                        callstate = "2";
                    }
                    //井上和井下呼叫
                    else if (isupcall && isdowncall)
                    {
                        callstate = "3";
                    }
                    else
                    {
                        callstate = "0";
                    }


                    //识别器报警状态根据人员标识卡状态判断
                    pointssz += isalarm ? "47," : rdef.DataState.ToString() + ",";
                    //}

                    //报警状态
                    pointssz += "0,";
                    //数据状态描述
                    drdata = dtStateVal.Select("lngEnumValue='" + rdef.DataState.ToString() + "'");
                    if (drdata.Length > 0)
                    {
                        tempdatatext = drdata[0]["strEnumDisplay"].ToString();
                    }
                    else
                    {
                        tempdatatext = "未知";
                    }
                    pointssz += tempdatatext + ",";
                    //设备状态描述
                    drstate = dtStateVal.Select("lngEnumValue='" + rdef.DataState.ToString() + "'");
                    if (drstate.Length > 0)
                    {
                        tempstatetext = drstate[0]["strEnumDisplay"].ToString();
                    }
                    else
                    {
                        tempstatetext = "未知";
                    }
                }
                else
                {
                    pointssz += "无数据,0,46,0,未知,未知";
                }

                return(pointssz);
            }
            catch (Exception ex)
            {
                LogHelper.Info("加载人员设备出错!" + ex.Message);
                pointssz += "无数据,0,46,0,未知,未知";
                return(pointssz);
            }
        }
예제 #2
0
 public Basic.Framework.Web.BasicResponse <List <string> > GetPhjAlarmedList()
 {
     return(_R_PhjService.GetPhjAlarmedList());
 }