_submit.dart 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  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. import 'package:chicken_farm/modes/api/result_model.dart';
  6. class BreedSubmitApi {
  7. static final BreedSubmitApi _instance = BreedSubmitApi._internal();
  8. factory BreedSubmitApi() => _instance;
  9. BreedSubmitApi._internal();
  10. Future<ResultModel> bindChicken(dynamic data) async {
  11. try {
  12. if (AppConfig.isOffline) {
  13. return await bindChickenOffline(data);
  14. } else {
  15. return await ApiService().postWithOfflineSupport(
  16. '/app/breeding/create/',
  17. data: data,
  18. apiOption: ApiOption.noAlert(),
  19. );
  20. }
  21. } catch (e) {
  22. return ResultModel(success: false, message: e.toString(), data: null);
  23. }
  24. }
  25. Future<ResultModel> bindChickenOffline(dynamic data) async {
  26. // 保存到本地数据库
  27. List<Map<String, dynamic>> list = data.map<Map<String, dynamic>>((item) {
  28. return {
  29. 'rfid': item['rfid'],
  30. 'batch_num': item['batchNum'],
  31. 'family_id': item['familyId'],
  32. 'date': item['date'],
  33. 'is_export': 0,
  34. };
  35. }).toList();
  36. if (await BreedingDataService().batchInsertChicken(list)) {
  37. return ResultModel.success('数据保存成功');
  38. } else {
  39. return ResultModel.fail('数据保存失败');
  40. }
  41. }
  42. Future<ResultModel> cageChange(dynamic data) async {
  43. try {
  44. if (AppConfig.isOffline) {
  45. return await cageChangeOffline(data);
  46. }
  47. return await ApiService().postWithOfflineSupport(
  48. '/app/breeding/cageChange/',
  49. data: data,
  50. apiOption: ApiOption.noAlert(),
  51. );
  52. } catch (e) {
  53. return ResultModel(success: false, message: e.toString(), data: null);
  54. }
  55. }
  56. Future<ResultModel> cageChangeOffline(dynamic data) async {
  57. // 保存到本地数据库
  58. final ids = data['rfids'] as List<String>;
  59. List<Map<String, dynamic>> list = ids.map<Map<String, dynamic>>((id) {
  60. return {
  61. 'rfid': id,
  62. 'target_cage': data['targetCage'],
  63. 'date': data['date'],
  64. 'is_export': 0,
  65. };
  66. }).toList();
  67. if (await BreedingDataService().batchInsertCageChange(list)) {
  68. return ResultModel.success('数据保存成功');
  69. } else {
  70. return ResultModel.fail('数据保存失败');
  71. }
  72. }
  73. Future<ResultModel> weight(dynamic data) async {
  74. try {
  75. if (AppConfig.isOffline) {
  76. return await weightOffline(data);
  77. }
  78. return await ApiService().postWithOfflineSupport(
  79. '/app/breeding/weight/',
  80. data: data,
  81. apiOption: ApiOption.noAlert(),
  82. );
  83. } catch (e) {
  84. return ResultModel(success: false, message: e.toString(), data: null);
  85. }
  86. }
  87. Future<ResultModel> weightOffline(dynamic data) async {
  88. // 保存到本地数据库
  89. Map<String, dynamic> weightData = {
  90. 'rfid': data['rfid'],
  91. 'weight': data['weight'],
  92. 'date': data['date'],
  93. 'is_export': 0,
  94. };
  95. if (await BreedingDataService().insertWeight(weightData)) {
  96. return ResultModel.success('数据保存成功');
  97. } else {
  98. return ResultModel.fail('数据保存失败');
  99. }
  100. }
  101. Future<ResultModel> cull(dynamic data) async {
  102. try {
  103. if (AppConfig.isOffline) {
  104. return await cullOffline(data);
  105. }
  106. return await ApiService().postWithOfflineSupport(
  107. '/app/breeding/cull/',
  108. data: data,
  109. apiOption: ApiOption.noAlert(),
  110. );
  111. } catch (e) {
  112. return ResultModel(success: false, message: e.toString(), data: null);
  113. }
  114. }
  115. Future<ResultModel> cullOffline(dynamic data) async {
  116. // 保存到本地数据库
  117. Map<String, dynamic> cullData = {
  118. 'rfid': data['rfid'],
  119. 'cull_reason': data['cullReason'],
  120. 'disposal_method': data['disposalMethod'],
  121. 'date': data['date'],
  122. 'is_export': 0,
  123. };
  124. if (await BreedingDataService().insertCull(cullData)) {
  125. return ResultModel.success('数据保存成功');
  126. } else {
  127. return ResultModel.fail('数据保存失败');
  128. }
  129. }
  130. Future<ResultModel> batchCull(dynamic data) async {
  131. try {
  132. if (AppConfig.isOffline) {
  133. return await batchCullOffline(data);
  134. }
  135. return await ApiService().postWithOfflineSupport(
  136. '/app/breeding/batchCull/',
  137. data: data,
  138. apiOption: ApiOption.noAlert(),
  139. );
  140. } catch (e) {
  141. return ResultModel(success: false, message: e.toString(), data: null);
  142. }
  143. }
  144. Future<ResultModel> batchCullOffline(dynamic data) async {
  145. List<String> ids = data['rfids'];
  146. List<Map<String, dynamic>> batchCullData = ids.map<Map<String, dynamic>>((
  147. id,
  148. ) {
  149. return {
  150. 'rfid': id,
  151. 'cull_reason': data['cullReason'],
  152. 'disposal_method': data['disposalMethod'],
  153. 'date': data['date'],
  154. 'is_export': 0,
  155. };
  156. }).toList();
  157. if (await BreedingDataService().batchInsertCull(batchCullData)) {
  158. return ResultModel.success('数据保存成功');
  159. } else {
  160. return ResultModel.fail('数据保存失败');
  161. }
  162. }
  163. }