예제 #1
0
        public async Task <BaseResponse> AddDeviceAsync(DeviceAddDto req, string account, string GroupId)
        {
            BaseResponse br = new BaseResponse();
            //查找是否存在相同的设备序号
            var device = _dr.Find(a => a.DeviceNo == req.DeviceNo);

            if (await device.FirstOrDefaultAsync() != null)
            {
                br.Success = false;
                br.Message = "该设备已存在,请确认";
                return(br);
            }
            //获取设备所属项目路径
            string pathId, PathName;

            if (req.ProjectId.HasValue && req.ProjectId.Value != 0)
            {
                var p = await _ps.GetProjectAsync(req.ProjectId.Value);

                if (p != null)
                {
                    //设备增加所属场站编号和名称
                    pathId   = $"{p.PathId}/{p.Id}";
                    PathName = $"{p.PathName}/{p.Name}";
                }
                else
                {
                    br.Success = false;
                    br.Message = "输入的场站不存在";
                    return(br);
                }
            }
            else
            {
                pathId   = null;
                PathName = null;
            }

            try
            {
                var entity = _mapper.Map <DeviceModel>(req);
                entity.DeviceSn = Guid.NewGuid().ToString("N");
                entity.Create   = account;
                entity.FullId   = pathId;
                entity.FullName = PathName;
                entity.GroupId  = GroupId;
                //获取类型硬件配置数据
                var data = await _th.GetTypeHardwareConfigAsync(req.TypeId);

                var dtos = _mapper.Map <List <TypeHardwareConfigModel>, List <DeviceHardwareConfigModel> >(data);
                foreach (var item in dtos)
                {
                    item.Device = entity;
                    item.Create = account;
                }
                await _dr.AddAsync(entity, dtos);

                br = new BResponse <string> {
                    Data = entity.DeviceSn, Success = true, Message = "添加设备成功"
                };
                _log.LogInformation($"{account}删除类型标示为{entity.DeviceSn}的设备数据成功");
            }
            catch (Exception ex)
            {
                _log.LogError($"{account}添加设备失败,失败原因:{ex.Message}->{ex.StackTrace}->{ex.InnerException}");
                br.Success = false;
                br.Message = "添加设备失败,请联系管理员";
            }
            return(br);
        }
예제 #2
0
        public async Task <ActionResult <BaseResponse> > AddDevice(string GroupId, DeviceAddDto req)
        {
            BaseResponse br   = new BaseResponse();
            bool         bRet = await _gs.IsExist(opt => opt.Id == GroupId);

            if (!bRet)
            {
                return(new BaseResponse {
                    Success = false, Message = "输入的组织编号不存在,请确认"
                });
            }
            var type = await _ts.CheckTypeAsync(req.TypeId);

            if (!type.IsExist)
            {
                return(new BaseResponse {
                    Success = false, Message = "输入的类型不存在,请确认"
                });
            }
            else if (type.Status == 0)
            {
                return(new BaseResponse {
                    Success = false, Message = "输入的类型不能添加设备,请确认"
                });
            }
            var    GId     = User.Claims.FirstOrDefault(a => a.Type == "GroupId").Value;
            var    isAdmin = User.Claims.FirstOrDefault(a => a.Type == "IsAdmin").Value.ToLower() == "true" ? true : false;
            string Code    = User.Claims.FirstOrDefault(a => a.Type == "Code").Value;
            string Account = User.Claims.FirstOrDefault(a => a.Type == "Account").Value;
            string Roles   = User.Claims.FirstOrDefault(a => a.Type == "Role").Value;

            if (req.ProjectId.HasValue && req.ProjectId.Value != 0)
            {
                //string pathId, groupId;
                var pc = await _ps.GetProjectCheckAsync(req.ProjectId.Value);

                if (!pc.IsExist)
                {
                    return(new BaseResponse {
                        Success = false, Message = "输入的项目或者场站不存在"
                    });
                }
                if (!pc.IsSite)
                {
                    return(new BaseResponse {
                        Success = false, Message = "设备只能添加在场站下面"
                    });
                }
                if (GroupId != pc.GroupId)
                {
                    return(new BaseResponse {
                        Success = false, Message = "输入的项目不存在或者项目与组织编号不匹配"
                    });
                }

                if (isAdmin)
                {
                    if (GroupId != GId && Code != _config["Group"])
                    {
                        return(new BaseResponse {
                            Success = false, Message = "用户所属的组织编号和该组织编号不匹配"
                        });
                    }
                }
                else
                {
                    pc.PathId = $"{pc.PathId}/{req.ProjectId.Value}";
                    bRet      = await _rp.IsAuth(Roles, pc.PathId, 3);

                    if (!bRet)
                    {
                        return(new BaseResponse {
                            Success = false, Message = "用户没有在该场站下添加设备的权限"
                        });
                    }
                }
            }
            else//无项目的设备,只有管理员才有权限添加
            {
                if (!(isAdmin && (GroupId == GId || Code == _config["Group"])))
                {
                    return(new BaseResponse {
                        Success = false, Message = "用户没有权限添加无项目的设备"
                    });
                }
            }
            var rm = await _ds.AddDeviceAsync(req, Account, GroupId);

            return(rm);
        }