Explorar o código

循环控制时间 代码优化

zackhua hai 9 meses
pai
achega
a40fd4037d

+ 4 - 4
ZLPlugin_LisPacs_MR/LisPacs_MR_Bll.cs

@@ -252,7 +252,7 @@ namespace ZLPlugin_LisPacs_MR
             string sql = @"Insert Into ZLLPMR.互认_LIS(LISCHECKREPORTID,REPORTNAME,ORGNAME,REPORTTIME,病人ID,主页ID,TIME,OPERATORNO,医嘱id) 
                             Values('{0}','{1}','{2}',to_date('{3}','yyyy/mm/dd hh24:mi:ss'),{4},{5},to_date('{6}','yyyy/mm/dd hh24:mi:ss'),'{7}',{8})";
             sql = string.Format(sql, lis.LisCheckReportId, lis.ReportName, lis.OrgName, lis.ReportTime, lngPatientID, lngClinicID, date, no, yzid);
-            //Log.Info("InsertLis:" + sql);
+            Log.Info("InsertLis:" + sql);
             int res = Tools.ExecuteSql(sql);
             return res;
         }
@@ -315,8 +315,8 @@ namespace ZLPlugin_LisPacs_MR
                         foreach (var items in listlis)
                         {
                             //Log.Info("state666");
-                            if (items.code.Contains(lis[i].ItemList[j].StandardItemId)) 
-                            {
+                           // if (items.code.Contains(lis[i].ItemList[j].StandardItemId)) 
+                            //{
                                // Log.Info("items.code:" + items.code);
                                 //Log.Info("items.id:" + items.id);
                                 string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
@@ -338,7 +338,7 @@ namespace ZLPlugin_LisPacs_MR
                                     }
                                 }
                                 state = false;
-                            }
+                          //  }
                         }
                       
                     }

+ 11 - 1
ZLPlugin_LisPacs_MR/SocketClient.cs

@@ -51,6 +51,7 @@ namespace ZLPlugin_LisPacs_MR
         public SocketClient(string ip,int Port)
         {
             _ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+            _ClientSocket.ReceiveTimeout = 2000;
             this.ipAddress = ip;
             this.Port = Port;
             Start();
@@ -64,12 +65,21 @@ namespace ZLPlugin_LisPacs_MR
             {
                 _ClientSocket.Connect(new IPEndPoint(IPAddress.Parse(this.ipAddress), this.Port));//通过IP和端口号来定位一个所要连接的服务器端
                                                                                                   //客户端网络结点号  
+
                 remoteEndPoint = _ClientSocket.RemoteEndPoint.ToString();
+                LocalEndPoint = _ClientSocket.LocalEndPoint.ToString();
+                Log.Info($"远端地址:{remoteEndPoint} 本端地址:{LocalEndPoint}");
+                //threadReceive = new Thread(Receive);
+                //threadReceive.IsBackground = true;
+                //threadReceive.Start();
+
+
+               /* remoteEndPoint = _ClientSocket.RemoteEndPoint.ToString();
                 LocalEndPoint = _ClientSocket.LocalEndPoint.ToString();
                 //Console.WriteLine($"远端地址:{remoteEndPoint} 本端地址:{LocalEndPoint}");
                 threadReceive = new Thread(Receive);
                 threadReceive.IsBackground = true;
-                threadReceive.Start();
+                threadReceive.Start();*/
                 IsRun = true;
             }
             catch (Exception ex)

+ 51 - 25
ZLPlugin_LisPacs_MR/clsPlugin.cs

@@ -193,22 +193,8 @@ namespace ZLPlugin_LisPacs_MR
                 return true;
             }
             List<YZData> ss_list = JSON.JsonToObject<List<YZData>>(Tools.FormatStr(str), Encoding.UTF8);
