示例#1
0
        public async Task <IActionResult> AddFacility(FacilityDto model)
        {
            //check if model state is not valid
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            //Create facility object
            var facility = new Facility
            {
                Name           = model.Name,
                RegistrationNo = model.RegistrationNo,
                Address        = model.Address,
                ContactNo      = model.ContactNo,
                CreatedBy      = model.CreatedBy,
                Created        = DateTime.Now
            };

            //save facility to database
            _db.Facilities.Add(facility);
            if (await _db.SaveChangesAsync() > 0)
            {
                return(Ok());                              // save operation successful
            }
            return(BadRequest("Could not save facility")); // save operation failed
        }
        public async Task <string> UpdateFacility(string guid, [FromBody] FacilityDto facilityDto)
        {
            facilityDto.Guid = new Guid(guid);
            await _facilityService.UpdateFacility(facilityDto);

            return(facilityDto.Name);
        }
        public static Dictionary <FacilityDto, List <DomainDto> > LoadAllFacilityDomains()
        {
            Dictionary <FacilityDto, List <DomainDto> > facilityDomains = new Dictionary <FacilityDto, List <DomainDto> >();

            using (ScidynContext ctx = new ScidynContext())
            {
                List <DomainFacility> domainFacilities = ctx.DomainFacilities.Include("Domain").Include("Facility").ToList();

                // Convert list of domains and the facilities they belong to into
                // a list of facilities and what domains contain them.
                foreach (DomainFacility domainFacility in domainFacilities)
                {
                    DomainDto domainDto = domainFacility.Domain.ConvertToDto();

                    FacilityDto key = facilityDomains.Keys.FirstOrDefault(k => k.SiteId == domainFacility.Facility.SiteId);

                    if (key == null)
                    {
                        facilityDomains.Add(domainFacility.Facility.ConvertToDto(), new List <DomainDto> {
                            domainDto
                        });
                    }
                    else
                    {
                        facilityDomains[key].Add(domainDto);
                    }
                }
            }

            return(facilityDomains);
        }
        public void Find()
        {
            FacilityGateway gateway = new FacilityGateway();

            FacilityDto result = gateway.Find(_facilityId);

            Assert.IsNotNull(result);
        }
示例#5
0
        public async Task CreateFacility(FacilityDto facilityDto)
        {
            var facility = _mapper.Map <Facility>(facilityDto);

            facility.Guid         = Guid.NewGuid();
            facility.CreationDate = DateTime.Now;

            _facilityRepository.Add(facility);
            await _facilityRepository.SaveChangesAsync();
        }
示例#6
0
 public async Task <IHttpActionResult> GetByUser(string userId)
 {
     return(await ResultFactory.Create(ModelState, async arg =>
     {
         var companyUser = await companyUserService.GetBySysUserIdAsync(userId);
         FacilityDto facility = null;
         if (companyUser != null)
         {
             facility = await facilityService.GetByIdWithRedisAsync(companyUser.FacilitySerialnum);
         }
         return new ApiResult(ExceptionCode.Success, "", facility);
     }, userId, "success", "请检查请求参数"));
 }
示例#7
0
        public IHttpActionResult GetFacilities(int id)
        {
            var list = Svc.GetFacilities(id);

            var source = list.Items.Select(i =>
            {
                var item = new FacilityDto();
                item.LoadFromEntity(i);

                return(item);
            });

            return(Json(new PagedList <FacilityDto>(source, list.PageIndex, list.PageSize, list.TotalCount)));
        }
示例#8
0
        public async Task UpdateFacility(FacilityDto facilityDto)
        {
            var facility = await _facilityRepository.GetByGuid(facilityDto.Guid.ToString());

            if (facility == null)
            {
                throw new KeyNotFoundException($"Cannot update Facility. Facility with guid {facility.Guid} does not exist");
            }

            _mapper.Map(facilityDto, facility);

            _facilityRepository.Update(facility);
            await _facilityRepository.SaveChangesAsync();
        }
示例#9
0
        /// <summary>
        /// 处理设施添加数据
        /// </summary>
        /// <param name="facility">设施添加数据</param>
        /// <returns></returns>
        public async Task <XResponseMessage> ProcessAsync(FacilityModel facility)
        {
            if (facility == null)
            {
                return(null);
            }
            if (!await _farmService.ExistsAsync(facility.Farm))
            {
                return(ResultHelper.CreateMessage("基地不存在", ErrorType.FarmNotExists));
            }

            var facilityType = await _facilityTypeService.GetByIdAsync(facility.FacilityType); //不存在的设施类型无法添加

            if (facilityType == null)
            {
                return(ResultHelper.CreateMessage("设施类型不存在", ErrorType.FacilityTypeNotExists));
            }

            var item = await _facilityService.GetFacilityByIdAsny(facility.Serialnum);

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

                LogHelper.Info("[设施]设施{0}{1}添加{2}", item.Name, item.Serialnum, result);
                return(ResultHelper.CreateMessage($"添加设施{(result ? "成功" : "失败")}",
                                                  result ? ErrorType.NoError : ErrorType.InternalError));
            }
            catch (AggregateException ex)
            {
                return(ResultHelper.CreateExceptionMessage(ex, "添加设施失败"));
            }
        }
示例#10
0
        public IHttpActionResult AddFacility(int id, [FromBody] NewFacilityDto value)
        {
            var entity = Svc.GetById(id);

            if (entity == null)
            {
                return(NotFound());
            }

            var facility   = value.ToEntity();
            int facilityId = Svc.AddFacility(id, facility);

            var createdDto = new FacilityDto();

            createdDto.LoadFromEntity(facility);

            return(CreatedAtRoute("GetFacilityById", new { id = facilityId }, createdDto));
        }
示例#11
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
    }
示例#12
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);
                });
            }
        }
示例#13
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;
            }
        }
示例#14
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();
            //}
        }
        public async Task <string> CreateFacility([FromBody] FacilityDto facilityDto)
        {
            await _facilityService.CreateFacility(facilityDto);

            return(facilityDto.Name);
        }