瀏覽代碼

增加表不存在的校验

yinyujing 4 年之前
父節點
當前提交
86edcc0c62
共有 2 個文件被更改,包括 43 次插入38 次删除
  1. 16 14
      NB_IOT_TCP_HP_SOCKET/WWKJUtil/ProtocolAnalysisTools.cs
  2. 27 24
      NB_IOT_TCP_HP_SOCKET/WWKJUtil/RemoteTask.cs

+ 16 - 14
NB_IOT_TCP_HP_SOCKET/WWKJUtil/ProtocolAnalysisTools.cs

@@ -574,7 +574,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
 
                         int rs = DBHelper.Query(strSql.ToString());
 
-                        if (rs == 1)
+                        if (rs > 0)
                         {
                             if (lastData.ContainsKey(deviceid))
                             {
@@ -598,17 +598,20 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
                 }
             }
 
-            // 更新最后状态信息
-            foreach (KeyValuePair<string, HistoryRecord> kvp in lastData)
+            if (CheckTableExist("最后状态", "历史记录模板", true))
             {
-                try
-                {
-                    UpdateDeviceLastData(kvp);
-                }
-                catch (Exception ex)
+                // 更新最后状态信息
+                foreach (KeyValuePair<string, HistoryRecord> kvp in lastData)
                 {
-                    LogUtil.WriteLog(ex.Message + ">>>" + ex.StackTrace);
-                    continue;
+                    try
+                    {
+                        UpdateDeviceLastData(kvp);
+                    }
+                    catch (Exception ex)
+                    {
+                        LogUtil.WriteLog(ex.Message + ">>>" + ex.StackTrace);
+                        continue;
+                    }
                 }
             }
         }
@@ -635,15 +638,14 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
         }
 
         /// <summary>
-        /// 判断历史记录表是否存在,不存在则新建
+        /// 判断历史记录表或最后状态表是否存在,不存在则新建
         /// </summary>
         /// <param name="tablename"></param>
         /// <param name="tabletemp"></param>
         /// <param name="creat"></param>
         /// <returns></returns>
-        private static bool CheckTableExist(string tablename, string tabletemp, bool creat)
+        public static bool CheckTableExist(string tablename, string tabletemp, bool creat)
         {
-            string str = tabletemp;
             DataTable table = DBHelper.ExecuteDataTable("select top 1 * from sysobjects where name='" + tablename + "' and xtype='u'", CommandType.Text, null);
             if (!((table.Rows.Count != 0) || creat))
             {
@@ -651,7 +653,7 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
             }
             if ((table.Rows.Count == 0) && creat)
             {
-                DBHelper.Query("select * into " + tablename + " from " + str + " where 1<>1");
+                DBHelper.Query("select * into " + tablename + " from " + tabletemp + " where 1<>1");
                 if (DBHelper.ExecuteDataTable("select * from sysobjects where name='" + tablename + "' and xtype='u'", CommandType.Text, null).Rows.Count == 0)
                 {
                     return false;

+ 27 - 24
NB_IOT_TCP_HP_SOCKET/WWKJUtil/RemoteTask.cs

@@ -104,31 +104,34 @@ namespace NB_IOT_TCP_HP_SOCKET.WWKJUtil
         {
             try
             {
-                // 1.获取正常任务
-                string sql = "select  top 1 * from TaskList a left join CommandList b on a.TaskID=b.TaskID where b.Type <> '工作模式' and a.State != '完成' and b.CtrlValveNum < " + ConfigurationManager.AppSettings["ParamSendMaxNum"] + " and a.PreDevID = " + devID + " Order By a.TaskID";
-                DataTable dataTable = DBHelper.ExecuteDataTable(sql, CommandType.Text, null);
-                int num = dataTable.Rows.Count;
-                for (int i = 0; i < num; i++)
-                {
-                    DataRow row = dataTable.Rows[i];
-                    Task item = this.InitDataBaseTask(row);
-                    this.Tasklist.Add(item);
-                }
-                if (this.Tasklist.Count > 0)
-                {
-                    return;
-                }
-                //2.获取阀门任务
-                string vsql = "select * from (select Top 1 a.TaskID,a.PreDevID,GPRSNumber,b.Type,a.Guid,a.returnUrl,a.ReplayStatus,b.SendCode,b.CtrlValveNum,b.State from TaskList a left join CommandList b on a.TaskID=b.TaskID where b.Type='工作模式' and a.PreDevID = " + devID + " Order By a.TaskID desc) Tab  where CtrlValveNum < " + ConfigurationManager.AppSettings["ParamSendMaxNum"] + " and State != '完成'";
-                //mSql = DBManager.CurrentConnectString;
-                DataTable vdataTable = DBHelper.ExecuteDataTable(vsql, CommandType.Text, null);
-                int vnum = vdataTable.Rows.Count;
-                //vn = vnum;
-                for (int i = 0; i < vnum; i++)
+                if (ProtocolAnalysisTools.CheckTableExist("CommandList", "", false) && ProtocolAnalysisTools.CheckTableExist("TaskList", "", false))
                 {
-                    DataRow row = vdataTable.Rows[i];
-                    Task item = this.InitDataBaseTask(row);
-                    this.Tasklist.Add(item);
+                    // 1.获取正常任务
+                    string sql = "select  top 1 * from TaskList a left join CommandList b on a.TaskID=b.TaskID where b.Type <> '工作模式' and a.State != '完成' and b.CtrlValveNum < " + ConfigurationManager.AppSettings["ParamSendMaxNum"] + " and a.PreDevID = " + devID + " Order By a.TaskID";
+                    DataTable dataTable = DBHelper.ExecuteDataTable(sql, CommandType.Text, null);
+                    int num = dataTable.Rows.Count;
+                    for (int i = 0; i < num; i++)
+                    {
+                        DataRow row = dataTable.Rows[i];
+                        Task item = this.InitDataBaseTask(row);
+                        this.Tasklist.Add(item);
+                    }
+                    if (this.Tasklist.Count > 0)
+                    {
+                        return;
+                    }
+                    //2.获取阀门任务
+                    string vsql = "select * from (select Top 1 a.TaskID,a.PreDevID,GPRSNumber,b.Type,a.Guid,a.returnUrl,a.ReplayStatus,b.SendCode,b.CtrlValveNum,b.State from TaskList a left join CommandList b on a.TaskID=b.TaskID where b.Type='工作模式' and a.PreDevID = " + devID + " Order By a.TaskID desc) Tab  where CtrlValveNum < " + ConfigurationManager.AppSettings["ParamSendMaxNum"] + " and State != '完成'";
+                    //mSql = DBManager.CurrentConnectString;
+                    DataTable vdataTable = DBHelper.ExecuteDataTable(vsql, CommandType.Text, null);
+                    int vnum = vdataTable.Rows.Count;
+                    //vn = vnum;
+                    for (int i = 0; i < vnum; i++)
+                    {
+                        DataRow row = vdataTable.Rows[i];
+                        Task item = this.InitDataBaseTask(row);
+                        this.Tasklist.Add(item);
+                    }
                 }
             }
             catch (Exception)