| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- # encoding=utf-8
- from cgi import print_arguments
- from multiprocessing.managers import DictProxy
- from operator import delitem
- from unittest import result
- from PyQt5 import QtCore, QtGui, QtWidgets
- import os
- import sys
- import re
- import ast
- from urllib import parse
- import json
- import time
- import datetime
- import requests
- import uuid
- import pymongo
- import pymysql
- from collections import defaultdict, Counter
- from xlsxwriter.workbook import Workbook
- from mongoclient import (
- get_qxz_conf,
- device_detail_deivce_id,
- get_sa_qxz_info_record,
- get_sa_qxz_data,
- get_conf_data,
- get_sim_info
- )
- from utils import (
- merge_title_format,
- toji_format,
- formal_format,
- error_format,
- common_format,
- default_formal,
- get_excel_content,
- head_dict,
- sim_info
- )
- def run():
- start = "2023-08-28 10:00:00"
- end = "2023-08-31 20:00:00"
- dever_num = "111"
- # 获取所有的device_id
- device_list = get_excel_content("F:\\scripting_tools\\热通量增加测试.xlsx")
- workbook = Workbook("F:\\test.xlsx")
- worksheet = workbook.add_worksheet()
- merge_title_style = workbook.add_format(merge_title_format)
- toji_style = workbook.add_format(toji_format)
- default_style = workbook.add_format(default_formal)
- red_style = workbook.add_format(error_format)
- green_style = workbook.add_format(formal_format)
- yellow_style = workbook.add_format(common_format)
- style_dict = {
- 2: red_style,
- 1: green_style,
- 3: yellow_style,
- 4: default_style
- }
- title_name_list = [
- "ID",
- "检验项目",
- "电压",
- "信号强度",
- "经度",
- "纬度",
- "固件版本号",
- "sim卡信息",
- "位置信息"
- ]
- # 查找第一台设备的配置文件,获取配置项
- device_id, _, _, _, _ = device_detail_deivce_id(device_list[0])
- conf = get_qxz_conf(device_id)
- title_name_list += [v.split("#")[0] for k, v in conf.items()]
- title_name_list.append("单台合格数")
- head_list = [i.split("#")[0] for i in title_name_list]
- worksheet.merge_range(0, 0, 0, len(head_list) - 1, "物联网气象站设备质检表格", merge_title_style)
- toji_data = [
- "任务单号",
- "set_order",
- "检验时间",
- "start_time_str",
- "end_time_str",
- "报告日期",
- (datetime.datetime.now()).strftime("%y-%m-%d %H:%M:%S"),
- "合格数"
- ]
- # 生成Excel表格第2行, 本次数据概要
- for index, k in enumerate(toji_data):
- value = str(k)
- worksheet.write(1, index, value, toji_style)
- # 生成Excel表格第3行, 检测标题
- for index, k in enumerate(title_name_list):
- worksheet.write(2, index, k, default_style)
- # 生成Excel表格第4行, 检测标准
- for index, k in enumerate(title_name_list):
- value = (head_dict.get(k, ["无判定条件", ""]))[0]
- worksheet.write(3, index, value, default_style)
- plus = 12 if index in [0, 1] else 8
- c_n = len(value) / 2 + plus
- worksheet.set_column(index, index, c_n)
- # 输入数据
- is_pass_count = 0
- for index, id in enumerate(device_list):
- device_id, dver_num, lng, lat, position = device_detail_deivce_id(id)
- # 获取电压,信号强度历史数据
- valt_rssi = get_sa_qxz_info_record(device_id, start, end)
- # 获取sim卡信息
- sim = get_sim_info(device_id, start, end)
- sim_in = sim_info(sim)
- # 第一部分拼接 表头及数据
- org_data = {
- "id_1": {"data": id, "explan": "ID"},
- "id_2": {"data": device_id, "explan": "检验项目"},
- "id_3": valt_rssi.get("volt"), # 电压
- "id_4": valt_rssi.get("rssi"), # 信号强度
- "id_5": {"data": lng, "explan": "经度"},
- "id_6": {"data": lat, "explan": "纬度"},
- "id_7": {"data": [dver_num.replace("/", "-"), dever_num], "explan": "固件版本号"},
- "id_8": {"data": sim_in, "explan": "sim卡信息"},
- "id_9": {"data": position, "explan": "位置信息"},
- }
- conf = get_qxz_conf(device_id)
- # 获取数据
- qx_data = get_sa_qxz_data(device_id, start, end, conf)
- # 第二部分拼接 表头及数据 获取气象与数据结合
- conf_data = get_conf_data(conf, qx_data)
- org_data.update(conf_data)
- i = 0
- is_right = 0
- for t, v in org_data.items():
- # 执行方法
- name = v.get("explan")
- data = v.get("data")
- func = head_dict.get(name)[1]
- if data:
- print(name)
- print(data)
- print("-"*100)
- temp = func(data)
- if temp[0] == 1:
- is_right += 1
- else:
- temp = [2, "没有数据"]
- worksheet.write(index + 4, i, temp[1], style_dict[temp[0]])
- i += 1
- last = []
- if is_right == len(title_name_list) - 3:
- last = [1, "合格"]
- is_pass_count += 1
- else:
- last = [2, f"不合格: {len(title_name_list) - is_right - 3}"]
- worksheet.write(index + 4, i, last[1], style_dict[last[0]])
- worksheet.write(1, 8, is_pass_count, toji_style)
- workbook.close()
- if __name__ == "__main__":
- run()
|