debug_device.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. import query_db
  2. import json
  3. import csv
  4. from datetime import datetime
  5. from PyQt5.QtWidgets import (
  6. QApplication,
  7. QMainWindow,
  8. QVBoxLayout,
  9. QFileDialog,)
  10. def export_data():
  11. client = query_db.bigata_mongo()
  12. sa_device_type = client.sa_device_type
  13. sa_device = client.sa_device
  14. sa_device_cbd_data = client.sa_device_cbd_data
  15. sa_device_bzy_data = client.sa_device_bzy_data
  16. sa_device_scd_data = client.sa_device_scd_data
  17. sa_device_xy_three_data = client.sa_device_xy_three_data
  18. sa_device_xct_data = client.sa_device_xct_data
  19. xct_haomi_data = client.xct_haomi_data
  20. sa_qxz_base_info = client.sa_qxz_base_info
  21. # 先判断是否有输入用户名,任务单号或设备号
  22. search_input01_text = "数字大棚"
  23. search_input02_text = ""
  24. search = {}
  25. if (not search_input01_text) and (not search_input02_text):
  26. return
  27. if search_input01_text:
  28. print(search_input01_text)
  29. rek = query_db.user_info(search_input01_text)
  30. if rek:
  31. search.update(rek)
  32. else:
  33. return
  34. if search_input02_text:
  35. search.update({"salesman_task_number": search_input02_text})
  36. result = sa_device.find(
  37. search,
  38. {
  39. "device_id": 1,
  40. "device_name":1,
  41. "device_status": 1,
  42. "device_type_id": 1,
  43. "device_model": 1,
  44. "salesman_task_number": 1,
  45. "province": 1,
  46. "city": 1,
  47. "district": 1,
  48. "addtime": 1,
  49. "uptime": 1,
  50. "off_time": 1,
  51. "simid": 1,
  52. "id":1,
  53. "_id":0
  54. }
  55. )
  56. result = list(result)
  57. title = [
  58. "ID",
  59. "名称",
  60. "状态",
  61. "设备类型",
  62. "任务单号",
  63. "地址",
  64. "设备添加时间",
  65. "最近更新时间",
  66. "离线时间",
  67. "图片ICCID",
  68. "图片ICCD过期时间",
  69. "图片ICCD厂家",
  70. "设备ICCID",
  71. "设备ICCID过期时间",
  72. "设备ICCID厂家"
  73. ]
  74. if result:
  75. device_type_dict = sa_device_type.find({}, {"id": 1, "type_name": 1, "_id": 0})
  76. device_type_dict = {str(i.get("id")): i.get("type_name") for i in list(device_type_dict)}
  77. # 弹出文件保存对话框让用户选择保存路径
  78. # 获取文件保存路径
  79. file_path = "device.csv"
  80. # 执行导出操作,将设备名称保存为CSV文件
  81. try:
  82. with open(file_path, mode='w', newline='', encoding='utf-8') as file:
  83. writer = csv.writer(file)
  84. writer.writerow(title)
  85. for row in result:
  86. d_id = row.get("id")
  87. img_iccid = row.get("simid")
  88. device_type_id = row.get("device_type_id")
  89. if img_iccid:
  90. iccid_info = query_db.sim_query_new(img_iccid)
  91. else:
  92. iccid_info = {}
  93. expire = iccid_info.get("expire", "")
  94. company = iccid_info.get("company", "")
  95. device_model = row.get("device_model")
  96. model = None
  97. if device_type_id == 3:
  98. if device_model == 11:
  99. device_type_name = "虫情信息采集设备"
  100. else:
  101. device_type_name = "虫情测报灯"
  102. model = sa_device_cbd_data
  103. elif device_type_id == 7:
  104. if device_model == 50:
  105. device_type_name = "孢子仪1.0"
  106. elif device_model == 52:
  107. device_type_name = "孢子仪2.0"
  108. else:
  109. device_type_name = "孢子仪"
  110. model = sa_device_bzy_data
  111. elif device_type_id == 2:
  112. if device_model == 101:
  113. device_type_name = "风吸式杀虫灯"
  114. else:
  115. device_type_name = "杀虫灯"
  116. model = sa_device_scd_data
  117. elif device_type_id == 8:
  118. device_type_name = device_type_dict.get(str(device_type_id))
  119. model = sa_device_xy_three_data
  120. elif device_type_id == 12:
  121. device_type_name = device_type_dict.get(str(device_type_id))
  122. model = sa_device_xct_data
  123. elif device_type_id == 28:
  124. device_type_name = device_type_dict.get(str(device_type_id))
  125. model = xct_haomi_data
  126. else:
  127. device_type_name = device_type_dict.get(str(device_type_id))
  128. device_status = row.get("device_status")
  129. status = "在线" if device_status == 1 else "离线"
  130. device_iccid, device_expire, device_company = "", "", ""
  131. if device_type_id == 5:
  132. qxz = sa_qxz_base_info.find({"device_id": row.get("device_id")}, {"iccid": 1, "_id": 0}).sort("uptime", -1).limit(1)
  133. qxz = list(qxz)
  134. if qxz:
  135. try:
  136. device_iccid = qxz[0].get("iccid")
  137. device_iccid_info = query_db.sim_query_new(device_iccid)
  138. except Exception as e:
  139. device_iccid_info = {}
  140. device_expire = device_iccid_info.get("expire", "")
  141. device_company = device_iccid_info.get("company", "")
  142. else:
  143. if model:
  144. device_data = model.find({"device_id": d_id}, {"device_data":1, "_id":0}).sort("addtime", -1).limit(1)
  145. d_data = list(device_data)
  146. if d_data:
  147. device_data_str = d_data[0].get("device_data")
  148. device_data_json = {}
  149. if device_data_str:
  150. try:
  151. device_data_json = eval(device_data_str)
  152. except Exception as e:
  153. device_data_json = json.loads(device_data_str)
  154. device_iccid = device_data_json.get("iccid")
  155. if device_iccid:
  156. device_iccid_info = query_db.sim_query_new(device_iccid)
  157. else:
  158. device_iccid_info = {}
  159. device_expire = device_iccid_info.get("expire", "")
  160. device_company = device_iccid_info.get("company", "")
  161. data = [
  162. row.get("device_id"),
  163. row.get("device_name"),
  164. status,
  165. device_type_name,
  166. row.get("salesman_task_number"),
  167. row.get("province") + row.get("city") + row.get("district"),
  168. datetime.fromtimestamp(row.get("addtime")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
  169. datetime.fromtimestamp(row.get("uptime")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
  170. datetime.fromtimestamp(row.get("off_time")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
  171. img_iccid,
  172. expire,
  173. company,
  174. device_iccid,
  175. device_expire,
  176. device_company
  177. ]
  178. writer.writerow(data)
  179. return
  180. except Exception as e:
  181. print(e)
  182. return
  183. else:
  184. return
  185. if __name__ == "__main__":
  186. export_data()