/// 报表汇总数据 class ReportSummary { final double totalAmount; final int totalCount; final int approvedCount; final double approvedAmount; const ReportSummary({ this.totalAmount = 0, this.totalCount = 0, this.approvedCount = 0, this.approvedAmount = 0, }); factory ReportSummary.fromJson(Map json) { return ReportSummary( totalAmount: (json['totalAmount'] as num?)?.toDouble() ?? 0, totalCount: json['totalCount'] as int? ?? 0, approvedCount: json['approvedCount'] as int? ?? 0, approvedAmount: (json['approvedAmount'] as num?)?.toDouble() ?? 0, ); } } /// 月度报表数据 class ReportMonthlyItem { final int month; final double amount; final double approvedAmount; final int count; const ReportMonthlyItem({ this.month = 0, this.amount = 0, this.approvedAmount = 0, this.count = 0, }); factory ReportMonthlyItem.fromJson(Map json) { return ReportMonthlyItem( month: json['month'] as int? ?? 0, amount: (json['amount'] as num?)?.toDouble() ?? 0, approvedAmount: (json['approvedAmount'] as num?)?.toDouble() ?? 0, count: json['count'] as int? ?? 0, ); } } /// 报表明细项 class ReportDetailItem { final String billNo; final String? billDate; final double amount; final bool isApproved; final String reason; const ReportDetailItem({ this.billNo = '', this.billDate, this.amount = 0, this.isApproved = false, this.reason = '', }); factory ReportDetailItem.fromJson(Map json) { return ReportDetailItem( billNo: json['billNo'] as String? ?? '', billDate: json['billDate'] as String?, amount: (json['amount'] as num?)?.toDouble() ?? 0, isApproved: json['isApproved'] as bool? ?? false, reason: json['reason'] as String? ?? '', ); } } /// 报表完整数据 class ReportData { final ReportSummary summary; final List monthly; final List details; const ReportData({ this.summary = const ReportSummary(), this.monthly = const [], this.details = const [], }); factory ReportData.fromJson(Map json) { return ReportData( summary: json['summary'] != null ? ReportSummary.fromJson(json['summary'] as Map) : const ReportSummary(), monthly: (json['monthly'] as List?) ?.map((e) => ReportMonthlyItem.fromJson(e as Map)) .toList() ?? [], details: (json['details'] as List?) ?.map((e) => ReportDetailItem.fromJson(e as Map)) .toList() ?? [], ); } }