Procházet zdrojové kódy

气象站增加土壤趋势要素判断

林轩 před 1 rokem
rodič
revize
e642b6ddfe

binární
bigdata_django/zhijian/qxz/__pycache__/main.cpython-36.pyc


binární
bigdata_django/zhijian/qxz/__pycache__/special.cpython-36.pyc


binární
bigdata_django/zhijian/qxz/__pycache__/utils.cpython-36.pyc


+ 4 - 3
bigdata_django/zhijian/qxz/main.py

@@ -93,8 +93,8 @@ class Ui_MainWindow(object):
         self.startTimeLabel.setObjectName("startTimeLabel")
         self.startTimeEdit = QtWidgets.QDateTimeEdit(self.centralwidget)
         self.startTimeEdit.setGeometry(QtCore.QRect(310, 210, 151, 21))
-        self.startTimeEdit.setMaximumDateTime(QtCore.QDateTime(QtCore.QDate(2025, 12, 31), QtCore.QTime(23, 59, 59)))
-        self.startTimeEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(2023, 1, 1), QtCore.QTime(18, 0, 0)))
+        self.startTimeEdit.setMaximumDateTime(QtCore.QDateTime(QtCore.QDate(2028, 12, 31), QtCore.QTime(23, 59, 59)))
+        self.startTimeEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(2024, 1, 1), QtCore.QTime(18, 0, 0)))
         self.startTimeEdit.setObjectName("startTimeEdit")
         self.endTimeLabel = QtWidgets.QLabel(self.centralwidget)
         self.endTimeLabel.setGeometry(QtCore.QRect(180, 250, 121, 21))
@@ -102,7 +102,7 @@ class Ui_MainWindow(object):
         self.endTimeEdit = QtWidgets.QDateTimeEdit(self.centralwidget)
         self.endTimeEdit.setGeometry(QtCore.QRect(310, 250, 151, 21))
         self.endTimeEdit.setMaximumDateTime(QtCore.QDateTime(QtCore.QDate(2025, 12, 31), QtCore.QTime(23, 59, 59)))
-        self.endTimeEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(2023, 2, 1), QtCore.QTime(20, 0, 0)))
+        self.endTimeEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(2024, 2, 1), QtCore.QTime(20, 0, 0)))
         self.endTimeEdit.setObjectName("endTimeEdit")
         self.platLabel = QtWidgets.QLabel(self.centralwidget)
         self.platLabel.setGeometry(QtCore.QRect(180, 290, 121, 21))
@@ -353,6 +353,7 @@ class SCDThread(QtCore.QThread):
             worksheet.set_column(index, index, c_n)
         # 输入数据
         is_pass_count = 0
+        print(head_dict)
         for index, id in enumerate(device_list):
             device_id, dver_num, lng, lat, position = device_detail_deivce_id(id)
             # 获取电压,信号强度历史数据

+ 14 - 0
bigdata_django/zhijian/qxz/special.py

@@ -689,4 +689,18 @@ def is_snow_rain(data):
         else:
             return 2, "存在-99或-99.99数据,不合格"
     else:
+        return 2, "没有数据"
+
+# 有无雨雪  -100 到 0 合格,其它不合格
+def turang_shuishi(data):
+    print(data)
+    if data:
+        for i in data:
+            if i > 0 or i < -100:
+                return 2, f"存在 {i} 数据,不合格"
+        else:
+            min_num = min(data)
+            max_num = max(data)
+            return 1, f"最小值{min_num},最大值{max_num}"
+    else:
         return 2, "没有数据"

+ 4 - 2
bigdata_django/zhijian/qxz/utils.py

@@ -51,7 +51,8 @@ from special import (
     lou_dian_wen_du,
     re_tong_liang,
     he_ge_shu,
-    is_snow_rain
+    is_snow_rain,
+    turang_shuishi
 )
 
 
@@ -189,7 +190,8 @@ head_dict = {
     "露点温度": ["合格条件(绿色):\n1.-10~35°C,但不允许为0°C\n2、有1条合格即可", lou_dian_wen_du],
     "热通量": ["合格条件(绿色):上传条数的数据在均在±500内(但不能为0),即判定合格,否则不合格", re_tong_liang],
     "单台合格数": ["合格条件(绿色):\n所有显示数值全部在合格范围内,则判定为合格,", he_ge_shu],
-    "有无雨雪": ["合格条件(绿色):\n所有显示数值全部在合格范围内,则判定为合格,", is_snow_rain]
+    "有无雨雪": ["合格条件(绿色):\n所有显示数值全部在合格范围内,则判定为合格,", is_snow_rain],
+    "土壤水势": ["合格条件(绿色): \n所有显示的数据全部在合格范围内,则判断为合格", turang_shuishi]
 }
 
 

