Browse Source

之江检查空间名称

李莎 2 years ago
parent
commit
74ab382900
1 changed files with 134 additions and 119 deletions
  1. 134 119
      start.py

+ 134 - 119
start.py

@@ -10,10 +10,11 @@ import os
 SELECT_BUILDING_SQL = "SELECT zj_building_id,sg_building_id FROM sagacloud_setup.zj_sync_config_building"
 SELECT_STATE_SQL = "SELECT room_id from sagacloud_setup.zj_t_building_rooms where `type` = 1" #只对比类型为1的点位
 SELECT_FC_SQL = "SELECT building_id,room_name,room_id from zj_fc.t_building_rooms"
-SELECT_SPACE_SQL = "SELECT building_id,local_name FROM sagacloud_object.object_data_space"
+SELECT_SPACE_SQL = "SELECT id,building_id,local_name FROM sagacloud_object.object_data_space"
 TRUNCATE_BUILDING_ROOMS_SQL = "truncate table sagacloud_setup.zj_sync_building_rooms"
 INSERT_BUILDING_ROOMS_SQL = "INSERT into sagacloud_setup.zj_sync_building_rooms(building_id,building_name,room_name,floor_id,floor_name,`state`,`type`,create_time) values"
 SELECT_DIFF_FC_SQL="SELECT building_name,floor_id,floor_name,`state`,`type` from zj_fc.t_building_rooms WHERE building_id='%s' and room_name='%s'"
+UPDATE_SPACEID_SQL = "UPDATE sagacloud_setup.zj_t_building_rooms SET space_id = '%s' where room_id = '%s'"
 
 def datetime_now():
     # datetime_now = datetime.datetime.now().strftime("%Y%m%d%H%M%S")
@@ -35,134 +36,148 @@ def insert_mysql(sqls):
     print("%s mysql数据插入成功,合计%s条..." % (datetime_now(), len(sqls)))
 
 
-# # 读取配置文件信息
-# with open("config.json", "r") as f:
-#     data = json.load(f)
-#     mysql = data["mysql"]
-#     database = mysql["database"]
-#     dingding = data["dingding"]
+# 读取配置文件信息
+with open("config.json", "r") as f:
+    data = json.load(f)
+    mysql = data["mysql"]
+    database = mysql["database"]
+    dingding = data["dingding"]
 
 
 
-mysql = {
-    "host": os.getenv("host"),
-    "port": os.getenv("port"),
-    "user": os.getenv("user"),
-    "passwd": os.getenv("passwd"),
-    "database": os.getenv("database")
-}
-database = os.getenv("database")
-dingding = os.getenv("dingding")
+# mysql = {
+#     "host": os.getenv("host"),
+#     "port": os.getenv("port"),
+#     "user": os.getenv("user"),
+#     "passwd": os.getenv("passwd"),
+#     "database": os.getenv("database")
+# }
+# database = os.getenv("database")
+# dingding = os.getenv("dingding")
 
 
 print("%s 等待开始检查..." % datetime_now())
 while True:
 
