120 lines
3.5 KiB
Dart
120 lines
3.5 KiB
Dart
import 'package:maibu_satabot_v2/features/v2/home/domain/entities/home_entity.dart';
|
|
|
|
class HomeDataModel extends HomeEntity {
|
|
const HomeDataModel({
|
|
required super.plantName,
|
|
required super.realTimePower,
|
|
required super.todayGeneration,
|
|
required super.equivalentHours,
|
|
required super.pendingWorkOrders,
|
|
required super.weather,
|
|
required super.alarmCount,
|
|
required super.workOrderStats,
|
|
required super.powerTrendData,
|
|
required super.plantOverview,
|
|
});
|
|
|
|
factory HomeDataModel.fromJson(Map<String, dynamic> json) {
|
|
return HomeDataModel(
|
|
plantName: json['plantName'] as String,
|
|
realTimePower: (json['realTimePower'] as num).toDouble(),
|
|
todayGeneration: (json['todayGeneration'] as num).toDouble(),
|
|
equivalentHours: (json['equivalentHours'] as num).toDouble(),
|
|
pendingWorkOrders: json['pendingWorkOrders'] as int,
|
|
weather: WeatherInfo.fromJson(json['weather']),
|
|
alarmCount: json['alarmCount'] as int,
|
|
workOrderStats: WorkOrderStats.fromJson(json['workOrderStats']),
|
|
powerTrendData: (json['powerTrendData'] as List)
|
|
.map((e) => PowerTrendPoint.fromJson(e))
|
|
.toList(),
|
|
plantOverview: PlantOverview.fromJson(json['plantOverview']),
|
|
);
|
|
}
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'plantName': plantName,
|
|
'realTimePower': realTimePower,
|
|
'todayGeneration': todayGeneration,
|
|
'equivalentHours': equivalentHours,
|
|
'pendingWorkOrders': pendingWorkOrders,
|
|
'weather': weather.toJson(),
|
|
'alarmCount': alarmCount,
|
|
'workOrderStats': workOrderStats.toJson(),
|
|
'powerTrendData': powerTrendData.map((e) => e.toJson()).toList(),
|
|
'plantOverview': plantOverview.toJson(),
|
|
};
|
|
}
|
|
|
|
HomeEntity toEntity() {
|
|
return HomeEntity(
|
|
plantName: plantName,
|
|
realTimePower: realTimePower,
|
|
todayGeneration: todayGeneration,
|
|
equivalentHours: equivalentHours,
|
|
pendingWorkOrders: pendingWorkOrders,
|
|
weather: weather,
|
|
alarmCount: alarmCount,
|
|
workOrderStats: workOrderStats,
|
|
powerTrendData: powerTrendData,
|
|
plantOverview: plantOverview,
|
|
);
|
|
}
|
|
|
|
factory HomeDataModel.fromEntity(HomeEntity entity) {
|
|
return HomeDataModel(
|
|
plantName: entity.plantName,
|
|
realTimePower: entity.realTimePower,
|
|
todayGeneration: entity.todayGeneration,
|
|
equivalentHours: entity.equivalentHours,
|
|
pendingWorkOrders: entity.pendingWorkOrders,
|
|
weather: entity.weather,
|
|
alarmCount: entity.alarmCount,
|
|
workOrderStats: entity.workOrderStats,
|
|
powerTrendData: entity.powerTrendData,
|
|
plantOverview: entity.plantOverview,
|
|
);
|
|
}
|
|
}
|
|
|
|
extension WeatherInfoModelX on WeatherInfo {
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'condition': condition,
|
|
'tempMin': tempMin,
|
|
'tempMax': tempMax,
|
|
'windDirection': windDirection,
|
|
'windLevel': windLevel,
|
|
};
|
|
}
|
|
}
|
|
|
|
extension WorkOrderStatsModelX on WorkOrderStats {
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'pending': pending,
|
|
'processing': processing,
|
|
'pendingAcceptance': pendingAcceptance,
|
|
};
|
|
}
|
|
}
|
|
|
|
extension PlantOverviewModelX on PlantOverview {
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'installedCapacity': installedCapacity,
|
|
'commissionDate': commissionDate,
|
|
'backgroundImage': backgroundImage,
|
|
};
|
|
}
|
|
}
|
|
|
|
extension PowerTrendPointModelX on PowerTrendPoint {
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'time': time,
|
|
'power': power,
|
|
};
|
|
}
|
|
}
|