# -*- 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.db.sql.sql_tools import check_mcms_dept_buy_sql, get_pick_detail_id, get_mdm_goods_code1, get_goods_code1, \
    get_pkg_def_id, get_login_user_uxid_bydb, check_batch_id, check_barcode_id, get_create_time, get_PICK_id, \
    get_buyBillId, get_PICK_order_no, get_buyOrderNo, get_qty, get_source_id

from common.fileUtls import FileUtils
from common.run_cmd_script import execute_command
from common.timeUtils import timeUtils
from airtest.core.api import using

__author__ = "xiaohesheng"

"""
case_tag:api,b6_spd3_core_business_flow_database_check,a_c1流程十八中心库业务_拆包功能,id2303,id2303-21,sit,on
核心业务流:a_c1流程十八中心库业务_拆包功能
python runner_test.py tag id2303-21 debug mdm3
"""
def check_mcms_psi_dept_batch(DR_ID,type,order_no):
    branch_id = get_branch_id()
    sql = " select * from  mcms_psi_dept_batch where pid='%s';" % (
        DR_ID)
    actual = check_mcms_dept_buy_sql(sql)
    print('actual', actual)
    batch_main_key = get_id("select id from mcms_psi_dept_batch where pid='%s';" % DR_ID)
    pid = DR_ID
    # order_no = get_id("select order_no from mcms_psi_dept_batch where pid='%s';" % DR_ID)
    source_detail_id = get_pick_detail_id(branch_id,type)
    pick_detail_id=source_detail_id

    if type == 16:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message2')["hosGoodsId"]
    elif type == 20:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message1')["hosGoodsId"]
    else:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message3')["hosGoodsId"]
    mdm_goods_code = get_mdm_goods_code1(hos_goods_id)
    goods_code = get_goods_code1(hos_goods_id)
    pkg_def_id = get_pkg_def_id(hos_goods_id)
    picker_name = FileUtils().r_info8("b2_herp3_bs", "用户名信息", 'message3')['username1']
    picker = get_login_user_uxid_bydb(picker_name)
    source_batch_id=get_id("select source_batch_id from mcms_psi_dept_batch where pid='%s';" % DR_ID)
    target_batch_id=source_batch_id
    if check_batch_id(source_batch_id)==True:
        print('ok')
        commonFuc().check_text_exist_result_text('succees', 'succees')
    else:
        commonFuc().check_text_exist_result_text('error', 'succees')
    barcode_id=get_id("select barcode_id from mcms_psi_dept_batch where pid='%s';" % DR_ID)
    if check_barcode_id(barcode_id)==True:
        print('ok')
        commonFuc().check_text_exist_result_text('succees', 'succees')
    else:
        commonFuc().check_text_exist_result_text('error', 'succees')
    dept_name=FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid2']
    shelf_code= get_stockAreaId_new_fromDb(dept_name, 2)
    create_user = get_login_user_uxid_bydb(FileUtils().r_info8('b2_herp3_bs', "用户名信息", 'message3')['username1'])
    create_time = get_create_time("select create_time from  mcms_psi_dept_batch where pid='%s';" % DR_ID)
    last_modified = get_create_time("select last_modified from  mcms_psi_dept_batch where pid='%s';" % DR_ID)
    last_modified_user = create_user
    if type == 16:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_dept_batch1', batch_main_key, pid, order_no,source_detail_id
                                            ,pick_detail_id,hos_goods_id,mdm_goods_code,goods_code,source_batch_id,
                                            target_batch_id,barcode_id,shelf_code,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_psi_dept_batch2', batch_main_key, pid, order_no,source_detail_id
                                            ,pick_detail_id,hos_goods_id,mdm_goods_code,goods_code,source_batch_id,
                                            target_batch_id,barcode_id,shelf_code,create_user,create_time,last_modified,
                                            last_modified_user

                                                 )
    else:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_dept_batch3_1',batch_main_key, pid, order_no,source_detail_id
                                            ,pick_detail_id,hos_goods_id,mdm_goods_code,goods_code,source_batch_id,
                                            target_batch_id,barcode_id,shelf_code,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')
