Browse Source

记录设备故障时间日志

章政 7 years ago
parent
commit
689da85d4b
2 changed files with 21 additions and 33 deletions
  1. 4 4
      PLCDataReader/Main.cs
  2. 17 29
      PLCDataReader/PublicMethod/LogicHandler.cs

+ 4 - 4
PLCDataReader/Main.cs

@@ -662,10 +662,10 @@ namespace UAS_PLCDataReader
             {
                 item.Value.Stop();
             }
-            foreach (int item in PollSettingPaintRowIndex)
-            {
-                LogicHandler.UpdateDeviceStatus(GridViewPollSetting.GetRowCellValue(item, "dpc_decode").ToString(), GridViewPollSetting.GetRowCellValue(item, "dpc_dename").ToString(), "设备启动", DeviceStatus.Noanswer, -1);
-            }
+            //foreach (int item in PollSettingPaintRowIndex)
+            //{
+            //    LogicHandler.UpdateDeviceStatus(GridViewPollSetting.GetRowCellValue(item, "dpc_decode").ToString(), GridViewPollSetting.GetRowCellValue(item, "dpc_dename").ToString(), "设备启动", DeviceStatus.Noanswer, -1);
+            //}
             PollSettingPaintRowIndex.Clear();
             GridPollingSetting.Focus();
             client.Clear();

+ 17 - 29
PLCDataReader/PublicMethod/LogicHandler.cs

@@ -109,15 +109,28 @@ namespace UAS_PLCDataReader.PublicMethod
             sql.Append("update DEVICEPOLLINGLOG set ");
             if (iOnLine)
             {
-                sql.Append("dpg_onlinetime = sysdate,dpg_status='running' where dpg_id=(select max(dpg_id)");
+                sql.Append("dpg_onlinetime = sysdate,dpg_status='" + DeviceStatus.Running + "' where dpg_id=(select max(dpg_id)");
                 sql.Append(" from DEVICEPOLLINGLOG where dpg_decode='" + iDeCode + "') and nvl(dpg_status,'disconnect')='disconnect'");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
+                sql.Clear();
+                sql.Append("update DeviceRunTime set drt_onlinetime=sysdate where drt_id=(select min(drt_id) from DeviceRunTime ");
+                sql.Append("where drt_decode='" + iDeCode + "' and drt_onlinetime is null)");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
+                //删除无用的重复数据
+                sql.Clear();
+                sql.Append("delete from DeviceRunTime where drt_decode='" + iDeCode + "' and drt_onlinetime is null");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
             }
             else
             {
-                sql.Append("dpg_offlinetime = sysdate,dpg_status='disconnect' where dpg_id=(select max(dpg_id)");
+                sql.Append("dpg_offlinetime = sysdate,dpg_status='" + DeviceStatus.Disconnect + "' where dpg_id=(select max(dpg_id)");
                 sql.Append(" from DEVICEPOLLINGLOG where dpg_decode='" + iDeCode + "') and dpg_status='running'");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
+                sql.Clear();
+                sql.Append("insert into DeviceRunTime (drt_id,drt_decode,drt_offlinetime,drt_badcount) values(DeviceRunTime_seq.nextval,");
+                sql.Append("'" + iDeCode + "',sysdate,(select count(1)+1 from DeviceRunTime where drt_decode='" + iDeCode + "' and drt_onlinetime is not null))");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
             }
-            Main.QueueUpdateDevice.Enqueue(sql.ToString());
         }
 
         /// <summary>
@@ -136,31 +149,6 @@ namespace UAS_PLCDataReader.PublicMethod
             Main.QueueUpdateDevice.Enqueue(sql.ToString());
         }
 
-        /// <summary>
-        /// 记录轮询日志,记录时间
-        /// </summary>
-        /// <param name="iDeCode">设备编号</param>
-        /// <param name="iSendDataSize">发送数据大小</param>
-        /// <param name="iReceiveDataSize">接收数据大小</param>
-        /// <param name="iOnLine">上线或者离线</param>
-        public static void DoDevicePollingLog(string iDeCode, string iSendDataSize, string iReceiveDataSize, bool iOnLine)
-        {
-            StringBuilder sql = new StringBuilder();
-            sql.Clear();
-            sql.Append("update DEVICEPOLLINGLOG set dpg_senddatasize=nvl(dpg_senddatasize,0)+" + iSendDataSize);
-            sql.Append(",dpg_receivedatasize=nvl(dpg_receivedatasize,0)+" + iReceiveDataSize + ",dpg_count=nvl(dpg_count,0)+1 ");
-            if (iOnLine)
-            {
-                sql.Append(",dpg_onlinetime = sysdate,dpg_status='running'");
-            }
-            else
-            {
-                sql.Append(",dpg_offlinetime = sysdate,dpg_status='disconnect'");
-            }
-            sql.Append(" where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + iDeCode + "')");
-            Main.QueueUpdateDevice.Enqueue(sql.ToString());
-        }
-
         /// <summary>
         /// 记录轮询日志,不记录时间
         /// </summary>
@@ -171,7 +159,7 @@ namespace UAS_PLCDataReader.PublicMethod
         {
             StringBuilder sql = new StringBuilder();
             sql.Clear();
-            sql.Append("update DEVICEPOLLINGLOG set dpg_status='running',dpg_senddatasize=nvl(dpg_senddatasize,0)+" + iSendDataSize);
+            sql.Append("update DEVICEPOLLINGLOG set dpg_senddatasize=nvl(dpg_senddatasize,0)+" + iSendDataSize);
             sql.Append(",dpg_receivedatasize=nvl(dpg_receivedatasize,0)+" + iReceiveDataSize + ",dpg_count=nvl(dpg_count,0)+1 ");
             sql.Append(" where dpg_id=(select max(dpg_id) from DEVICEPOLLINGLOG where dpg_decode='" + iDeCode + "')");
             Main.QueueUpdateDevice.Enqueue(sql.ToString());