|
|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import 'package:problem_check_system/app/core/extensions/map_extensions.dart'; |
|
|
|
|
import 'package:problem_check_system/app/core/models/sync_status.dart'; |
|
|
|
|
import 'package:problem_check_system/app/features/enterprise/data/model/enterprise_model.dart'; |
|
|
|
|
|
|
|
|
|
/// EnterpriseDto (Data Transfer Object) |
|
|
|
|
@ -9,8 +10,8 @@ class EnterpriseDto {
|
|
|
|
|
final String id; |
|
|
|
|
final DateTime creationTime; |
|
|
|
|
final String creatorId; |
|
|
|
|
final DateTime lastModificationTime; |
|
|
|
|
final String lastModifierId; |
|
|
|
|
final DateTime? lastModificationTime; |
|
|
|
|
final String? lastModifierId; |
|
|
|
|
final String companyName; |
|
|
|
|
final String companyType; |
|
|
|
|
final String? companyScope; |
|
|
|
|
@ -19,7 +20,7 @@ class EnterpriseDto {
|
|
|
|
|
final String? securityPrincipalName; |
|
|
|
|
final String? securityPrincipalPhone; |
|
|
|
|
final String? companyAddress; |
|
|
|
|
final String? detail; |
|
|
|
|
final String? majorHazard; |
|
|
|
|
|
|
|
|
|
const EnterpriseDto({ |
|
|
|
|
required this.id, |
|
|
|
|
@ -35,7 +36,7 @@ class EnterpriseDto {
|
|
|
|
|
this.securityPrincipalName, |
|
|
|
|
this.securityPrincipalPhone, |
|
|
|
|
this.companyAddress, |
|
|
|
|
this.detail, |
|
|
|
|
this.majorHazard, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
/// [核心] 工厂构造函数:从您的内部模型 `EnterpriseModel` 创建 DTO。 |
|
|
|
|
@ -45,16 +46,16 @@ class EnterpriseDto {
|
|
|
|
|
return EnterpriseDto( |
|
|
|
|
id: model.id, |
|
|
|
|
creationTime: model.creationTime, |
|
|
|
|
creatorId: "", //todo 需要在企业模型中添加创建时间 |
|
|
|
|
creatorId: model.creatorId, |
|
|
|
|
lastModificationTime: model.lastModifiedTime, |
|
|
|
|
lastModifierId: "", // todo需要在企业模型中添修改用户id |
|
|
|
|
lastModifierId: model.lastModifierId, |
|
|
|
|
companyName: model.name, |
|
|
|
|
companyType: model.type, |
|
|
|
|
companyScope: model.scale, |
|
|
|
|
mainPrincipalName: model.contactPerson, |
|
|
|
|
mainPrincipalPhone: model.contactPhone, |
|
|
|
|
companyAddress: model.address, |
|
|
|
|
detail: model.majorHazardsDescription, |
|
|
|
|
majorHazard: model.majorHazardsDescription, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -66,17 +67,20 @@ class EnterpriseDto {
|
|
|
|
|
/// |
|
|
|
|
/// 当从服务器接收到 JSON 数据时,调用此方法将其转换为 Dart 对象。 |
|
|
|
|
factory EnterpriseDto.fromJson(Map<String, dynamic> json) { |
|
|
|
|
final creationTime = DateTime.parse(json['creationTime'] as String); |
|
|
|
|
final creatorId = json['creatorId'] as String; |
|
|
|
|
final lastModTimeStr = json['lastModificationTime'] as String?; |
|
|
|
|
return EnterpriseDto( |
|
|
|
|
// 必须存在的字段 |
|
|
|
|
id: json['id'] as String, |
|
|
|
|
creationTime: DateTime.parse(json['creationTime'] as String), |
|
|
|
|
creatorId: json['creatorId'] as String, |
|
|
|
|
lastModificationTime: DateTime.parse( |
|
|
|
|
json['lastModificationTime'] as String, |
|
|
|
|
), |
|
|
|
|
lastModifierId: json['lastModifierId'] as String, |
|
|
|
|
creationTime: creationTime, |
|
|
|
|
creatorId: creatorId, |
|
|
|
|
lastModificationTime: lastModTimeStr != null |
|
|
|
|
? DateTime.parse(lastModTimeStr) |
|
|
|
|
: creationTime, |
|
|
|
|
lastModifierId: json['lastModifierId'] as String? ?? creatorId, |
|
|
|
|
companyName: json['companyName'] as String, |
|
|
|
|
companyType: json['companyType'] as String, |
|
|
|
|
companyType: json['companyType'] as String? ?? "生产", |
|
|
|
|
|
|
|
|
|
// 可选字段 |
|
|
|
|
companyScope: json['companyScope'] as String?, |
|
|
|
|
@ -85,7 +89,7 @@ class EnterpriseDto {
|
|
|
|
|
securityPrincipalName: json['securityPrincipalName'] as String?, |
|
|
|
|
securityPrincipalPhone: json['securityPrincipalPhone'] as String?, |
|
|
|
|
companyAddress: json['companyAddress'] as String?, |
|
|
|
|
detail: json['detail'] as String?, |
|
|
|
|
majorHazard: json['majorHazard'] as String?, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -98,7 +102,7 @@ class EnterpriseDto {
|
|
|
|
|
// 使用 toIso8601String() 是将 DateTime 转换为标准化字符串的最佳实践 |
|
|
|
|
'creationTime': creationTime.toIso8601String(), |
|
|
|
|
'creatorId': creatorId, |
|
|
|
|
'lastModificationTime': lastModificationTime.toIso8601String(), |
|
|
|
|
'lastModificationTime': lastModificationTime?.toIso8601String(), |
|
|
|
|
'lastModifierId': lastModifierId, |
|
|
|
|
'companyName': companyName, |
|
|
|
|
'companyType': companyType, |
|
|
|
|
@ -108,8 +112,30 @@ class EnterpriseDto {
|
|
|
|
|
'securityPrincipalName': securityPrincipalName, |
|
|
|
|
'securityPrincipalPhone': securityPrincipalPhone, |
|
|
|
|
'companyAddress': companyAddress, |
|
|
|
|
'detail': detail, |
|
|
|
|
'majorHazard': majorHazard, |
|
|
|
|
}; |
|
|
|
|
return jsonMap.withoutNullOrEmptyValues; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// [核心] 将 DTO (网络数据) 转换为 Model (本地/业务模型)。 |
|
|
|
|
/// |
|
|
|
|
/// 这个转换是数据流入应用内部的关键步骤。 |
|
|
|
|
EnterpriseModel toModel() { |
|
|
|
|
return EnterpriseModel( |
|
|
|
|
id: id, |
|
|
|
|
// DTO 中没有 syncStatus,因为从服务器来的数据我们默认为已同步 |
|
|
|
|
syncStatus: SyncStatus.synced, |
|
|
|
|
lastModifiedTime: lastModificationTime ?? creationTime, |
|
|
|
|
lastModifierId: lastModifierId ?? creatorId, |
|
|
|
|
creationTime: creationTime, |
|
|
|
|
creatorId: creatorId, |
|
|
|
|
name: companyName, |
|
|
|
|
type: companyType, |
|
|
|
|
address: companyAddress, |
|
|
|
|
scale: companyScope, |
|
|
|
|
contactPerson: mainPrincipalName, |
|
|
|
|
contactPhone: mainPrincipalPhone, |
|
|
|
|
majorHazardsDescription: majorHazard, |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|