| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- import query_db
- import json
- import csv
- from datetime import datetime
- from PyQt5.QtWidgets import (
- QApplication,
- QMainWindow,
- QVBoxLayout,
- QFileDialog,)
- def export_data():
- client = query_db.bigata_mongo()
- sa_device_type = client.sa_device_type
- sa_device = client.sa_device
- sa_device_cbd_data = client.sa_device_cbd_data
- sa_device_bzy_data = client.sa_device_bzy_data
- sa_device_scd_data = client.sa_device_scd_data
- sa_device_xy_three_data = client.sa_device_xy_three_data
- sa_device_xct_data = client.sa_device_xct_data
- xct_haomi_data = client.xct_haomi_data
- sa_qxz_base_info = client.sa_qxz_base_info
- # 先判断是否有输入用户名,任务单号或设备号
- search_input01_text = "数字大棚"
- search_input02_text = ""
- search = {}
- if (not search_input01_text) and (not search_input02_text):
- return
- if search_input01_text:
- print(search_input01_text)
- rek = query_db.user_info(search_input01_text)
- if rek:
- search.update(rek)
- else:
- return
- if search_input02_text:
- search.update({"salesman_task_number": search_input02_text})
- result = sa_device.find(
- search,
- {
- "device_id": 1,
- "device_name":1,
- "device_status": 1,
- "device_type_id": 1,
- "device_model": 1,
- "salesman_task_number": 1,
- "province": 1,
- "city": 1,
- "district": 1,
- "addtime": 1,
- "uptime": 1,
- "off_time": 1,
- "simid": 1,
- "id":1,
- "_id":0
- }
- )
- result = list(result)
- title = [
- "ID",
- "名称",
- "状态",
- "设备类型",
- "任务单号",
- "地址",
- "设备添加时间",
- "最近更新时间",
- "离线时间",
- "图片ICCID",
- "图片ICCD过期时间",
- "图片ICCD厂家",
- "设备ICCID",
- "设备ICCID过期时间",
- "设备ICCID厂家"
- ]
- if result:
- device_type_dict = sa_device_type.find({}, {"id": 1, "type_name": 1, "_id": 0})
- device_type_dict = {str(i.get("id")): i.get("type_name") for i in list(device_type_dict)}
- # 弹出文件保存对话框让用户选择保存路径
- # 获取文件保存路径
- file_path = "device.csv"
- # 执行导出操作,将设备名称保存为CSV文件
- try:
- with open(file_path, mode='w', newline='', encoding='utf-8') as file:
- writer = csv.writer(file)
- writer.writerow(title)
- for row in result:
- d_id = row.get("id")
- img_iccid = row.get("simid")
- device_type_id = row.get("device_type_id")
- if img_iccid:
- iccid_info = query_db.sim_query_new(img_iccid)
- else:
- iccid_info = {}
- expire = iccid_info.get("expire", "")
- company = iccid_info.get("company", "")
-
- device_model = row.get("device_model")
- model = None
- if device_type_id == 3:
- if device_model == 11:
- device_type_name = "虫情信息采集设备"
- else:
- device_type_name = "虫情测报灯"
- model = sa_device_cbd_data
- elif device_type_id == 7:
- if device_model == 50:
- device_type_name = "孢子仪1.0"
- elif device_model == 52:
- device_type_name = "孢子仪2.0"
- else:
- device_type_name = "孢子仪"
- model = sa_device_bzy_data
- elif device_type_id == 2:
- if device_model == 101:
- device_type_name = "风吸式杀虫灯"
- else:
- device_type_name = "杀虫灯"
- model = sa_device_scd_data
- elif device_type_id == 8:
- device_type_name = device_type_dict.get(str(device_type_id))
- model = sa_device_xy_three_data
- elif device_type_id == 12:
- device_type_name = device_type_dict.get(str(device_type_id))
- model = sa_device_xct_data
- elif device_type_id == 28:
- device_type_name = device_type_dict.get(str(device_type_id))
- model = xct_haomi_data
- else:
- device_type_name = device_type_dict.get(str(device_type_id))
- device_status = row.get("device_status")
- status = "在线" if device_status == 1 else "离线"
- device_iccid, device_expire, device_company = "", "", ""
- if device_type_id == 5:
- qxz = sa_qxz_base_info.find({"device_id": row.get("device_id")}, {"iccid": 1, "_id": 0}).sort("uptime", -1).limit(1)
- qxz = list(qxz)
- if qxz:
- try:
- device_iccid = qxz[0].get("iccid")
- device_iccid_info = query_db.sim_query_new(device_iccid)
- except Exception as e:
- device_iccid_info = {}
- device_expire = device_iccid_info.get("expire", "")
- device_company = device_iccid_info.get("company", "")
- else:
- if model:
- device_data = model.find({"device_id": d_id}, {"device_data":1, "_id":0}).sort("addtime", -1).limit(1)
- d_data = list(device_data)
- if d_data:
- device_data_str = d_data[0].get("device_data")
- device_data_json = {}
- if device_data_str:
- try:
- device_data_json = eval(device_data_str)
- except Exception as e:
- device_data_json = json.loads(device_data_str)
- device_iccid = device_data_json.get("iccid")
- if device_iccid:
- device_iccid_info = query_db.sim_query_new(device_iccid)
- else:
- device_iccid_info = {}
- device_expire = device_iccid_info.get("expire", "")
- device_company = device_iccid_info.get("company", "")
- data = [
- row.get("device_id"),
- row.get("device_name"),
- status,
- device_type_name,
- row.get("salesman_task_number"),
- row.get("province") + row.get("city") + row.get("district"),
- datetime.fromtimestamp(row.get("addtime")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
- datetime.fromtimestamp(row.get("uptime")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
- datetime.fromtimestamp(row.get("off_time")).strftime("%Y-%m-%d %H:%M:%S") if row.get("off_time") != 0 else "",
- img_iccid,
- expire,
- company,
- device_iccid,
- device_expire,
- device_company
- ]
- writer.writerow(data)
- return
- except Exception as e:
- print(e)
- return
- else:
- return
- if __name__ == "__main__":
- export_data()
|