import time
import sys
import os

# print('根据当前文件获取当前文件所在目录的路径', os.path.dirname(__file__))
import traceback

from air_case.public1.public1.public1 import approval_center, approval_center_all
from common.Logger_Utils import Logger
from common.timeUtils import timeUtils

curPath = os.path.abspath(os.path.dirname(__file__))  # 获取当前文件的所在目录的绝对路径
# print('将路径中的/换成\\', curPath)  # C:\Users\Administrator\Desktop\temp\dbshop99\main
# # #将当前文件的所在目录的绝对路径进行分离,分离成 ('C:\\Users\\Administrator\\Desktop\\temp\\dbshop99', 'main'),存到元组中
# print('切割路径,切割成一个元组,将路径分离', os.path.split(curPath))
rootPath = os.path.split(curPath)[0]  # [0]表示元组中的为一个元素
# print('当前项目的根目录', rootPath)
sys.path.append(rootPath)  # 将项目的根目录路径添加到环境变量中,然后在cmd命令行中就可以正常运行脚本
sys.path.append(os.path.join(rootPath, 'common'))
# print('根据当前文件获取当前文件所在目录的路径', os.path.dirname(__file__))
from airtest.core.helper import using

from common.common_func import commonFuc
from common.db.sql.sql_del_branch_info import delData

# curPath = os.path.abspath(os.path.dirname(__file__))  # 获取当前文件的所在目录的绝对路径
# print('将路径中的/换成\\', curPath)  # C:\Users\Administrator\Desktop\temp\dbshop99\main
# # #将当前文件的所在目录的绝对路径进行分离,分离成 ('C:\\Users\\Administrator\\Desktop\\temp\\dbshop99', 'main'),存到元组中
# print('切割路径,切割成一个元组,将路径分离', os.path.split(curPath))
# rootPath = os.path.split(curPath)[0]  # [0]表示元组中的为一个元素
# print('当前项目的根目录', rootPath)
# sys.path.append(rootPath)  # 将项目的根目录路径添加到环境变量中,然后在cmd命令行中就可以正常运行脚本
# print('rootPath',rootPath)


# print(sys.path)
import tkinter as tk
from tkinter import *
import tkinter.messagebox
from common.run_cmd_script import execute_command

pro_path = commonFuc().get_pro_path2()
sys.path.append(pro_path + r'/air_case/b5_spd3_core_business_flow/execute.air')
using(pro_path + r'//air_case/b5_spd3_core_business_flow/execute.air')


