|
@@ -1,9 +1,13 @@
|
|
|
import json
|
|
import json
|
|
|
import hashlib
|
|
import hashlib
|
|
|
import time
|
|
import time
|
|
|
|
|
+import traceback
|
|
|
import requests
|
|
import requests
|
|
|
from requests.auth import HTTPBasicAuth
|
|
from requests.auth import HTTPBasicAuth
|
|
|
import asyncio
|
|
import asyncio
|
|
|
|
|
+import pymongo
|
|
|
|
|
+import pymysql
|
|
|
|
|
+from urllib import parse
|
|
|
|
|
|
|
|
|
|
|
|
|
class DeviceInfoUtils(object):
|
|
class DeviceInfoUtils(object):
|
|
@@ -55,6 +59,199 @@ class DeviceInfoUtils(object):
|
|
|
return data
|
|
return data
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+class GetDashujuSiqingDeviceInfo(object):
|
|
|
|
|
+
|
|
|
|
|
+ def __init__(self):
|
|
|
|
|
+ # 大数据平台mongo连接
|
|
|
|
|
+ user = parse.quote_plus("root")
|
|
|
|
|
+ passwd = parse.quote_plus("yfkj@6020")
|
|
|
|
|
+ da_shuju = "1270.0.01"
|
|
|
|
|
+ si_qing = "172.16.220.3"
|
|
|
|
|
+ myclient = pymongo.MongoClient("mongodb://{0}:{1}@{2}:57017/".format(user,passwd, da_shuju))
|
|
|
|
|
+ db = myclient.smartfarming
|
|
|
|
|
+ self.sa_device = db.sa_device
|
|
|
|
|
+ sa_device_type = db.sa_device_type
|
|
|
|
|
+ device_tps = sa_device_type.find({}, {"_id": 0, "id": 1, "type_name": 1})
|
|
|
|
|
+ self.device_tps = {str(i.get("id")): i.get("type_name") for i in list(device_tps)}
|
|
|
|
|
+ # 大数据平台查询用户id与real_name
|
|
|
|
|
+ da_conn = pymysql.connect(
|
|
|
|
|
+ host=da_shuju,
|
|
|
|
|
+ port=61882,
|
|
|
|
|
+ user='root',
|
|
|
|
|
+ password='yfkj@6020',
|
|
|
|
|
+ database='smartfarming'
|
|
|
|
|
+ )
|
|
|
|
|
+ cursor = da_conn.cursor()
|
|
|
|
|
+ cursor.execute("select uid, real_name from sa_device_user")
|
|
|
|
|
+ result = cursor.fetchall()
|
|
|
|
|
+ self.rk = {str(i[0]): i[1] for i in result}
|
|
|
|
|
+ cursor.close()
|
|
|
|
|
+ da_conn.close()
|
|
|
|
|
+ # 四情 mysql 连接
|
|
|
|
|
+ self.conn = pymysql.connect(
|
|
|
|
|
+ host=si_qing,
|
|
|
|
|
+ port=3306,
|
|
|
|
|
+ user='yfwlw',
|
|
|
|
|
+ password='sql_yfkj_6019',
|
|
|
|
|
+ database='yfwlw'
|
|
|
|
|
+ )
|
|
|
|
|
+ si_qing_cursor = self.conn.cursor()
|
|
|
|
|
+ si_qing_cursor.execute("select id, username from AppInfoManage_myuser")
|
|
|
|
|
+ si_result = si_qing_cursor.fetchall()
|
|
|
|
|
+ self.si_rk = {str(i[0]): i[1] for i in si_result}
|
|
|
|
|
+ si_qing_cursor.execute("select type_id, type_name from AppInfoManage_equip_type")
|
|
|
|
|
+ si_device_type = si_qing_cursor.fetchall()
|
|
|
|
|
+ self.si_device_type = {str(i[0]): i[1] for i in si_device_type}
|
|
|
|
|
+ si_qing_cursor.close()
|
|
|
|
|
+
|
|
|
|
|
+ def get_dashuju(self, device_id):
|
|
|
|
|
+ # 大数据查询设备信息
|
|
|
|
|
+ result = self.sa_device.find_one(
|
|
|
|
|
+ {"device_id": device_id},
|
|
|
|
|
+ {
|
|
|
|
|
+ 'device_type_id': 1,
|
|
|
|
|
+ 'salesman_task_number': 1,
|
|
|
|
|
+ 'owner_uid': 1,
|
|
|
|
|
+ 'device_status': 1,
|
|
|
|
|
+ 'province': 1,
|
|
|
|
|
+ 'city': 1,
|
|
|
|
|
+ 'district': 1,
|
|
|
|
|
+ 'uptime': 1,
|
|
|
|
|
+ 'device_id': 1,
|
|
|
|
|
+ 'user_dealer': 1,
|
|
|
|
|
+ '_id': 0
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
|
|
+ if not result:
|
|
|
|
|
+ return {}
|
|
|
|
|
+ if result.get("user_dealer"):
|
|
|
|
|
+ result["owner_user"] = self.rk.get(str(result.get("user_dealer")))
|
|
|
|
|
+ elif result.get("owner_uid"):
|
|
|
|
|
+ result["owner_user"] = self.rk.get(str(result.get("owner_uid")))
|
|
|
|
|
+ else:
|
|
|
|
|
+ result["owner_user"] = "未分配"
|
|
|
|
|
+ # 排除指定设备类型状态判断
|
|
|
|
|
+ if result.get("device_type_id") in [11, 13, 19, 20]:
|
|
|
|
|
+ result["status"] = "未知"
|
|
|
|
|
+ else:
|
|
|
|
|
+ if result.get("device_status") == 1:
|
|
|
|
|
+ result["status"] = "在线"
|
|
|
|
|
+ else:
|
|
|
|
|
+ result["status"] = "离线"
|
|
|
|
|
+ result["device_type"] = self.device_tps.get(str(result.get("device_type_id")), "-")
|
|
|
|
|
+ result["plat"] = "大数据平台"
|
|
|
|
|
+ result["order_id"] = result.get("salesman_task_number") if result.get("salesman_task_number") !="0" else "——"
|
|
|
|
|
+ if result.get("province"):
|
|
|
|
|
+ result["location"] = result.get("province") + "," + result.get("city") + "," + result.get("district")
|
|
|
|
|
+ else:
|
|
|
|
|
+ result["location"] = "暂无定位"
|
|
|
|
|
+ return result
|
|
|
|
|
+ def get_siqing(self, device_id):
|
|
|
|
|
+ cursor = self.conn.cursor()
|
|
|
|
|
+ cursor.execute("select equip_id, equip_user_id, equip_type_id, equip_city from AppInfoManage_equip where equip_id = %s", (device_id, ))
|
|
|
|
|
+ cursor_result = cursor.fetchone()
|
|
|
|
|
+ if not cursor_result:
|
|
|
|
|
+ return {}
|
|
|
|
|
+ columns = [desc[0] for desc in cursor.description]
|
|
|
|
|
+ result = dict(zip(columns, cursor_result))
|
|
|
|
|
+ result["plat"] = "四情平台"
|
|
|
|
|
+ if result.get("equip_user_id"):
|
|
|
|
|
+ result["owner_user"] = self.si_rk.get(str(result.get("equip_user_id")))
|
|
|
|
|
+ else:
|
|
|
|
|
+ result["owner_user"] = "未分配"
|
|
|
|
|
+ equip_type_id = result.get("equip_type_id")
|
|
|
|
|
+ if equip_type_id == 0:
|
|
|
|
|
+ status = "未知"
|
|
|
|
|
+ uptime = 0
|
|
|
|
|
+ elif equip_type_id == 2:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_scdstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 3:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_cbdstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 4:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_ybqstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 5:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_qxzstatus_new where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 6:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_jkdata where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 7:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_bzystatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 8:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_trapstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 9:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_tccbstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 10:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_rtustatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 11:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_wheatstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 15:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_wheatstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ elif equip_type_id == 16:
|
|
|
|
|
+ cursor.execute("select upl_time, is_online from AppInfoManage_wheatstatus where equip_id_id = %s", (device_id, ))
|
|
|
|
|
+ scd_status = cursor.fetchone()
|
|
|
|
|
+ uptime = int((scd_status[0]).timestamp())
|
|
|
|
|
+ status = "在线" if scd_status[1] == "1" else "离线"
|
|
|
|
|
+ result["uptime"] = uptime
|
|
|
|
|
+ result["status"] = status
|
|
|
|
|
+ result["device_type"] = self.si_device_type.get(str(equip_type_id))
|
|
|
|
|
+ if result.get("equip_city") and result.get("equip_city") != '0':
|
|
|
|
|
+ result["location"] = result.get("equip_city")
|
|
|
|
|
+ else:
|
|
|
|
|
+ result["location"] = "暂无定位"
|
|
|
|
|
+ result["order_id"] = "——"
|
|
|
|
|
+ return result
|
|
|
|
|
+
|
|
|
|
|
+ def get_together(self, device_id):
|
|
|
|
|
+ try:
|
|
|
|
|
+ dashuju = self.get_dashuju(device_id)
|
|
|
|
|
+ siqing = self.get_siqing(device_id)
|
|
|
|
|
+ if dashuju and siqing:
|
|
|
|
|
+ if dashuju.get("uptime") > siqing.get("uptime"):
|
|
|
|
|
+ return dashuju
|
|
|
|
|
+ else:
|
|
|
|
|
+ return siqing
|
|
|
|
|
+ elif dashuju and (not siqing):
|
|
|
|
|
+ return dashuju
|
|
|
|
|
+ elif (not dashuju) and siqing:
|
|
|
|
|
+ return siqing
|
|
|
|
|
+ else:
|
|
|
|
|
+ return {}
|
|
|
|
|
+ except Exception as e:
|
|
|
|
|
+ traceback.print_exc()
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
class GetSIMInfo(object):
|
|
class GetSIMInfo(object):
|
|
|
"""
|
|
"""
|
|
|
自定义获取SIM卡对应卡商及数据
|
|
自定义获取SIM卡对应卡商及数据
|