fly 8 miesięcy temu
rodzic
commit
2c16499cf4

+ 1 - 0
Service/AIDiagnosisService.URM.cs

@@ -375,6 +375,7 @@ namespace WingAIDiagnosisService.Service
                                 var urmProcessRequest = ConvertToUrmRequest<URMProcessRequest, UrmProcessRequest>(request, remedical, currentFolder);
                                 urmProcessRequest.RemedicalCode = remedicalCode;
                                 urmProcessRequest.Token = request.Token;
+                                urmProcessRequest.ProcessType = 1;
                                 urmProcessRequest.GUID = urmProcessRequest.GetUniqueCode();
                                 var base64String = URMAnalysisManager.CreateUrmColorbarImage(urmProcessRequest);
                                 Logger.WriteLineInfo($"AIDiagnosisService URMProcessAsync DoUrmProcess end, remedicalCode:{remedicalCode}, base64String-Length:{base64String.Length}");

+ 37 - 20
URMManage/ImagePostProcess.cs

@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Threading;
 using System.Threading.Tasks;
 using SkiaSharp;
 using Vinno.DataManager.Infrastructure;
@@ -71,25 +72,40 @@ namespace WingAIDiagnosisService.URMManage
                 var processorClass = UrmProcessorList.FirstOrDefault(x => x.GUID == request.GUID);
                 processorClass.LastActiveTime = DateTime.UtcNow;
                 var processor = processorClass.Processor;