def check_mcms_psi_data(type1=10):
    branch_id = get_branch_id()
    source_dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']
    stock_id = get_stockId_fromdb(get_branch_name() + '中心库房')

    if type1==10:
        sql = " select * from mcms_stockpile where branch_id='%s' and stock_id='%s' and pur_mode='%s' and barcode_flag='1' order by   last_modified desc LIMIT 1;" % (
            branch_id,stock_id,type1)
    else:
        sql = " select * from mcms_stockpile where branch_id='%s' and stock_id='%s' and pur_mode='%s' and barcode_flag='1' order by   last_modified desc LIMIT 1;" % (
            branch_id, stock_id, type1)
    actual = check_mcms_dept_buy_sql(sql)
    print(actual)

    XH_ID=get_id(" select id from  mcms_stockpile where branch_id='%s' and stock_id='%s' and pur_mode='%s' and barcode_flag='1' order by   last_modified desc LIMIT 1;" % (
    branch_id, stock_id,type1))

    hos_id= get_hosid()
    dept_id = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']
    dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']
    stock_id = get_stockId_fromdb(get_branch_name() + '中心库房')
    stock_name=dept_name
    area_code = get_stockAreaId_new_fromDb(dept_name, 1)
    if type1 == 10:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message2')["hosGoodsId"]
    elif type == 20:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message1')["hosGoodsId"]
    else:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message3')["hosGoodsId"]
    goods_code=get_goods_code1(hos_goods_id)
    expdt_date=get_create_time("select expdt_date from  mcms_stockpile where id='%s';" % XH_ID)
    hos_batch_id=get_id("select hos_batch_id from  mcms_stockpile where id='%s';" % XH_ID)
    qty=get_qty("select qty from  mcms_stockpile where id='%s';" % XH_ID)
    version=get_id("select version from  mcms_stockpile where id='%s';" % XH_ID)
    create_user = get_login_user_uxid_bydb(FileUtils().r_info8('b2_herp3_bs', "用户名信息", 'message3')['username1'])
    create_time = get_create_time("select create_time from  mcms_stockpile where id='%s';" % XH_ID)
    last_modified = get_create_time("select last_modified from  mcms_stockpile where id='%s';" % XH_ID)
    last_modified_user = create_user
    if type1 == 10:
       expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_cb1', XH_ID, hos_id, branch_id, dept_id,
                                                 dept_name, stock_id, stock_name,area_code,hos_goods_id,
                                                goods_code,expdt_date,hos_batch_id,qty,create_user,create_time,last_modified,last_modified_user,version
                                                 )
    elif type1 == 20:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_dept5',  XH_ID, hos_id, branch_id, dept_id,
                                                 dept_name, stock_id, stock_name,area_code,hos_goods_id,
                                                goods_code,expdt_date,hos_batch_id,qty,create_user,create_time,last_modified,last_modified_user,version
                                                 )
    else:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_cb2',XH_ID, hos_id, branch_id, dept_id,
                                                 dept_name, stock_id, stock_name,area_code,hos_goods_id,
                                                goods_code,expdt_date,hos_batch_id,qty,create_user,create_time,last_modified,last_modified_user,version
                                                 )
    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')

def check_mcms_task(type1=16,flag=False):
    branch_id = get_branch_id()
    dept_id = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']
    dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']
    if type1==16:
        sql = " select * from mcms_task where branch_id='%s' and bill_mode='%s' order by   create_time desc LIMIT 1;" % (
            branch_id,type1)
    else:
        type1=16
        flag=True
        sql = " select * from mcms_task where branch_id='%s' and bill_mode='%s' order by   create_time desc LIMIT 1;" % (
            branch_id, type1)
    actual = check_mcms_dept_buy_sql(sql)
    print(actual)

    JG_ID=get_id(" select id from mcms_task where branch_id='%s' and bill_mode='%s' order by   create_time desc LIMIT 1;" % (
            branch_id, type1))
    task_no=get_id(" select task_no from mcms_task where id='%s';" % (
            JG_ID))
    hos_id= get_hosid()
    # dept_id = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']
    # dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']
    stock_id = get_stockId_fromdb(get_branch_name() + '中心库房')
    stock_name=dept_name
    area_code = get_stockAreaId_new_fromDb(dept_name, 1)
    start_time=get_create_time("select start_time from  mcms_task where id='%s';" % JG_ID)
    # expdt_date=get_create_time("select expdt_date from  mcms_task where id='%s';" % JG_ID)
    # hos_batch_id=get_id("select hos_batch_id from  mcms_task where id='%s';" % JG_ID)
    create_user = get_login_user_uxid_bydb(FileUtils().r_info8('b2_herp3_bs', "用户名信息", 'message3')['username1'])
    create_time = get_create_time("select create_time from  mcms_task where id='%s';" % JG_ID)
    last_modified = get_create_time("select last_modified from  mcms_task where id='%s';" % JG_ID)
    last_modified_user = create_user
    if flag==True:
        type1 = 60
    if type1 == 16:
       mcms_task_detail(type1,JG_ID)
       expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_task1', JG_ID, task_no,hos_id, branch_id, dept_id,
                                                 dept_name, stock_id,area_code,start_time,
                                                create_user,create_time,last_modified,last_modified_user
                                                 )
    elif type1 == 20:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_dept5',  JG_ID, task_no,hos_id, branch_id, dept_id,
                                                 dept_name, stock_id, stock_name,area_code,
                                                create_user,create_time,last_modified,last_modified_user
                                                 )
    else:
        mcms_task_detail(type1, JG_ID)
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_task2', JG_ID, task_no,hos_id, branch_id, dept_id,
                                                 dept_name, stock_id,area_code,start_time,
                                                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')


