Files
flutterApp/lib/features/v2/waring_center/data/models/alarm_model.dart

156 lines
3.7 KiB
Dart

import 'package:maibu_satabot_v2/features/v2/waring_center/domain/entities/alarm_entity.dart';
import 'package:maibu_satabot_v2/features/v2/waring_center/domain/entities/alarm_count_entity.dart';
import 'package:maibu_satabot_v2/features/v2/waring_center/presentation/constants/alarm_constants.dart';
/// 告警数据模型
class AlarmModel {
AlarmModel({
required this.id,
required this.title,
required this.area,
required this.device,
required this.time,
required this.level,
required this.status,
this.aiDiagnosis,
});
final String id;
final String title;
final String area;
final String device;
final String time;
final AlarmLevel level;
final AlarmStatus status;
final String? aiDiagnosis;
/// 从 JSON 创建
factory AlarmModel.fromJson(Map<String, dynamic> json) {
return AlarmModel(
id: json['id'] as String,
title: json['title'] as String,
area: json['area'] as String,
device: json['device'] as String,
time: json['time'] as String,
level: _parseLevel(json['level'] as String),
status: _parseStatus(json['status'] as String),
aiDiagnosis: json['aiDiagnosis'] as String?,
);
}
/// 转换为 JSON
Map<String, dynamic> toJson() {
return {
'id': id,
'title': title,
'area': area,
'device': device,
'time': time,
'level': level.name,
'status': status.name,
'aiDiagnosis': aiDiagnosis,
};
}
/// 转换为实体
AlarmEntity toEntity() {
return AlarmEntity(
id: id,
title: title,
area: area,
device: device,
time: time,
level: level,
status: status,
aiDiagnosis: aiDiagnosis,
);
}
/// 从实体创建
factory AlarmModel.fromEntity(AlarmEntity entity) {
return AlarmModel(
id: entity.id,
title: entity.title,
area: entity.area,
device: entity.device,
time: entity.time,
level: entity.level,
status: entity.status,
aiDiagnosis: entity.aiDiagnosis,
);
}
static AlarmLevel _parseLevel(String level) {
switch (level) {
case 'danger':
return AlarmLevel.danger;
case 'warning':
return AlarmLevel.warning;
case 'low':
return AlarmLevel.low;
case 'info':
return AlarmLevel.info;
default:
return AlarmLevel.info;
}
}
static AlarmStatus _parseStatus(String status) {
switch (status) {
case 'unconfirmed':
return AlarmStatus.unconfirmed;
case 'confirmed':
return AlarmStatus.confirmed;
case 'recovered':
return AlarmStatus.recovered;
default:
return AlarmStatus.unconfirmed;
}
}
}
/// 告警统计数据模型
class AlarmCountModel {
AlarmCountModel({
required this.unprocessed,
required this.processing,
required this.confirmed,
required this.todayNew,
});
final int unprocessed;
final int processing;
final int confirmed;
final int todayNew;
/// 从 JSON 创建
factory AlarmCountModel.fromJson(Map<String, dynamic> json) {
return AlarmCountModel(
unprocessed: json['unprocessed'] as int,
processing: json['processing'] as int,
confirmed: json['confirmed'] as int,
todayNew: json['todayNew'] as int,
);
}
/// 转换为 JSON
Map<String, dynamic> toJson() {
return {
'unprocessed': unprocessed,
'processing': processing,
'confirmed': confirmed,
'todayNew': todayNew,
};
}
/// 转换为实体
AlarmCountEntity toEntity() {
return AlarmCountEntity(
unprocessed: unprocessed,
processing: processing,
confirmed: confirmed,
todayNew: todayNew,
);
}
}