-            
-            /*Log.Info("111");
-            //循环取出 诊疗项目id   并过滤已经互认的医嘱
-            // 查询医嘱天数  默认一天
-            long limit_day = 1;
-            LisPacs_MR_Bll.ExistHuRemYz(out limit_day);
-            Log.Info("limit_day==" + limit_day);
-            //判断一下 是否已经互认过
-            string message = "";
-            LisPacs_MR_Bll.HandleYzData(ss_list, lngPatientID, limit_day ,out message);
-            Log.Info("message=="+ message);
-            if (!string.IsNullOrWhiteSpace(message))
-            {
-                MessageBox.Show("已经存在互认医嘱为:"+message, "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
-                return false;
-            }*/
+
+            SocketClient socketClient = new SocketClient("127.0.0.1", 6061);
             try
             {
                 int res = 1;
@@ -245,43 +231,82 @@ namespace ZLPlugin_LisPacs_MR
                 {
                     rd = LisPacs_MR_Bll.GetMZPostJson(lngClinicID, code, hrType);
                 }
-                SocketClient client = new SocketClient("127.0.0.1", 6061);
+                //SocketClient client = new SocketClient("127.0.0.1", 6061);
                 //Results result = new Results();
                 string json = Tools.RecordsetToJson(rd);
-                client.Send(json);
-                Tools.Delay(20000, 0);
+                socketClient.Send(json);
+                //Tools.Delay(waittingdate, 0);
+                bool status = true; int i = 0;
+                var begintime = DateTime.Now.Ticks;
+                TimeSpan timeSpan = new TimeSpan();
+                Log.Info("初始化完成!");
+                while (status)
+                {
+                    timeSpan = new TimeSpan(DateTime.Now.Ticks - begintime);
+                    //Thread.Sleep(3000);
+                    try
+                    {
+                        socketClient.Receive();
+                    }
+                    catch (Exception e)
+                    {
+                        Log.Info("接收失败!"+ e.Message);
+                    }
+                    if (timeSpan.TotalSeconds > 10 || !string.IsNullOrWhiteSpace(SocketClient.Message))
+                    {
+                        status = false;
+                    }
+                    Log.Info("timeSpan.TotalSeconds:" + timeSpan.TotalSeconds);
+                    i++;
+
+                }
+                
                 Log.Info("22222"+SocketClient.Message);
+
+                Log.Info("退出循环!");
+                Log.Info("listlis count!" + listlis.Count);
+                Log.Info("listpacs count!" + listpacs.Count);
                 if (!string.IsNullOrWhiteSpace(SocketClient.Message))
                 {
-                    
                     ResultsEx rex = new ResultsEx();
                     rex = JSON.JsonToObject<ResultsEx>(Tools.FormatStr(SocketClient.Message), Encoding.UTF8);
                     if (rex.ResultCode == 2)//有互认
                     {
-                        SocketClient.Message = null;
-                        return SaveData(waittingdate, lngPatientID, lngClinicID, listlis, listpacs, -1);
+                        MessageBox.Show("回传数据至his!");
+                        socketClient.Receive();
+                        //  SocketClient.Message = null;
+                        Log.Info("2:" + SocketClient.Message);
+                        SaveData(waittingdate, lngPatientID, lngClinicID, listlis, listpacs, -1);
+                        socketClient.Close();
+                        return true;
                     }
                     else if (rex.ResultCode == -1)//互认引用失败
                     {
                         MessageBox.Show(rex.ResultText.ToString(), "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+                        socketClient.Close();
                         return true;
                     }
                     else
                     {
+                        MessageBox.Show(rex.ResultText.ToString(), "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+                        socketClient.Close();
                         return true;//此病人不存在互认信息
                     }
 
                 }
+                Log.Info("失败" + SocketClient.Message);
+                socketClient.Close();
             }
             catch (Exception ex)
             {
+                
                 MessageBox.Show(ex.Message, "中联软件", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                 Log.Info(ex.Message);
                 Log.Info(ex.StackTrace);
             }
-            /*if (client != null)
+           /* if (socketClient != null)
             {
-                client.Close();
+                socketClient.Close();
             }*/
             return true;
         }
@@ -289,6 +314,7 @@ namespace ZLPlugin_LisPacs_MR
         {
             Results result = new Results();
             Tools.Delay(waittingdate);
+            Log.Info("SaveData的信息" + SocketClient.Message);
             if (string.IsNullOrWhiteSpace(SocketClient.Message))
             {
                 return true;
@@ -309,9 +335,9 @@ namespace ZLPlugin_LisPacs_MR
             {
                 return true;
             }
-            //Log.Info(SocketClient.Message);
             long lisId;
             long pacsId;
+            Log.Info("开始保存数据!");
             LisPacs_MR_Bll.SaveData(result, lngPatientID, lngClinicID, Domain.Infos.UserInfo.编号, listlis, listpacs,out lisId,out pacsId);
             if (state < 1)
             {