From 57f5b2612e90a97c65b872c92a52837fe1e12d04 Mon Sep 17 00:00:00 2001 From: tanlongsheng <252620078@qq.com> Date: Mon, 30 Jun 2025 16:38:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BC=9A=E8=AE=AE=E5=8A=A9?= =?UTF-8?q?=E6=89=8B=E5=8A=A0=E8=BD=BD=E7=BD=91=E7=BB=9C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/core/utils/synchrodata.dart | 75 +++++++++++++++++++ .../controllers/meeting_controller.dart | 7 +- .../meeting_details_controller.dart | 24 +++--- 3 files changed, 96 insertions(+), 10 deletions(-) diff --git a/lib/core/utils/synchrodata.dart b/lib/core/utils/synchrodata.dart index f43f0bdde..b25638663 100644 --- a/lib/core/utils/synchrodata.dart +++ b/lib/core/utils/synchrodata.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:get_storage/get_storage.dart'; +import '../../data/services/db/database_helper.dart'; import '../../data/services/db/sqflite_api.dart'; import '../../data/services/network/api.dart'; @@ -112,6 +113,80 @@ class Synchrodata { // 同步数据 static Future _synchrodata() async { + final db = await DatabaseHelper().database; var result = await Api.getOperationRecord(); + List records = result['records']; + await db.transaction((txn) async { + for (var element in records) { + final List existList = await txn.query( + 'meeting', + where: 'id = ?', + whereArgs: [element['number']], + ); + Map meetingData = { + 'id': element['number'], + 'title': element['title'] ?? '', + 'type': element['rtype'] ?? '', + 'seconds': element['seconds'] ?? 0, + 'filepath': '', + 'audiourl': element['audiourl'] ?? '', + 'tasktype': element['tasktype'] ?? 0, + 'creationtime': element['creationtime'] ?? 0, + }; + Map meetingDetailsData = { + 'meetingid': element['number'], + 'address': element['address'] ?? '', + 'personnel': element['personnel'] ?? '', + 'taskid': element['taskid'] ?? '', + 'tasktype': element['tasktype'] ?? 0, + 'overview': element['overview'] ?? '', + 'summary': element['summary'] ?? '', + 'mindmap': '', + }; + if (existList.isNotEmpty) { + await txn.update( + 'meeting', + meetingData, + where: 'id = ?', + whereArgs: [element['number']], + ); + await txn.update( + 'meetingdetails', + meetingDetailsData, + where: 'meetingid = ?', + whereArgs: [element['number']], + ); + } else { + await txn.insert('meeting', meetingData); + await txn.insert('meetingdetails', meetingDetailsData); + } + if (element['original'].isNotEmpty) { + final List existSpeakerList = await txn.query( + 'meetingspeaker', + where: 'meetingid = ?', + whereArgs: [element['number']], + ); + List speakerList = jsonDecode(element['original']); + if (existSpeakerList.isNotEmpty) { + final batch = txn.batch(); + for (var item in speakerList) { + batch.update( + 'meetingspeaker', + item, + where: 'id = ?', + whereArgs: [item['id']], + ); + } + await batch.commit(); + } else { + final batch = txn.batch(); + for (var item in speakerList) { + batch.insert('meetingspeaker', item); + } + await batch.commit(); + } + } + } + }); } } diff --git a/lib/modules/meeting/controllers/meeting_controller.dart b/lib/modules/meeting/controllers/meeting_controller.dart index d75d9e666..955c2b82f 100644 --- a/lib/modules/meeting/controllers/meeting_controller.dart +++ b/lib/modules/meeting/controllers/meeting_controller.dart @@ -59,7 +59,7 @@ class MeetingController extends GetxController { 'Authorization': 'Bearer; $_token', 'Content-Type': 'application/json', }; - _getDataList(); + _initGetDataList(); addMeetingAudio(); final Map args = Get.arguments ?? {}; // 检查参数是否存在且包含有效路径 @@ -96,6 +96,11 @@ class MeetingController extends GetxController { } } + void _initGetDataList() async { + await Synchrodata.uploadOperationRecords(isSynchro: true); + _getDataList(); + } + // 请求本地数据 void _getDataList() async { List list = await SqfliteApi.getMeetingList((page - 1) * 10 + addQuantity); diff --git a/lib/modules/meeting/controllers/meeting_details_controller.dart b/lib/modules/meeting/controllers/meeting_details_controller.dart index d05950007..8ac33d0fd 100644 --- a/lib/modules/meeting/controllers/meeting_details_controller.dart +++ b/lib/modules/meeting/controllers/meeting_details_controller.dart @@ -152,6 +152,21 @@ class MeetingDetailsController extends GetxController dragOffset.value = 0; isTop.value = true; } + if (meetingData.value.filepath.isNotEmpty) { + await _loadPlayerController(); + } + if (meetingDetails.value.tasktype >= 2) { + List speakerList = await SqfliteApi.getMeetingSpeaker(id); + textList.value = List.from(speakerList); + } + if (meetingDetails.value.tasktype == 1 || + meetingDetails.value.tasktype == 2) { + summaryCreate(); + } + isLoading.value = false; + } + + Future _loadPlayerController() async { await playerController.preparePlayer( path: meetingData.value.filepath, shouldExtractWaveform: false, @@ -178,15 +193,6 @@ class MeetingDetailsController extends GetxController lottieController.stop(); } }); - if (meetingDetails.value.tasktype >= 2) { - List speakerList = await SqfliteApi.getMeetingSpeaker(id); - textList.value = List.from(speakerList); - } - if (meetingDetails.value.tasktype == 1 || - meetingDetails.value.tasktype == 2) { - summaryCreate(); - } - isLoading.value = false; } void _loadJS() async {