gavin.chen 10 сар өмнө
parent
commit
d991417e57

+ 68 - 206
lib/process/calcuators/urm.dart

@@ -14,8 +14,8 @@ import 'package:vid/us/vid_us_unit.dart';
 
 import 'calculator.dart';
 
-class URMCal extends Calculator<URMRect, double> {
-  URMCal(URMRect ref, this.type) : super(ref);
+class URMRectCal extends Calculator<URMRect, double> {
+  URMRectCal(URMRect ref, this.type) : super(ref);
   String type = '';
   @override
   void calculate() {
@@ -28,262 +28,124 @@ class URMCal extends Calculator<URMRect, double> {
       final URMApplication urmApplication = ref.application as URMApplication;
       urmResultSize = Size(urmApplication.resultWidth.toDouble(),
           urmApplication.resultHeight.toDouble());
-      // urmResultWidth = urmApplication.resultWidth;
-      // urmResultHeight = urmApplication.resultHeight;
-    } catch (e) {
-      logger.e('URM Measure error: $e');
-      return;
-    }
-    final p1 = ref.feature!.startPoint;
-    final p2 = ref.feature!.endPoint;
-    //左上顶点
-    final leftTopPercent =
-        DPoint(p1.x < p2.x ? p1.x : p2.x, p1.y < p2.y ? p1.y : p2.y);
-    //右下顶点
-    final rightBottomPercent =
-        DPoint(p1.x > p2.x ? p1.x : p2.x, p1.y > p2.y ? p1.y : p2.y);
-    //画布尺寸
-    final canavsSize = ref.application.displaySize;
-
-    final startPoint = leftTopPercent.scale2Size(urmResultSize);
-    final endPoint = rightBottomPercent.scale2Size(urmResultSize);
+      final p1 = ref.feature!.startPoint;
+      final p2 = ref.feature!.endPoint;
+      //左上顶点
+      final leftTopPercent =
+          DPoint(p1.x < p2.x ? p1.x : p2.x, p1.y < p2.y ? p1.y : p2.y);
+      //右下顶点
+      final rightBottomPercent =
+          DPoint(p1.x > p2.x ? p1.x : p2.x, p1.y > p2.y ? p1.y : p2.y);
+      //画布尺寸
+      final canavsSize = ref.application.displaySize;
 
-    print("URM Measure canavsSize: $canavsSize");
-    print("URM Measure type: $type");
+      final startPoint = leftTopPercent.scale2Size(urmResultSize);
+      final endPoint = rightBottomPercent.scale2Size(urmResultSize);
 
-    String description = "URM\n Calculating...";
-    updateStringValue(description);
+      print("URM Measure canavsSize: $canavsSize");
+      print("URM Measure type: $type");
 
-    /// [URM] ✅在此处通知 Server 计算,获取 description
-    switch (type) {
-      case MeasureTypes.SRCurvature:
-        getSRCurvatureResult(startPoint, endPoint);
-        break;
-      case MeasureTypes.SRRoiDensity:
-        getSRRoiDensityResult(startPoint, endPoint);
-        break;
-      case MeasureTypes.SRRoiFractalDim:
-        getSRRoiFractalDimResult(startPoint, endPoint);
-        break;
-      case MeasureTypes.SRTraceDensity:
-        getSRTraceDensityResult([startPoint, endPoint]);
-        // callServerMethodToGetResult();
-        break;
-      case MeasureTypes.SRTraceFD:
-        getSRTraceFDResult([startPoint, endPoint]);
-        // callServerMethodToGetResult();
-        break;
-      case MeasureTypes.SRLoactionVel:
-        getSRLoactionVelResult(startPoint);
-        // callServerMethodToGetResult();
-        break;
-      case MeasureTypes.SRRoiVel:
-        getSRRoiVelResult(startPoint, endPoint);
-        // callServerMethodToGetResult();
-        break;
-      case MeasureTypes.URMDensityMeasure:
-        getURMDensityMeasureResult(startPoint, endPoint);
-        // callServerMethodToGetResult();
-        break;
-      case MeasureTypes.URMVelMeasure:
-        getURMVelMeasureResult(startPoint, endPoint);
-        // callServerMethodToGetResult();
-        break;
-      default:
-    }
-  }
+      String description = "URM\n Calculating...";
+      updateStringValue(description);
 
-  // URM 测量项 1
-  void getSRCurvatureResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
+      /// [URM] ✅在此处通知 Server 计算,获取 description
+      switch (type) {
+        case MeasureTypes.SRRoiDensity:
+          getSRRoiDensityResult(urmApplication, startPoint, endPoint);
+          break;
+        case MeasureTypes.SRRoiFractalDim:
+          getSRRoiFractalDimResult(urmApplication, startPoint, endPoint);
+          break;
+        case MeasureTypes.SRRoiVel:
+          getSRRoiVelResult(urmApplication, startPoint, endPoint);
+          break;
+        case MeasureTypes.URMVelMeasure:
+          getURMVelMeasureResult(urmApplication, startPoint, endPoint);
+          break;
+        default:
+      }
     } catch (e) {
-      success = false;
-      description = " ";
+      logger.e('URM Measure error: $e');
       return;
     }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
-    updateStringValue(description);
-    ref.application.updateRenderReady.emit(this, null);
   }
 
   // URM 测量项 2
