measure_view_controller.dart 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import 'package:fis_common/logger/logger.dart';
  2. import 'package:fis_jsonrpc/rpc.dart';
  3. import 'package:fis_measure/interfaces/process/items/item_metas.dart';
  4. import 'package:fis_measure/interfaces/process/items/terms.dart';
  5. import 'package:fis_measure/interfaces/process/workspace/application.dart';
  6. import 'package:fis_measure/process/items/item_meta_convert.dart';
  7. import 'package:fis_measure/process/workspace/measure_data_controller.dart';
  8. import 'package:fis_measure/process/workspace/measure_handler.dart';
  9. import 'package:fis_measure/view/measure/measure_config/measure_configuation_page.dart';
  10. import 'package:get/get.dart';
  11. class MeasureMetaController extends GetxController {
  12. /// 数据
  13. late final measureData = Get.find<MeasureDataController>();
  14. late final application = Get.find<IApplication>();
  15. late final measureHandler = Get.find<MeasureHandler>();
  16. /// 跟超声机端保持一致,配置 项目写死
  17. List<ItemMetaGroup> getMeasureConfigurationGroupName() {
  18. return [
  19. ItemMetaGroup('Common', [], true),
  20. ItemMetaGroup('ABD', [], true),
  21. ItemMetaGroup('CARD', [], true),
  22. ItemMetaGroup('GYN', [], true),
  23. ItemMetaGroup('OB', [], true),
  24. ItemMetaGroup('VAS', [], true),
  25. ];
  26. }
  27. /// 获取组合测量项
  28. void comboList() {
  29. /// 格式化数据
  30. List<ItemMeta> itemMetaList = [];
  31. for (var element in measureData.itemMetaList) {
  32. if (measureData.getMeasureApplicationList.contains(element.name)) {
  33. itemMetaList.add(element);
  34. }
  35. }
  36. measureData.getItemMetaList = itemMetaList;
  37. }
  38. void setAvailableModes(String name) {
  39. print('切换模式到:' + name);
  40. var models = measureData.availableModes;
  41. measureData.currentMode = name;
  42. if (models.isNotEmpty) {
  43. ///群组列表
  44. var groups = models
  45. .firstWhereOrNull(
  46. (element) => element.modeName == measureData.currentMode)
  47. ?.availableGroups;
  48. if (groups != null && groups.isNotEmpty) {
  49. ///项目列表
  50. var folders = groups[0].availableFolders;
  51. if (folders != null && folders.isNotEmpty) {
  52. measureData.getMeasureApplicationList =
  53. folders[0].workingItemNames ?? [];
  54. if (folders[0].availableItems != null) {
  55. measureData.itemMetaList = folders[0]
  56. .availableItems!
  57. // 排除不支持的测量项
  58. .where((element) =>
  59. !MeasureUnsupportedTerms.items.contains(element.name))
  60. .map((element) {
  61. try {
  62. return ItemMetaConverter(element).output();
  63. } catch (e) {
  64. logger.e(
  65. "Item meta -[${element.name}] convert error; JSON-Text: ${element.toJson()}",
  66. e,
  67. );
  68. return null;
  69. }
  70. })
  71. .where((element) => element != null)
  72. .map((e) => e!)
  73. .toList();
  74. comboList();
  75. }
  76. if (measureData.getMeasureApplicationList.isNotEmpty) {
  77. changeItem(measureData.getItemMetaList[0]);
  78. }
  79. }
  80. }
  81. }
  82. }
  83. /// 测量项配置组
  84. void measureConfig() {
  85. List<ItemMetaGroup> _itemMetaConfigurationList = [];
  86. Map<String, List<ItemMetaDTO>> _group = {};
  87. getMeasureConfigurationGroupName().forEach(
  88. ((element) {
  89. List<ItemMetaDTO> itemMetaListGroupItem = [];
  90. var groups = measureData.availableModes
  91. .firstWhereOrNull(
  92. (element) => element.modeName == measureData.currentMode)
  93. ?.availableGroups;
  94. (groups![0].availableFolders![0].availableItems)?.toList().forEach(
  95. (e) {
  96. if (e.categories!.toList().contains(element.itemMetaGroupTitle)) {
  97. itemMetaListGroupItem.add(e);
  98. }
  99. _group[element.itemMetaGroupTitle] = itemMetaListGroupItem;
  100. },
  101. );
  102. }),
  103. );
  104. _group.forEach(
  105. (key, value) {
  106. _itemMetaConfigurationList.add(
  107. ItemMetaGroup(key, value, true),
  108. );
  109. },
  110. );
  111. measureData.itemMetaListGroup = _itemMetaConfigurationList;
  112. }
  113. void changeItem(ItemMeta itemMeta) {
  114. application.switchItem(itemMeta);
  115. }
  116. }