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); }
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); }