def getEsubtrade(self, trade_no):
        # result = {}
        step = {}
        msql = "SELECT * FROM e_sub_trade WHERE main_trade_no = '{0}' limit 100;".format(
            trade_no)
        esubtrade = idbaUtils.getidbaTable(self.idba, msql, 'airent')
        if ([] != esubtrade):
            n = 0
            for trade in esubtrade:
                step['{0}'.format(n)] = idbaUtils.subtrade2json(trade)
                n = n + 1
            # result['subTrade'] = step
            return step
        else:
            step['err'] = 's_sub_trade not exists'

        return step
    def getBuyout(self):
        # 获取主订单的订单信息
        result = {}
        trade_info = idbaUtils.getidbaTable(self.idba, self.sql_etrade,
                                            'airent')
        # 判断是否能获取主订单的订单信息,否则报错
        if ([] != trade_info):
            result['trade_info'] = idbaUtils.list2json(trade_info[0])
            result['subTrade'] = self.getEsubtrade(trade_info[0]['trade_no'])
            if ((27 == trade_info[0]['status'])
                    or (28 == trade_info[0]['status'])):
                msg = '已买断' if (27 == trade_info[0]['status']) else '已还机'
                result['status'] = msg
                # return result
            # 增加对e_contract_settlement 有多个结算单的逻辑判断
            settlement = "SELECT * FROM biz_contract.e_contract_settlement WHERE trade_no = '{0}' limit 100; ".format(
                trade_info[0]['trade_no'])
            settlement_info = idbaUtils.getidbaTable(self.idba, settlement,
                                                     'airent')
            settlement_item_info = []  # 防止为空 先占位
            biz_no = ''
            if ([] != settlement_info):
                if (1 < len(settlement_info)):
                    for infos in settlement_info:
                        if 1 == infos['is_active']:
                            biz_no = infos['biz_no']
                            result['settlement'] = idbaUtils.settlemrnt2json(
                                infos)
                else:
                    if 1 == settlement_info[0]['is_active']:
                        biz_no = settlement_info[0]['biz_no']
                        result['settlement'] = idbaUtils.settlemrnt2json(
                            settlement_info[0])
                if ('' == biz_no):
                    result['err'] = 'e_contract_settlement,没有生成有效的买断结算单!'
                    return result

                settlement_item = "SELECT * FROM biz_contract.e_contract_settlement_item_sharding_{0} where biz_no = '{1}' limit 50;".format(
                    trade_info[0]['id_user'] % 128, biz_no)
                settlement_item_info = idbaUtils.getidbaTable(
                    self.idba, settlement_item, 'airent')
                if ([] != settlement_item_info):
                    step = 1
                    result1 = {}
                    result2 = {}
                    for items in settlement_item_info:
                        msg = idbaUtils.sharding2json(items)
                        result1['sharding_{0}'.format(step)] = msg
                        step = step + 1
                    result['sharding'] = result1
                    step1 = 1
                    for items in settlement_item_info:
                        msg = '步骤:{0},类型:{6},金额:{1},执行次数:{2},执行结果:{3},创建时间:{4},更新时间:{5}'.format(
                            items['step'], items['amount'],
                            items['execute_num'], paymentStat[items['status']],
                            items['dt_created'], items['dt_updated'],
                            buyout_status[items['settlement_category']])
                        result2['step{0}'.format(step1)] = msg
                        step = step + 1
                    result['step'] = result2
                else:
                    result[
                        'err'] = 'e_contract_settlement_item_sharding_{0},没有生成买断结算步骤结算单!'.format(
                            trade_info[0]['id_user'] % 128)
                    return result

            else:
                result['err'] = 'e_contract_settlement,没有生成有效的买断结算单!'
                return result

        else:
            result['err'] = '买断订单查询信息失败,请查看sql!'
            result['debug'] = self.sql_etrade
        return result
 def test(self):
     trade_info = idbaUtils.getidbaTable(self.idba, self.sql_etrade,
                                         'airent')
     return trade_info