using JiShe.IoT.DeviceAggregation.Dto; using JiShe.IoT.OneNETAggregation.Dto; using JiShe.ServicePro.Core; using JiShe.ServicePro.DeviceManagement.DeivceInfos; using JiShe.ServicePro.DeviceManagement.DeivceInfos.Dto; using JiShe.ServicePro.DeviceManagement.Meters.Dto; using JiShe.ServicePro.DeviceManagement.Permissions; using JiShe.ServicePro.OneNETManagement.OneNETDevices; using Mapster; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Volo.Abp; namespace JiShe.IoT.DeviceAggregation { /// /// 设备聚合服务 /// /// /// 设备服务 /// OneNET设备服务 public class DeviceAggregationService(ILogger logger, IDeviceAppService deviceAppService, IOneNETDeviceService oneNETDeviceService) : IoTAppService, IDeviceAggregationService { /// /// 创建设备信息 /// /// /// [Authorize(DeviceManagementPermissions.MeterManagement.Create)] public async Task CreateAsync(CreateDeviceAggregationInput input) { try { CreateDeviceInput createDeviceInput = input.Adapt(); var insertResult = await deviceAppService.CreateAsync(createDeviceInput); if (insertResult == null) { logger.LogError($"{nameof(CreateAsync)} 添加设备信息失败:{input.Serialize()}"); return false; } //推送至OneNET平台 var pushResult = await oneNETDeviceService.CreateDeviceInfoAsync(new CreateDeviceInfoInput() { DeviceName = $"{input.IoTPlatformProductId}{input.DeviceAddress}", ProductId = input.IoTPlatformProductId, OneNETAccountId = input.IoTPlatformAccountId, Description = input.DeviceAddress, }); if (pushResult == null || pushResult.Code != ServicePro.Enums.ResponeResultEnum.Success) { logger.LogError($"{nameof(CreateAsync)} 推送设备信息失败:{pushResult.Serialize()}"); return false; } UpdateDeviceInput updateDeviceInput = insertResult.Adapt(); updateDeviceInput.IoTPlatformResponse = pushResult.Serialize(); var updateResult = await deviceAppService.UpdateAsync(updateDeviceInput); if (updateResult == null) { logger.LogError($"{nameof(CreateAsync)} 更新设备信息失败:{input.Serialize()}"); return false; } return true; } catch (Exception) { throw; } } /// /// 删除设备信息 /// /// /// /// [Authorize(DeviceManagementPermissions.MeterManagement.Delete)] public async Task DeleteAsync(IdInput input) { return await deviceAppService.DeleteAsync(input); } /// /// 根据设备ID查询设备信息 /// /// /// /// public async Task FindByIdAsync(IdInput input) { return await deviceAppService.FindByIdAsync(input); } } }