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
#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
}
}