Browse Source

上傳檔案到 ''

rita 2 years ago
parent
commit
2f22371ad0
1 changed files with 619 additions and 0 deletions
  1. 619 0
      coffee_tanks_comm.py

+ 619 - 0
coffee_tanks_comm.py

@@ -0,0 +1,619 @@
+#%%
+
+# 取得各網頁桶槽出料、入料優先順序
+while True:
+    # DB 取得桶槽狀態
+    # 將 優先順序 轉換成 桶槽狀態
+    # 桶槽狀態轉換
+    # 桶槽狀態存回 DB
+        # 若有改變狀態, 更新優先順序
+    break
+
+#%%
+# 測試 : 乾燥出料 對應 乾燥桶槽桶槽, 以利傳值到網頁, 供使用者排序
+
+import pymysql
+db = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='Gold@53743001', database='CoffeeManage', charset='utf8')
+c = db.cursor()
+
+# # 1. 先找到乾燥出料儲豆槽編號, tank_type = 乾燥出料:DO1、DO2
+c.execute("SELECT `tank_id` FROM `dry_tank_relation` WHERE `tank_type`='dry_out'")
+Dry_Out_Items = c.fetchall()
+for i in range(len(Dry_Out_Items)):
+    print("===== ", Dry_Out_Items[i][0], " ==========")                  # DO1
+    c.execute("SELECT `tank_id` FROM `dry_tank_relation` WHERE `tank_type` = 'dry_tank' AND `tank_export` = '" + Dry_Out_Items[i][0] + "'")
+    result = c.fetchall()
+    print(Dry_Out_Items[i][0], "_result:", result)
+    exec(Dry_Out_Items[i][0] + "_DryOut_Order = []")
+    # # 2. 找到出料為 DO1 且 tank_type = 乾燥桶槽 之桶槽號:D1、D2、D3;以此類推
+    for x in range(len(result)):
+        eval(Dry_Out_Items[i][0] + "_DryOut_Order.append(result[x][0])")
+    # eval("print('" + Dry_Out_Items[i][0] + "_DryOut_Order: ', DI1_DryOut_Order)")
+    print(Dry_Out_Items[i][0] + "_DryOut_Order:", eval(Dry_Out_Items[i][0] + "_DryOut_Order"))
+    # # 3. 請使用者分別排序 DO1 對應桶槽、DO2 對應桶槽
+    # print("-----------------------------------------------------------")
+db.commit()
+db.close()
+
+#%%
+
+
+
+#%%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+#%%
+# # === 乾燥出豆 1/2 ======================================================
+# # === 網頁取值 ===========================
+DryOut_item = [
+    'DO1',
+    'DO2'
+]
+DryOut_item_status = []
+DryOut_order = [
+    ['D1', 'D2', 'D3'],
+    ['D4', 'D5', 'D6'],
+]  
+DryOut_order_status = []
+
+#%%
+# # === 乾燥出豆 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+D1 = 'ReadyForOutputtingBean'
+D2 = 'Waiting'
+D3 = 'Waiting'
+D4 = 'Waiting'
+D5 = 'Waiting'
+D6 = 'Waiting'
+D7 = 'ReadyForOutputtingBean'
+D8 = 'OutputtingBean'
+DO1 = 'Waiting'
+DO2 = 'Waiting'
+print("D1:", D1)
+print("D2:", D2)
+print("D3:", D3)
+print("D4:", D4)
+print("D5:", D5)
+print("D6:", D6)
+print("DO1:", DO1)
+print("DO2:", DO2)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(DryOut_item)):
+    DryOut_item_status.append(eval(DryOut_item[i]))
+    # print(DryOut_item[i], eval(DryOut_item[i]))
+    target_list = []
+    for o in range(len(DryOut_order[i])):
+        target_list.append(eval(DryOut_order[i][o]))
+        # print(DryOut_order[i][o], eval(DryOut_order[i][o]))
+    DryOut_order_status.append(target_list)
+    # print("===================================")
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(DryOut_item_status)):
+    if DryOut_item_status[i] == "Waiting" \
+    and DryOut_order_status[i].count('OutputtingBean') == 0 \
+    and DryOut_order_status[i].count('ReadyForOutputtingBean') != 0:
+        for o in range(len(DryOut_order_status[i])):
+            # print("=== OutputtingBean ", DryOut_order[i][o], "===")
+            if DryOut_order_status[i][o] == "ReadyForOutputtingBean":
+                exec(DryOut_order[i][o] + " = 'OutputtingBean'")
+                exec(DryOut_item[i] + " = 'InputtingBean'")
+                finish_order = DryOut_order[i][o]
+                # print(finish_order)
+                DryOut_order[i].pop(o)
+                DryOut_order[i].append(finish_order)
+                break
+print("===== status update =====")
+print("D1:", D1)
+print("D2:", D2)
+print("D3:", D3)
+print("D4:", D4)
+print("D5:", D5)
+print("D6:", D6)
+print("DO1:", DO1)
+print("DO2:", DO2)
+#%%
+
+
+
+#%%
+# # === 乾燥入豆 1/2 ======================================================
+# # === 網頁取值 ===========================
+DryIn_item = [
+    'DI1',
+    'DI2'
+]
+DryIn_item_status = []
+DryIn_order = [
+    ['D1', 'D2', 'D3'],
+    ['D4', 'D5', 'D6'],
+]  
+DryIn_order_status = []
+
+#%%
+# # === 乾燥入豆 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+DI1 = 'OutputtingBean'
+DI2 = 'OutputtingBean'
+D1 = 'Drying'
+D2 = 'Waiting'
+D3 = 'Waiting'
+D4 = 'Drying'
+D5 = 'Waiting'
+D6 = 'Waiting'
+print("DI1:", DI1)
+print("DI2:", DI2)
+print("D1:", D1)
+print("D2:", D2)
+print("D3:", D3)
+print("D4:", D4)
+print("D5:", D5)
+print("D6:", D6)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(DryIn_item)):
+    DryIn_item_status.append(eval(DryIn_item[i]))
+    # print(DryIn_item[i], eval(DryIn_item[i]))
+    target_list = []
+    for o in range(len(DryIn_order[i])):
+        target_list.append(eval(DryIn_order[i][o]))
+        # print(DryIn_order[i][o], eval(DryIn_order[i][o]))
+    DryIn_order_status.append(target_list)
+    # print("===================================")
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(DryIn_item)):
+    if DryIn_item_status[i] == "OutputtingBean" \
+    and DryIn_order_status[i].count('InputtingBean') == 0:
+        if DryIn_order_status[i].count('InputtingBean_Pause') != 0:
+            for o in range(len(DryIn_order_status[i])):
+                # print("=== Waiting ", DryIn_order[i][o], " ===")
+                if DryIn_order_status[i][o] == "InputtingBean_Pause":
+                    # print(DryIn_order[i][o] + "= 'InputtingBean'")
+                    exec(DryIn_order[i][o] + " = 'InputtingBean'")
+                    break
+        elif DryIn_order_status[i].count('Waiting') != 0:
+            for o in range(len(DryIn_order_status[i])):
+                # print("=== Waiting ", DryIn_order[i][o], " ===")
+                if DryIn_order_status[i][o] == 'Waiting':
+                    # print(DryIn_order[i][o] + "= 'InputtingBean'")
+                    exec(DryIn_order[i][o] + " = 'InputtingBean'")
+                    finish_order = DryIn_order[i][o]
+                    print(finish_order)
+                    DryIn_order[i].pop(o)
+                    DryIn_order[i].append(finish_order)
+                    print("NEW DryIn_order :", DryIn_order)
+                    break
+    elif DryIn_item_status[i] == "Waiting" or DryIn_item_status[i] == "InputtingBean":
+        if DryIn_order_status.count('InputtingBean') != 0:
+            for o in range(len(DryIn_order_status)):
+                if DryIn_order_status[i][o] == 'InputtingBean':
+                    exec(DryIn_order[i][o] + " = 'InputtingBean_Pause'")
+                    break
+print("===== status update =====")
+print("DI1:", DI1)
+print("DI2:", DI2)
+print("D1:", D1)
+print("D2:", D2)
+print("D3:", D3)
+print("D4:", D4)
+print("D5:", D5)
+print("D6:", D6)
+
+# %%
+
+
+
+
+
+
+
+
+
+
+
+
+#%%
+# # === 發酵出豆 1/2 ======================================================
+# # === 網頁取值 ===========================
+FermentOut_item = [
+    'FO1',
+    'FO2'
+]
+FermentOut_item_status = []
+FermentOut_order = [
+    ['F1', 'F2', 'F3'],
+    ['F4', 'F5', 'F6'],
+]  
+FermentOut_order_status = []
+
+
+# # === 乾燥出豆 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+F1 = 'Waiting'
+F2 = 'ReadyForOutputtingBean'
+F3 = 'Waiting'
+F4 = 'Waiting'
+F5 = 'Waiting'
+F6 = 'Waiting'
+F7 = 'ReadyForOutputtingBean'
+F8 = 'OutputtingBean'
+FO1 = 'Waiting'
+FO2 = 'Waiting'
+print("F1:", F1)
+print("F2:", F2)
+print("F3:", F3)
+print("F4:", F4)
+print("F5:", F5)
+print("F6:", F6)
+print("FO1:", FO1)
+print("FO2:", FO2)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(FermentOut_item)):
+    FermentOut_item_status.append(eval(FermentOut_item[i]))
+    # print(FermentOut_item[i], eval(FermentOut_item[i]))
+    target_list = []
+    for o in range(len(FermentOut_order[i])):
+        target_list.append(eval(FermentOut_order[i][o]))
+        # print(FermentOut_order[i][o], eval(FermentOut_order[i][o]))
+    FermentOut_order_status.append(target_list)
+    # print("===================================")
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(FermentOut_item_status)):
+    if FermentOut_item_status[i] == "Waiting" \
+    and FermentOut_order_status[i].count('OutputtingBean') == 0 \
+    and FermentOut_order_status[i].count('ReadyForOutputtingBean') != 0:
+        for o in range(len(FermentOut_order_status[i])):
+            # print("=== OutputtingBean ", FermentOut_order[i][o], "===")
+            if FermentOut_order_status[i][o] == "ReadyForOutputtingBean":
+                exec(FermentOut_order[i][o] + " = 'OutputtingBean'")
+                exec(FermentOut_item[i] + " = 'InputtingBean'")
+                finish_order = FermentOut_order[i][o]
+                # print(finish_order)
+                FermentOut_order[i].pop(o)
+                FermentOut_order[i].append(finish_order)
+                print("NEW FermentOut_order", FermentOut_order)
+                break
+print("===== status update =====")
+print("F1:", F1)
+print("F2:", F2)
+print("F3:", F3)
+print("F4:", F4)
+print("F5:", F5)
+print("F6:", F6)
+print("FO1:", FO1)
+print("FO2:", FO2)
+
+#%%
+
+
+
+#%%
+# # === 發酵入豆 1/2 ======================================================
+# # === 網頁取值 ===========================
+FermentIn_item = [
+    'FI1',
+    'FI2'
+]
+FermentIn_item_status = []
+FermentIn_order = [
+    ['F1', 'F2', 'F3'],
+    ['F4', 'F5', 'F6'],
+]  
+FermentIn_order_status = []
+
+#%%
+# # === 發酵入豆 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+FI1 = 'OutputtingBean'
+FI2 = 'OutputtingBean'
+F1 = 'Fermenting'
+F2 = 'Waiting'
+F3 = 'Waiting'
+F4 = 'Fermenting'
+F5 = 'Waiting'
+F6 = 'Waiting'
+print("FI1:", FI1)
+print("FI2:", FI2)
+print("F1:", F1)
+print("F2:", F2)
+print("F3:", F3)
+print("F4:", F4)
+print("F5:", F5)
+print("F6:", F6)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(FermentIn_item)):
+    FermentIn_item_status.append(eval(FermentIn_item[i]))
+    # print(FermentIn_item[i], eval(FermentIn_item[i]))
+    target_list = []
+    for o in range(len(FermentIn_order[i])):
+        target_list.append(eval(FermentIn_order[i][o]))
+        # print(FermentIn_order[i][o], eval(FermentIn_order[i][o]))
+    FermentIn_order_status.append(target_list)
+    # print("===================================")
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(FermentIn_item)):
+    if FermentIn_item_status[i] == "OutputtingBean" \
+    and FermentIn_order_status[i].count('InputtingBean') == 0:
+        if FermentIn_order_status[i].count('InputtingBean_Pause') != 0:
+            for o in range(len(FermentIn_order_status[i])):
+                # print("=== Waiting ", FermentIn_order[i][o], " ===")
+                if FermentIn_order_status[i][o] == "InputtingBean_Pause":
+                    # print(FermentIn_order[i][o] + "= 'InputtingBean'")
+                    exec(FermentIn_order[i][o] + " = 'InputtingBean'")
+                    break
+        elif FermentIn_order_status[i].count('Waiting') != 0:
+            for o in range(len(FermentIn_order_status[i])):
+                # print("=== Waiting ", FermentIn_order[i][o], " ===")
+                if FermentIn_order_status[i][o] == 'Waiting':
+                    # print(FermentIn_order[i][o] + "= 'InputtingBean'")
+                    exec(FermentIn_order[i][o] + " = 'InputtingBean'")
+                    finish_order = FermentIn_order[i][o]
+                    print(finish_order)
+                    FermentIn_order[i].pop(o)
+                    FermentIn_order[i].append(finish_order)
+                    print("NEW FermentIn_order :", FermentIn_order)
+                    break
+    elif FermentIn_item_status[i] == "Waiting" or FermentIn_item_status[i] == "InputtingBean":
+        if FermentIn_order_status.count('InputtingBean') != 0:
+            for o in range(len(FermentIn_order_status)):
+                if FermentIn_order_status[i][o] == 'InputtingBean':
+                    exec(FermentIn_order[i][o] + " = 'InputtingBean_Pause'")
+                    break
+print("===== status update =====")
+print("FI1:", FI1)
+print("FI2:", FI2)
+print("F1:", F1)
+print("F2:", F2)
+print("F3:", F3)
+print("F4:", F4)
+print("F5:", F5)
+print("F6:", F6)
+
+#%%
+# # === 發酵出料 to 乾燥入料 1/2 ======================================================
+# # === 網頁取值 ===========================
+FtoD_item = [
+    'FO1',
+    'FO2'
+]
+FtoD_item_status = []
+FtoD_order = [
+    ['DO1'],
+    ['DO2']
+]  
+FtoD_order_status = []
+
+#%%
+# # === 發酵出料 to 乾燥入料 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+FO1 = 'OutputtingBean'
+FO2 = 'OutputtingBean'
+DO1 = 'OutputtingBean'
+DO2 = 'Waiting'
+print("FO1:", FO1)
+print("FO2:", FO2)
+print("DO1:", DO1)
+print("DO2:", DO2)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(FtoD_item)):
+    # print(FtoD_item[i], eval(FtoD_item[i]))
+    FtoD_item_status.append(eval(FtoD_item[i]))
+    target_list = []
+    for o in range(len(FtoD_order[i])):
+        # print(FtoD_order[i][o], eval(FtoD_order[i][o]))
+        target_list.append(eval(FtoD_order[i][o]))
+    FtoD_order_status.append(target_list)
+    # print("===================================")
+# print("FtoD_item_status: ", FtoD_item_status)
+# print("FtoD_order_status: ", FtoD_order_status)
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(FtoD_item_status)):
+    if FtoD_item_status[i] == "OutputtingBean" \
+    and FtoD_order_status[i].count('InputtingBean') == 0 \
+    and FtoD_order_status[i].count('Waiting') != 0 :
+        for o in range(len(FtoD_order_status[i])):
+            print("=== InputtingBean ", FtoD_order[i][o], "===")
+            if FtoD_order_status[i][o] == "Waiting":
+                exec(FtoD_order[i][o] + " = 'InputtingBean'")
+                finish_order = FtoD_order[i][o]
+                print(finish_order)
+                FtoD_order[i].pop(o)
+                FtoD_order[i].append(finish_order)
+                print("NEW FtoD_order :", FtoD_order)
+                break
+print("===== status update =====")
+print("FO1:", FO1)
+print("FO2:", FO2)
+print("DO1:", DO1)
+print("DO2:", DO2)
+#%%
+
+
+
+#%%
+# # === 脫皮出料 1/2 ======================================================
+# # === 網頁取值 ===========================
+PeelOut_item = [
+    'P1',
+    'P2'
+]
+PeelOut_item_status = []
+PeelOut_order = [
+    ['FI1'],
+    ['FI2'],
+]  
+PeelOut_order_status = []
+PeelFullHeight = 30.0
+
+#%%
+# # === 脫皮出料 2/2 ======================================================
+# # === DB 取得桶槽狀態 ===========================
+# !!!!! 請注意, 這邊的 item 還要增加 超音波數值 (儲豆槽內豆子高度)
+P1 = 'Peeling'
+P2 = 'Peeling'
+P1_UltraSonic = 30.5
+P2_UltraSonic = 40
+FI1 = 'Outputting'
+FI2 = 'Waiting'
+print("P1: ", P1)
+print("P2: ", P2)
+print("P1_UltraSonic: ", P1_UltraSonic)
+print("P2_UltraSonic: ", P2_UltraSonic)
+print("FI1: ", FI1)
+print("FI2: ", FI2)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(PeelOut_item)):
+    PeelOut_item_status.append(eval(PeelOut_item[i]))
+    # print(PeelOut_item[i], eval(PeelOut_item[i]))
+    target_list = []
+    for o in range(len(PeelOut_order[i])):
+        target_list.append(eval(PeelOut_order[i][o]))
+        # print(PeelOut_order[i][o], eval(PeelOut_order[i][o]))
+    PeelOut_order_status.append(target_list)
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(PeelOut_item)):
+    if eval(PeelOut_item[i] + "_UltraSonic") >= PeelFullHeight \
+    and PeelOut_order_status[i].count('InputtingBean') == 0:
+        if PeelOut_order_status[i].count('InputtingBean_Pause') != 0:
+            for o in range(len(PeelOut_order_status[i])):
+                # print("=== Waiting ", PeelOut_order[i][o], " ===")
+                if PeelOut_order_status[i][o] == "InputtingBean_Pause":
+                    # print(PeelOut_order[i][o] + "= 'InputtingBean'")
+                    break
+        elif PeelOut_order_status[i].count('Waiting') != 0:
+            for o in range(len(PeelOut_order_status[i])):
+                # print("=== Waiting ", PeelOut_order[i][o], " ===")
+                if PeelOut_order_status[i][o] == 'Waiting':
+                    # print(PeelOut_order[i][o] + "= 'InputtingBean'")
+                    exec(PeelOut_order[i][o] + " = 'InputtingBean'")
+                    finish_order = PeelOut_order[i][o]
+                    print(finish_order)
+                    PeelOut_order[i].pop(o)
+                    PeelOut_order[i].append(finish_order)
+                    print("NEW PeelOut_order :", PeelOut_order)
+                    break
+    else:
+        if PeelOut_order_status.count('InputtingBean') != 0:
+            for o in range(len(PeelOut_order_status)):
+                if PeelOut_order_status[i][o] == 'InputtingBean':
+                    exec(PeelOut_order[i][o] + " = 'InputtingBean_Pause'")
+                    break
+print("===== status update =====")
+print("P1: ", P1)
+print("P2: ", P2)
+print("F1: ", FI1)
+print("F2: ", FI2)
+
+#%%
+
+
+
+#%%
+# # === 清洗出料 ======================================================
+# # === 網頁取值 ===========================
+# # !!!!! 請注意, 因為此處 C1、C2(多) S1(少), 多對少的狀況, 所以 S 為 item, C 為 order
+CleanOut_item = [
+    'S1',
+    'S2'
+]
+CleanOut_item_status = []
+CleanOut_order = [
+    ['C1', 'C2'],
+    ['C3', 'C4']
+]  
+CleanOut_order_status = []
+ColorSelectFullHeight = 50.0
+
+# # === DB 取得桶槽狀態 ===========================
+# !!!!! 請注意, 這邊的 item 還要增加 超音波數值 (儲豆槽內豆子高度)
+C1 = 'ReadyForOutputtingBean'
+C2 = 'Waiting'
+C3 = 'Waiting'
+C4 = 'OutputtingBean'
+S1 = 'Waiting'
+S2 = 'ColorSelecting'
+S1_UltraSonic = 30.5
+S2_UltraSonic = 40
+print("C1: ", C1)
+print("C2: ", C2)
+print("C3: ", C3)
+print("C4: ", C4)
+print("S1: ", S1)
+print("S2: ", S2)
+
+# # === 將桶槽號碼整理成狀態 ===========================
+for i in range(len(CleanOut_item)):
+    CleanOut_item_status.append(eval(CleanOut_item[i]))
+    # print(CleanOut_item[i], eval(CleanOut_item[i]))
+    target_list = []
+    for o in range(len(CleanOut_order[i])):
+        target_list.append(eval(CleanOut_order[i][o]))
+        # print(CleanOut_order[i][o], eval(CleanOut_order[i][o]))
+    CleanOut_order_status.append(target_list)
+
+# # === 桶槽狀態轉換 ===========================
+for i in range(len(CleanOut_item)):
+    # print(eval(CleanOut_item[i] + "_UltraSonic"))
+    if CleanOut_order_status[i].count('OutputtingBean') == 0 \
+    and CleanOut_order_status[i].count('ReadyForOutputtingBean') != 0:
+        for o in range(len(CleanOut_order_status[i])):
+            # print("=== OutputtingBean ", CleanOut_order[i][o], " ===")
+            if CleanOut_order_status[i][o] == 'ReadyForOutputtingBean':
+                # print(CleanOut_order[i][o] + "= 'OutputtingBean'")
+                exec(CleanOut_order[i][o] + " = 'OutputtingBean'")
+                finish_order = CleanOut_order[i][o]
+                print(finish_order)
+                CleanOut_order[i].pop(o)
+                CleanOut_order[i].append(finish_order)
+                print("NEW CleanOut_order :", CleanOut_order)
+                break
+print("===== status update =====")
+print("C1: ", C1)
+print("C2: ", C2)
+print("C3: ", C3)
+print("C4: ", C4)
+print("S1: ", S1)
+print("S2: ", S2)
+
+
+# %%