using Model.Dto.Asset; using Model.Dto.Inspection; using Model.Entity.Asset; using Model.Entity.Inspection; namespace Model.Mapper { /// /// Entity → DTO 映射器(统一在此处做实体到传输对象的转换) /// 核心转换:雪花 Id 由 long 转 string,避免前端 JavaScript 大数精度丢失 /// 使用方法 给查询的数据后面加上.ToDtoList()或者.ToDto() /// public static class EntityMapper { #region 设备台账 /// /// EquipmentEntity → EquipmentDto /// public static EquipmentDto ToDto(this EquipmentEntity entity) { if (entity == null) return null; return new EquipmentDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, Code = entity.Code, Name = entity.Name, CategoryId = entity.CategoryId, Type = entity.Type, Brand = entity.Brand, Model = entity.Model, Specifications = entity.Specifications, Manufacturer = entity.Manufacturer, Supplier = entity.Supplier, ImageUrl = entity.ImageUrl, QrCode = entity.QrCode, Description = entity.Description, Department = entity.Department, Location = entity.Location, ResponsiblePerson = entity.ResponsiblePerson, ContactPhone = entity.ContactPhone, Custodian = entity.Custodian, PurchaseDate = entity.PurchaseDate, PurchasePrice = entity.PurchasePrice, WarrantyExpireDate = entity.WarrantyExpireDate, AcceptanceDate = entity.AcceptanceDate, EnableDate = entity.EnableDate, ServiceLifeYears = entity.ServiceLifeYears, ScrapDate = entity.ScrapDate, Status = entity.Status, CalibrationStatus = entity.CalibrationStatus, LastCalibrationDate = entity.LastCalibrationDate, NextCalibrationDate = entity.NextCalibrationDate, InspectionDate = entity.InspectionDate, NextInspectionDate = entity.NextInspectionDate, MaintenanceStatus = entity.MaintenanceStatus, LastMaintenanceDate = entity.LastMaintenanceDate, NextMaintenanceDate = entity.NextMaintenanceDate, Remark = entity.Remark, CreateBy = entity.CreateBy, UpdateBy = entity.UpdateBy, UpdateTime = entity.UpdateTime }; } /// /// List<EquipmentEntity> → List<EquipmentDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 设备附件 /// /// EquipmentAttachmentEntity → EquipmentAttachmentDto /// public static EquipmentAttachmentDto ToDto(this EquipmentAttachmentEntity entity) { if (entity == null) return null; return new EquipmentAttachmentDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, EquipmentId = entity.EquipmentId, FileName = entity.FileName, FileType = entity.FileType, FileExt = entity.FileExt, FileUrl = entity.FileUrl, FileSize = entity.FileSize, Uploader = entity.Uploader, Remark = entity.Remark }; } /// /// List<EquipmentAttachmentEntity> → List<EquipmentAttachmentDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 设备分类 /// /// EquipmentCategoryEntity → EquipmentCategoryDto /// public static EquipmentCategoryDto ToDto(this EquipmentCategoryEntity entity) { if (entity == null) return null; return new EquipmentCategoryDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, ParentId = entity.ParentId, Name = entity.Name, Code = entity.Code, Level = entity.Level, Sort = entity.Sort, Remark = entity.Remark }; } /// /// List<EquipmentCategoryEntity> → List<EquipmentCategoryDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 设备状态记录 /// /// EquipmentStatusRecordEntity → EquipmentStatusRecordDto /// public static EquipmentStatusRecordDto ToDto(this EquipmentStatusRecordEntity entity) { if (entity == null) return null; return new EquipmentStatusRecordDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, EquipmentId = entity.EquipmentId, FromStatus = entity.FromStatus, ToStatus = entity.ToStatus, ChangeTime = entity.ChangeTime, Operator = entity.Operator, Remark = entity.Remark }; } /// /// List<EquipmentStatusRecordEntity> → List<EquipmentStatusRecordDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 温度箱看板数据 /// /// TemperatureBoxDataEntity → TemperatureBoxDataDto /// public static TemperatureBoxDataDto ToDto(this TemperatureBoxDataEntity entity) { if (entity == null) return null; return new TemperatureBoxDataDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, DeviceCode = entity.DeviceCode, DeviceType = entity.DeviceType, DeviceTemperature = entity.DeviceTemperature, DeviceHumidity = entity.DeviceHumidity, Status = entity.Status, AlarmInfo = entity.AlarmInfo }; } /// /// List<TemperatureBoxDataEntity> → List<TemperatureBoxDataDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 告警规则 /// /// AlertRuleEntity → AlertRuleDto /// public static AlertRuleDto ToDto(this AlertRuleEntity entity) { if (entity == null) return null; return new AlertRuleDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, RuleName = entity.RuleName, DeviceType = entity.DeviceType, Metric = entity.Metric, Operator = entity.Operator, Threshold = entity.Threshold, AlarmLevel = entity.AlarmLevel, Enabled = entity.Enabled, TriggerCount = entity.TriggerCount, LastAlarmTime = entity.LastAlarmTime, Remark = entity.Remark }; } /// /// List<AlertRuleEntity> → List<AlertRuleDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 数据转发规则 /// /// DataForwardRuleEntity → DataForwardRuleDto /// public static DataForwardRuleDto ToDto(this DataForwardRuleEntity entity) { if (entity == null) return null; return new DataForwardRuleDto { Id = entity.Id.ToString(), IsDel = entity.IsDel, CreateTime = entity.CreateTime, ForwardName = entity.ForwardName, SourceDeviceType = entity.SourceDeviceType, ForwardInterval = entity.ForwardInterval, NotifyType = entity.NotifyType, TargetAddress = entity.TargetAddress, Enabled = entity.Enabled, LastForwardTime = entity.LastForwardTime, Remark = entity.Remark }; } /// /// List<DataForwardRuleEntity> → List<DataForwardRuleDto> /// public static List ToDtoList(this List entities) { return entities?.Select(e => e.ToDto()).ToList() ?? new List(); } #endregion #region 反向转换 DTO → Entity(前端入参转实体入库用,Id 由 string 转回 long) /// /// string Id 安全转 long(空/非法返回 0,新增时由雪花算法自动赋值) /// private static long ParseId(string id) { return long.TryParse(id, out var value) ? value : 0; } /// /// EquipmentDto → EquipmentEntity /// public static EquipmentEntity ToEntity(this EquipmentDto dto) { if (dto == null) return null; return new EquipmentEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, Code = dto.Code, Name = dto.Name, CategoryId = dto.CategoryId, Type = dto.Type, Brand = dto.Brand, Model = dto.Model, Specifications = dto.Specifications, Manufacturer = dto.Manufacturer, Supplier = dto.Supplier, ImageUrl = dto.ImageUrl, QrCode = dto.QrCode, Description = dto.Description, Department = dto.Department, Location = dto.Location, ResponsiblePerson = dto.ResponsiblePerson, ContactPhone = dto.ContactPhone, Custodian = dto.Custodian, PurchaseDate = dto.PurchaseDate, PurchasePrice = dto.PurchasePrice, WarrantyExpireDate = dto.WarrantyExpireDate, AcceptanceDate = dto.AcceptanceDate, EnableDate = dto.EnableDate, ServiceLifeYears = dto.ServiceLifeYears, ScrapDate = dto.ScrapDate, Status = dto.Status, CalibrationStatus = dto.CalibrationStatus, LastCalibrationDate = dto.LastCalibrationDate, NextCalibrationDate = dto.NextCalibrationDate, InspectionDate = dto.InspectionDate, NextInspectionDate = dto.NextInspectionDate, MaintenanceStatus = dto.MaintenanceStatus, LastMaintenanceDate = dto.LastMaintenanceDate, NextMaintenanceDate = dto.NextMaintenanceDate, Remark = dto.Remark, CreateBy = dto.CreateBy, UpdateBy = dto.UpdateBy, UpdateTime = dto.UpdateTime }; } /// /// EquipmentAttachmentDto → EquipmentAttachmentEntity /// public static EquipmentAttachmentEntity ToEntity(this EquipmentAttachmentDto dto) { if (dto == null) return null; return new EquipmentAttachmentEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, EquipmentId = dto.EquipmentId, FileName = dto.FileName, FileType = dto.FileType, FileExt = dto.FileExt, FileUrl = dto.FileUrl, FileSize = dto.FileSize, Uploader = dto.Uploader, Remark = dto.Remark }; } /// /// EquipmentCategoryDto → EquipmentCategoryEntity /// public static EquipmentCategoryEntity ToEntity(this EquipmentCategoryDto dto) { if (dto == null) return null; return new EquipmentCategoryEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, ParentId = dto.ParentId, Name = dto.Name, Code = dto.Code, Level = dto.Level, Sort = dto.Sort, Remark = dto.Remark }; } /// /// EquipmentStatusRecordDto → EquipmentStatusRecordEntity /// public static EquipmentStatusRecordEntity ToEntity(this EquipmentStatusRecordDto dto) { if (dto == null) return null; return new EquipmentStatusRecordEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, EquipmentId = dto.EquipmentId, FromStatus = dto.FromStatus, ToStatus = dto.ToStatus, ChangeTime = dto.ChangeTime, Operator = dto.Operator, Remark = dto.Remark }; } /// /// TemperatureBoxDataDto → TemperatureBoxDataEntity /// public static TemperatureBoxDataEntity ToEntity(this TemperatureBoxDataDto dto) { if (dto == null) return null; return new TemperatureBoxDataEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, DeviceCode = dto.DeviceCode, DeviceType = dto.DeviceType, DeviceTemperature = dto.DeviceTemperature, DeviceHumidity = dto.DeviceHumidity, Status = dto.Status, AlarmInfo = dto.AlarmInfo }; } /// /// AlertRuleDto → AlertRuleEntity /// public static AlertRuleEntity ToEntity(this AlertRuleDto dto) { if (dto == null) return null; return new AlertRuleEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, RuleName = dto.RuleName, DeviceType = dto.DeviceType, Metric = dto.Metric, Operator = dto.Operator, Threshold = dto.Threshold, AlarmLevel = dto.AlarmLevel, Enabled = dto.Enabled, TriggerCount = dto.TriggerCount, LastAlarmTime = dto.LastAlarmTime, Remark = dto.Remark }; } /// /// DataForwardRuleDto → DataForwardRuleEntity /// public static DataForwardRuleEntity ToEntity(this DataForwardRuleDto dto) { if (dto == null) return null; return new DataForwardRuleEntity { Id = ParseId(dto.Id), IsDel = dto.IsDel, CreateTime = dto.CreateTime, ForwardName = dto.ForwardName, SourceDeviceType = dto.SourceDeviceType, ForwardInterval = dto.ForwardInterval, NotifyType = dto.NotifyType, TargetAddress = dto.TargetAddress, Enabled = dto.Enabled, LastForwardTime = dto.LastForwardTime, Remark = dto.Remark }; } #endregion } }