Browse Source

修改会议助手加载网络数据

weicu
tanlongsheng 1 year ago
parent
commit
4f03705c63
  1. 75
      lib/core/utils/synchrodata.dart
  2. 7
      lib/modules/meeting/controllers/meeting_controller.dart
  3. 24
      lib/modules/meeting/controllers/meeting_details_controller.dart

75
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<String, Object?> 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<String, Object?> 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();
}
}
}
});
}
}

7
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<String, dynamic> 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);

24
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<void> _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 {

Loading…
Cancel
Save