import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'meeting_task_service.dart'; import 'meeting_task_service2.dart'; /// 会议助手任务服务聚合器(统一列表与状态) class MeetingTaskAggregator extends GetxService { final GetStorage _storage = GetStorage(); final MeetingTaskService s1 = Get.find(); final MeetingTaskService2 s2 = Get.find(); RxList taskFinishList = [].obs; RxInt tasktype = 1.obs; int meetingId = 0; List textList = []; Worker? _w1; Worker? _w2; Worker? _wTasktype; @override void onInit() { super.onInit(); _w1 = ever(s1.taskFinishList, (_) => _rebuild()); _w2 = ever(s2.taskFinishList, (_) => _rebuild()); _rebuild(); } void setMeeting(int id) { meetingId = id; final String svc = (_storage.read("meeting_service_type_$id") ?? '').toString(); final bool isFast = svc == 'fast'; _wTasktype?.dispose(); if (isFast) { _wTasktype = ever(s2.tasktype, (value) { tasktype.value = value; if (value == 2) { textList = s2.textList; } }); } else { _wTasktype = ever(s1.tasktype, (value) { tasktype.value = value; if (value == 2) { textList = s1.textList; } }); } } void clearMeeting() { meetingId = 0; _wTasktype?.dispose(); _wTasktype = null; } void _rebuild() { final Set ids = {}; for (var e in s1.taskFinishList) { if (e is Map && e['id'] is int) ids.add(e['id'] as int); } for (var e in s2.taskFinishList) { if (e is Map && e['id'] is int) ids.add(e['id'] as int); } final List unified = []; for (final id in ids) { final String svc = (_storage.read("meeting_service_type_$id") ?? '').toString(); final Map a = s1.taskFinishList.firstWhere( (x) => x['id'] == id, orElse: () => {}, ); final Map b = s2.taskFinishList.firstWhere( (x) => x['id'] == id, orElse: () => {}, ); int va = a.isNotEmpty ? ((a['tasktype'] ?? 0) as int) : -999; int vb = b.isNotEmpty ? ((b['tasktype'] ?? 0) as int) : -999; int v; if (svc == 'fast') { if (va != -999 && vb != -999) { v = va >= vb ? va : vb; } else { v = vb != -999 ? vb : va; } } else if (svc == 'standard') { if (va != -999 && vb != -999) { v = va >= vb ? va : vb; } else { v = va != -999 ? va : vb; } } else { if (va == -999 && vb == -999) { continue; } v = va == -999 ? vb : (vb == -999 ? va : (va >= vb ? va : vb)); } unified.add({'id': id, 'tasktype': v}); } taskFinishList.value = unified; } }