import 'package:chicken_farm/core/api/api_option.dart'; import 'package:chicken_farm/core/api/api_service.dart'; import 'package:chicken_farm/core/config/app_config.dart'; import 'package:chicken_farm/core/services/breeding_data_service.dart'; class BreedSubmitApi { static final BreedSubmitApi _instance = BreedSubmitApi._internal(); factory BreedSubmitApi() => _instance; BreedSubmitApi._internal(); Future bindChicken(dynamic data) async { if (AppConfig.isOffline) { return await bindChickenOffline(data); } else { return (await ApiService().postWithOfflineSupport( '/app/breeding/create/', data: data, apiOption: ApiOption.noAlert(), )).check(); } } Future bindChickenOffline(dynamic data) async { // 保存到本地数据库 Map bindData = { 'rfid': data['rfid'], 'batch_num': data['batchNum'], 'family_id': data['familyId'], 'date': data['date'], 'is_export': 0, }; await BreedingDataService().insertChicken(bindData); return {'success': true, 'message': '数据已保存到本地'}; } Future cageChange(dynamic data) async { if (AppConfig.isOffline) { return await cageChangeOffline(data); } return (await ApiService().postWithOfflineSupport( '/app/breeding/cageChange/', data: data, apiOption: ApiOption.noAlert(), )).check(); } Future cageChangeOffline(dynamic data) async { // 保存到本地数据库 Map changeData = { 'rfid': data['rfid'], 'source_cage': data['sourceCage'], 'target_cage': data['targetCage'], 'date': data['date'], 'is_export': 0, }; await BreedingDataService().insertCageChange(changeData); return {'success': true, 'message': '数据已保存到本地'}; } Future weight(dynamic data) async { if (AppConfig.isOffline) { return await weightOffline(data); } return (await ApiService().postWithOfflineSupport( '/app/breeding/weight/', data: data, apiOption: ApiOption.noAlert(), )).check(); } Future weightOffline(dynamic data) async { // 保存到本地数据库 Map cullData = { 'rfid': data['rfid'], 'weight': data['weight'], 'date': data['date'], 'is_export': 0, }; await BreedingDataService().insertCull(cullData); await BreedingDataService().insertWeight(data as Map); return {'success': true, 'message': '数据已保存到本地'}; } Future cull(dynamic data) async { if (AppConfig.isOffline) { return await cullOffline(data); } return (await ApiService().postWithOfflineSupport( '/app/breeding/cull/', data: data, apiOption: ApiOption.noAlert(), )).check(); } Future cullOffline(dynamic data) async { // 保存到本地数据库 Map cullData = { 'rfid': data['rfid'], 'cull_reason': data['cullReason'], 'disposal_method': data['disposalMethod'], 'date': data['date'], 'is_export': 0, }; await BreedingDataService().insertCull(cullData); return {'success': true, 'message': '数据已保存到本地'}; } Future batchCull(dynamic data) async { if (AppConfig.isOffline) { return await batchCullOffline(data); } return (await ApiService().postWithOfflineSupport( '/app/breeding/batchCull/', data: data, apiOption: ApiOption.noAlert(), )).check(); } Future batchCullOffline(dynamic data) async { List ids = data['rfids']; List> batchCullData = ids.map((id) { return { 'rfid': id, 'cull_time': data['cull_time'], 'cull_reason': data['cull_reason'], 'date': data['date'], 'is_export': 0, }; }).toList(); await BreedingDataService().batchInsertCull(batchCullData); return {'success': true, 'message': '数据已保存到本地'}; } }