예제 #1
0
        /// <summary>
        /// 处理设施添加数据(旧的版本)
        /// </summary>
        /// <param name="facilityAddData">设施添加数据</param>
        /// <returns></returns>
        public async Task ProcessAsync(FacilityAddData facilityAddData)
        {
            if (facilityAddData == null || facilityAddData.Facility == null)
            {
                return;
            }
            var facility = facilityAddData.Facility;

            if (!_facilityService.CheckCode(facilityAddData.Facility.Serialnum))
            {
                return;
            }
            var facilityType = await _facilityTypeService.GetByIdAsync(facility.FacilityType); //不存在的设施类型无法添加

            if (facilityType == null)
            {
                return;
            }
            var item = await _facilityService.GetFacilityByIdAsny(facility.Serialnum);

            //数据库中不存在该设施
            if (item == null)
            {
                if (facility.CreateTime != null)
                {
                    item = new FacilityDto
                    {
                        Serialnum             = facility.Serialnum,
                        Name                  = facility.Name,
                        FarmSerialnum         = facility.Farm,
                        FacilityTypeSerialnum = facility.FacilityType,
                        CreateTime            = (DateTime)facility.CreateTime,
                        UpdateTime            = (DateTime)facility.CreateTime,
                        Status                = 1,
                        Sort                  = 0
                    }
                }
                ;
                await _facilityService.AddFacility(item);
            }
        }

        #endregion
    }
예제 #2
0
        /// <summary>
        ///     添加摄像机
        /// </summary>
        /// <param name="item"></param>
        /// <param name="facilityDb"></param>
        public static async Task AddCamera(FacilityAddData item, FacilityDto facilityDb)
        {
            var cameras = item.Cameras;
            List <FacilityCameraDto> cameraList = null;

            if (_redis.Exists("facilityCamera") == 1)
            {
                cameraList = _redis.Smember <FacilityCameraDto>("facilityCamera", DataType.Protobuf);
            }
            var camerasDb = cameraList != null ? cameraList : await _facilityCameraService.GetFacilityCamerasByFacilityIdAsny(facilityDb.Serialnum);

            if (cameras != null && cameras.Any())
            {
                cameras.ForEach(async c =>
                {
                    await CollectDataProcessor.AddCamera(c);
                });
            }
        }
