章政 7 жил өмнө
parent
commit
d2d851483c

+ 16 - 5
PLCDataReader/PublicMethod/LogicHandler.cs

@@ -263,11 +263,22 @@ namespace UAS_PLCDataReader.PublicMethod
         public static void UpdateDeviceStatus(string iDecode, string iDename, string iErrMessage, string iDestatus, int iType)
         {
             StringBuilder sql = new StringBuilder();
-            sql.Clear();
-            sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + iDecode + "' dr_decode from  dual) alias2 ");
-            sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate =sysdate,Dr_runstatus='" + iDestatus + "' ");
-            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)");
+            if (iDestatus == DeviceStatus.Running)
+            {
+                sql.Clear();
+                sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + iDecode + "' dr_decode from  dual) alias2 ");
+                sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate =sysdate,Dr_runstatus='" + iDestatus + "',dr_getdatatime=(sysdate-dr_updatestatusdate)* 24 * 60 * 60*1000 ");
+                sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate,dr_updatestatusdate) VALUES (DeviceRunstatus_seq.nextval,");
+                sql.Append("'" + iDecode + "','" + iDename + "','" + iDestatus + "',sysdate,sysdate)");
+            }
+            else
+            {
+                sql.Clear();
+                sql.Append("MERGE INTO DeviceRunstatus alias1 USING (select '" + iDecode + "' dr_decode from  dual) alias2 ");
+                sql.Append("ON (alias1.dr_decode=alias2.dr_decode) WHEN MATCHED THEN  UPDATE  SET dr_startdate=sysdate,Dr_runstatus='" + iDestatus + "',dr_updatestatusdate=sysdate ");
+                sql.Append("WHEN NOT MATCHED THEN INSERT (Dr_id,dr_decode,dr_dename,Dr_runstatus,dr_startdate,dr_updatestatusdate) VALUES (DeviceRunstatus_seq.nextval,");
+                sql.Append("'" + iDecode + "','" + iDename + "','" + iDestatus + "',sysdate,sysdate)");
+            }
             Main.QueueUpdateDevice.Enqueue(sql.ToString());
             if (iType == -1)
             {