work_bench_service.dart 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import 'package:path/path.dart' as path;
  2. import 'package:sino_med_cloud/core/utils/logger.dart';
  3. import '../../../core/constants/api_constants.dart';
  4. import '../../../core/network/dio_client.dart';
  5. import '../data/today_overview_model.dart';
  6. import '../data/today_patient_model.dart';
  7. import '../data/today_wait_model.dart';
  8. class WorkBenchService {
  9. // 获取今日概况数据
  10. static Future<TodayOverviewModel> getTodayOverview() async {
  11. try {
  12. final response = await DioClient.get<Map<String, dynamic>>(
  13. path.join(ApiConstants.baseUrl, ApiConstants.getTodayOverview),
  14. fromJsonT: (json) => json as Map<String, dynamic>,
  15. );
  16. if (response.success && response.code == 20000) {
  17. AppLogger.d('获取今日概况成功: ${response.data}');
  18. final jsonData = response.data!;
  19. // 解析为 TodayOverviewModel
  20. final todayOverviewModel = TodayOverviewModel.fromJson(jsonData);
  21. return todayOverviewModel;
  22. } else {
  23. final errorMsg = response.msg ?? '获取今日概况失败';
  24. AppLogger.d('获取今日概况失败: $errorMsg');
  25. throw Exception(errorMsg);
  26. }
  27. } catch (e) {
  28. AppLogger.e('获取今日概况错误', e);
  29. rethrow;
  30. }
  31. }
  32. // 获取今日代办数据
  33. static Future<TodayWaitModel> getTodayWait() async {
  34. try {
  35. final response = await DioClient.get<Map<String, dynamic>>(
  36. path.join(ApiConstants.baseUrl, ApiConstants.getTodayWait),
  37. fromJsonT: (json) => json as Map<String, dynamic>,
  38. );
  39. if (response.success && response.code == 20000) {
  40. AppLogger.d('获取今日代办成功: ${response.data}');
  41. final jsonData = response.data!;
  42. // 解析为 TodayOverviewModel
  43. final todayOverviewModel = TodayWaitModel.fromJson(jsonData);
  44. return todayOverviewModel;
  45. } else {
  46. final errorMsg = response.msg ?? '获取今日代办失败';
  47. AppLogger.d('获取今日代办失败: $errorMsg');
  48. throw Exception(errorMsg);
  49. }
  50. } catch (e) {
  51. AppLogger.e('获取今日代办错误', e);
  52. rethrow;
  53. }
  54. }
  55. // 获取今日患者数据
  56. static Future<List<TodayPatientModel>> getTodayPatient({
  57. required int limit,
  58. required int offset,
  59. String? search,
  60. String? nameOrMobile
  61. }) async {
  62. try {
  63. // 构建查询参数
  64. final queryParameters = <String, dynamic>{
  65. 'limit': limit,
  66. 'offset': offset,
  67. };
  68. if (search != null && search.isNotEmpty) {
  69. queryParameters['search'] = search;
  70. }
  71. if (nameOrMobile != null && nameOrMobile.isNotEmpty) {
  72. queryParameters['name_or_mobile'] = nameOrMobile;
  73. }
  74. final response = await DioClient.getList<TodayPatientModel>(
  75. path.join(ApiConstants.baseUrl, ApiConstants.getTodayPatient),
  76. fromJsonT: (json) => TodayPatientModel.fromJson(json as Map<String, dynamic>),
  77. queryParameters: queryParameters,
  78. );
  79. if (response.success && response.code == 20000) {
  80. AppLogger.d('获取今日患者成功,共 ${response.data.count} 条,返回 ${response.data.results.length} 条');
  81. return response.data.results;
  82. } else {
  83. final errorMsg = response.msg ?? '获取今日患者失败';
  84. AppLogger.d('获取今日患者失败: $errorMsg');
  85. throw Exception(errorMsg);
  86. }
  87. } catch (e) {
  88. AppLogger.e('获取今日患者错误', e);
  89. rethrow;
  90. }
  91. }
  92. }