_query.dart 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  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 BreedQueryApi {
  7. static final BreedQueryApi _instance = BreedQueryApi._internal();
  8. factory BreedQueryApi() => _instance;
  9. BreedQueryApi._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 &&
  94. query['keyword'] != null &&
  95. query['keyword'].toString().isNotEmpty) {
  96. final keyword = query['keyword'].toString().toLowerCase();
  97. filteredData = _mockBatchData
  98. .where((batch) => batch.batchNum.toLowerCase().contains(keyword))
  99. .toList();
  100. }
  101. int page = query != null && query['pageNum'] != null
  102. ? query['pageNum'] as int
  103. : 1;
  104. int pageSize = query != null && query['pageSize'] != null
  105. ? query['pageSize'] as int
  106. : 10;
  107. int startIndex = (page - 1) * pageSize;
  108. int endIndex = startIndex + pageSize < filteredData.length
  109. ? startIndex + pageSize
  110. : filteredData.length;
  111. List<BatchModel> pageRows = startIndex < filteredData.length
  112. ? filteredData.sublist(startIndex, endIndex)
  113. : [];
  114. return PageResultModel<BatchModel>(
  115. rows: pageRows,
  116. total: filteredData.length,
  117. );
  118. }
  119. Future<PageResultModel<WingTagNumModel>> queryPageWingTags(
  120. dynamic query,
  121. ) async {
  122. // 模拟数据 - 注释掉原来的API调用
  123. /*final response = await ApiService().get(
  124. '/app/breeding/listWingTag',
  125. queryParameters: query,
  126. );
  127. if (response == null) return PageResultModel.empty();
  128. final List<WingTagNumModel> rows = (response['rows'] as List)
  129. .map((e) => WingTagNumModel.fromJson(e))
  130. .toList();
  131. return PageResultModel<WingTagNumModel>(
  132. rows: rows,
  133. total: response['total'],
  134. );*/
  135. // 使用预生成的模拟数据
  136. int page = query != null && query['pageNum'] != null
  137. ? query['pageNum'] as int
  138. : 1;
  139. int pageSize = query != null && query['pageSize'] != null
  140. ? query['pageSize'] as int
  141. : 10;
  142. int startIndex = (page - 1) * pageSize;
  143. int endIndex = startIndex + pageSize < _mockWingTagData.length
  144. ? startIndex + pageSize
  145. : _mockWingTagData.length;
  146. List<WingTagNumModel> pageRows = startIndex < _mockWingTagData.length
  147. ? _mockWingTagData.sublist(startIndex, endIndex)
  148. : [];
  149. return PageResultModel<WingTagNumModel>(
  150. rows: pageRows,
  151. total: _mockWingTagData.length,
  152. );
  153. }
  154. Future<List<WingTagNumModel>> queryWingTags(dynamic query) async {
  155. // 模拟数据 - 注释掉原来的API调用
  156. /*final response = await ApiService().get(
  157. '/app/breeding/listWingTag',
  158. queryParameters: query,
  159. );
  160. if (response == null) return [];
  161. return response
  162. .map<WingTagNumModel>((e) => WingTagNumModel.fromJson(e))
  163. .toList();*/
  164. // 使用预生成的模拟数据,随机返回5-10条
  165. final random = Random();
  166. final count = 5 + random.nextInt(6); // 5到10之间的随机数
  167. final indices = <int>{};
  168. // 随机选择不重复的索引
  169. while (indices.length < count) {
  170. indices.add(random.nextInt(_mockWingTagData.length));
  171. }
  172. // 根据索引获取数据
  173. return indices.map((index) => _mockWingTagData[index]).toList();
  174. }
  175. Future<PageResultModel<FamilyModel>> queryPageFamilys(dynamic query) async {
  176. // 模拟数据 - 注释掉原来的API调用
  177. /*final response = await ApiService().get(
  178. '/app/breeding/listFamily',
  179. queryParameters: query,
  180. );
  181. if (response == null) return PageResultModel.empty();
  182. final List<FamilyModel> rows = (response['rows'] as List)
  183. .map((e) => FamilyModel.fromJson(e))
  184. .toList();
  185. return PageResultModel<FamilyModel>(rows: rows, total: response['total']);*/
  186. // 使用预生成的模拟数据
  187. // 根据keyword筛选数据
  188. List<FamilyModel> filteredData = _mockFamilyData;
  189. if (query != null &&
  190. query['keyword'] != null &&
  191. query['keyword'].toString().isNotEmpty) {
  192. final keyword = query['keyword'].toString().toLowerCase();
  193. filteredData = _mockFamilyData
  194. .where((family) => family.familyNum.toLowerCase().contains(keyword))
  195. .toList();
  196. }
  197. int page = query != null && query['pageNum'] != null
  198. ? query['pageNum'] as int
  199. : 1;
  200. int pageSize = query != null && query['pageSize'] != null
  201. ? query['pageSize'] as int
  202. : 10;
  203. int startIndex = (page - 1) * pageSize;
  204. int endIndex = startIndex + pageSize < filteredData.length
  205. ? startIndex + pageSize
  206. : filteredData.length;
  207. List<FamilyModel> pageRows = startIndex < filteredData.length
  208. ? filteredData.sublist(startIndex, endIndex)
  209. : [];
  210. return PageResultModel<FamilyModel>(
  211. rows: pageRows,
  212. total: filteredData.length,
  213. );
  214. }
  215. }