Exemple #1
0
        public static object GetHCUrl(int coordinatesId)
        {
            string url         = "";
            int    iChannel    = 0;
            string urlref      = "";
            int    iChannelref = 0;

            using (AppExtensionDataContext db = new AppExtensionDataContext())
            {
                CoordinatesCamera coordinate = db.CoordinatesCameras.SingleOrDefault(c => c.CoordinatesId == coordinatesId);
                if (coordinate != null)
                {
                    url         = coordinate.CameraIP;
                    iChannel    = coordinate.iChannel;
                    urlref      = coordinate.CameraIPlref;
                    iChannelref = coordinate.iChannelref;
                }
            }

            return(new
            {
                url,
                iChannel,
                urlref,
                iChannelref
            });
        }
 private void LoadRepeater()
 {
     using (AppExtensionDataContext db = new AppExtensionDataContext())
     {
         repeater.DataSource = db.InterrogationLogs.Where(t => t.PoliceId > 0)
                               .OrderByDescending(x => x.StartTime)
                               .Skip(p.RecordOffset).Take(p.PageSize)
                               .ToList();
         repeater.DataBind();
     }
 }
        public object GetCoordinatesAndTagInfo(int tagID)
        {
            if (!LocatingServiceUtil.IsAvailable())
            {
                return(null);
            }

            IServiceApi   serviceApi    = LocatingServiceUtil.Instance <IServiceApi>();
            TagStatusView tagStatusView = serviceApi.SelectTagStatus(tagID);

            int    coordinatesID       = 0;
            string hostName            = "";
            string coordinates         = "";
            string tagStatus           = "";
            bool   SystemHasVedio      = BusSystemConfig.GetVedioType() == 1;
            bool   CoordinatesHasVedio = false;
            string url         = "";
            int    iChannel    = 0;
            string urlref      = "";
            int    iChannelref = 0;


            if (tagStatusView != null)
            {
                hostName      = string.Format("<a href=\"{0}\">{1}</a>", Web.WebPath.GetFullPath("TagUsers/TagUser.aspx?id=" + tagStatusView.HostTag.HostId), tagStatusView.HostTag.HostName);
                coordinates   = tagStatusView.CoordinatesName;
                coordinatesID = tagStatusView.CoordinatesId;
                //tagStatus.Text = LocatingMonitorUtils.GetAllTagEventsDescription(tagStatusView);
                tagStatus = LocatingMonitorUtils.GetAllTagEventsDescription(tagStatusView, tagStatusView.HostTag.HostGroupId.Min(), 10, "Master/WebItem.Master");

                if (tagStatus.Length == 0)
                {
                    tagStatus = "正常";
                }


                if (SystemHasVedio)
                {
                    using (AppExtensionDataContext db = new AppExtensionDataContext())
                    {
                        CoordinatesCamera coordinate = db.CoordinatesCameras.SingleOrDefault(c => c.CoordinatesId == coordinatesID);
                        if (coordinate != null)
                        {
                            CoordinatesHasVedio = true;
                            url         = coordinate.CameraIP;
                            iChannel    = coordinate.iChannel;
                            urlref      = coordinate.CameraIPlref;
                            iChannelref = coordinate.iChannelref;
                        }
                    }
                }
                return(new
                {
                    //------位置、状态-----
                    hostName,
                    coordinates,
                    tagStatus,
                    coordinatesID,
                    //------是否有视频-----
                    SystemHasVedio,
                    CoordinatesHasVedio,
                    //------摄像头信息-----
                    url,
                    iChannel,
                    urlref,
                    iChannelref,
                    VedioType = NetRadio.Business.BusSystemConfig.GetVedioType()
                });
            }
            else
            {
                return(null);
            }
        }
        public string GetJobSize(string beginTime, string endTime)
        {
            #region 新算法
            string _res = "";
            try
            {
                DateTime _beginTime = DateTime.Parse(beginTime);
                DateTime _endTime   = DateTime.Parse(endTime);

                IList <InterrogationLog> interrogationLogs = new List <InterrogationLog>();
                IList <TagPositionLog>   positionReconds   = new List <TagPositionLog>();
                Dictionary <int, int>    policeJobAmount   = new Dictionary <int, int>();
                List <int> interrogationRooms = new List <int>();
                Dictionary <InterrogationLog, int> interrogationItems = new Dictionary <InterrogationLog, int>();
                using (AppExtensionDataContext dbExtension = new AppExtensionDataContext())
                {
                    interrogationLogs = dbExtension.InterrogationLogs.Where(t => t.StartTime > _beginTime && t.EndTime < _endTime).ToList();
                }

                using (AppDataContext db = new AppDataContext())
                {
                    interrogationRooms = db.LocationGroups.Where(t => t.GroupId == (int)PrisonCoordinatesGroup.InterrogateRoom).Select(t => t.LocationId).ToList();
                    policeJobAmount    = db.HostPositionStatusViews.ToList().Where(u => u.TagId > 0 && u.HostGroupId == (byte)TagUserType.Cop).ToDictionary(u => u.HostId, u => u.HostGroupId - 1);
                    positionReconds    = db.TagPositionLogs.Where(t => t.WriteTime > _beginTime && t.WriteTime < _endTime && interrogationRooms.Contains(t.CoordinatesId)).ToList();
                }

                foreach (var item in interrogationLogs)
                {
                    int interrogationRoomId = 0;

                    TagPositionLog culpritOutItem = positionReconds.Where(t => t.WriteTime > item.StartTime && t.HostId == item.CulpritId).OrderBy(t => t.WriteTime).FirstOrDefault();//culpritOutItem表示犯人从监区带出,而非从提审室外出
                    interrogationRoomId = culpritOutItem.CoordinatesId;

                    if (culpritOutItem != null && culpritOutItem.HostId > 0)
                    {
                        TagPositionLog outItem = positionReconds.Where(t => t.CoordinatesId == interrogationRoomId && t.WriteTime > item.StartTime).OrderBy(t => t.WriteTime).FirstOrDefault();
                        if (outItem != null && policeJobAmount.Keys.Contains(outItem.HostId.Value))
                        {
                            policeJobAmount[outItem.HostId.Value]++;
                        }

                        TagPositionLog inItem = positionReconds.Where(t => t.CoordinatesId == interrogationRoomId && t.WriteTime > item.EndTime).OrderBy(t => t.WriteTime).FirstOrDefault();

                        if (inItem != null && policeJobAmount.Keys.Contains(inItem.HostId.Value))
                        {
                            policeJobAmount[inItem.HostId.Value]++;
                        }
                    }
                    else
                    {
                        continue;
                    }
                }

                Dictionary <HostTag, int> JobAmountresult = new Dictionary <HostTag, int>();

                using (AppDataContext db = new AppDataContext())
                {
                    var query = from a in policeJobAmount
                                from b in db.HostTags
                                where a.Key == b.HostId
                                select new
                    {
                        b,
                        a.Value
                    };

                    JobAmountresult = query.OrderByDescending(t => t.Value).ToDictionary(t => t.b, t => t.Value);
                }

                StringBuilder sb = new StringBuilder("");
                sb.AppendFormat(@" 
                       <table style='width: 100%;' cellpadding=0 cellspacing=0 border=0 class='grid alternate fixed'>
                        <thead class=category>
                            <th style='text-align: center;'>
                                警员名称
                            </th>
                            <th style='text-align: center;'>
                                警员编号
                            </th>
                            <th style='text-align: center;'>
                                警员工作量
                            </th>
                        </thead>
                        ");

                if (JobAmountresult.Count > 0)
                {
                    foreach (var item in JobAmountresult)
                    {
                        sb.AppendFormat(@"                                
                                 <tr>
                                    <td style='text-align: center;'>
                                        {0}
                                    </td>
                                    <td style='border-left: solid 1px #e9e9e9;text-align: center;'>
                                        {1}
                                    </td>
                                    <td style='border-left: solid 1px #e9e9e9;text-align: center;'>
                                        {2}
                                    </td>
                                 </tr>
                                ", item.Key.HostName, item.Key.HostExternalId, item.Value);
                    }
                }
                else
                {
                    sb.AppendFormat(@"                                
                                 <tr>
                                    <td colspan=3>
                                       无数据!!!
                                    </td>
                                 </tr>"
                                    );
                }
                sb.AppendFormat(@"</table>");
                _res = sb.ToString();
            }
            catch (Exception e1)
            {
                _res = e1.Message;
            }
            return(_res);

            #endregion

            #region 原算法
//            string _res = "";
//            try
//            {
//                DateTime _beginTime = DateTime.Parse(beginTime);
//                DateTime _endTime = DateTime.Parse(endTime);
//                SqlParameter p1 = new SqlParameter("@BeginTime", _beginTime);
//                SqlParameter p2 = new SqlParameter("@EndTime", _endTime);
//                DataSet ds = Summer.Query.RunProcedure("GetPoliceJobSize", new SqlParameter[2] { p1, p2 }, "LocatingMonitor");
//                StringBuilder sb = new StringBuilder("");
//                sb.AppendFormat(@"
//                       <table style='width: 100%;' cellpadding=0 cellspacing=0 border=0 class='grid alternate fixed'>
//                        <thead class=category>
//                            <th style='text-align: center;'>
//                                警员名称
//                            </th>
//                            <th style='text-align: center;'>
//                                警员编号
//                            </th>
//                            <th style='text-align: center;'>
//                                警员工作量
//                            </th>
//                        </thead>
//                        ");
//                bool hasData = false;
//                if (ds != null && ds.Tables.Count == 1)
//                {
//                    foreach (DataRow log in ds.Tables[0].Rows)
//                    {
//                        sb.AppendFormat(@"
//                                 <tr>
//                                    <td style='text-align: center;'>
//                                        {0}
//                                    </td>
//                                    <td style='border-left: solid 1px #e9e9e9;text-align: center;'>
//                                        {1}
//                                    </td>
//                                    <td style='border-left: solid 1px #e9e9e9;text-align: center;'>
//                                        {2}
//                                    </td>
//                                 </tr>
//                                ", log["HostName"], log["HostExternalid"], log["JobSize"]);
//                        hasData = true;
//                    }
//                }
//                if (!hasData)
//                {
//                    sb.AppendFormat(@"
//                                 <tr>
//                                    <td colspan=3>
//                                       无数据!!!
//                                    </td>
//                                 </tr>"
//                               );
//                }

//                sb.AppendFormat(@"</table>");
//                _res = sb.ToString();
//            }
//            catch (Exception e1)
//            {
//                _res = e1.Message;
//            }
//            return _res;
            #endregion
        }
        public static bool SetCulpritstatus(string tagMac, bool isIll, bool isSerious, bool isArraignment)
        {
            if (LocatingServiceUtil.IsAvailable())
            {
                TagStatusView tagView = TagStatusView.SelectTagStatus(tagMac);

                if (isIll)
                {
                    tagView.HostTag.AddHostGroup(4);
                    Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "将犯人" + tagView.HostTag.HostName + "设置为病犯。");
                }
                else
                {
                    if (tagView.HostTag.HostGroupId.Contains(4))
                    {
                        tagView.HostTag.RemoveHostGroup(4);
                        Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "取消犯人" + tagView.HostTag.HostName + "的病犯设置。");
                    }
                }

                if (isSerious)
                {
                    tagView.HostTag.AddHostGroup(3);
                    Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "将犯人" + tagView.HostTag.HostName + "设置为重刑犯。");
                }
                else
                {
                    if (tagView.HostTag.HostGroupId.Contains(3))
                    {
                        tagView.HostTag.RemoveHostGroup(3);
                        Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "取消犯人" + tagView.HostTag.HostName + "的病犯设置。");
                    }
                }

                try
                {
                    if (isArraignment)
                    {
                        if (tagView.HostTag.HostStatusId == (int)HostTagStatusType.Normal)
                        {
                            tagView.HostTag.HostStatusId = (int)HostTagStatusType.Interrogation;
                            HostTag.SetHostStatus(tagView.HostTag.HostId, (int)HostTagStatusType.Interrogation);
                            using (AppExtensionDataContext dbExtension = new AppExtensionDataContext())
                            {
                                InterrogationLog interrogationLog = new InterrogationLog();
                                interrogationLog.PoliceId  = ContextUser.Current.Id;
                                interrogationLog.CulpritId = tagView.HostTag.HostId;
                                interrogationLog.StartTime = DateTime.Now;
                                dbExtension.InterrogationLogs.InsertOnSubmit(interrogationLog);
                                dbExtension.SubmitChanges();
                            }
                            Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "提审犯人" + tagView.HostTag.HostName + "。");
                        }
                    }
                    else
                    {
                        if (tagView.HostTag.HostStatusId == (int)HostTagStatusType.Interrogation)
                        {
                            tagView.HostTag.HostStatusId = (int)HostTagStatusType.Normal;
                            HostTag.SetHostStatus(tagView.HostTag.HostId, (int)HostTagStatusType.Normal);
                            using (AppExtensionDataContext dbExtension = new AppExtensionDataContext())
                            {
                                InterrogationLog interrogationLog = dbExtension.InterrogationLogs.SingleOrDefault(t => t.PoliceId == ContextUser.Current.Id && t.CulpritId == tagView.HostTag.HostId && t.EndTime == null);
                                if (interrogationLog != null)
                                {
                                    interrogationLog.EndTime = DateTime.Now;
                                    dbExtension.SubmitChanges();
                                }
                            }
                            Diary.Insert(ContextUser.Current.Id, tagView.TagId, tagView.HostTag.HostId, "犯人" + tagView.HostTag.HostName + "结束提审。");
                        }
                    }
                }
                catch (Exception exp)
                {
                    string err = exp.Source + ":" + exp.Message;
                }

                LocatingServiceUtil.Instance <IServiceApi>().ReloadTagHost(tagView.TagId);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            NetRadio.Data.User oUser = NetRadio.Data.User.SelectByUserName(me.Name);
            if (oUser.Role >= (int)UserRole.Admin)
            {
                isAdmin = true;
            }

            if (BusSystemConfig.IsAutoSelectStrongestRssiTag() == false)
            {
                tagSelector.Visible            = true;
                selectStrongestRssiTag.Visible = false;
                changeTag.Href = "javascript:tt();";
            }
            else
            {
                tagSelector.Visible            = false;
                selectStrongestRssiTag.Visible = true;
                changeTag.Href = "javascript:tt2();";
            }
            Ajax.AjaxManager.RegisterClass(typeof(__TagUser));
            AjaxUtil.RegisterClientScript(typeof(__TagUser), this.Page);

            if (!Page.IsPostBack)
            {
                LoadJailRoomList();
            }

            int    _tagId;
            string _tagMac = null;

            userId.Value = _id.ToString();
            using (AppDataContext db = new AppDataContext())
            {
                var culprit = db.HostTagGroupStatus.SingleOrDefault(u => u.HostGroupId == (int)TagUserType.Culprit && u.HostId == _id);
                if (culprit == null)
                {
                    ShowMessagePage("记录不存在。");
                }

                _tagId = culprit.TagId;
                var tag = Tag.Select(_tagId);
                if (tag != null)
                {
                    _tagMac = tag.TagMac;
                }

                currentTagId.Value = _tagId.ToString();
                tagMac.Text        = _tagMac;
                userId.Value       = culprit.HostId.ToString();

                name.Text   = newName.Text = culprit.HostName;
                number.Text = newNumber.Text = culprit.HostExternalId;
                memo.Text   = newMemo.Text = Strings.TextEncode(culprit.Description);

                if (Config.Settings.IsLoadHostInfo)
                {
                    CulMoreInfo.Visible = true;
                    string        strConnect = System.Configuration.ConfigurationSettings.AppSettings["FXConnectionString"].ToString();
                    SqlConnection conn       = new SqlConnection(strConnect);

                    string strSQL = "SELECT top 1 RYBH, ZJHM, JYAQ,V_SSJD.HZ as SSJDHZ, V_AJLB.HZ as AJLBHZ from V_RYXXALL join V_AJLB on V_RYXXALL.AJLB=V_AJLB.DM join V_SSJD on V_SSJD.DM=V_RYXXALL.SSJD where RYBH='" + culprit.HostExternalId + "'";

                    DataSet ds = new DataSet();                                //   创建一个   DataSet
                    conn.Open();
                    SqlDataAdapter command = new SqlDataAdapter(strSQL, conn); //   用   SqlDataAdapter   得到一个数据集
                    command.Fill(ds, "CulInfo");                               //把Dataset绑定到数据表
                    DataTable dt = ds.Tables["CulInfo"];

                    if (dt.Rows.Count > 0)
                    {
                        IDNO.Text     = dt.Rows[0]["ZJHM"].ToString();
                        CulKind.Text  = dt.Rows[0]["AJLBHZ"].ToString();
                        CulState.Text = dt.Rows[0]["SSJDHZ"].ToString();
                        CulDes.Text   = dt.Rows[0]["JYAQ"].ToString();
                    }
                }
                else
                {
                    CulMoreInfo.Visible = false;
                }

                tagBound.Text = culprit.TagId == 0 ? "未携带标签" : "已领用标签";
                photo.Src     = "UserPhoto.ashx?id=" + _id;
                jailRoom.Text = MapArea.All.Where(a => a.Id == CulpritRoomReference.All.Where(r => r.CulpritId == _id).Select(r => r.JailRoomId).SingleOrDefault()).Select(a => a.AreaName).SingleOrDefault();

                if (!isAdmin)
                {
                    changeName.Visible   = false;
                    changeNumber.Visible = false;
                    changeMemo.Visible   = false;
                    deleteButton.Visible = false;
                    uploadButton.Visible = false;
                }
            }


            if (!LocatingServiceUtil.IsAvailable() || !isAdmin)
            {
                changeTag.Visible                  = false;
                changeJailRoom.Visible             = false;
                clearAllEvents.Visible             = false;
                locatingServiceDownMarker.Visible  = true;
                setStatus.Visible                  = false;
                locatingServiceDownMarker1.Visible = true;
            }
            else
            {
                try
                {
                    if (!string.IsNullOrEmpty(_tagMac))
                    {
                        TagStatusView tagStatus = LocatingServiceUtil.Instance <IServiceApi>().SelectTagStatus(_tagMac);
                        if (tagStatus != null)
                        {
                            coordinatesName.Text     = Coordinates.GetName(tagStatus.CoordinatesId);
                            positionUpdateTime.Value = tagStatus.PositionUpdateTime;

                            if (tagStatus.HostTag.HostGroupId.Contains(4))
                            {
                                illness.Checked = true;
                            }

                            if (tagStatus.HostTag.HostGroupId.Contains(3))
                            {
                                serious.Checked = true;
                            }

                            if (tagStatus.HostTag.HostStatusId == (int)HostTagStatusType.Interrogation)
                            {
                                arraignment.Checked = true;

                                using (AppExtensionDataContext dbExtension = new AppExtensionDataContext())
                                {
                                    InterrogationLog interrogationLog = dbExtension.InterrogationLogs.SingleOrDefault(t => t.CulpritId == tagStatus.HostTag.HostId && t.StartTime == null);

                                    if (interrogationLog != null)
                                    {
                                        if (interrogationLog.PoliceId == me.Id)
                                        {
                                            arraignment.Enabled = true;
                                        }
                                        else
                                        {
                                            arraignment.Enabled = false;
                                        }
                                    }
                                    else
                                    {
                                        //状态与数据库不一致,需要同步
                                    }
                                }
                            }


                            absence.Text             = Misc.GetEventStatusDescription(tagStatus.AbsenceStatus);
                            areaEvent.Text           = Misc.GetEventStatusDescription(tagStatus.AreaEventStatus);
                            batteryInsufficient.Text = Misc.GetEventStatusDescription(tagStatus.BatteryInsufficientStatus);
                            batteryReset.Text        = Misc.GetEventStatusDescription(tagStatus.BatteryResetStatus);
                            buttonPressed.Text       = Misc.GetEventStatusDescription(tagStatus.ButtonPressedStatus);
                            wristletBroken.Text      = Misc.GetEventStatusDescription(tagStatus.WristletBrokenStatus);
                            eventUpdateTime.Value    = tagStatus.EventUpdateTime;

                            clearAbsence.Visible             = tagStatus.AbsenceStatus != (byte)EventStatus.Cleared;
                            clearAreaEvent.Visible           = tagStatus.AreaEventStatus != (byte)EventStatus.Cleared;
                            clearBatteryInsufficient.Visible = tagStatus.BatteryInsufficientStatus != (byte)EventStatus.Cleared;
                            clearBatteryReset.Visible        = tagStatus.BatteryResetStatus != (byte)EventStatus.Cleared;
                            clearButtonPressed.Visible       = tagStatus.ButtonPressedStatus != (byte)EventStatus.Cleared;
                            clearWristletBroken.Visible      = tagStatus.WristletBrokenStatus != (byte)EventStatus.Cleared;
                        }
                    }
                }
                catch
                {
                }
            }

            using (AppDataContext db = new AppDataContext())
            {
                list.DataSource   = db.DBViewTagAlerts.Where(x => x.TagId == _tagId).OrderByDescending(x => x.WriteTime).Take(10).ToList();
                list.ItemCreated += new RepeaterItemEventHandler(list_ItemCreated);
                list.DataBind();

                if (latestWarnings.Visible = list.Items.Count > 0)
                {
                    moreWarninngs.Href = "../History/MarshalEventLog.aspx?tagNameKeyword=" + Server.UrlEncode(name.Text);
                }
            }
        }