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.ToString(), 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(); } /// /// EquipmentDto → EquipmentEntity(入参映射,用于新增/修改) /// 安全约定:IsDel/CreateTime/UpdateTime 等服务端管控字段刻意不映射,防止过度绑定(over-binding); /// Id 解析失败时为 0(新增时由雪花算法自动生成) /// public static EquipmentEntity ToEntity(this EquipmentDto dto) { if (dto == null) return null; return new EquipmentEntity { Id = long.TryParse(dto.Id, out var id) ? id : 0, Code = dto.Code, Name = dto.Name, CategoryId = long.TryParse(dto.CategoryId, out var categoryId) ? categoryId : 0, 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 }; } #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.ToString(), 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.ToString(), 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.ToString(), 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 } }