Răsfoiți Sursa

1、组合测量项变更

bakamaka.guan 2 ani în urmă
părinte
comite
1719ee75bc

+ 2 - 0
lib/process/items/factory.dart

@@ -4,6 +4,7 @@ import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/process/items/item.dart';
 import 'package:fis_measure/process/primitives/combos/lwh_straightline.dart';
 import 'package:fis_measure/process/primitives/ellipse.dart';
+import 'package:fis_measure/process/primitives/location.dart';
 import 'package:fis_measure/process/primitives/polyline.dart';
 import 'package:fis_measure/process/primitives/straightline.dart';
 
@@ -62,6 +63,7 @@ class MeasureItemFactory {
 
   static void _registerItemCreators() {
     _singleton._register(MeasureTypes.Distance, StraightLine.createDistance);
+    _singleton._register(MeasureTypes.Depth, Location.createTissueDepth);
     _singleton._register(
         MeasureTypes.VolumeThreeDistance, LWHStraightLine.createVolume);
 

+ 1 - 1
lib/process/items/item_meta_convert.dart

@@ -64,7 +64,7 @@ class ItemMetaConverter {
     return ItemMeta(
       c.name!,
       measureType: c.measureTypeName!,
-      description: c.description!,
+      description: c.description ?? '',
       outputs: _convetOutputsFromCalc(c.calculator!),
       childItems: [],
     );

+ 29 - 15
lib/process/workspace/measure_controller.dart

@@ -12,7 +12,6 @@ import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
 import 'package:fis_measure/interfaces/process/config/style_config.dart';
 import 'package:fis_common/event/event_type.dart';
-import 'package:flutter/foundation.dart';
 import 'package:get/get.dart';
 import 'package:vid/us/vid_us_image.dart';
 
@@ -26,6 +25,8 @@ class MeasureController implements IMeasureController {
   VidDataHost? _vidDataHost;
   IPlayerController? _playerController;
   IApplication? _application;
+  int _recursive = 0;
+
   late final MeasureImagesFetchFunc _imagesFetchFunc;
   final measureData = Get.find<MeasureDataController>();
 
@@ -78,6 +79,32 @@ class MeasureController implements IMeasureController {
     _vidDataHost?.release();
   }
 
+  /// 轮询下载接口
+  void _recursivePlayer(Object sender) {
+    playerController.load().then((_) async {
+      if (playerController.status != VidPlayStatus.ready) {
+        if (_recursive <= 2) {
+          _recursive += 1;
+          _recursivePlayer(sender);
+        } else {
+          /// TODO 翻译
+          PromptBox.toast('当前网络不稳定,图像正在下载,请稍后');
+          _recursive = 0;
+          _recursivePlayer(sender);
+          // throw FlutterError("Vid file load fail.");
+        }
+      } else {
+        playerController.eventHandler.addListener(_onPlayerEnvent);
+
+        // 构建应用
+        await _buildApplication();
+
+        // 通知图像加载完成
+        imageLoaded.emit(sender, examInfo.selectedImage);
+      }
+    });
+  }
+
   void _onExamImageSelectedChanged(Object sender, int index) {
     final url = currentVidUrl;
     _playerController?.dispose();
@@ -90,20 +117,7 @@ class MeasureController implements IMeasureController {
         Get.put<IPlayerController>(VidPlayerController(dataHost: dataHost));
 
     dataHost.frameLoaded.addListener(_onFrameLoaded);
-    playerController.load().then((_) async {
-      if (playerController.status != VidPlayStatus.ready) {
-        /// TODO 翻译
-        PromptBox.toast('网络不稳定,图像下载失败');
-        throw FlutterError("Vid file load fail.");
-      }
-      playerController.eventHandler.addListener(_onPlayerEnvent);
-
-      // 构建应用
-      await _buildApplication();
-
-      // 通知图像加载完成
-      imageLoaded.emit(sender, examInfo.selectedImage);
-    });
+    _recursivePlayer(sender);
   }
 
   void _onFrameLoaded(Object sender, VidUsImage frame) {

+ 7 - 7
lib/process/workspace/measure_data_controller.dart

@@ -25,7 +25,7 @@ abstract class IMeasureDataController {
   late FEventHandler<DiagnosisConclusionEnum> diagnosisConclusionChanged;
   late FEventHandler<List<RemedicalInfoDTO>> remedicalListResultChanged;
   late FEventHandler<String> itemCurrentImageChanged;
-  late FEventHandler<List<ItemMetaDTO>> itemMetaListChanged;
+  late FEventHandler<List<ItemMeta>> itemMetaListChanged;
   late FEventHandler<List<String>> getMeasureApplicationChanged;
   late FEventHandler<MeasureImageData> measureImageDataChanged;
   late FEventHandler<MeasureSystemSettingDTO> measureSystemSettingChanged;
@@ -34,8 +34,8 @@ abstract class IMeasureDataController {
   late FEventHandler<List<String>> getCommentsListChanged;
 
   /// 该图像下面的应用
-  List<ItemMetaDTO> get itemMetaList;
-  set itemMetaList(List<ItemMetaDTO> value);
+  List<ItemMeta> get itemMetaList;
+  set itemMetaList(List<ItemMeta> value);
 
   /// 测量的翻译
   String get measureLanguage;
@@ -112,7 +112,7 @@ class MeasureDataController implements IMeasureDataController {
   String _currentMode = '';
   String _measureApplicationVersion = '';
   List<RemedicalInfoDTO> _remedicalList = [];
-  List<ItemMetaDTO> _itemMetaList = [];
+  List<ItemMeta> _itemMetaList = [];
   List<String> _getMeasureApplicationList = [];
   DiagnosisConclusionEnum _diagnosisConclusion =
       DiagnosisConclusionEnum.NotRequired;
@@ -141,7 +141,7 @@ class MeasureDataController implements IMeasureDataController {
   var diagnosisConclusionChanged = FEventHandler<DiagnosisConclusionEnum>();
 
   @override
-  var itemMetaListChanged = FEventHandler<List<ItemMetaDTO>>();
+  var itemMetaListChanged = FEventHandler<List<ItemMeta>>();
 
   @override
   var itemCurrentImageChanged = FEventHandler<String>();
@@ -261,9 +261,9 @@ class MeasureDataController implements IMeasureDataController {
   }
 
   @override
-  List<ItemMetaDTO> get itemMetaList => _itemMetaList;
+  List<ItemMeta> get itemMetaList => _itemMetaList;
   @override
-  set itemMetaList(List<ItemMetaDTO> value) {
+  set itemMetaList(List<ItemMeta> value) {
     if (value != _itemMetaList) {
       _itemMetaList = value;
       _onItemMetaListChanged();

+ 12 - 7
lib/view/measure/measure_config/measure_configuation_page.dart

@@ -2,7 +2,9 @@ import 'dart:convert';
 
 import 'package:fis_i18n/i18n.dart';
 import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/items/item_meta_convert.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/measure/measure_config/widgets/measurement_tool_selection.dart';
@@ -23,7 +25,7 @@ class ItemMetaGroup {
   final String itemMetaGroupTitle;
 
   /// 当前测量组的测量数组
-  final List<ItemMetaDTO> itemMeta;
+  final List<ItemMeta> itemMeta;
 
   /// 是否展开
   bool? isExpend;
@@ -119,7 +121,10 @@ class _MeasureConfigurationDialogState
             measureData.getMeasureApplicationList =
                 folders[0].workingItemNames ?? [];
             if (folders[0].availableItems != null) {
-              measureData.itemMetaList = folders[0].availableItems!.toList();
+              measureData.itemMetaList =
+                  folders[0].availableItems!.map((element) {
+                return ItemMetaConverter(element).output();
+              }).toList();
             }
             if (measureData.getMeasureApplicationList.isNotEmpty) {
               changeItem(measureData.getMeasureApplicationList[0]);
@@ -172,15 +177,15 @@ class _MeasureConfigurationDialogState
     List<ItemMetaGroup> _itemMetaConfigurationList = [];
     List<String> chooseMeasure = [];
 
-    Map<String, List<ItemMetaDTO>> _group = {};
+    Map<String, List<ItemMeta>> _group = {};
     getMeasureConfigurationGroupName().forEach(
       ((element) {
-        List<ItemMetaDTO> itemMetaListGroupItem = [];
+        List<ItemMeta> itemMetaListGroupItem = [];
         (measureData.itemMetaList).toList().forEach(
           (e) {
-            if (e.categories!.contains(element.itemMetaGroupTitle)) {
-              itemMetaListGroupItem.add(e);
-            }
+            // if (e.categories!.contains(element.itemMetaGroupTitle)) {
+            //   itemMetaListGroupItem.add(e);
+            // }
             _group[element.itemMetaGroupTitle] = itemMetaListGroupItem;
           },
         );

+ 6 - 6
lib/view/measure/measure_config/widgets/measurement_tool_selection.dart

@@ -140,7 +140,7 @@ class _SelectModulePageState extends FState<SelectModulePage> {
                 ? FElevatedButton(
                     onPressed: () {
                       removeChooseMeasure(
-                        e.itemMeta[index].name!,
+                        e.itemMeta[index].name,
                       );
                     },
                     style: const ButtonStyle(),
@@ -153,14 +153,14 @@ class _SelectModulePageState extends FState<SelectModulePage> {
                           children: [
                             FText(
                               getValues(
-                                e.itemMeta[index].name!,
+                                e.itemMeta[index].name,
                               ),
                               style: const TextStyle(
                                 color: Colors.white,
                               ),
                             ),
                             FText(
-                              e.itemMeta[index].name!,
+                              e.itemMeta[index].name,
                               style: const TextStyle(
                                 color: Colors.white,
                               ),
@@ -173,7 +173,7 @@ class _SelectModulePageState extends FState<SelectModulePage> {
                 : FElevatedButton(
                     onPressed: () {
                       addChooseMeasure(
-                        e.itemMeta[index].name!,
+                        e.itemMeta[index].name,
                       );
                     },
                     style: ButtonStyle(
@@ -190,14 +190,14 @@ class _SelectModulePageState extends FState<SelectModulePage> {
                           children: [
                             FText(
                               getValues(
-                                e.itemMeta[index].name!,
+                                e.itemMeta[index].name,
                               ),
                               style: const TextStyle(
                                 color: Colors.black,
                               ),
                             ),
                             FText(
-                              e.itemMeta[index].name!,
+                              e.itemMeta[index].name,
                               style: const TextStyle(
                                 color: Colors.black,
                               ),

+ 6 - 45
lib/view/measure/measure_tool.dart

@@ -1,9 +1,9 @@
 import 'package:fis_common/logger/logger.dart';
-import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/items/item_meta_convert.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_measure/view/player/controller.dart';
@@ -11,7 +11,6 @@ import 'package:fis_ui/index.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:vid/us/vid_us_image.dart';
-import 'package:vid/us/vid_us_unit.dart';
 
 /// 测量项页面
 class LeftSiderSelectMeasure extends FStatefulWidget {
@@ -83,48 +82,7 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
     List<ItemMeta> itemMetaList = [];
     for (var element in measureData.itemMetaList) {
       if (measureData.getMeasureApplicationList.contains(element.name)) {
-        List<ItemOutputMeta> itemOutputMeta = [];
-        String? multiMethod;
-        List<OutputItemMetaDTO> availableOutputs =
-            element.calculator?.availableOutputs ?? [];
-        for (var element in availableOutputs) {
-          itemOutputMeta.add(
-            ItemOutputMeta(
-              element.name ?? '',
-              element.description ?? '',
-              VidUsUnitMap.getUnit(element.unit),
-            ),
-          );
-        }
-        List<ItemMeta> childItemMetas = [];
-        if (element.multiMethodItems?.isNotEmpty ?? false) {
-          ChildItemMetaDTO? itemMeta = element.multiMethodItems!
-              .firstWhereOrNull((element) => element.isWorking == true);
-          multiMethod = itemMeta?.name ?? '';
-          List<ChildItemMetaDTO> childItems = itemMeta?.childItems ?? [];
-
-          /// 组合测量项部分
-          for (var element in childItems) {
-            childItemMetas.add(
-              ItemMeta(
-                element.name ?? '',
-                measureType: element.measureTypeName!,
-                description: element.description ?? '',
-                outputs: itemOutputMeta,
-                childItems: childItemMetas,
-              ),
-            );
-          }
-        }
-        itemMetaList.add(
-          ItemMeta(
-            element.name ?? '',
-            measureType: element.measureTypeName!,
-            description: element.description ?? '',
-            outputs: itemOutputMeta,
-            childItems: childItemMetas,
-          ),
-        );
+        itemMetaList.add(element);
       }
     }
     measureData.getItemMetaList = itemMetaList;
@@ -165,7 +123,10 @@ class LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
             measureData.getMeasureApplicationList =
                 folders[0].workingItemNames ?? [];
             if (folders[0].availableItems != null) {
-              measureData.itemMetaList = folders[0].availableItems!.toList();
+              measureData.itemMetaList =
+                  folders[0].availableItems!.map((element) {
+                return ItemMetaConverter(element).output();
+              }).toList();
               comboList();
             }
             print('测量方法集: ${measureData.getMeasureApplicationList.toString()}');

+ 7 - 46
lib/view/measure/measure_tools_title.dart

@@ -1,7 +1,7 @@
-import 'package:fis_jsonrpc/rpc.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/visuals/visual_area.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
+import 'package:fis_measure/process/items/item_meta_convert.dart';
 import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/process/workspace/measure_handler.dart';
 import 'package:fis_ui/index.dart';
@@ -9,7 +9,6 @@ import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:fis_theme/theme.dart';
 import 'package:vid/us/vid_us_mode.dart';
-import 'package:vid/us/vid_us_unit.dart';
 
 /// 测量方法 Har
 class LeftMeasureTools extends StatefulWidget implements FWidget {
@@ -47,52 +46,11 @@ class _LeftMeasureToolsState extends State<LeftMeasureTools> {
 
   /// 获取组合测量项
   void comboList() {
+    /// 格式化数据
     List<ItemMeta> itemMetaList = [];
-
     for (var element in measureData.itemMetaList) {
       if (measureData.getMeasureApplicationList.contains(element.name)) {
-        List<ItemOutputMeta> itemOutputMeta = [];
-        String? multiMethod;
-        List<OutputItemMetaDTO> availableOutputs =
-            element.calculator?.availableOutputs ?? [];
-        for (var element in availableOutputs) {
-          itemOutputMeta.add(
-            ItemOutputMeta(
-              element.name ?? '',
-              element.description ?? '',
-              VidUsUnitMap.getUnit(element.unit),
-            ),
-          );
-        }
-        List<ItemMeta> childItemMetas = [];
-
-        if (element.multiMethodItems?.isNotEmpty ?? false) {
-          ChildItemMetaDTO? itemMeta = element.multiMethodItems!
-              .firstWhereOrNull((element) => element.isWorking == true);
-          List<ChildItemMetaDTO> childItems = itemMeta?.childItems ?? [];
-
-          /// 组合测量项部分
-          for (var element in childItems) {
-            childItemMetas.add(
-              ItemMeta(
-                element.name ?? '',
-                measureType: element.measureTypeName!,
-                description: element.description ?? '',
-                outputs: itemOutputMeta,
-                childItems: childItemMetas,
-              ),
-            );
-          }
-        }
-        itemMetaList.add(
-          ItemMeta(
-            element.name ?? '',
-            measureType: element.measureTypeName!,
-            description: element.description ?? '',
-            outputs: itemOutputMeta,
-            childItems: childItemMetas,
-          ),
-        );
+        itemMetaList.add(element);
       }
     }
     measureData.getItemMetaList = itemMetaList;
@@ -115,7 +73,10 @@ class _LeftMeasureToolsState extends State<LeftMeasureTools> {
           measureData.getMeasureApplicationList =
               folders[0].workingItemNames ?? [];
           if (folders[0].availableItems != null) {
-            measureData.itemMetaList = folders[0].availableItems!.toList();
+            measureData.itemMetaList =
+                folders[0].availableItems!.map((element) {
+              return ItemMetaConverter(element).output();
+            }).toList();
             comboList();
           }
           if (measureData.getMeasureApplicationList.isNotEmpty) {