-                //赋值
-                processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
-                processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
-                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);
-                imgBase64 = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
-                processorClass.UrmMinVal = urmMinVal;
-                processorClass.UrmMaxVal = urmMaxVal;
-                processorClass.HasDrawed = true;
-                Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
+                using (var mutex = new Mutex(false, request.GUID + DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss:f")))//同一个人100毫秒以内无法同时访问,避免server挂掉
+                {
+                    try
+                    {
+                        mutex.WaitOne();
+                        //赋值
+                        processor.setUrmParams(RecordParams.UrmImageType, request.UrmImageType);
+                        processor.setUrmParams(RecordParams.UrmBlend, request.UrmBlend ? 2 : 0);
+                        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);
+                        imgBase64 = processor.getURMImageBase64(true, ref urmMinVal, ref urmMaxVal);
+                        processorClass.UrmMinVal = urmMinVal;
+                        processorClass.UrmMaxVal = urmMaxVal;
+                        processorClass.HasDrawed = true;
+                        Logger.WriteLineInfo("AIDiagnosis DoUrmProcess end");
+                    }
+                    catch (Exception ex)
+                    {
+                        WingServerCommon.Log.Logger.WriteLineInfo($"_urmProcessAlg.CalURMImg error :{ex}");
+                    }
+                    finally
+                    {
+                        mutex.ReleaseMutex();
+                    }
+                }
             }
             catch (Exception ex)
             {
@@ -326,8 +342,9 @@ namespace WingAIDiagnosisService.URMManage
                     Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor init"); // 参数设置
                     var UrmProcessor = new URMProcess();
                     var URMProcessInitSuccess = UrmProcessor.init(request.FamilyName, request.TypeInfo, request.NativeId);
+
                     Logger.WriteLineInfo("AIDiagnosis DoUrmProcess InitURMProcessor setUrmParams");
-                    
+
                     processorClass = new URMProcessorClass
                     {
                         GUID = request.GUID,

+ 11 - 13
URMManage/URMProcess.cs

@@ -14,6 +14,7 @@ using Vinno.DataManager.Utilities;
 using SkiaSharp;
 using System.Diagnostics;
 
+
 namespace WingAIDiagnosisService.URMManage
 {
     public class URMProcess
@@ -36,42 +37,32 @@ namespace WingAIDiagnosisService.URMManage
 
         public bool init(string familyName, string typeInfo, string nativeId)
         {
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init start");
             ResourceManagerImpl resourceManager = new ResourceManagerImpl(Path.Combine(ServiceManager.RootPath, "URM", "dev"));
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ResourceManager.Initialize");
             ResourceManager.Initialize(resourceManager);
             var dir = new VinnoDirectoryInfo(Path.Combine(ServiceManager.RootPath, "URM"));
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init UpdateSection");
+
             NativeProxy.UpdateSection("Path", "ShippedRoot", dir.FullName);
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init UpdateSection2");
+
             NativeProxy.UpdateSection("Product-GeneralSpecification", "ImagePPFileName", "ImagePP_Tulip");
             if (ServiceManager.Os.IsWin())
             {
-                WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ImagePPNative_Win");
                 ImagePP = new ImagePPNative_Win();
             }
             else
             {
-                WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ImagePPNative");
                 ImagePP = new ImagePPNative();
             }
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ImagePP.Initial");
             ImagePP.Initial();
             Logger.WriteLineInfo("Record.SetProbeApp({0},{1},{2})", familyName, typeInfo, nativeId);
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ImagePP.Initial2");
             ImagePP.Initial(familyName, typeInfo, nativeId);
             // TODO Delete me
             var maplength = new List<int>();
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init ImagePP.GetParameter");
             var result = ImagePP.GetParameter("SRColorMap:AngleMap", "SR_Map_Length", maplength, null);
             Logger.WriteLineInfo("ImagePP.GetParameter", result);
             // TODO Delete me
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init URMProcessAlg");
             _urmProcessAlg = new URMProcessAlg(ImagePP);
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init _urmType.Init");
             _urmType.Init(URMType.Den);
             urmTraceDPoints = new DPoint[0];
-            WingServerCommon.Log.Logger.WriteLineInfo($"AIService URMAnalysisManager DoURMAnalysis URMProcess init end");
             return result;
         }
 
@@ -258,7 +249,14 @@ namespace WingAIDiagnosisService.URMManage
             {
                 Stopwatch sw = new Stopwatch();
                 sw.Start();
-                _urmProcessAlg.CalURMImg(ref urmMaxVal, ref urmMinVal, (int)_urmType.Current);
+                try
+                {
+                    _urmProcessAlg.CalURMImg(ref urmMaxVal, ref urmMinVal, (int)_urmType.Current);
+                }
+                catch(Exception ex)
+                {
+                    WingServerCommon.Log.Logger.WriteLineInfo($"_urmProcessAlg.CalURMImg error :{ex}");
+                }
                 sw.Stop();
                 WingServerCommon.Log.Logger.WriteLineInfo($"_urmProcessAlg.CalURMImg time :{sw.ElapsedMilliseconds}");
             }

+ 8 - 0
URMManage/UrmProcessRequest.cs

@@ -21,6 +21,13 @@ namespace WingAIDiagnosisService.URMManage
         /// Token
         /// </summary>
         public string Token { get; set; }
+
+        /// <summary>
+        /// 操作类型  0-后处理测量,1-colorbar,2-zoom
+        /// </summary>
+        /// <value></value>
+        public int ProcessType { get; set; } = 0;
+
         //文件路径
         public string DenDataPath { get; set; } = "D:\\Projects\\URMDemo\\URMDemo\\bin\\Debug\\URMTemp\\393f5673dc424b5e87334f8ba4a90aae\\srcDenArray.bin";
         public string DirDataPath { get; set; } = "D:\\Projects\\URMDemo\\URMDemo\\bin\\Debug\\URMTemp\\393f5673dc424b5e87334f8ba4a90aae\\srcDirArray.bin";
@@ -124,6 +131,7 @@ namespace WingAIDiagnosisService.URMManage
                 var datas = new StringBuilder();
                 datas.Append(Token);
                 datas.Append(RemedicalCode);
+                datas.Append(ProcessType);
                 return ToSHA256(datas.ToString());
             }
             catch