예제 #3
0
        /// <summary>
        ///     添加设施
        /// </summary>
        /// <param name="item">
        ///     <see cref="FacilityAddData" />
        /// </param>
        /// <returns></returns>
        public static async Task <FacilityDto> AddFacility(FacilityAddData item)
        {
            try
            {
                var facilityModel = item.Facility;
                //_redis.Delete("facility");
                FacilityDto facility = null;
                if (_redis.Exists("facility") == 1)
                {
                    facility = _redis.Smember <FacilityDto>("facility", DataType.Protobuf).Find(f => f.Serialnum.EqualIgnoreCase(facilityModel.Serialnum));
                }

                var facilityDb = facility != null ? facility : await _facilityService.GetFacilityByIdAsny(facilityModel.Serialnum);

                if (facilityDb == null && _facilityService.CheckCode(facilityModel.Serialnum)) //添加设施
                {
                    facilityDb = new FacilityDto
                    {
                        Serialnum             = facilityModel.Serialnum,
                        Name                  = facilityModel.Name,
                        FarmSerialnum         = facilityModel.Farm,
                        FacilityTypeSerialnum = facilityModel.FacilityType,
                        Status                = 1,
                        Sort                  = 0,
                        //Address = facilityModel.Address,
                        //PhotoUrl = facilityModel.PhotoUrl,
                        //ContactMan = facilityModel.ContactMan,
                        //ContactMobile = facilityModel.ContactMobile,
                        //ContactPhone = facilityModel.ContactPhone,
                        CreateTime = facilityModel.CreateTime ?? DateTime.Now
                    };
                    _redis.Sadd("facility", facilityDb, DataType.Protobuf);//将facilityDb加入到缓冲facility集合
                    //await _facilityService.AddFacility(facilityDb);
                    ServiceLogger.Current.WriteDebugLog("添加设施 {0}", facilityDb.Name);
                }
                return(facilityDb);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #4
0
        /// <summary>
        ///     添加设备
        /// </summary>
        /// <param name="item"></param>
        /// <param name="facilityDb"></param>
        private static async Task AddDevice(FacilityAddData item, FacilityDto facilityDb)
        {
            TaskScheduler.UnobservedTaskException += (_, ev) => Console.WriteLine(ev.Exception);
            try
            {
                var devices = item.Devices;
                if (devices == null)
                {
                    return;
                }
                devices.ForEach(async devModel =>
                {
                    if (devModel.FacilitySerialnum.EqualIgnoreCase(facilityDb.Serialnum))
                    {
                        DeviceDto dev = null;
                        if (_redis.Exists("device") == 1)
                        {
                            dev = _redis.Smember <DeviceDto>("device", DataType.Protobuf).Find(d => d.Serialnum.EqualIgnoreCase(devModel.Serialnum));
                        }

                        var devDb = dev != null ? dev : await _deviceService.GetDeviceByIdAsny(devModel.Serialnum);
                        if (devDb == null)
                        {
                            devDb = new DeviceDto()
                            {
                                Serialnum           = devModel.Serialnum,
                                Name                = devModel.Name,
                                FacilitySerialnum   = facilityDb.Serialnum,
                                DeviceTypeSerialnum = devModel.DeviceTypeSerialnum,
                                Unit                = devModel.Unit,
                                CreateTime          = DateTime.Now,
                                UpdateTime          = DateTime.Now,
                                OnlineStatus        = true,
                                IsException         = false,
                                Status              = 1,
                                Sort                = 0
                            };
                            XTrace.WriteLine("{0} {1}", DateTime.Now.ToShortTimeString(), devModel.Serialnum);
                            //await _deviceService.AddDevice(devDb);
                            //if (dev != null) _redis.Srem("device", dev, DataType.Protobuf);
                            _redis.Sadd("device", devDb, DataType.Protobuf);//加入到缓存中

                            /* ServiceLogger.Current.WriteDebugLog("添加设备 {0}", devDb.Name);0
                             *
                             * var sets = await _deviceExceptionSetService.GetDeviceExceptionSetsByDeviceIdAsny(devDb.Serialnum);
                             * if (sets == null || sets.Count() == 0)
                             * {
                             *   var set = new DeviceExceptionSetDto
                             *   {
                             *       Serialnum = devDb.Serialnum + "-" + DateTime.Now.ToLongTimeString(),
                             *       DeviceSerialnum = devDb.Serialnum,
                             *       Max = devModel.Max ?? 0,
                             *       Min = devModel.Min ?? -1,
                             *       CreateTime = DateTime.Now
                             *   };
                             *   await _deviceExceptionSetService.AddDeviceExceptionSet(set);//保存
                             *   ServiceLogger.Current.WriteDebugLog("添加设备上下限 {0} [{1}-{2}]", devDb.Name, set.Min, set.Max);
                             * }*/
                        }
#if DEBUG
                        else
                        {
                            devDb.UpdateTime = DateTime.Now;
                            if (dev != null)
                            {
                                _redis.Srem("device", dev, DataType.Protobuf);
                            }
                            _redis.Sadd("device", devDb, DataType.Protobuf);//加入到缓存中
                            //await _deviceService.UpdateDevice(devDb);//保存
                        }
#endif
                    }

                    else
                    {
                        ServiceLogger.Current.WriteDebugLog("{0} 设备的设施编码不正确", devModel.Name);
                    }
                });
            }
            catch (NotSupportedException ex)
            {
            }
            catch (NotImplementedException ex)
            {
            }
            catch (AggregateException ex)
            {
            }
            catch (Exception ex)
            {
                throw;
            }

            //while (true)
            //{
            //    Thread.Sleep(1000);
            //    GC.Collect();
            //}
        }