fly 8 months ago
parent
commit
b5905ade56
2 changed files with 37 additions and 26 deletions
  1. 29 26
      URMManage/ImagePostProcess.cs
  2. 8 0
      URMManage/URMAnalysisManager.cs

+ 29 - 26
URMManage/ImagePostProcess.cs

@@ -87,33 +87,36 @@ namespace WingAIDiagnosisService.URMManage
                 var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
                 processorClass.LastActiveTime = DateTime.UtcNow;
                 var processor = processorClass.Processor;
-                await Task.Run(() =>
+                using (await _lockManager.Acquire(request.GUID))
                 {
-                    double urmMinVal = 0;
-                    double urmMaxVal = 0;
-                    //赋值
-                    processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
-                    processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
-                    processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
-                    processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
-                    processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
-                    processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
-                    processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
-                    processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
-                    processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
-                    processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
-                    processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
-                    processor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
-                    processor.CalTracePointMask(request.UrmTraceDPoints);
-                    WingServerCommon.Log.Logger.WriteLineInfo($"getURMImageBase64,GUID:{request.GUID},token:{request.Token},RemedicalCode:{request.RemedicalCode}");
-                    result.Base64String = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
-                    result.UrmMaxVal = urmMaxVal;
-                    result.UrmMinVal = urmMinVal;
-                    processorClass.UrmMinVal = urmMinVal;
-                    processorClass.UrmMaxVal = urmMaxVal;
-                    processorClass.HasDrawed = true;
-                    Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
-                });
+                    await Task.Run(() =>
+                    {
+                        double urmMinVal = 0;
+                        double urmMaxVal = 0;
+                        //赋值
+                        processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
+                        processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend);
+                        processor.setUrmParams(RecordParams.URMDownSampleIndex, request.DownsampleIndex);
+                        processor.setUrmParams(RecordParams.URMIntPowerDen, request.IntPowerDen);
+                        processor.setUrmParams(RecordParams.URMIntPowerDir, request.IntPowerDir);
+                        processor.setUrmParams(RecordParams.URMSigmaGauss, request.SigmaGauss);
+                        processor.setUrmParams(RecordParams.URMVessScale, request.VessScale);
+                        processor.setUrmParams(RecordParams.URMVelMaxScaler, request.VelMaxScaler);
+                        processor.setUrmParams(RecordParams.URMVelMinScaler, request.VelMinScaler);
+                        processor.setUrmParams(RecordParams.URMIterations, request.Iterations);
+                        processor.setUrmBaseParam(request.Res, processorClass.DenArray, processorClass.DirArray, processorClass.VelArray, processorClass.AngleArray, processorClass.MaskArray, request.Urmsrcwidth, request.Urmsrcheight, request.ScaleOfPixel_x, request.ScaleOfPixel_y, request.ImgProcessVer);
+                        processor.setUrmDrawParam(request.ZoomOn, request.ZoomRoix, request.ZoomRoiy, request.ZoomRoiwidth, request.ZoomRoiheight, request.Roix, request.Roiy, request.Roiwidth, request.Roiheight, request.LeftRight, request.UpDown, request.ScreenWidth, request.ScreenHeight);
+                        processor.CalTracePointMask(request.UrmTraceDPoints);
+                        WingServerCommon.Log.Logger.WriteLineInfo($"getURMImageBase64,GUID:{request.GUID},token:{request.Token},RemedicalCode:{request.RemedicalCode}");
+                        result.Base64String = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
+                        result.UrmMaxVal = urmMaxVal;
+                        result.UrmMinVal = urmMinVal;
+                        processorClass.UrmMinVal = urmMinVal;
+                        processorClass.UrmMaxVal = urmMaxVal;
+                        processorClass.HasDrawed = true;
+                        Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
+                    });
+                }
             }
             catch (Exception ex)
             {

+ 8 - 0
URMManage/URMAnalysisManager.cs

@@ -5,19 +5,27 @@ using SixLabors.ImageSharp;
 using SixLabors.ImageSharp.Processing;
 using Vinno.DataTypes;
 using Vinno.Infrastructure;
+using Vinno.Models.Base.Parameters;
+using WingInterfaceLibrary.Request.Lock;
 using WingInterfaceLibrary.Request.RemedicalAISelected;
+using WingServerCommon.Config;
 using WingServerCommon.Log;
+using WingServerCommon.Utilities;
 
 namespace WingAIDiagnosisService.URMManage
 {
     public partial class URMAnalysisManager
     {
+
+        private LockManager _lockManager;
+
         private Action<string, string, string> OnSendDiskSpaceFullNotification;
         public URMAnalysisManager(Action<string, string, string> funSendDiskSpaceFullNotification)
         {
             OnSendDiskSpaceFullNotification = funSendDiskSpaceFullNotification;
             AppendEnvironmentPath();
             WatchingVideoProcessor();
+            _lockManager = new LockManager();
         }
 
         public URMAnalysisV2Result DoURMAnalysis(string remedicalCode, List<string> arguments, string outputFolder, string coverFile, string userCode)