/// <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); } }
public Basic.Framework.Web.BasicResponse <List <string> > GetPhjAlarmedList() { return(_R_PhjService.GetPhjAlarmedList()); }