+ 38 - 0
tools/threadings/多并发线程.py

@@ -0,0 +1,38 @@
+import threading
+import time
+ 
+ 
+class myThread(threading.Thread):
+    def __init__(self, threadID, name):
+        threading.Thread.__init__(self)
+        self.threadID = threadID
+        self.name = name
+ 
+    def run(self):
+        print_time(self.threadID, self.name)
+ 
+num = 0
+def print_time(threadID, name):
+    global num
+    # 每一个线程循环10次,最终总循环次数为30次
+    for i in range(10):
+        print("start run")
+        time.sleep(2)
+        print(i)
+        num += 1
+    print("thread_id=%s:name=%s" % (threadID, name))
+ 
+ 
+if __name__ == '__main__':
+    threads = []
+    # 新增三个线程
+    for i in range(3):
+        name = "Thread-%d" % i
+        t = myThread(i, name)
+        t.start()
+        threads.append(t)
+    for t in threads:
+        t.join()
+    print("所有线程执行完毕")
+    print("总循环次数为:%s" % num)
+

+ 27 - 0
tools/threadings/多线程加锁.py

@@ -0,0 +1,27 @@
+# -*- coding: utf-8 -*-
+import time
+import threading
+# 创建锁对象
+lock = threading.Lock()
+num = 0
+ 
+def run(n):
+    global num
+    for i in range(10):
+        # 加锁  为了确保下面代码只能由一个线程从头到尾的执行
+        # 会阻止多线程的并发执行,所以效率会大大降低
+        with lock:
+            time.sleep(2)
+            print("start")
+            num = num + 1
+            print(f"======{n}========")
+ 
+ 
+if __name__ == '__main__':
+    t1 = threading.Thread(target=run,args=(6,))
+    t2 = threading.Thread(target=run,args=(9,))
+    t1.start()
+    t2.start()
+    t1.join()
+    t2.join()
+    print("num = %s"%(num))

+ 62 - 0
tools/threadings/多线程队列.py

@@ -0,0 +1,62 @@
+import threading
+import time
+import queue
+ 
+q = queue.Queue(10)
+ 
+threadLock = threading.Lock()
+ 
+ 
+class myThread(threading.Thread):
+    def __init__(self, threadID, name):
+        threading.Thread.__init__(self)
+        self.threadID = threadID
+        self.name = name
+        self.exitFlag = 0
+ 
+    def run(self):
+        while not self.exitFlag:
+            threadLock.acquire()
+            if not q.empty():
+                id = q.get()
+                print_time(self.name, id)
+                threadLock.release()
+            else:
+                threadLock.release()
+ 
+ 
+def print_time(threadName, id):
+    print ("%s:%s:%s"%(threadName,time.ctime(time.time()),id))
+
+ 
+ 
+# 创建3个线程
+threads = []
+for i in range(3):
+    name = "Thread-%d" % i
+    t = myThread(i, name)
+    t.start()
+    threads.append(t)
+print(threads)
+ 
+# 新增队列数据
+for i in range(10000):
+    q_name = "Queue:%d" % i
+    q.put(q_name)
+
+# 等待队列清空
+while not q.empty():
+    pass
+ 
+# 也可以join方法,与上同效
+# q.join()
+ 
+# 通知线程,处理完之后关闭
+for t in threads:
+    t.exitFlag = 1
+ 
+# 等待所有线程结束之后才退出
+for t in threads:
+    t.join()
+ 
+print("Exiting Main Thread")

+ 22 - 0
tools/threadings/线程池.py

@@ -0,0 +1,22 @@
+from concurrent.futures.thread import ThreadPoolExecutor
+from concurrent.futures import as_completed
+import random
+ 
+import time
+def print_time(data):
+    t = random.randint(1, 10)
+    time.sleep(t)
+    print("start_%s" % data)
+    print("============")
+    return t
+data = []
+for i in range(50):
+    data.append(i)
+with ThreadPoolExecutor(10) as executor:
+    future_list = []
+    for i in range(10):
+        # future = executor.submit(print_time,data)
+        future = executor.submit(print_time, {"name": 111, "id": 222})
+        future_list.append(future)
+    for res in as_completed(future_list):  # 这个futrure_list是你future对象的列表
+        print(res.result())

+ 15 - 0
tools/threadings/非阻塞线程.py

@@ -0,0 +1,15 @@
+import threading
+import time
+def one_thread(name,id):
+    print("start....")
+    time.sleep(2)
+    print(name)
+    print(id)
+    time.sleep(5)
+    print("end...")
+ 
+print("start thread")
+threading.Thread(target=one_thread, args=(), kwargs={"name": 111, "id": 222}).start()
+# args是一个list
+# kwargs是一个字典,需要对应函数的key
+print("end thread")