# -*- encoding=utf8 -*-
import json
import traceback

from air_case.b1_herp3_login.登录内网系统.登录内网系统 import login_system
from air_case.public1.public1.public1 import *
from common.db.sql.sql_del_branch_info import delData

from common.fileUtls import FileUtils
from common.run_cmd_script import execute_command
from common.timeUtils import timeUtils
from airtest.core.api import using
from common.db.sql.sql_tools import *

__author__ = "xiaohesheng"

"""
case_tag:api,b6_spd3_core_business_flow_database_check,a_b3流程十请领业务流_二级库向边仓,id2303,id2303-13,sit,on
核心业务流:a_b3流程十请领业务流_二级库向边仓
python runner_test.py tag id2303-13 debug mdm3
"""


def check_mcms_dept_buy_car(type=1):
    hos_goods_id = 'hos_goods_id'
    if type == 1:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message2')["hosGoodsId"]
    elif type == 2:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message1')["hosGoodsId"]
    elif type == 3:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message3')["hosGoodsId"]
    branch_id = get_branch_id()
    # 获取每次都会变化的字段create_time的值
    create_time = get_create_time(
        "select create_time from mcms_dept_buy_car where branch_id='%s'and hos_goods_id='%s';" % (
            branch_id, hos_goods_id))
    print('create_time', create_time)
    id = get_id(
        "select id from mcms_dept_buy_car where branch_id='%s'and hos_goods_id='%s';" % (branch_id, hos_goods_id))
    print('id', id)
    create_user = get_id(
        "select create_user from mcms_dept_buy_car where branch_id='%s'and hos_goods_id='%s' LIMIT 1;" % (
            branch_id, hos_goods_id))
    print('create_time', create_time, 'id', id)
    sql = """select * from mcms_dept_buy_car where branch_id='%s' and hos_goods_id='%s' LIMIT 1;
             """ % (branch_id, hos_goods_id)
    actual_value1 = check_mcms_dept_buy_car_sql(sql)
    print(actual_value1)
    deptid2 = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid2']
    deptname2 = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid2']
    areaCode = get_stockAreaId_new(deptid2, deptname2, 2)
    areaName = '默认库区'
    # 读取文件中的信息
    info = FileUtils().r_info8('b5_spd3_core_business_flow', "二级库请领产品信息", 'message21')
    list_a = info['list_a']
    mdm_goods_code = commonFuc().analysis_json('mdmGoodsCode', list_a)
    pur_mode = commonFuc().analysis_json('purMode', list_a)
    goodsCode = commonFuc().analysis_json('goodsCode', list_a)
    pkgDefId = commonFuc().analysis_json('pkgDefId', list_a)
    pkgDefName = commonFuc().analysis_json('pkgDefName', list_a)
    last_modified_user = create_user
    last_modified = create_time
    # print('actual_value1',actual_value1)
    actual_value2 = get_process_list2(actual_value1)
    # print('actual_value2')
    # print( actual_value2)
    # prov_hos_goods_id = '8d6273b7bca84dd8aace12b9422d7fd6'
    expected_value2 = 'expected_value2'
    if type == 1 or type == 3:
        expected_value2 = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                        'check_mcms_dept_buy_car_low_value', id, get_hosid(), branch_id,
                                                        deptid2,
                                                        deptname2, areaCode, areaName, hos_goods_id, mdm_goods_code,
                                                        goodsCode, pur_mode, pkgDefId, pkgDefName
                                                        , create_user, create_time, last_modified, last_modified_user)
    elif type == 2:
        expected_value2 = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                        'check_mcms_dept_buy_car_high_value', id, get_hosid(),
                                                        branch_id,
                                                        deptid2,
                                                        deptname2, areaCode, areaName, hos_goods_id, mdm_goods_code,
                                                        goodsCode, pur_mode,
                                                        create_user, create_time, last_modified, last_modified_user)
    # print('expected_value2', expected_value2)
    # expected_value2=get_process_list2(expected_value2)
    actual_value2 = actual_value2.replace(" ", "")
    expected_value2 = expected_value2.replace(" ", "")
    # print('actual_value2',actual_value2)
    print('expected_value2')
    print(expected_value2)
    print('actual_value2')
    print(actual_value2)
    if actual_value2 == expected_value2:
        print('ok')
        commonFuc().check_text_exist_result_text('succees', 'succees')
    else:
        print('error')
        commonFuc().check_text_exist_result_text('error', 'succees')