def mcms_task_detail(type,task_id):
    branch_id = get_branch_id()
    dept_id = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']
    dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']

    sql = "select * from mcms_task_detail where task_id='%s';"%task_id

    actual = check_mcms_dept_buy_sql(sql)
    print(actual)

    id = get_id("select id from mcms_task_detail where task_id='%s';" % task_id)

    if type == 16:
        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"]
    else:
        hos_goods_id = FileUtils().r_info8('b5_spd3_core_business_flow', '产品审核信息', 'message3')["hosGoodsId"]
    goods_code=get_goods_code1(hos_goods_id)
    source_id=get_source_id(branch_id,hos_goods_id)
    hos_id = get_hosid()
    # dept_id = FileUtils().r_info8("b2_herp3_bs", "所有科室id", 'message6')['deptid1']
    # dept_name = FileUtils().r_info8("b2_herp3_bs", "所有科室name", 'message6')['deptid1']
    target_stock_id = get_stockId_fromdb(get_branch_name() + '中心库房')
    stock_name = dept_name
    target_area_code = get_stockAreaId_new_fromDb(dept_name, 1)
    # expdt_date=get_create_time("select expdt_date from  mcms_task where id='%s';" % JG_ID)
    # hos_batch_id=get_id("select hos_batch_id from  mcms_task where id='%s';" % JG_ID)
    create_user = get_login_user_uxid_bydb(FileUtils().r_info8('b2_herp3_bs', "用户名信息", 'message3')['username1'])
    create_time = get_create_time("select create_time from  mcms_task_detail where id='%s';" % id)
    last_modified = get_create_time("select last_modified from  mcms_task_detail where id='%s';" % id)
    last_modified_user = create_user
    target_shelf_code=target_area_code
    if type == 16:

        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_task_detail1', id, task_id, source_id, hos_goods_id, goods_code,
                                                 create_user, create_time, last_modified, last_modified_user,
                                                 target_stock_id, target_area_code, target_shelf_code
                                                 )
    elif type == 20:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_psi_dept5', id, task_id, source_id, hos_goods_id, goods_code,
                                                 create_user, create_time, last_modified, last_modified_user,
                                                 target_stock_id, target_area_code, target_shelf_code
                                                 )
    else:
        expected = commonFuc().get_business_data('b6_spd3_core_business_flow_database_check',
                                                 'mcms_task_detail2', id, task_id, source_id, hos_goods_id, goods_code,
                                                 create_user, create_time, last_modified, last_modified_user,
                                                 target_stock_id, target_area_code, target_shelf_code
                                                 )
    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')

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_c1流程十八中心库业务_拆包功能.air')
using(pro_path + r'//air_case/b5_spd3_core_business_flow/a_c1流程十八中心库业务_拆包功能.air')
from a_c1流程十八中心库业务_拆包功能 import center_Stock_unpack



try:
    updateUserLoginDefaultRange(get_listUserMgrRangePage1(1))  # 设置登录账号默认权限是1级库
    center_Stock_unpack(1)  # 低值耗材扫码发放
    check_mcms_psi_data(10)  # 检查库存数据（低值）
    check_mcms_task(16)#检查加工单数据
    time.sleep(6)
    center_Stock_unpack(3)  # 试剂耗材扫码发放
    time.sleep(6)
    check_mcms_psi_data(60)   # 检查库存数据（试剂值）
    check_mcms_task(60)  # 检查加工单数据
    commonFuc().check_text_exist_result_text('succees', 'succees')
except Exception as e:
    # 打印错误信息
    print(f"发生错误: {e}")
    commonFuc().check_text_exist_result_text('error', 'SUCCESS')
