_submit.dart 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import 'package:chicken_farm/core/api/api_option.dart';
  2. import 'package:chicken_farm/core/api/api_service.dart';
  3. import 'package:chicken_farm/core/config/app_config.dart';
  4. import 'package:chicken_farm/core/services/breeding_data_service.dart';
  5. class BreedSubmitApi {
  6. static final BreedSubmitApi _instance = BreedSubmitApi._internal();
  7. factory BreedSubmitApi() => _instance;
  8. BreedSubmitApi._internal();
  9. Future<dynamic> bindChicken(dynamic data) async {
  10. if (AppConfig.isOffline) {
  11. return await bindChickenOffline(data);
  12. } else {
  13. return (await ApiService().postWithOfflineSupport(
  14. '/app/breeding/create/',
  15. data: data,
  16. apiOption: ApiOption.noAlert(),
  17. )).check();
  18. }
  19. }
  20. Future<dynamic> bindChickenOffline(dynamic data) async {
  21. // 保存到本地数据库
  22. Map<String, dynamic> bindData = {
  23. 'rfid': data['rfid'],
  24. 'batch_num': data['batchNum'],
  25. 'family_id': data['familyId'],
  26. 'date': data['date'],
  27. 'is_export': 0,
  28. };
  29. await BreedingDataService().insertChicken(bindData);
  30. return {'success': true, 'message': '数据已保存到本地'};
  31. }
  32. Future<dynamic> cageChange(dynamic data) async {
  33. if (AppConfig.isOffline) {
  34. return await cageChangeOffline(data);
  35. }
  36. return (await ApiService().postWithOfflineSupport(
  37. '/app/breeding/cageChange/',
  38. data: data,
  39. apiOption: ApiOption.noAlert(),
  40. )).check();
  41. }
  42. Future<dynamic> cageChangeOffline(dynamic data) async {
  43. // 保存到本地数据库
  44. Map<String, dynamic> changeData = {
  45. 'rfid': data['rfid'],
  46. 'source_cage': data['sourceCage'],
  47. 'target_cage': data['targetCage'],
  48. 'date': data['date'],
  49. 'is_export': 0,
  50. };
  51. await BreedingDataService().insertCageChange(changeData);
  52. return {'success': true, 'message': '数据已保存到本地'};
  53. }
  54. Future<dynamic> weight(dynamic data) async {
  55. if (AppConfig.isOffline) {
  56. return await weightOffline(data);
  57. }
  58. return (await ApiService().postWithOfflineSupport(
  59. '/app/breeding/weight/',
  60. data: data,
  61. apiOption: ApiOption.noAlert(),
  62. )).check();
  63. }
  64. Future<dynamic> weightOffline(dynamic data) async {
  65. // 保存到本地数据库
  66. Map<String, dynamic> cullData = {
  67. 'rfid': data['rfid'],
  68. 'weight': data['weight'],
  69. 'date': data['date'],
  70. 'is_export': 0,
  71. };
  72. await BreedingDataService().insertCull(cullData);
  73. await BreedingDataService().insertWeight(data as Map<String, dynamic>);
  74. return {'success': true, 'message': '数据已保存到本地'};
  75. }
  76. Future<dynamic> cull(dynamic data) async {
  77. if (AppConfig.isOffline) {
  78. return await cullOffline(data);
  79. }
  80. return (await ApiService().postWithOfflineSupport(
  81. '/app/breeding/cull/',
  82. data: data,
  83. apiOption: ApiOption.noAlert(),
  84. )).check();
  85. }
  86. Future<dynamic> cullOffline(dynamic data) async {
  87. // 保存到本地数据库
  88. Map<String, dynamic> cullData = {
  89. 'rfid': data['rfid'],
  90. 'cull_reason': data['cullReason'],
  91. 'disposal_method': data['disposalMethod'],
  92. 'date': data['date'],
  93. 'is_export': 0,
  94. };
  95. await BreedingDataService().insertCull(cullData);
  96. return {'success': true, 'message': '数据已保存到本地'};
  97. }
  98. Future<dynamic> batchCull(dynamic data) async {
  99. if (AppConfig.isOffline) {
  100. return await batchCullOffline(data);
  101. }
  102. return (await ApiService().postWithOfflineSupport(
  103. '/app/breeding/batchCull/',
  104. data: data,
  105. apiOption: ApiOption.noAlert(),
  106. )).check();
  107. }
  108. Future<dynamic> batchCullOffline(dynamic data) async {
  109. List<String> ids = data['rfids'];
  110. List<Map<String, dynamic>> batchCullData = ids.map((id) {
  111. return {
  112. 'rfid': id,
  113. 'cull_time': data['cull_time'],
  114. 'cull_reason': data['cull_reason'],
  115. 'date': data['date'],
  116. 'is_export': 0,
  117. };
  118. }).toList();
  119. await BreedingDataService().batchInsertCull(batchCullData);
  120. return {'success': true, 'message': '数据已保存到本地'};
  121. }
  122. }