def mcms_dept_buy_detail(type=16):
    branch_id = get_branch_id()
    # 获取主表主键
    sql = "select id from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
        branch_id, type)
    id1 = process_tuple(get_dept_buy_id(sql))
    # 获取order_no
    sql1 = "select order_no from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc LIMIT 1;" % (
        branch_id, type)
    order_no1 = get_dept_buy_id(sql1)
    order_no1 = process_tuple(order_no1)
    # 子表sql
    sql1 = "select * from mcms_dept_buy_detail where pid='%s';" % id1
    # 从数据库中获取实际值
    actual = check_mcms_dept_buy_sql(sql1)
    print('actual', actual)
    hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message2')["hosGoodsId"]
    # print(hos_goods_id,process_tuple(hos_goods_id))

    # 获取子表id
    detail_id = get_id("select id from mcms_dept_buy_detail where pid='%s';" % id1)
    print('detail_id', detail_id)
    info = FileUtils().r_info8('b5_spd3_core_business_flow', "二级库请领产品信息", 'message21')
    list_a = info['list_a']
    mdm_goods_code =get_mdm_goods_code("select mdm_goods_code from mcms_goods_info  where id='%s';"%hos_goods_id)
    goods_code = get_mdm_goods_code("select hos_goods_code from mcms_goods_info  where id='%s';"%hos_goods_id)
    pkg_def_id = get_id("select pkg_def_id from mcms_pkg where hos_goods_id='%s' LIMIT 1;"%hos_goods_id)
    pkg_def_name = get_id("select pkg_def_name from mcms_pkg where hos_goods_id='%s' LIMIT 1;"%hos_goods_id)
    create_user=get_login_user_uxid()
    create_time= get_create_time("select create_time from  mcms_dept_buy_detail where pid='%s';" % id1)
    last_modified=create_time
    last_modified_user=create_user
    if type==16:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy_detail', detail_id, id1, order_no1, hos_goods_id,
                                                 mdm_goods_code, goods_code, pkg_def_id, pkg_def_name, create_user,
                                                 create_time, last_modified, last_modified_user)
    elif type==20:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy_detail1', detail_id, id1, order_no1, hos_goods_id,
                                                 mdm_goods_code, goods_code, pkg_def_id, pkg_def_name, create_user,
                                                 create_time, last_modified, last_modified_user)
    else:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy_detail2', detail_id, id1, order_no1, hos_goods_id,
                                                 mdm_goods_code, goods_code, pkg_def_id, pkg_def_name, create_user,
                                                 create_time, last_modified, last_modified_user)

    actual_value1 = get_process_list2(actual)
    expected_value1 = get_process_list2(expected)
    actual_value2 = actual_value1.replace(" ", "")
    expected_value2 = expected_value1.replace(" ", "")
    # print('actual_value2',actual_value2)
    print('expected_value2')
    print(expected_value2)
    print('actual_value2')
    print(actual_value2)
    result=(compare_text_index(actual_value2,expected_value2))
    print('result',result)
    if result==None:
        print('ok')
        commonFuc().check_text_exist_result_text('succees', 'succees')
    else:
        print('error')
        commonFuc().check_text_exist_result_text('error', 'succees')


