/// <summary>
        /// 结束R_PB报警
        /// </summary>
        /// <param name="datastate"></param>
        /// <param name="timeNow"></param>
        /// <param name="prealInfo"></param>
        public static void EndR_PBInfo(PersonAlarmState datastate, DateTime timeNow, R_PrealInfo prealInfo)
        {
            R_PBCacheGetByConditonRequest request = new R_PBCacheGetByConditonRequest();

            request.Predicate = a => a.Yid == prealInfo.Yid && a.Type == (int)datastate && (a.Endtime == null || a.Endtime < DateTime.Parse("2000-01-01"));
            var result = r_PBCacheService.GetR_PBCache(request);

            if (result.Data != null && result.IsSuccess)
            {
                List <R_PbInfo> pbItems = result.Data;
                pbItems.ForEach(a =>
                {
                    a.Endtime   = timeNow;
                    a.InfoState = InfoState.Modified;
                });

                //更新数据库
                DataToDbBatchAddRequest <R_PbInfo> request1 = new DataToDbBatchAddRequest <R_PbInfo>();
                request1.Items = pbItems;
                r_PbService.AddItems(request1);
                //更新缓存
                R_PBCacheBatchUpdateRequest request2 = new R_PBCacheBatchUpdateRequest();
                request2.R_PBInfos = pbItems;
                r_PBCacheService.BatchUpdateR_PBCache(request2);
            }
        }
Example #2
0
        /// <summary>
        /// 删除状态位
        /// </summary>
        /// <param name="oldState">原状态</param>
        /// <param name="newState">待删除的状态</param>
        /// <returns></returns>
        public static int DeleteOldState(int oldState, PersonAlarmState newState)
        {
            int state = oldState;

            state &= (1 << ((int)newState - (int)PersonAlarmState.nomal));

            return(state);
        }
        public static void CreateR_PBInfo(string pointID, string areaID, DateTime stime, PersonAlarmState datastate, R_PrealInfo prealInfo)
        {
            R_PbInfo pb = new R_PbInfo();

            // 编号
            pb.Id = IdHelper.CreateLongId().ToString();
            // 区域ID
            if (string.IsNullOrEmpty(areaID))
            {
                pb.Areaid = "0";
            }
            else
            {
                pb.Areaid = areaID;
            }
            // 人员Id
            pb.Yid = prealInfo.Yid;
            // 测点Id
            pb.Pointid = pointID;
            // 报警开始时间,等同于写记录时间
            pb.Starttime = stime;
            // 报警结束时间
            pb.Endtime = new DateTime(1900, 1, 1);
            // 报警类型(关联枚举表)
            pb.Type = (int)datastate;
            // 系统类型标志:0—人员,1—机车
            pb.Z4        = prealInfo.Sysflag;
            pb.Z1        = "0";
            pb.Z2        = "0";
            pb.Z3        = "0";
            pb.Z5        = "0";
            pb.Z6        = "0";
            pb.InfoState = InfoState.AddNew;

            //更新数据库
            DataToDbAddRequest <R_PbInfo> request = new DataToDbAddRequest <R_PbInfo>();

            request.Item = pb;
            r_PbService.AddItem(request);
            //更新缓存
            R_PBCacheAddRequest addRequest = new R_PBCacheAddRequest();

            addRequest.R_PBInfo = pb;
            r_PBCacheService.AddR_PBCache(addRequest);
        }