-  void getSRRoiDensityResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
+  void getSRRoiDensityResult(
+      URMApplication app, DPoint startPoint, DPoint endPoint) async {
     String description = "URM\n Measuring";
     try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
+      GetSRRoiVelResult? result =
+          await app.getSRRoiVelResult(startPoint, endPoint);
+      if (result != null) {
+        print("URM Measure output: ${result.output} ");
+        description = "${(result.output).toStringAsFixed(2)}mm/s";
+      }
     } catch (e) {
-      success = false;
       description = " ";
       return;
     }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
     updateStringValue(description);
     ref.application.updateRenderReady.emit(this, null);
   }
 
   // URM 测量项 3
-  void getSRRoiFractalDimResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
-    } catch (e) {
-      success = false;
-      description = " ";
-      return;
-    }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
-    updateStringValue(description);
-    ref.application.updateRenderReady.emit(this, null);
-  }
-
-  // URM 测量项 4
-  void getSRTraceDensityResult(List<DPoint> points) async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
-    } catch (e) {
-      success = false;
-      description = " ";
-      return;
-    }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
-    updateStringValue(description);
-    ref.application.updateRenderReady.emit(this, null);
-  }
-
-  // URM 测量项 5
-  void getSRTraceFDResult(List<DPoint> points) async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
-    } catch (e) {
-      success = false;
-      description = " ";
-      return;
-    }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
-    updateStringValue(description);
-    ref.application.updateRenderReady.emit(this, null);
-  }
-
-  // URM 测量项 6
-  void getSRLoactionVelResult(
-    DPoint point,
-  ) async {
-    bool success = false;
+  void getSRRoiFractalDimResult(
+      URMApplication app, DPoint startPoint, DPoint endPoint) async {
     String description = "URM\n Measuring";
     try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
+      GetSRRoiFractalDimResult? result =
+          await app.getSRRoiFractalDimResult(startPoint, endPoint);
+      if (result != null) {
+        print("URM Measure output: ${result.output} ");
+        description = "${(result.output).toStringAsFixed(2)}mm/s";
+      }
     } catch (e) {
-      success = false;
       description = " ";
       return;
     }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
     updateStringValue(description);
     ref.application.updateRenderReady.emit(this, null);
   }
 
   // URM 测量项 7
-  void getSRRoiVelResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
-    } catch (e) {
-      success = false;
-      description = " ";
-      return;
-    }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
-    updateStringValue(description);
-    ref.application.updateRenderReady.emit(this, null);
-  }
-
-  // URM 测量项 8
-  void getURMDensityMeasureResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
+  void getSRRoiVelResult(
+      URMApplication app, DPoint startPoint, DPoint endPoint) async {
     String description = "URM\n Measuring";
     try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
+      GetSRRoiVelResult? result =
+          await app.getSRRoiVelResult(startPoint, endPoint);
+      if (result != null) {
+        print("URM Measure output: ${result.output} ");
+        description = "${(result.output).toStringAsFixed(2)}mm/s";
+      }
     } catch (e) {
-      success = false;
       description = " ";
       return;
     }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
     updateStringValue(description);
     ref.application.updateRenderReady.emit(this, null);
   }
 
   // URM 测量项 9
