|
|
|
@ -16,10 +16,10 @@ class MeetingTaskService extends GetxService { |
|
|
|
|
|
|
|
MeetingUploadService get _uploadService => Get.find<MeetingUploadService>(); |
|
|
|
|
|
|
|
RxList taskList = [].obs; |
|
|
|
List _taskList = []; |
|
|
|
RxList taskFinishList = [].obs; |
|
|
|
|
|
|
|
bool _isTask = false; |
|
|
|
int _handled = 0; |
|
|
|
|
|
|
|
String _systemPrompt = ''; |
|
|
|
String _userId = ''; |
|
|
|
@ -30,8 +30,12 @@ class MeetingTaskService extends GetxService { |
|
|
|
final String _serviceUrl = 'https://openspeech.bytedance.com/api/v1/auc'; |
|
|
|
Map<String, String> _headers = {}; |
|
|
|
|
|
|
|
RxList textList = [].obs; |
|
|
|
int meetingId = 0; |
|
|
|
RxInt tasktype = 1.obs; |
|
|
|
List textList = []; |
|
|
|
String allText = ''; |
|
|
|
String summary = ''; |
|
|
|
String overview = ''; |
|
|
|
|
|
|
|
@override |
|
|
|
void onInit() { |
|
|
|
@ -51,7 +55,8 @@ class MeetingTaskService extends GetxService { |
|
|
|
} |
|
|
|
|
|
|
|
void _getTaskList() { |
|
|
|
taskList.value = _storage.read("meeting_task_list") ?? []; |
|
|
|
_taskList = _storage.read("meeting_task_list") ?? []; |
|
|
|
taskFinishList.value = _storage.read("meeting_task_finish_list") ?? []; |
|
|
|
_executeTask(); |
|
|
|
} |
|
|
|
|
|
|
|
@ -78,49 +83,48 @@ class MeetingTaskService extends GetxService { |
|
|
|
taskId = await _submitTask(audiourl); |
|
|
|
} |
|
|
|
await SqfliteApi.editMeeting(id, {'tasktype': 1, 'taskid': taskId}); |
|
|
|
taskList.add({ |
|
|
|
_taskList.add({ |
|
|
|
'id': id, |
|
|
|
'taskid': taskId, |
|
|
|
'tasktype': 1, |
|
|
|
}); |
|
|
|
_storage.write("meeting_task_list", taskList); |
|
|
|
taskFinishList.add({ |
|
|
|
'id': id, |
|
|
|
'tasktype': 1, |
|
|
|
}); |
|
|
|
_storage.write("meeting_task_list", _taskList); |
|
|
|
_storage.write("meeting_task_finish_list", taskFinishList); |
|
|
|
_executeTask(); |
|
|
|
} |
|
|
|
|
|
|
|
void _executeTask() async { |
|
|
|
if (_isTask) return; |
|
|
|
_isTask = true; |
|
|
|
_handled = 0; |
|
|
|
while (_handled < taskList.length) { |
|
|
|
while (_taskList.isNotEmpty) { |
|
|
|
await Future.delayed(const Duration(seconds: 2)); |
|
|
|
|
|
|
|
int completed = 0; |
|
|
|
for (var element in taskList) { |
|
|
|
if (element['tasktype'] == 1) { |
|
|
|
await _fileRecognize(element); |
|
|
|
} else { |
|
|
|
completed++; |
|
|
|
} |
|
|
|
for (var element in List.from(_taskList)) { |
|
|
|
await _fileRecognize(element); |
|
|
|
} |
|
|
|
_handled = completed; |
|
|
|
} |
|
|
|
_isTask = false; |
|
|
|
} |
|
|
|
|
|
|
|
void removeTask(int id, {bool isDeleteTask = false}) { |
|
|
|
Map taskData = taskList.firstWhere( |
|
|
|
Map taskFinishData = taskFinishList.firstWhere( |
|
|
|
(element) => element['id'] == id, |
|
|
|
orElse: () => {}, |
|
|
|
); |
|
|
|
if (taskData.isNotEmpty) { |
|
|
|
if (isDeleteTask || taskData['tasktype'] >= 3) { |
|
|
|
taskList.remove(taskData); |
|
|
|
_storage.write("meeting_task_list", taskList); |
|
|
|
if (taskList.isEmpty) { |
|
|
|
_handled = 0; |
|
|
|
} |
|
|
|
if (taskFinishData.isNotEmpty) { |
|
|
|
if (isDeleteTask || taskFinishData['tasktype'] >= 3) { |
|
|
|
taskFinishList.remove(taskFinishData); |
|
|
|
_storage.write("meeting_task_finish_list", taskFinishList); |
|
|
|
} |
|
|
|
} |
|
|
|
if (isDeleteTask) { |
|
|
|
_taskList.removeWhere((element) => element['id'] == id); |
|
|
|
_storage.write("meeting_task_list", _taskList); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Future<String> _submitTask(String audiourl) async { |
|
|
|
@ -203,7 +207,7 @@ class MeetingTaskService extends GetxService { |
|
|
|
var code = respDic['resp']['code'] as int; |
|
|
|
|
|
|
|
if (code == 1000) { |
|
|
|
await _addTextList(item, respDic['resp']['utterances']); |
|
|
|
await _addTextList(item['id'], respDic['resp']['utterances']); |
|
|
|
return; |
|
|
|
} else if (code < 2000) { |
|
|
|
Logger.debug("FileRecognize failed"); |
|
|
|
@ -214,7 +218,7 @@ class MeetingTaskService extends GetxService { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Future<void> _addTextList(Map item, List utterances) async { |
|
|
|
Future<void> _addTextList(int id, List utterances) async { |
|
|
|
String text = ''; |
|
|
|
String personnel = ''; |
|
|
|
List<Map<String, Object?>> list = []; |
|
|
|
@ -228,7 +232,7 @@ class MeetingTaskService extends GetxService { |
|
|
|
} |
|
|
|
} |
|
|
|
list.add({ |
|
|
|
'meetingid': item['id'], |
|
|
|
'meetingid': id, |
|
|
|
'content': element['text'], |
|
|
|
'starttime': element['start_time'], |
|
|
|
'endtime': element['end_time'], |
|
|
|
@ -239,22 +243,36 @@ class MeetingTaskService extends GetxService { |
|
|
|
var result = await SqfliteApi.insertMeetingSpeaker(list); |
|
|
|
if (result != null) { |
|
|
|
await SqfliteApi.editMeeting( |
|
|
|
item['id'], |
|
|
|
id, |
|
|
|
{'tasktype': 2, 'personnel': personnel}, |
|
|
|
); |
|
|
|
List speakerList = await SqfliteApi.getMeetingSpeaker(item['id']); |
|
|
|
textList.value = List.from(speakerList); |
|
|
|
List speakerList = await SqfliteApi.getMeetingSpeaker(id); |
|
|
|
List newSpeakerList = List.from(speakerList); |
|
|
|
Synchrodata.saveOperationRecord('update', { |
|
|
|
'original': jsonEncode(textList), |
|
|
|
'id': item['id'], |
|
|
|
'original': jsonEncode(newSpeakerList), |
|
|
|
'id': id, |
|
|
|
}); |
|
|
|
item['tasktype'] = 2; |
|
|
|
if (id == meetingId) { |
|
|
|
textList = newSpeakerList; |
|
|
|
tasktype.value = 2; |
|
|
|
} |
|
|
|
_taskList.removeWhere((element) => element['id'] == id); |
|
|
|
Map taskFinishData = taskFinishList.firstWhere( |
|
|
|
(element) => element['id'] == id, |
|
|
|
orElse: () => {}, |
|
|
|
); |
|
|
|
if (taskFinishData.isNotEmpty) { |
|
|
|
taskFinishData['tasktype'] = 2; |
|
|
|
taskFinishList.refresh(); |
|
|
|
} |
|
|
|
_storage.write("meeting_task_list", _taskList); |
|
|
|
_storage.write("meeting_task_finish_list", taskFinishList); |
|
|
|
} |
|
|
|
allText = text; |
|
|
|
_aiServiceMessage(item); |
|
|
|
_aiServiceMessage(id); |
|
|
|
} |
|
|
|
|
|
|
|
void _aiServiceMessage(Map item) { |
|
|
|
void _aiServiceMessage(int id) { |
|
|
|
int awaitQuantity = 0; |
|
|
|
String summaryText = ''; |
|
|
|
String overviewText = ''; |
|
|
|
@ -271,7 +289,7 @@ class MeetingTaskService extends GetxService { |
|
|
|
awaitQuantity++; |
|
|
|
summaryText = value; |
|
|
|
if (awaitQuantity >= 2) { |
|
|
|
_aiServiceValue(item, summaryText, overviewText); |
|
|
|
_aiServiceValue(id, summaryText, overviewText); |
|
|
|
} |
|
|
|
}); |
|
|
|
DeapsoundAIService().sendMessage( |
|
|
|
@ -286,17 +304,30 @@ class MeetingTaskService extends GetxService { |
|
|
|
awaitQuantity++; |
|
|
|
overviewText = value; |
|
|
|
if (awaitQuantity >= 2) { |
|
|
|
_aiServiceValue(item, summaryText, overviewText); |
|
|
|
_aiServiceValue(id, summaryText, overviewText); |
|
|
|
} |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
void _aiServiceValue(Map item, String summaryText, String overviewText) { |
|
|
|
SqfliteApi.editMeeting(item['id'], { |
|
|
|
void _aiServiceValue(int id, String summaryText, String overviewText) { |
|
|
|
SqfliteApi.editMeeting(id, { |
|
|
|
'tasktype': 3, |
|
|
|
'summary': summaryText, |
|
|
|
'overview': overviewText, |
|
|
|
}); |
|
|
|
item['tasktype'] = 3; |
|
|
|
if (id == meetingId) { |
|
|
|
summary = summaryText; |
|
|
|
overview = overviewText; |
|
|
|
tasktype.value = 3; |
|
|
|
} |
|
|
|
Map taskFinishData = taskFinishList.firstWhere( |
|
|
|
(element) => element['id'] == id, |
|
|
|
orElse: () => {}, |
|
|
|
); |
|
|
|
if (taskFinishData.isNotEmpty) { |
|
|
|
taskFinishData['tasktype'] = 3; |
|
|
|
taskFinishList.refresh(); |
|
|
|
} |
|
|
|
_storage.write("meeting_task_finish_list", taskFinishList); |
|
|
|
} |
|
|
|
} |
|
|
|
|