Ejemplo n.º 1
0
        public virtual void FillRss <T>(System.Collections.IEnumerator eData)
        {
            while (eData.MoveNext())
            {
                T data = (T)eData.Current;

                Type type = data.GetType();

                bool publicRss = (bool)type.GetProperty("PublicRss").GetValue(data, null);

                if (!publicRss)
                {
                    continue;
                }

                RssItemModel model     = new RssItemModel();
                int          articleNo = (int)type.GetProperty("ArticleNo").GetValue(data, null);
                model.Title       = type.GetProperty("Title").GetValue(data, null).ToString();
                model.Link        = Util.Utility.MakeArticleUrl(articleNo);
                model.Description = type.GetProperty("Content").GetValue(data, null).ToString();
                model.Author      = BlogManager.GetInstance().BlogBaseModel.BlogModel.Name;
                model.PubDate     = type.GetProperty("InsertDate").GetValue(data, null).ToString();
                TagBindModel tagBindModel = (TagBindModel)type.GetProperty("Tag").GetValue(data, null);
                foreach (TagModel tagModel in tagBindModel)
                {
                    model.Category.Add(tagModel);
                }

                this.Item.Add(model);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 태그를 저장
        /// </summary>
        /// <param name="cmd"></param>
        /// <param name="articleNo"></param>
        /// <param name="bindModel"></param>
        /// <returns></returns>
        public static bool InsertTag(SqlCommand cmd, int articleNo, TagBindModel bindModel)
        {
            try
            {
                cmd.Parameters.Clear();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "UAT_InsertTag";

                foreach (TagModel model in  bindModel)
                {
                    cmd.Parameters.Add("@ArticleNo", SqlDbType.Int, 4);
                    cmd.Parameters.Add("@TagName", SqlDbType.VarChar, 50);

                    cmd.Parameters["@ArticleNo"].Value = articleNo;
                    cmd.Parameters["@TagName"].Value   = model.TagName.Trim();

                    cmd.ExecuteNonQuery();

                    cmd.Parameters.Clear();
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw new UmcDataException("UAT_InsertTag 프로시져 호출중 에러", ex);
            }
        }
Ejemplo n.º 3
0
    private void bind()
    {
        TagBindModel bindModel = ArticleManager.GetInstance().GetTagList();

        rptTagList.DataSource = bindModel;
        rptTagList.DataBind();
    }
Ejemplo n.º 4
0
        // 更新警员位置
        //  返回警员位置变化状态,并同时返回警员位置变化异常状态结果
        private bool UpgradeOfficerLocation(UpLoadDataPackage data, TagBindModel bdm, out UpgradeOfficerLocationResult result)
        {
            var handler = new OfficerLocationHandle(Repository);
            var lc      = handler.First(t => t.OfficerId == bdm.Officer.Id);

            result = new UpgradeOfficerLocationResult {
                PreLocation = lc, IsLocationException = false
            };

            var isEmpty = (null == lc);

            // 首次进入基站
            if (isEmpty && !data.IsOut)
            {
                lc = new OfficerLocation {
                    OfficerId = bdm.Officer.Id, EquipId = bdm.Equipment.Id, SiteId = data.SiteId, Status = (short)LocationStatus.In, UpTime = data.TTime
                };
                handler.Add(lc);
                return(true);
            }

            // 进入基站,并且位置发生变化
            if (!isEmpty && !data.IsOut && data.SiteId != lc.SiteId)
            {
                // 警员位置异常范围最小值
                var tmin = lc.UpTime - OfficerLocationExceptionTimeRange;
                // 警员位置异常范围最大 值
                var tmax = lc.UpTime + OfficerLocationExceptionTimeRange;
                // 进一步判断是否发生在异常时间内,并标识是否发生异常
                result.IsLocationException = (tmin <= data.TTime && tmax >= data.TTime);
                if (result.IsLocationException)
                {
                    // 位置异常,中断执行后续处理,并触发位置异常处理
                    return(false);
                }

                // 位置没有发生异常,继续执行后续处理
                lc.SiteId  = data.SiteId;
                lc.EquipId = bdm.Equipment.Id;
                lc.Status  = (short)LocationStatus.In;
                lc.UpTime  = data.TTime;
                handler.Modify(lc);
                return(true);
            }

            // 离开基站
            if (!isEmpty && data.IsOut && lc.SiteId == data.SiteId)
            {
                lc.EquipId = bdm.Equipment.Id;
                lc.Status  = (short)LocationStatus.Out;
                lc.UpTime  = data.TTime;
                handler.Modify(lc);
            }

            return(false);
        }
Ejemplo n.º 5
0
        // 警员位置相关处理
        private void ExecuteOfficerLocation(UpLoadDataPackage data, TagBindModel bdm)
        {
            // 更新警员位置信息
            //  返回位置是否变更,并同时返回是否位置异常状态结果
            if (UpgradeOfficerLocation(data, bdm, out UpgradeOfficerLocationResult result))
            {
                UpgradeOfficerTrack(data, bdm.Officer, result.PreLocation?.SiteId);
            }

            // 警员位置异常处理
            if (result.IsLocationException)
            {
                ExecuteOfficerLocationException(data, bdm, result.PreLocation);
            }

            // 警员出勤处理
            ExecuteOfficerAttendance(data, bdm);
        }
Ejemplo n.º 6
0
        // 警员位置异常处理
        //  当同一个警员的不同装备在异常时间范围内出现在不同的位置时,触发当前异常
        private void ExecuteOfficerLocationException(UpLoadDataPackage data, TagBindModel bdm, OfficerLocation location)
        {
            var expt = new EquipmentAllopatryExcept {
                CTime = DateTime.Now.ToUnixTime(), DTime = 0L, OfficerId = bdm.Officer.Id, Status = (short)OfficerLocaionExceptStatus.Doing
            };
            var epHandler = new EquipmentAllopatryExceptHandle(Repository);

            epHandler.Add(expt);

            var aepc = new AllopatryEquipmentPosition {
                AeId = expt.Id, EquipId = bdm.Equipment.Id, SiteId = data.SiteId, UpTime = data.TTime
            };
            var aepp = new AllopatryEquipmentPosition {
                AeId = expt.Id, EquipId = location.EquipId, SiteId = location.SiteId, UpTime = location.UpTime
            };
            var apHandler = new AllopatryEquipmentPositionHandle(Repository);

            apHandler.Add(aepc);
            apHandler.Add(aepp);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 태그 리스트를 가져온다.
        /// </summary>
        /// <returns></returns>
        public static TagBindModel GetTagList()
        {
            SqlCommand    cmd       = GetSpCommand("UAT_GetTagList");
            SqlDataReader reader    = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            TagBindModel  bindModel = null;

            try
            {
                bindModel = new TagBindModel();

                while (reader.Read())
                {
                    bindModel.Add(new TagModel(reader["TagName"].ToString()));
                }

                return(bindModel);
            }
            finally
            {
                ReleaseCommand(cmd);
            }
        }
Ejemplo n.º 8
0
        // 警械相关处理
        //  1,获取标签绑定的警械信息
        //  2,警械当前位置信息处理
        //  3,保存警械移动轨迹
        //  4,其它
        private TagBindModel ExecuteEquipment(UpLoadDataPackage data)
        {
            var eqHandler  = new EquipmentHandle(Repository);
            var offHandler = new OfficerHandle(Repository);
            var noDel      = (short)DeleteStatus.No;
            var query      =
                from eqt in eqHandler.All(t => t.IsDel == noDel)
                join officer in offHandler.All(t => t.IsDel == noDel) on eqt.OfficerId equals officer.Id
                select new { eqt = eqt, officer = officer };
            var tagId = data.TagId;
            var m     = query.Where(t => t.eqt.TagId == tagId).FirstOrDefault();

            if (null != m)
            {
                var bdm = new TagBindModel {
                    Equipment = m.eqt, Officer = m.officer
                };
                ExecuteEquipmentLocation(data, bdm);
                return(bdm);
            }
            return(null);
        }
Ejemplo n.º 9
0
        // 警员出勤模块处理
        //  1,查询当前警员所在组织机构的内部基站
        //  2,查询当前警员当天最近一次警员出勤情况,并做进一步处理
        private void ExecuteOfficerAttendance(UpLoadDataPackage data, TagBindModel bdm)
        {
            var noDel     = (short)DeleteStatus.No;
            var orgId     = bdm.Officer.OrgId;
            var siteId    = data.SiteId;
            var officerId = bdm.Officer.Id;

            // 查询内部考勤基站是否存在
            var siteHandler = new StationHandle(Repository);
            var site        = siteHandler.First(t => t.IsDel == noDel && t.OrgId == orgId && t.SiteId == siteId);

            // 查询当天最近一次未完成的考勤记录
            var today      = DateTime.Now.Date.ToUnixTime();
            var atdHandler = new OfficerAttendanceHandle(Repository);
            var atd        = atdHandler.First(t => t.OfficerId == officerId && t.STime >= today && t.ETime == 0L);

            // 离开内部考勤基站,签出
            if (null != site && data.IsOut && atd != null && atd.ETime == 0L)
            {
                atd.ETime      = data.TTime;
                atd.TimeLength = atd.ETime - atd.STime;
                atdHandler.Modify(atd);
            }

            // 警员进入内部考勤基站,签到
            if (null != site && !data.IsOut && atd == null)
            {
                atd = new OfficerAttendance {
                    OfficerId = officerId, STime = data.TTime, TimeLength = 0L, ETime = 0L
                };
                atdHandler.Add(atd);
            }

            // 重复签到
            if (null != site && !data.IsOut && atd != null && atd.ETime != 0L)
            {
            }
        }
Ejemplo n.º 10
0
 // 警员相关处理
 //  1,判断当前数据包是否为离开数据包,如果是,标识警员已经离开当前位置
 //  2,获取当前基站信息,并判断当前基站是否为出勤初始基站(警械库或者警械柜绑定基站),如果是,添加一条出勤记录。
 //  3,如果数据包是进入当前位置,获取警员当前位置,并判断警员位置是否发生变化,如果是,进一步判断当前变化是否在异常警告时间范围内(暂定 1 分钟),如果是,新增异常信息
 //  4,如果不是异常数据,变更警员的当前位置信息,并保存警员的轨迹位置
 //  5,其它操作
 private void ExecuteOfficer(UpLoadDataPackage data, TagBindModel bdm)
 {
     ExecuteOfficerLocation(data, bdm);
 }
Ejemplo n.º 11
0
 // 警械相关处理核心
 private void ExecuteEquipmentLocation(UpLoadDataPackage data, TagBindModel model)
 {
     ExecuteEquipmentLocation(data, model.Equipment);
 }
Ejemplo n.º 12
0
 private void init()
 {
     bindModel = ArticleManager.GetInstance().GetTagList();
 }