|
@@ -3,11 +3,13 @@ import 'dart:math';
|
|
|
import 'dart:typed_data';
|
|
|
import 'dart:ui' as ui;
|
|
|
|
|
|
+import 'package:fis_common/index.dart';
|
|
|
import 'package:fis_common/logger/logger.dart';
|
|
|
import 'package:fis_i18n/i18n.dart';
|
|
|
import 'package:fis_jsonrpc/rpc.dart';
|
|
|
import 'package:fis_measure/process/language/measure_language.dart';
|
|
|
import 'package:fis_measure/process/visual/visual.dart';
|
|
|
+import 'package:fis_measure/process/workspace/measure_data_controller.dart';
|
|
|
import 'package:fis_measure/process/workspace/rpc_helper.dart';
|
|
|
import 'package:fis_measure/process/workspace/visual_loader.dart';
|
|
|
import 'package:fis_measure/utils/prompt_box.dart';
|
|
@@ -24,12 +26,13 @@ import 'package:http/http.dart' as http;
|
|
|
|
|
|
class AiResultModifierController extends GetxController {
|
|
|
final rpcHelper = Get.find<RPCHelper>();
|
|
|
+ MeasureDataController get measureData => Get.find<MeasureDataController>();
|
|
|
|
|
|
/// 后台语言包控制器
|
|
|
// final languageService = Get.find<LanguageService>();
|
|
|
final state = AiResultModifierState();
|
|
|
|
|
|
- /// 传入参数 [图像code,图像帧下标,图像元数据]
|
|
|
+ /// 传入参数 [图像code,图像帧下标,图像元数据, 图像编辑过的code]
|
|
|
final String remedicalCode;
|
|
|
final int currFrameIndex;
|
|
|
final VidUsImage currFrame;
|
|
@@ -102,10 +105,11 @@ class AiResultModifierController extends GetxController {
|
|
|
/// 测量语言包
|
|
|
final measureLanguage = MeasureLanguage();
|
|
|
|
|
|
- AiResultModifierController(
|
|
|
- {required this.remedicalCode,
|
|
|
- required this.currFrameIndex,
|
|
|
- required this.currFrame}) {
|
|
|
+ AiResultModifierController({
|
|
|
+ required this.remedicalCode,
|
|
|
+ required this.currFrameIndex,
|
|
|
+ required this.currFrame,
|
|
|
+ }) {
|
|
|
print('创建 AiResultModifierController');
|
|
|
}
|
|
|
|
|
@@ -267,8 +271,9 @@ class AiResultModifierController extends GetxController {
|
|
|
}
|
|
|
|
|
|
@override
|
|
|
- void onInit() {
|
|
|
+ void onInit() async {
|
|
|
super.onInit();
|
|
|
+ await _getDiagnosisEnumItemsAsync();
|
|
|
_updateModifierInteractiveLayerSize();
|
|
|
_updateImagePhysicalSize();
|
|
|
_initAIResult();
|
|
@@ -397,15 +402,22 @@ class AiResultModifierController extends GetxController {
|
|
|
/// 加载AI结果并调用绘制
|
|
|
Future<void> _initAIResult() async {
|
|
|
try {
|
|
|
- final result =
|
|
|
- await rpcHelper.rpc.remedical.getRemedicalDiagnosisDataAsync(
|
|
|
- GetRemedicalDiagnosisDataRequest(
|
|
|
- token: rpcHelper.userToken,
|
|
|
- remedicalCode: remedicalCode,
|
|
|
- frameIndex: currFrameIndex,
|
|
|
- ),
|
|
|
- );
|
|
|
- resultDTO = AIDiagnosisPerImageDTO.fromJson(jsonDecode(result));
|
|
|
+ if (measureData
|
|
|
+ .measureImageData.remedicalAISelectedInfoCode.isNotNullOrEmpty) {
|
|
|
+ resultDTO = AIDiagnosisPerImageDTO.fromJson(
|
|
|
+ jsonDecode(measureData.aiResults)[0]);
|
|
|
+ } else {
|
|
|
+ final result =
|
|
|
+ await rpcHelper.rpc.remedical.getRemedicalDiagnosisDataAsync(
|
|
|
+ GetRemedicalDiagnosisDataRequest(
|
|
|
+ token: rpcHelper.userToken,
|
|
|
+ remedicalCode: remedicalCode,
|
|
|
+ frameIndex: currFrameIndex,
|
|
|
+ ),
|
|
|
+ );
|
|
|
+ resultDTO = AIDiagnosisPerImageDTO.fromJson(jsonDecode(result));
|
|
|
+ }
|
|
|
+
|
|
|
modifiedDataDTO = resultDTO;
|
|
|
contours = resultDTO.diagResultsForEachOrgan![0]
|
|
|
.detectedObjects![currentAiDetectedObjectIndex].contours ??
|
|
@@ -425,7 +437,6 @@ class AiResultModifierController extends GetxController {
|
|
|
_canvasAffectedKeyPoints.clear();
|
|
|
_updateCurrContoursPoints();
|
|
|
_updateCurrKeyPoints();
|
|
|
- await _getDiagnosisEnumItemsAsync();
|
|
|
update(['ai_result_canvas', 'ai_result_panel', 'ai_index_tag']);
|
|
|
} catch (e) {
|
|
|
logger.e('load ai result failed', e);
|