_batch.dart 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. import 'dart:math';
  2. import 'package:chicken_farm/modes/breeding/batch.dart';
  3. import 'package:chicken_farm/modes/breeding/family.dart';
  4. import 'package:chicken_farm/modes/breeding/wing_tag_num.dart';
  5. import 'package:chicken_farm/modes/page/page_model.dart';
  6. class BatchApi {
  7. static final BatchApi _instance = BatchApi._internal();
  8. factory BatchApi() => _instance;
  9. BatchApi._internal();
  10. // 预生成的批次模拟数据,仅包含必填字段
  11. static final List<BatchModel> _mockBatchData = [
  12. BatchModel(batchNum: 'BATCH001', batchName: '批次一号'),
  13. BatchModel(batchNum: 'BATCH002', batchName: '批次二号'),
  14. BatchModel(batchNum: 'BATCH003', batchName: '批次三号'),
  15. BatchModel(batchNum: 'BATCH004', batchName: '批次四号'),
  16. BatchModel(batchNum: 'BATCH005', batchName: '批次五号'),
  17. BatchModel(batchNum: 'BATCH006', batchName: '批次六号'),
  18. BatchModel(batchNum: 'BATCH007', batchName: '批次七号'),
  19. BatchModel(batchNum: 'BATCH008', batchName: '批次八号'),
  20. BatchModel(batchNum: 'BATCH009', batchName: '批次九号'),
  21. BatchModel(batchNum: 'BATCH010', batchName: '批次十号'),
  22. BatchModel(batchNum: 'BATCH011', batchName: '批次十一号'),
  23. BatchModel(batchNum: 'BATCH012', batchName: '批次十二号'),
  24. BatchModel(batchNum: 'BATCH013', batchName: '批次十三号'),
  25. BatchModel(batchNum: 'BATCH014', batchName: '批次十四号'),
  26. BatchModel(batchNum: 'BATCH015', batchName: '批次十五号'),
  27. BatchModel(batchNum: 'BATCH016', batchName: '批次十六号'),
  28. BatchModel(batchNum: 'BATCH017', batchName: '批次十七号'),
  29. BatchModel(batchNum: 'BATCH018', batchName: '批次十八号'),
  30. BatchModel(batchNum: 'BATCH019', batchName: '批次十九号'),
  31. BatchModel(batchNum: 'BATCH020', batchName: '批次二十号'),
  32. ];
  33. // 预生成的翅号模拟数据,仅包含必填字段
  34. static final List<WingTagNumModel> _mockWingTagData = [
  35. WingTagNumModel(wingTagNum: 'WING0001'),
  36. WingTagNumModel(wingTagNum: 'WING0002'),
  37. WingTagNumModel(wingTagNum: 'WING0003'),
  38. WingTagNumModel(wingTagNum: 'WING0004'),
  39. WingTagNumModel(wingTagNum: 'WING0005'),
  40. WingTagNumModel(wingTagNum: 'WING0006'),
  41. WingTagNumModel(wingTagNum: 'WING0007'),
  42. WingTagNumModel(wingTagNum: 'WING0008'),
  43. WingTagNumModel(wingTagNum: 'WING0009'),
  44. WingTagNumModel(wingTagNum: 'WING0010'),
  45. WingTagNumModel(wingTagNum: 'WING0011'),
  46. WingTagNumModel(wingTagNum: 'WING0012'),
  47. WingTagNumModel(wingTagNum: 'WING0013'),
  48. WingTagNumModel(wingTagNum: 'WING0014'),
  49. WingTagNumModel(wingTagNum: 'WING0015'),
  50. WingTagNumModel(wingTagNum: 'WING0016'),
  51. WingTagNumModel(wingTagNum: 'WING0017'),
  52. WingTagNumModel(wingTagNum: 'WING0018'),
  53. WingTagNumModel(wingTagNum: 'WING0019'),
  54. WingTagNumModel(wingTagNum: 'WING0020'),
  55. ];
  56. // 预生成的家系模拟数据,仅包含必填字段
  57. static final List<FamilyModel> _mockFamilyData = [
  58. FamilyModel(id: 1, familyNum: 'FAM001'),
  59. FamilyModel(id: 2, familyNum: 'FAM002'),
  60. FamilyModel(id: 3, familyNum: 'FAM003'),
  61. FamilyModel(id: 4, familyNum: 'FAM004'),
  62. FamilyModel(id: 5, familyNum: 'FAM005'),
  63. FamilyModel(id: 6, familyNum: 'FAM006'),
  64. FamilyModel(id: 7, familyNum: 'FAM007'),
  65. FamilyModel(id: 8, familyNum: 'FAM008'),
  66. FamilyModel(id: 9, familyNum: 'FAM009'),
  67. FamilyModel(id: 10, familyNum: 'FAM010'),
  68. FamilyModel(id: 11, familyNum: 'FAM011'),
  69. FamilyModel(id: 12, familyNum: 'FAM012'),
  70. FamilyModel(id: 13, familyNum: 'FAM013'),
  71. FamilyModel(id: 14, familyNum: 'FAM014'),
  72. FamilyModel(id: 15, familyNum: 'FAM015'),
  73. FamilyModel(id: 16, familyNum: 'FAM016'),
  74. FamilyModel(id: 17, familyNum: 'FAM017'),
  75. FamilyModel(id: 18, familyNum: 'FAM018'),
  76. FamilyModel(id: 19, familyNum: 'FAM019'),
  77. FamilyModel(id: 20, familyNum: 'FAM020'),
  78. ];
  79. Future<PageResultModel<BatchModel>> queryPageBatchs(dynamic query) async {
  80. // 模拟数据 - 注释掉原来的API调用
  81. /*final response = await ApiService().get(
  82. '/app/breeding/listBatch',
  83. queryParameters: query,
  84. );
  85. if (response == null) return PageResultModel.empty();
  86. final List<BatchModel> rows = (response['rows'] as List)
  87. .map((e) => BatchModel.fromJson(e))
  88. .toList();
  89. return PageResultModel<BatchModel>(rows: rows, total: response['total']);*/
  90. // 使用预生成的模拟数据
  91. // 根据keyword筛选数据
  92. List<BatchModel> filteredData = _mockBatchData;
  93. if (query != null && query['keyword'] != null && query['keyword'].toString().isNotEmpty) {
  94. final keyword = query['keyword'].toString().toLowerCase();
  95. filteredData = _mockBatchData.where((batch) =>
  96. batch.batchNum.toLowerCase().contains(keyword)).toList();
  97. }
  98. int page = query != null && query['pageNum'] != null
  99. ? query['pageNum'] as int
  100. : 1;
  101. int pageSize = query != null && query['pageSize'] != null
  102. ? query['pageSize'] as int
  103. : 10;
  104. int startIndex = (page - 1) * pageSize;
  105. int endIndex = startIndex + pageSize < filteredData.length
  106. ? startIndex + pageSize
  107. : filteredData.length;
  108. List<BatchModel> pageRows = startIndex < filteredData.length
  109. ? filteredData.sublist(startIndex, endIndex)
  110. : [];
  111. return PageResultModel<BatchModel>(
  112. rows: pageRows,
  113. total: filteredData.length,
  114. );
  115. }
  116. Future<PageResultModel<WingTagNumModel>> queryPageWingTags(
  117. dynamic query,
  118. ) async {
  119. // 模拟数据 - 注释掉原来的API调用
  120. /*final response = await ApiService().get(
  121. '/app/breeding/listWingTag',
  122. queryParameters: query,
  123. );
  124. if (response == null) return PageResultModel.empty();
  125. final List<WingTagNumModel> rows = (response['rows'] as List)
  126. .map((e) => WingTagNumModel.fromJson(e))
  127. .toList();
  128. return PageResultModel<WingTagNumModel>(
  129. rows: rows,
  130. total: response['total'],
  131. );*/
  132. // 使用预生成的模拟数据
  133. int page = query != null && query['pageNum'] != null
  134. ? query['pageNum'] as int
  135. : 1;
  136. int pageSize = query != null && query['pageSize'] != null
  137. ? query['pageSize'] as int
  138. : 10;
  139. int startIndex = (page - 1) * pageSize;
  140. int endIndex = startIndex + pageSize < _mockWingTagData.length
  141. ? startIndex + pageSize
  142. : _mockWingTagData.length;
  143. List<WingTagNumModel> pageRows = startIndex < _mockWingTagData.length
  144. ? _mockWingTagData.sublist(startIndex, endIndex)
  145. : [];
  146. return PageResultModel<WingTagNumModel>(
  147. rows: pageRows,
  148. total: _mockWingTagData.length,
  149. );
  150. }
  151. Future<List<WingTagNumModel>> queryWingTags(dynamic query) async {
  152. // 模拟数据 - 注释掉原来的API调用
  153. /*final response = await ApiService().get(
  154. '/app/breeding/listWingTag',
  155. queryParameters: query,
  156. );
  157. if (response == null) return [];
  158. return response
  159. .map<WingTagNumModel>((e) => WingTagNumModel.fromJson(e))
  160. .toList();*/
  161. // 使用预生成的模拟数据,随机返回5-10条
  162. final random = Random();
  163. final count = 5 + random.nextInt(6); // 5到10之间的随机数
  164. final indices = <int>{};
  165. // 随机选择不重复的索引
  166. while (indices.length < count) {
  167. indices.add(random.nextInt(_mockWingTagData.length));
  168. }
  169. // 根据索引获取数据
  170. return indices.map((index) => _mockWingTagData[index]).toList();
  171. }
  172. Future<PageResultModel<FamilyModel>> queryPageFamilys(dynamic query) async {
  173. // 模拟数据 - 注释掉原来的API调用
  174. /*final response = await ApiService().get(
  175. '/app/breeding/listFamily',
  176. queryParameters: query,
  177. );
  178. if (response == null) return PageResultModel.empty();
  179. final List<FamilyModel> rows = (response['rows'] as List)
  180. .map((e) => FamilyModel.fromJson(e))
  181. .toList();
  182. return PageResultModel<FamilyModel>(rows: rows, total: response['total']);*/
  183. // 使用预生成的模拟数据
  184. // 根据keyword筛选数据
  185. List<FamilyModel> filteredData = _mockFamilyData;
  186. if (query != null && query['keyword'] != null && query['keyword'].toString().isNotEmpty) {
  187. final keyword = query['keyword'].toString().toLowerCase();
  188. filteredData = _mockFamilyData.where((family) =>
  189. family.familyNum.toLowerCase().contains(keyword)).toList();
  190. }
  191. int page = query != null && query['pageNum'] != null
  192. ? query['pageNum'] as int
  193. : 1;
  194. int pageSize = query != null && query['pageSize'] != null
  195. ? query['pageSize'] as int
  196. : 10;
  197. int startIndex = (page - 1) * pageSize;
  198. int endIndex = startIndex + pageSize < filteredData.length
  199. ? startIndex + pageSize
  200. : filteredData.length;
  201. List<FamilyModel> pageRows = startIndex < filteredData.length
  202. ? filteredData.sublist(startIndex, endIndex)
  203. : [];
  204. return PageResultModel<FamilyModel>(
  205. rows: pageRows,
  206. total: filteredData.length,
  207. );
  208. }
  209. }