def main_text():
    # 创建窗口
    root = tk.Tk()
    # 获取屏幕宽高
    window_width = root.winfo_screenwidth()
    window_height = root.winfo_screenheight()
    # 设置窗口大小
    root.geometry('800x560')
    # 刷新窗口参数
    root.update()
    # 计算窗口居中时左上角的坐标
    x = (window_width - root.winfo_width()) // 2
    y = (window_height - root.winfo_height()) // 2
    # 设置窗口左上角的坐标
    root.geometry("+{}+{}".format(x, y))
    root.title(string="核心业务流")
    root.resizable(False, False)

    # for a in ['n', 's', 'e', 'w', 'ne', 'nw', 'se', 'sw']:
    #     Button(root,
    #            text='anchor',
    #            anchor=a,
    #            width=30,
    #            height=4).pack()
    def flow1():
        print('调用流程一')
        from execute import flow1
        flow1()
        print('流程一执行完毕')
        # execute_command("python runner_test.py tag id2302-1 debug mdm3")
        # sys.exit(0)

    def flow2():
        print('调用流程二')
        from execute import flow2
        flow2()
        print('流程2执行完毕')
        # execute_command("python runner_test.py tag id2302-2 debug mdm3")
        # sys.exit(0)

    def flow3():
        from execute import flow3
        flow3()
        print('流程3执行完毕')
        # execute_command("python runner_test.py tag id2302-3 debug mdm3")
        # sys.exit(0)

    def flow4():
        # execute_command("python runner_test.py tag id2302-4 debug mdm3")
        from execute import flow4
        flow4()
        # sys.path.append(pro_path + r'/air_case/b5_spd3_core_business_flow/a_a4_流程四_基础模块设置.air')
        # using(pro_path + r'//air_case/b5_spd3_core_business_flow/a_a4_流程四_基础模块设置.air')
        # from a_a4_流程四_基础模块设置 import test1,test2,dept_query_all,grants_user,set_dept_lead1,add_StockArea,recover_dataFile
        # test1(2)  # 参数2是新增院区后缀为6位数的参数1是老模式
        # test2()  # 科室添加产品信息(产品是从外网同步过来的)
        # dept_query_all()  # 科室查询，将科室id写入文件中
        # grants_user()  # 给用户授权
        # set_dept_lead1()  # 设置一级科室负责人
        # add_StockArea()  # 添加库区
        # recover_dataFile()#恢复备份的data目录
        # commonFuc().check_text_exist_result_text('succees', 'succees')
        print('流程4执行完毕')
        # sys.exit(0)

    def flow5():
        # execute_command("python runner_test.py tag id2302-5,id2302-6,id2302-7,id2302-8 debug mdm3")
        from execute import flow5, flow6, flow7, flow8
        flow5()
        flow6()
        flow7()
        flow8()
        print('流程5执行完毕')
        # sys.exit(0)

    def flow6():
        from execute import flow9
        flow9()
        print('流程6执行完毕')
        # sys.exit(0)

    def flow7():
        print('流程七开始执行')
        from execute import flow10
        flow10()
        print('流程七执行完毕')
        # sys.exit(0)

    def flow8():
        from execute import flow11
        flow11()
        print('流程八执行完毕', '流程八执行完毕 ')
        # sys.exit(0)

    def flow9():
        # counts=get_input()
        # print(count)
        counts=6
        for i in range(int(counts)):
            from execute import flow12
            flow12()
            print('流程9执行完毕', '流程9执行完毕',i)
        # sys.exit(0)

    def flow10():
        from execute import flow13
        flow13()
        print('流程十执行完毕', '流程十执行完毕')
        # sys.exit(0)

    def flow11():
        from execute import flow14
        flow14()
        print('流程11执行完毕', 'flow11执行完毕')
        # sys.exit(0)

    def flow12():
        from execute import flow15
        flow15()
        print('流程12执行完毕', 'flow12执行完毕')
        # sys.exit(0)

    def flow13():
        from execute import flow16
        flow16()
        print('流程13执行完毕', 'flow13执行完毕')
        # sys.exit(0)

    def flow14():
        from execute import flow17
        flow17()
        print('流程14执行完毕', 'flow14执行完毕')
        # sys.exit(0)

    def flow15():
        from execute import flow18
        flow18()
        print('流程十五执行完毕')
        # sys.exit(0)

    def flow16():
        from execute import flow19
        flow19()
        print('流程十六执行完毕')
        # sys.exit(0)

    def flow17():
        from execute import flow20
        flow20()
        print('流程十七执行完毕')
        # sys.exit(0)

    def flow18():
        from execute import flow21
        flow21()
        print('流程十八执行完毕')
        # sys.exit(0)

    def flow0():
        execute_command("python runner_test.py tag id2302-23 debug mdm3")
        sys.exit(0)

    def exit():
        print('退出')
        sys.exit(0)

    def del_data():
        # 删除自动化脚本产生的数据
        result = confirm()
        if result == True:
            result1 = confirm1()
            if result1 == True:
                delData().Delete_branch_by_id()
                delData().Delete_goods_change_info()
                delData().Delete_probeInfo_other()
                # delData().Del_supply_relation()
                delData().Delete_business_Data()
                delData().Del_reporter_data()
                delData().Delete_business_Data_All()
                delData().Delete_business_Data_All2()
                print('===================删除垃圾数据完毕============================')
        else:
            print('Cancel')

    def flow5_flow18():
        date1= timeUtils().get_time_hms(5)
        sys.stdout = Logger(date1+"output.txt")
        sys.stderr = Logger(date1+"error.txt")

        # 脚本运行前清空所有待审批数据
        approval_center_all()
        approval_center_all()
        try:
            flow5()
            flow6()
            time.sleep(6)
            flow7()
            flow8()
            flow9()
            flow10()
            flow11()
            flow12()
            flow13()
            flow14()
            flow15()
            flow16()
            flow17()
            flow18()
        except Exception as e:
            print('脚本出现异常，请检查脚本或者数据')
            print("发生异常：", str(e))
            traceback.print_exc()

    def flow11_flow18():
        flow11()
        flow12()
        flow13()
        flow14()
        flow15()
        flow16()
        flow17()
        flow18()

    def confirm():
        result = tkinter.messagebox.askokcancel("确认", "您确定要执行此操作吗？")
        # print(result)
        print("用户选择了:", "OK" if result else "Cancel")
        return result

    def confirm1():
        result = tkinter.messagebox.askokcancel("再次确认", "您确定要执行此删除操作吗？数据删除后不可逆.")
        # print(result)
        print("用户选择了:", "OK" if result else "Cancel")
        return result

    def download_data():
        print('从Jenkins服务器下载data数据')

    def del_brachdata_from_brachid():
        import tkinter as tk
        from tkinter import ttk

        def dropdown_changed(event):
            value = combo.get()
            print(value)

        root = tk.Tk()
        root.title("删除指定院区数据")
        # 计算窗口居中时左上角的坐标
        x = (window_width - root.winfo_width()) // 2
        y = (window_height - root.winfo_height()) // 2
        # 设置窗口左上角的坐标
        root.geometry("+{}+{}".format(x, y))
        root.resizable(False, False)
        combo = ttk.Combobox(root)
        combo["values"] = ("选项1", "选项2", "选项3")
        combo.current(0)  # 设置默认选项
        combo.bind("<<ComboboxSelected>>", dropdown_changed)
        combo.pack()

        root.mainloop()

    def get_input():
        import tkinter as tk
        from tkinter import simpledialog
        c = 6
        count = tk.simpledialog.askstring("输入循环次数", "循环次数:", initialvalue="%s" % c)

        return count

    # 文本显示的位置。
    Button(root, text='流程一\n外网企业注册审批', width=16, height=8, command=flow1).grid(row=2, column=0)
    Button(root, text='流程二\n供货关系申请审批', anchor='center', width=16, height=8, command=flow2).grid(row=2, column=2)
    Button(root, text='流程三\n流程三_产品导\n入和审批', anchor='center', width=16, height=8, command=flow3).grid(row=2, column=4)
    Button(root, text='流程四\n内网基础模块设置', anchor='center', width=16, height=8, command=flow4).grid(row=2, column=6)
    Button(root, text='流程五\n中心库入库正结算\n开票', anchor='center', width=16, height=8, command=flow5).grid(row=2, column=8)
    Button(root, text='流程六\n中心库入库负结算', anchor='center', width=16, height=8, command=flow6).grid(row=2, column=10)
    Button(root, text='流程七\n中心库入库正负结算', anchor='center', width=16, height=8, command=flow7).grid(row=3, column=0)
    Button(root, text='流程八\n高值跟台业务', anchor='center', width=16, height=8, command=flow8).grid(row=3, column=2)
    Button(root, text='流程九\n请领业务二级库向\n中心库', anchor='center', width=16, height=8, command=flow9).grid(row=3, column=4)
    Button(root, text='流程十\n请领业务流_二级库\n向边仓', anchor='center', width=16, height=8, command=flow10).grid(row=3, column=6)
    Button(root, text='流程十一\n请领业务流_二级库\n向直送', anchor='center', width=16, height=8, command=flow11).grid(row=3, column=8)
    Button(root, text='流程十二\n请领业务流_二级库\n向二级库', anchor='center', width=16, height=8, command=flow12).grid(row=3,
                                                                                                         column=10)
    Button(root, text='流程十三\n请领业务流_三级库\n向二级库', anchor='center', width=16, height=8, command=flow13).grid(row=4,
                                                                                                         column=0)
    Button(root, text='流程十四\n退库业务消耗退库', anchor='center', width=16, height=8, command=flow14).grid(row=4, column=2)
    Button(root, text='流程十五\n退库业务三级库向\n二级库退库', anchor='center', width=16, height=8, command=flow15).grid(row=4,
                                                                                                         column=4)
    Button(root, text='流程十六\n退库业务_二级库向\n一级库退库', anchor='center', width=16, height=8, command=flow16).grid(row=4,
                                                                                                          column=6)
    Button(root, text='流程十七\n退库业务_中心库退\n供应商', anchor='center', width=16, height=8, command=flow17).grid(row=4, column=8)
    Button(root, text='流程十八\n中心库业务_拆包功能', anchor='center', width=16, height=8, command=flow18).grid(row=4, column=10)
    Button(root, text='一键执行', anchor='center', width=8, height=2, command=flow0).grid(row=5, column=0)
    Button(root, text='删除指定\n院区数据', anchor='center', width=8, height=2, command=del_brachdata_from_brachid).grid(row=5,
                                                                                                                 column=2)
    Button(root, text='流程五开始\n一键执行', anchor='center', width=8, height=2, command=flow5_flow18).grid(row=5, column=4)
    Button(root, text='删除垃圾\n数据', anchor='center', width=8, height=2, command=del_data).grid(row=5, column=6)
    Button(root, text='流程十一开始\n一键执行', anchor='center', width=8, height=2, command=flow11_flow18).grid(row=5, column=8)
    Button(root, text='从jenkins\n下载data\n数据', anchor='center', width=8, height=2, command=download_data).grid(row=5,
                                                                                                              column=10)

    Button(root, text='退  出', anchor='center', width=8, height=2, command=exit).grid(row=5, column=10)

    # Button(root, text='anchor', anchor='e', width=30, height=4).pack()
    # Button(root, text='anchor', anchor='w', width=30, height=4).pack()
    # Button(root, text='anchor', anchor='ne', width=30, height=4).pack()
    # Button(root, text='anchor', anchor='nw', width=30, height=4).pack()
    # Button(root, text='anchor', anchor='se', width=30, height=4).pack()
    # Button(root, text='anchor', anchor='sw', width=30, height=4).pack()

    root.mainloop()


main_text()
