浏览代码

处理日志记录问题

章政 7 年之前
父节点
当前提交
56eedaf2f4
共有 3 个文件被更改,包括 27 次插入30 次删除
  1. 15 13
      PLCDataReader/Main.cs
  2. 8 13
      PLCDataReader/PublicMethod/LogicHandler.cs
  3. 4 4
      PLCDataReader/PublicMethod/ModBusTCPClient.cs

+ 15 - 13
PLCDataReader/Main.cs

@@ -200,7 +200,7 @@ namespace UAS_PLCDataReader
 
             GridDeviceData.GetDataSQL = "select dr_decode,dr_dename,case when dr_runstatus='disconnect' then '无法连接' when dr_runstatus='stopped' then '未运行' when dr_runstatus='running' then '运行中' when dr_runstatus='noanswer' then '无应答' end dr_runstatus,dr_qty,dr_okqty,de_item1||':'||dr_value1 dr_value1,de_item2||':'||dr_value2 dr_value2,de_item3||':'||dr_value3 dr_value3,de_item4||':'||dr_value4 dr_value4,de_item5||':'||dr_value5 dr_value5,de_item6||':'||dr_value6 dr_value6,de_item7||':'||dr_value7 dr_value7,de_item8||':'||dr_value8 dr_value8,de_item9||':'||dr_value9 dr_value9,de_item10||':'||dr_value10 dr_value10 from devicerunstatus left join device on dr_decode=de_code order by dr_decode";
 
-            GridDeviceRunLog.GetDataSQL = "SELECT * FROM DEVICERUNRECORD";
+            GridDeviceRunLog.GetDataSQL = "SELECT drr_id,drr_decode,drr_dename,to_char(drr_date,'YYYY-MM-DD hh24:mi:ss')drr_date,drr_doman,drr_remark,drr_logstatus FROM DEVICERUNRECORD order by drr_id desc";
             GridDeviceRunLog.ID = "drr_id";
             GridDeviceRunLog.TableName = "DEVICERUNRECORD";
 
@@ -465,13 +465,13 @@ namespace UAS_PLCDataReader
                     sql.Append("insert into DEVICEPOLLINGLOG(dpg_id,dpg_decode,dpg_starttime,dpg_interval)values");
                     sql.Append("(DEVICEPOLLINGLOG_seq.nextval,'" + pl.DeviceCode + "',sysdate,'" + pl.Interval + "')");
                     QueueUpdateDevice.Enqueue(sql.ToString());
-                    LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, DeviceStatus.Noanswer);
+                    LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "设备启动", DeviceStatus.Noanswer, -1);
                     pt.AddTask(RunTask, pl);
                     //添加到状态为运行的行
                     PollSettingPaintRowIndex.Add(i);
                     GridPollingSetting.Focus();
                 }
-                else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, DeviceStatus.Stopped);
+                else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "设备未启用", DeviceStatus.Stopped, 0);
             }
             ButtonSaveCommandSet.DoSaveAfterHandler(false);
         }
@@ -561,9 +561,9 @@ namespace UAS_PLCDataReader
                         modclient.Dh = dh;
                         client.Add(DpcID, modclient);
                     }
-                    catch (Exception)
+                    catch (Exception ex)
                     {
-                        LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, DeviceStatus.Disconnect);
+                        LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, ex.Message, DeviceStatus.Disconnect, -1);
                     }
                 }
                 //如果不包含该项数据则在键值对中添加
@@ -629,7 +629,6 @@ namespace UAS_PLCDataReader
                         {
                             ReturnData[Decode].ItemData = ItemData;
                             LogicHandler.UpdateDeviceData(Decode, ItemData);
-                            LogicHandler.DoDeviceDataDiffLog(pl.DeviceCode, pl.DeviceName, Command, pl.CommandCode, User.UserName);
                         }
                         //每次更新轮询的数据
                         ReturnData[Decode].ReceiveDataSize += ReceiveCommandByteSize;
@@ -637,14 +636,13 @@ namespace UAS_PLCDataReader
                         if (BaseUtil.CheckDicDiff(ReturnData[Decode].ItemData, ItemData))
                         {
                             LogicHandler.UpdateDeviceData(Decode, ItemData);
-                            LogicHandler.DoDeviceDataDiffLog(pl.DeviceCode, pl.DeviceName, Command, pl.CommandCode, User.UserName);
                         }
                         ReturnData[Decode].ItemData = ItemData;
                     }
                     client[DpcID].Returnvalue.Remove(IP);
                 }
             }
-            else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, DeviceStatus.Disconnect);
+            else LogicHandler.UpdateDeviceStatus(pl.DeviceCode, pl.DeviceName, "未配置联网信息", DeviceStatus.Disconnect, -1);
         }
 
         /// <summary>
@@ -658,6 +656,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);
+            }
             PollSettingPaintRowIndex.Clear();
             GridPollingSetting.Focus();
             client.Clear();
@@ -978,6 +980,11 @@ namespace UAS_PLCDataReader
             }
             GridDeviceRunLog.RefreshData();
         }
+
+        private void ButtonRefreshDeviceData_Click(object sender, EventArgs e)
+        {
+            GridDeviceData.RefreshData();
+        }
         #endregion
 
         #region 客户端参数设置