def check_mcms_dept_buy(type=16):
    branch_id = get_branch_id()
    sql = """select * from mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;
                 """ % (branch_id, type)
    actual = check_mcms_dept_buy_sql(sql)
    print(actual)
    # 获取主键id
    sql = "select id from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
    branch_id, type)
    id1 = get_dept_buy_id(sql)
    # 获取order_no
    sql1 = "select order_no from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc LIMIT 1;" % (
    branch_id, type)
    order_no1 = get_dept_buy_id(sql1)
    print(process_tuple(id1), process_tuple(order_no1))
    id1 = process_tuple(id1)
    order_no1 = process_tuple(order_no1)
    deptid2 = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid2']
    deptname2 = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid2']
    # target_dept_id=FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']

    # area_code = get_stockAreaId_new(deptid2, deptname2, 2)
    info = FileUtils().r_info8("b5_spd3_core_business_flow", "库区信息", 'message22')
    list_a = info['list_a']
    area_code = commonFuc().analysis_json('shelfCode', list_a)
    area_name = '默认库区'
    # 读取文件中的信息
    info = FileUtils().r_info8('b5_spd3_core_business_flow', "二级库请领产品信息", 'message21')
    list_a = info['list_a']
    target_dept_id = commonFuc().analysis_json('targetDeptId', list_a)
    target_dept_name = commonFuc().analysis_json('targetDeptName', list_a)
    pur_mode = commonFuc().analysis_json('purMode', list_a)
    goodsCode = commonFuc().analysis_json('goodsCode', list_a)
    pkgDefId = commonFuc().analysis_json('pkgDefId', list_a)
    pkgDefName = commonFuc().analysis_json('pkgDefName', list_a)
    # 获取边仓id
    target_stock_id = get_id("select logic_id  FROM yb_direct WHERE branch_id ='%s';" % branch_id)
    bill_expdt_date = get_expdt_date(
        "select bill_expdt_date from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
        branch_id, type))
    rec_user = get_login_user_uxid()
    # rec_addr='二级检验科002'
    create_user = rec_user
    create_time = get_create_time(
        "select create_time from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
        branch_id, type))
    last_modified = get_create_time(
        "select last_modified from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
        branch_id, type))
    last_modified_user = rec_user
    last_auditor = rec_user
    last_audit_time = get_create_time(
        "select last_audit_time from  mcms_dept_buy where branch_id='%s' and bill_mode='%s' order by create_time desc  LIMIT 1;" % (
        branch_id, type))
    target_stock_name = '自动化测试12345'
    rec_addr = deptname2
    if type == 16:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy', id1, order_no1, get_hosid(), branch_id, deptid2,
                                                 deptname2, area_code, area_name, target_dept_id, target_dept_name,
                                                 target_stock_id, target_stock_name, bill_expdt_date, rec_user,
                                                 rec_addr, create_user, create_time,
                                                 last_modified, last_modified_user)
    elif type == 20:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy2', id1, order_no1, get_hosid(), branch_id, deptid2,
                                                 deptname2, area_code, area_name, target_dept_id, target_dept_name,
                                                 target_stock_id, target_stock_name, bill_expdt_date, rec_user,
                                                 rec_addr, create_user, create_time,
                                                 last_modified, last_modified_user)
    else:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_dept_buy3', id1, order_no1, get_hosid(), branch_id, deptid2,
                                                 deptname2, area_code, area_name, target_dept_id, target_dept_name,
                                                 target_stock_id, target_stock_name, bill_expdt_date, rec_user,
                                                 rec_addr, create_user, create_time,
                                                 last_modified, last_modified_user)

    print('expected', expected)
    print('aaaaaaaaaaaaaaaaa')
    actual_value1 = get_process_list2(actual)
    expected_value1 = get_process_list2(expected)
    actual_value2 = actual_value1.replace(" ", "")
    expected_value2 = expected_value1.replace(" ", "")
    # print('actual_value2',actual_value2)
    print('expected_value2')
    print(expected_value2)
    print('actual_value2')
    print(actual_value2)
    print(compare_text_index(actual_value2, expected_value2))
    if actual_value2 == expected_value2:
        print('ok')
        commonFuc().check_text_exist_result_text('succees', 'succees')
    else:
        print('error')
        commonFuc().check_text_exist_result_text('error', 'succees')


try:
    list_data = ['16', '20', '66']
    for i in list_data:
        check_mcms_dept_buy(int(i))
        mcms_dept_buy_detail(int(i))
    set_dept_lead()  # 设置二级科室负责人
    # 科室必须同步到外网，集中管控平台创建边仓才能选择到用户,"deptType":"0"
    pro_path = commonFuc().get_pro_path2()
    print('pro_path', pro_path)
    sys.path.append(pro_path + r'/air_case/b5_spd3_core_business_flow/a_b3流程十请领业务流_二级库向边仓.air')
    using(pro_path + r'//air_case/b5_spd3_core_business_flow/a_b3流程十请领业务流_二级库向边仓.air')
    from a_b3流程十请领业务流_二级库向边仓 import add_logic_stock

    add_logic_stock()

    from a_b3流程十请领业务流_二级库向边仓 import goods_move
    from a_b3流程十请领业务流_二级库向边仓 import second_dept_Request
    from a_b3流程十请领业务流_二级库向边仓 import BuyCarSubmit
    from a_b3流程十请领业务流_二级库向边仓 import check_buyWayText

    # # 设置产品出库渠道为边仓
    goods_move()
    updateUserLoginDefaultRange(get_listUserMgrRangePage(2))  # 设置登录账号默认权限是二级库
    # # # # 低值
    second_dept_Request(FileUtils().r_info8("b5_spd3_core_business_flow", "产品审核信息", 'message2')['hosGoodsId'], 1)
    check_mcms_dept_buy_car(1)
    # # # 高值
    second_dept_Request(FileUtils().r_info8("b5_spd3_core_business_flow", "产品审核信息", 'message1')['hosGoodsId'], 2)
    check_mcms_dept_buy_car(2)
    # # # 试剂
    second_dept_Request(FileUtils().r_info8("b5_spd3_core_business_flow", "产品审核信息", 'message3')['hosGoodsId'], 3)
    check_mcms_dept_buy_car(3)
    BuyCarSubmit()  # 请领车提交
    # 调用函数对数据库中的数据进行验证和比对
    list_data = ['16', '20', '66']
    for i in list_data:
        check_mcms_dept_buy(int(i))
        mcms_dept_buy_detail(int(i))
    # for i in range(6):  # 三个单据共审批6次
    #     approval_center()
    # check_buyWayText()#验证出库渠道是否为边仓
    # commonFuc().check_text_exist_result_text('succees', 'succees')
except Exception as e:
    # 打印错误信息
    print(f"发生错误: {e}")
    commonFuc().check_text_exist_result_text('error', 'succees')