-  void getURMVelMeasureResult(DPoint startPoint, DPoint endPoint) async {
-    bool success = false;
+  void getURMVelMeasureResult(
+      URMApplication app, DPoint startPoint, DPoint endPoint) async {
     String description = "URM\n Measuring";
     try {
-      // TODO 换成真实接口
-      // var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(     );
+      GetURMVelMeasureResult? result =
+          await app.getURMVelMeasureResult(startPoint, endPoint);
+      if (result != null) {
+        // TODO 全部内容展示
+        print("URM Measure inMaxVel: ${result.inMaxVel} ");
+        description = "${(result.inMaxVel).toStringAsFixed(2)}mm/s";
+      }
     } catch (e) {
-      success = false;
       description = " ";
       return;
     }
-    description = "${(12.34567).toStringAsFixed(2)}mm/s";
     updateStringValue(description);
     ref.application.updateRenderReady.emit(this, null);
   }
-
-  void callServerMethodToGetResult() async {
-    bool success = false;
-    String description = "URM\n Measuring";
-    try {
-      // TODO 换成真实接口
-      var result = await RPCBridge.ins.rpc.lab.getFileListByFolderAsync(
-        GetFileListByFolderRequest(
-          token: RPCBridge.ins.userToken,
-          pageIndex: 1,
-          pageSize: 100,
-          // folderCode: patientCode,
-        ),
-      );
-    } catch (e) {
-      success = false;
-      description = "\n Max: ${(100.2345).toStringAsFixed(2)}mm\n";
-      updateStringValue(description);
-      ref.application.updateRenderReady.emit(this, null);
-      return;
-    }
-
-    if (success) {
-      final feature = ref.feature!;
-      // 如果返回点集添加点集
-      // 返回值点集计算转为图像可绘制的点集
-      feature.offsetsList.add([Offset(1, 1)]);
-
-      /// 如果返回数值,直接添加数值
-      description = "\n URM Measure Result: 88 mm";
-      updateStringValue(description);
-    } else {
-      description = "\n Measure failed";
-      updateStringValue(description);
-      ref.application.updateRenderReady.emit(this, null);
-    }
-  }
 }
 
 class URMLocationCal extends Calculator<Location, double> {

+ 1 - 1
lib/process/primitives/urm_rect.dart

@@ -16,7 +16,7 @@ class URMRect extends MeasureItem<URMRectFeature> {
 
   static URMRect createMeasureRect(ItemMeta meta, [IMeasureItem? parent]) {
     URMRect measureRect = URMRect(meta, parent);
-    measureRect.calculator = URMCal(measureRect, meta.name);
+    measureRect.calculator = URMRectCal(measureRect, meta.name);
     return measureRect;
   }
 

+ 8 - 7
lib/process/workspace/urm/application.dart

@@ -48,6 +48,8 @@ class URMApplication extends Application {
 
   bool syncDisplay = false; // 是否开启同步显示
 
+  double areaScaler = 1.0; // URM 画幅缩放比例
+
   @override
   List<IVisual> convertVisuals() {
     var urmVisuals = originVisuals;
@@ -187,9 +189,10 @@ class URMApplication extends Application {
   }
 
   Future<GetSRTraceVelResult?> getSRTraceVelResult(
-      DPoint startPoint, DPoint endPoint) async {
+    List<UrmPoint> points,
+  ) async {
     try {
-      print("调接口获取测量值 getSRTraceVelAsync");
+      print("调接口获取测量值 getSRTraceVelResult");
       GetSRTraceVelResult result =
           await RPCBridge.ins.rpc.aIDiagnosis.getSRTraceVelAsync(
         GetSRTraceVelRequest(
@@ -197,11 +200,7 @@ class URMApplication extends Application {
           measureMode: 5,
           dataWidth: resultWidth,
           dataHeight: resultHeight,
-          // /FIXME 入参应该为点集
-          startPointX: startPoint.x,
-          startPointY: startPoint.y,
-          endPointX: endPoint.x,
-          endPointY: endPoint.y,
+          inputPoints: points,
           token: RPCBridge.ins.userToken,
         ),
       );
@@ -297,6 +296,7 @@ class URMApplication extends Application {
           startPointY: startPoint.y,
           endPointX: endPoint.x,
           endPointY: endPoint.y,
+          areaScaler: 1.0,
           token: RPCBridge.ins.userToken,
         ),
       );
@@ -321,6 +321,7 @@ class URMApplication extends Application {
           startPointY: startPoint.y,
           endPointX: endPoint.x,
           endPointY: endPoint.y,
+          areaScaler: 1.0,
           token: RPCBridge.ins.userToken,
         ),
       );

+ 2 - 2
pubspec.lock

@@ -191,8 +191,8 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: a129518
-      resolved-ref: a12951844f9e66664786fa69dfaeae699143bab6
+      ref: "6156dd1"
+      resolved-ref: "6156dd106a97aed3ae95a191e7dd257b336402e9"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
     source: git
     version: "0.0.1"

+ 1 - 1
pubspec.yaml

@@ -100,7 +100,7 @@ dependency_overrides:
   fis_jsonrpc:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
-      ref: a129518
+      ref: 6156dd1
   fis_lib_business_components:
     git:
       url: http://git.ius.plus/Project-Wing/fis_lib_business_components.git