def insert_same_data(bon_version, url, new_data, shape_data, bin_data, comment, best_num):
    conn = Mssql()
    sql_text = "SELECT * FROM T_BOM_PlateUtilUsedRate WHERE BOMVersion='%s'" % bon_version
    # 拿结果
    res = conn.exec_query(sql_text)

    # 先看是否存在, 存在就删除原来数据
    sql_text = "delete T_BOM_PlateUtilState where BOMVersion='%s'" % new_data['BOMVersion']
    conn.exec_non_query(sql_text)
    sql_text = "delete T_BOM_PlateUtilUsedRate where BOMVersion='%s'" % new_data['BOMVersion']
    conn.exec_non_query(sql_text)

    # 插入新数据
    insert_data = list()
    for data in res:
        insert_data.append((new_data['SkuCode'], new_data['BOMVersion'], data[3], data[4]))

    sql_text = "insert into T_BOM_PlateUtilUsedRate values (%s, %s, %s, %s)"
    conn.exec_many_query(sql_text, insert_data)

    # 插入新的状态
    timestamps = dt.today().strftime('%Y-%m-%d %H:%M:%S')
    sql_text = "insert into T_BOM_PlateUtilState values ('%s','%s','%s','%s','%s','%s','%s','%s','%s', '%s')" % (
        new_data['SkuCode'], new_data['BOMVersion'], comment, url, shape_data,
        bin_data, OK_STATUS, timestamps, timestamps, best_num)
    conn.exec_non_query(sql_text)
def find_skucode(bon_version):
    conn = Mssql()
    sql_text = "SELECT BOMVersion FROM T_BOM_PlateUtilState WHERE BOMVersion='%s'" % bon_version
    res = conn.exec_query(sql_text)
    if len(res) > 0:
        # 先删除(状态表和结果表),再更新
        sql_text = "DELETE T_BOM_PlateUtilState WHERE BOMVersion = '%s'" % bon_version
        conn.exec_non_query(sql_text)
        sql_text = "DELETE T_BOM_PlateUtilUsedRate WHERE BOMVersion = '%s'" % bon_version
        conn.exec_non_query(sql_text)
def package_data_check(input_data):
    # 数据库连接-检查数据库
    try:
        parm = {
            'comment': input_data['project_comment'],
            'shape_data': input_data['shape_data'],
            'bin_data': input_data['bin_data'],
        }

        other = json.dumps({'border': input_data['border']})
        user = input_data['userName']
    except Exception as e:
        update_mix_status(status=u'缺少参数')
        return {'error': True, 'info': u'缺少参数'}

    # 是否有重复
    conn = Mssql()
    sql_text = """SELECT Guid, CreateUser FROM T_BOM_PlateUtilMixedState WHERE
    Comment='{comment}' and  ShapeData='{shape_data}' and BinData='{bin_data}' and Paramets='{other}'""".format(
        comment=parm['comment'],
        shape_data=parm['shape_data'],
        bin_data=parm['bin_data'],
        other=other)
    res = conn.exec_query(sql_text)
    row_id = None
    if res:
        if res[0][1] == user:
            # 更新-更新时间,不返回guid
            update_mix_status_time(res[0][0])
        else:
            # 新任务
            row_id = insert_mix_status(parm, user, other)
    else:
        # 新任务
        row_id = insert_mix_status(parm, user, other)

    return {'error': False, 'row_id': row_id}
def get_data(bom_version=None):
    # init output connection
    conn = Mssql()
    if bom_version:
        sql_text = "select * From T_BOM_PlateUtilState where Status='{status}' " \
                   "and BOMVersion='{bom_version}'".format(status=BEGIN_STATUS.encode('utf8'),
                                                           bom_version=bom_version)
    else:
        sql_text = "select * From T_BOM_PlateUtilState where Status='%s'" % BEGIN_STATUS.encode('utf8')
    res = conn.exec_query(sql_text)
    content = list()
    for input_data in res:
        content.append({
            'row_id': input_data[0],
            'SkuCode': input_data[1],
            'ShapeData': input_data[5],
            'BinData': input_data[6],
            'Created': dt.today(),
            'Product': input_data[3],
            'BOMVersion': input_data[2],
        })

    update_running_work(content)
    return content
def has_same_work(shape_data, bin_data):
    conn = Mssql()
    sql_text = "SELECT BOMVersion, Status, Url, BestNum FROM T_BOM_PlateUtilState WHERE ShapeData='%s' and BinData='%s'" % (
        shape_data, bin_data)
    return conn.exec_query(sql_text)