-    time_now = datetime.datetime.fromtimestamp(int(time.time()),
+        time_now = datetime.datetime.fromtimestamp(int(time.time()),
                                                pytz.timezone('Asia/Shanghai')).strftime('%H:%M:%S')
-    # time_now = time.strftime("%H:%M:%S", time.localtime())  # 刷新
-    am_set_time = "05:00:00"
-    if time_now == am_set_time:  # 此处设置每天定时的时间
-
-
-        #钉钉推送消息
-        messages = []
-        #存储zj_fc表的空间名称
-        FC_NAMELIST_DICT = {}
-        #存储space表的空间名称
-        SPACE_NAMELIST_DICT={}
-
-        # 连接mysql
-        conn = pymysql.connect(**mysql)
-        mysql_cur = conn.cursor()
-
-        # 获取建筑列表
-        mysql_cur.execute(SELECT_BUILDING_SQL)
-        buildinglist = mysql_cur.fetchall()
-
-
-        #获取需要对应的点位列表
-        mysql_cur.execute(SELECT_STATE_SQL)
-        roomid_list = mysql_cur.fetchall()
-        roomid_list = [i[0] for i in roomid_list]
-
-
-        # 获取zj_fc空间名称
-        print("%s 获取zj_fc空间名称..."%datetime_now())
-        mysql_cur.execute(SELECT_FC_SQL)
-        fc_namelist = mysql_cur.fetchall()
-        for building in buildinglist:
-            if building[0] and building[1] != None:
-                for fc_name in fc_namelist:
-                    #判断空间是否需要对比
-                    if fc_name[2] in roomid_list:
-                        if fc_name[0] == building[0]:
-                            FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = building[0]+"_"+fc_name[1]
-                            # FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = 1
-            else:
-                message = (" - **类型:** 建筑关系未对应 \n" + " - **建筑ID:**  <font color=#FF0000>%s(%s)</font> \n")% (building[0],building[1])
-                print(message)
+        # time_now = time.strftime("%H:%M:%S", time.localtime())  # 刷新
+        am_set_time = "05:00:00"
+        if time_now == am_set_time:  # 此处设置每天定时的时间
+
+
+            #钉钉推送消息
+            messages = []
+            #存储zj_fc表的空间名称
+            FC_NAMELIST_DICT = {}
+            #存储space表的空间名称
+            SPACE_NAMELIST_DICT={}
+
+            # 连接mysql
+            conn = pymysql.connect(**mysql)
+            mysql_cur = conn.cursor()
+
+            # 获取建筑列表
+            mysql_cur.execute(SELECT_BUILDING_SQL)
+            buildinglist = mysql_cur.fetchall()
+
+
+            #获取需要对应的点位列表
+            mysql_cur.execute(SELECT_STATE_SQL)
+            roomid_list = mysql_cur.fetchall()
+            roomid_list = [i[0] for i in roomid_list]
+
+
+
+
+            # 获取zj_fc空间名称
+            print("%s 获取zj_fc空间名称..."%datetime_now())
+            mysql_cur.execute(SELECT_FC_SQL)
+            fc_namelist = mysql_cur.fetchall()
+            for building in buildinglist:
+                if building[0] and building[1] != None:
+                    for fc_name in fc_namelist:
+                        #判断空间是否需要对比
+                        if fc_name[2] in roomid_list:
+                            if fc_name[0] == building[0]:
+                                FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = building[0]+"_"+fc_name[1]+"_"+fc_name[2]
+                                # FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = 1
+                else:
+                    message = (" - **类型:** 建筑关系未对应 \n" + " - **建筑ID:**  <font color=#FF0000>%s(%s)</font> \n")% (building[0],building[1])
+                    print(message)
+                    messages.append(message)
+                    messages.append("___")
+
+
+            # 获取space空间名称
+            print("%s 获取space空间名称..."%datetime_now())
+            mysql_cur.execute(SELECT_SPACE_SQL)
+            space_namelist = mysql_cur.fetchall()
+
+
+            for space in space_namelist:
+                SPACE_NAMELIST_DICT[space[1]+"_"+space[2]] = space[0]
+
+            #
+            # print(FC_NAMELIST_DICT)
+            # print(SPACE_NAMELIST_DICT)
+
+
+            #对比空间名称,取出差异数据生成sql语句
+            sqls = []
+            print("%s 开始对比差异数据..."%datetime_now())
+            diff_namelist = set(FC_NAMELIST_DICT) - set(SPACE_NAMELIST_DICT)
+            if diff_namelist != set():
+                for diff_name in diff_namelist:
+                    diff_building_rooms = FC_NAMELIST_DICT[diff_name]
+                    diff_building_id = str(diff_building_rooms).split("_")[0]
+                    diff_room_name = str(diff_building_rooms).split("_")[1]
+                    mysql_cur.execute(SELECT_DIFF_FC_SQL%(diff_building_id,diff_room_name))
+                    diff_data = mysql_cur.fetchall()[0]
+                    building_name = diff_data[0]
+                    floor_id = diff_data[1]
+                    floor_name = diff_data[2]
+                    state = diff_data[3]
+                    type = diff_data[4]
+                    sqlline = "('%s','%s','%s','%s','%s','%s','%s','%s')"%(diff_building_id,building_name,diff_room_name,floor_id,floor_name,state,type,datetime_now())
+                    sqls.append(sqlline)
+                    # message = (" - **building_id:** %s \n" + " - **building_name:** %s \n" + " - **room_name:** %s \n" + " - **type:** %s \n")%(diff_building_id, building_name,diff_room_name,type)
+                    # messages.append(message)
+                    # messages.append("___")
+                print("%s 差异数据共计%s条..."%(datetime_now(),len(diff_namelist)))
+                message = (" - **类型:** 空间名称未对应 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n") % (len(diff_namelist))
                 messages.append(message)
                 messages.append("___")
 
-
-        # 获取space空间名称
-        print("%s 获取space空间名称..."%datetime_now())
-        mysql_cur.execute(SELECT_SPACE_SQL)
-        space_namelist = mysql_cur.fetchall()
-
-        for space in space_namelist:
-            SPACE_NAMELIST_DICT[space[0]+"_"+space[1]] = 1
-
-
-
-        # print(FC_NAMELIST_DICT)
-        # print(SPACE_NAMELIST_DICT)
-
-
-        #对比空间名称,取出差异数据生成sql语句
-        sqls = []
-        print("%s 开始对比差异数据..."%datetime_now())
-        diff_namelist = set(FC_NAMELIST_DICT) - set(SPACE_NAMELIST_DICT)
-        if diff_namelist != set():
-            for diff_name in diff_namelist:
-                diff_building_rooms = FC_NAMELIST_DICT[diff_name]
-                diff_building_id = str(diff_building_rooms).split("_")[0]
-                diff_room_name = str(diff_building_rooms).split("_")[1]
-                mysql_cur.execute(SELECT_DIFF_FC_SQL%(diff_building_id,diff_room_name))
-                diff_data = mysql_cur.fetchall()[0]
-                building_name = diff_data[0]
-                floor_id = diff_data[1]
-                floor_name = diff_data[2]
-                state = diff_data[3]
-                type = diff_data[4]
-                sqlline = "('%s','%s','%s','%s','%s','%s','%s','%s')"%(diff_building_id,building_name,diff_room_name,floor_id,floor_name,state,type,datetime_now())
-                sqls.append(sqlline)
-                # message = (" - **building_id:** %s \n" + " - **building_name:** %s \n" + " - **room_name:** %s \n" + " - **type:** %s \n")%(diff_building_id, building_name,diff_room_name,type)
-                # messages.append(message)
-                # messages.append("___")
-            print("%s 差异数据共计%s条..."%(datetime_now(),len(diff_namelist)))
-            message = (" - **类型:** 空间名称未对应 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n") % (len(diff_namelist))
-            messages.append(message)
-            messages.append("___")
-        # 获取space空间名称
-        print("%s 清空MySQL表数据..."%datetime_now())
-        mysql_cur.execute(TRUNCATE_BUILDING_ROOMS_SQL)
-        conn.commit()
-
-        #往MySQL插入数据
-        insert_mysql(sqls)
-
-        #关闭数据库
-        mysql_cur.close()
-        conn.close()
-
-        if messages:
-            print("%s 发送钉钉报警"%datetime_now())
-            messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_sync_building_rooms表</font>")
-            messages_info = "\n".join(messages)
-            # 如果有报警,发送钉钉
-            title = "## **【之江实验室】空间名称报警** "
-            messages_info = title + "\n" +"___"+"\n"+ messages_info
-            send_message_markdown(title, messages_info, dingding)
+            #更新zj_t_building_rooms表的space_id
+            print("%s 更新zj_t_building_rooms表的space_id..."%datetime_now())
+            for same_name in FC_NAMELIST_DICT:
+                building_rooms = FC_NAMELIST_DICT[same_name]
+                if same_name in SPACE_NAMELIST_DICT:
+                    space_id =SPACE_NAMELIST_DICT[same_name]
+                    room_id = str(building_rooms).split("_")[2]
+                    mysql_cur.execute(UPDATE_SPACEID_SQL % (space_id, room_id))
+                    conn.commit()
+
+
+            # 获取space空间名称
+            print("%s 清空MySQL表数据..."%datetime_now())
+            mysql_cur.execute(TRUNCATE_BUILDING_ROOMS_SQL)
+            conn.commit()
+
+            #往MySQL插入数据
+            insert_mysql(sqls)
+
+            #关闭数据库
+            mysql_cur.close()
+            conn.close()
+
+            if messages:
+                print("%s 发送钉钉报警"%datetime_now())
+                messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_sync_building_rooms表</font>")
+                messages_info = "\n".join(messages)
+                # 如果有报警,发送钉钉
+                title = "## **【之江实验室】空间名称报警** "
+                messages_info = title + "\n" +"___"+"\n"+ messages_info
+                send_message_markdown(title, messages_info, dingding)