@@ -1004,10 +1011,5 @@ namespace UAS_PLCDataReader
         {
             dh.ExecuteSql("update devicerunstatus set dr_runstatus='" + DeviceStatus.Stopped + "'", "update");
         }
-
-        private void ButtonRefreshDeviceData_Click(object sender, EventArgs e)
-        {
-            GridDeviceData.RefreshData();
-        }
     }
 }

+ 8 - 13
PLCDataReader/PublicMethod/LogicHandler.cs

@@ -95,18 +95,6 @@ namespace UAS_PLCDataReader.PublicMethod
             return true;
         }
 
-        /// <summary>
-        /// 进行差异日志记录
-        /// </summary>
-        public static void DoDeviceDataDiffLog(string iDeCode, string iDeName, string iCommand, string iCommandFrom, string iMan)
-        {
-            StringBuilder sql = new StringBuilder();
-            sql.Clear();
-            sql.Append("insert into DeviceRunRecord(drr_id,drr_decode,drr_dename,drr_command,drr_commandfrom,drr_date,drr_doman,drr_remark)");
-            sql.Append("values(DeviceRunRecord_seq.nextval,'" + iDeCode + "','" + iDeName + "','" + iCommand + "','" + iCommandFrom + "',sysdate,'" + iMan + "','')");
-            Main.QueueUpdateDevice.Enqueue(sql.ToString());
-        }
-
         /// <summary>
         /// 记录轮询日志,记录时间
         /// </summary>
@@ -272,7 +260,7 @@ namespace UAS_PLCDataReader.PublicMethod
         /// <param name="iDecode"></param>
         /// <param name="iDename"></param>
         /// <param name="iDestatus"></param>
-        public static void UpdateDeviceStatus(string iDecode, string iDename, string iDestatus)
+        public static void UpdateDeviceStatus(string iDecode, string iDename, string iErrMessage, string iDestatus, int iType)
         {
             StringBuilder sql = new StringBuilder();
             sql.Clear();
@@ -281,6 +269,13 @@ namespace UAS_PLCDataReader.PublicMethod
             sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate) VALUES (DeviceRunstatus_seq.nextval,");
             sql.Append("'" + iDecode + "','" + iDename + "','" + iDestatus + "',sysdate)");
             Main.QueueUpdateDevice.Enqueue(sql.ToString());
+            if (iType == -1)
+            {
+                sql.Clear();
+                sql.Append("insert into DeviceRunRecord(drr_id,drr_decode,drr_dename,drr_date,drr_doman,drr_remark,drr_logstatus,drr_type)");
+                sql.Append("values(DeviceRunRecord_seq.nextval,'" + iDecode + "','" + iDename + "',sysdate,'" + User.UserName + "','" + iErrMessage + "','" + iDestatus + "'," + iType + ")");
+                Main.QueueUpdateDevice.Enqueue(sql.ToString());
+            }
         }
 
         public static void DoCommandLog(string iUserCode, string iPageText, string iContent)

+ 4 - 4
PLCDataReader/PublicMethod/ModBusTCPClient.cs

@@ -118,7 +118,7 @@ namespace UAS_PLCDataReader.PublicMethod
             }
             catch (Exception ex)
             {
-                LogicHandler.UpdateDeviceStatus(decode, dename, DeviceStatus.Disconnect);
+                LogicHandler.UpdateDeviceStatus(decode, dename, ex.Message, DeviceStatus.Disconnect, -1);
                 LogicHandler.DoDevicePollingLog(decode, false);
                 LogManager.DoLog(ex.Message + ex.StackTrace);
             }
@@ -143,10 +143,10 @@ namespace UAS_PLCDataReader.PublicMethod
                 }
                 socket.Send(arr);
                 byte[] receive = new byte[1024];
-                LogicHandler.UpdateDeviceStatus(decode, dename, DeviceStatus.Noanswer);
+                LogicHandler.UpdateDeviceStatus(decode, dename, "设备运行准备获取数据", DeviceStatus.Noanswer, 0);
                 LogicHandler.DoDevicePollingLog(decode, true);
                 int length = socket.Receive(receive);
-                LogicHandler.UpdateDeviceStatus(decode, dename, DeviceStatus.Running);
+                LogicHandler.UpdateDeviceStatus(decode, dename, "设备运行获取到数据返回数据", DeviceStatus.Running, 0);
                 str = BaseUtil.ByteToHexadecimalString(receive, length);
                 LogicHandler.DoDevicePollingLog(decode, BaseUtil.ASCIIToString(str));
                 if (!returnvalue.ContainsKey(socket.RemoteEndPoint.ToString()))
@@ -156,7 +156,7 @@ namespace UAS_PLCDataReader.PublicMethod
             }
             catch (Exception ex)
             {
-                LogicHandler.UpdateDeviceStatus(decode, dename, DeviceStatus.Disconnect);
+                LogicHandler.UpdateDeviceStatus(decode, dename, ex.Message, DeviceStatus.Disconnect, -1);
                 LogicHandler.DoDevicePollingLog(decode, false);
                 LogManager.DoLog(ex.Message + ex.StackTrace + "\n" + decode + " " + str);
             }