예제 #1
0
class Book:
    def __init__(self):
        self.rp = RequestsPage()
        self.ep = ElibPage('YZ', 'Td123456')
        self.slp = DBPage('book')

    def copyBooks(self, num):
        """ 编目-回溯建库
        此方法用于给每书目添加馆藏
        :param num: 每个书目添加多少馆藏(填写100那么每本书添加100条馆藏数据)
        :return: 无返回
        """
        # 保存图书信息的 list
        l = list()
        # 馆藏信息中的条码号,用于循环递增
        count = 0
        # 发送 requests 请求,获取书目信息(这是一个 json 值)
        res_1 = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/catalog/catalogue/list', {
                'userToken': self.ep.getUserToken(),
                'pageNumber': 1,
                'pageSize': 50,
                'libId': self.ep.getLibid(),
                'userType': 1,
                'dateType': 1
            }).json()
        # 循环 requests 返回的书目信息,处理数据
        for dataList in res_1['data']['dataList']:
            bookDefault = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/book/bookDefault', {
                    'userToken': self.ep.getUserToken(),
                    'marctyId': dataList['marctyid']
                }).json()
            # print(bookDefault)
            # # 处理返回值,获取 著者 字段
            # fl = self.rp.matchString(dataList['fieldList'])
            # # 处理没有 著者 字段的图书,返回一个空值
            # if len(fl) == 0:
            #     fl = ['']
            # 添加信息到 list 中
            l.append(
                (dataList['ztming'], dataList['zrsming'], dataList['isbn'],
                 dataList['cbzhe'], bookDefault['data']['author'],
                 dataList['flhao'], 0, 0, 0))

            # 循环值,判断什么时候跳出while循环
            loopValue = 0
            while True:
                # 循环次数递增
                loopValue += 1
                # 条码递增
                count += 1
                # 发送 requests 请求,给每本书一条条添加馆藏
                self.rp.sendRequest(
                    'POST',
                    self.ep.getUrl() + '/service/api/e/book/save', {
                        'userToken': self.ep.getUserToken(),
                        'ztai': bookDefault['data']['bookDeault']['ztai'],
                        'tiaoma': 'YZ' + str(count).zfill(5),
                        'bookCodes': 'YZ' + str(count).zfill(5),
                        'sshao': bookDefault['data']['sshao'],
                        'gysid': self.ep.getGysid(isMore=False),
                        'batchid': self.rp.randomValue(self.ep.getBatchid()),
                        'ltlxid': self.ep.getLtlxid(isMore=False),
                        'cygid1': bookDefault['data']['bookDeault']['cygid1'],
                        'cygid0': bookDefault['data']['bookDeault']['cygid0'],
                        'ysuanid': self.ep.getYsid(isMore=False),
                        'marctyId': dataList['marctyid'],
                        'cejia': bookDefault['data']['bookDeault']['cejia'],
                        'taojia': bookDefault['data']['bookDeault']['taojia'],
                        'czid0': self.ep.getCzid(isMore=False),
                        'czid1': self.ep.getCzid(isMore=False),
                        'bookNum': 1,
                        'flhao': bookDefault['data']['fzqfhDTO']['flhao'],
                        'zchao': bookDefault['data']['fzqfhDTO']['zchao'],
                        'ljf': bookDefault['data']['fzqfhDTO']['ljf'],
                        'fzqfh': bookDefault['data']['fzqfhDTO']['fzqfh'],
                        'purchasePrice': '',
                        'purchaseDiscount': '',
                        'jcmshu': '',
                        'beizhu': '',
                        'sellPrice': '',
                        'wxlyuan': '',
                        'jzleixing': '',
                        'zdfangshi': '',
                        'sellDiscount': ''
                    }).json()
                # 控制什么时候跳出死循环,每本书目添加 num 本馆藏后跳出,添加下一本
                if loopValue >= num:
                    break
        # 更新数据,将图书信息添加到 tb_book 数据库中
        self.slp.addBook(l)

    def borrowBooks(self):
        """ 流通-借还管理-借出
        此方法用于给读者随机借书
        :return:无返回
        """
        # 将所有图书条码添加到集合中,检查所有添加的条码是否重复
        checkDoubleValue = set()
        # 将每个用户借的图书条码添加到集合中,获取单个用户接了哪几本书
        temp_bro = set()
        # 获取 tb_total 表的数据
        tb = self.slp.selectTotal()
        # 获取 tb_reader 表的数据
        selectData = self.slp.selectReader()
        for tup_1 in selectData:
            # 将数据库中所有用户的条码添加到集合中查重,防止多次运行借书数据库数据与业务系统对不上
            checkDoubleValue = checkDoubleValue | self.rp.modifyTuples(tup_1)

        for tup_2 in selectData:
            # 循环值,判断什么时候跳出while循环
            loopValue = 0
            # 获取随机借书数量(每个人借多少本)
            a = random.randint(1, 20)
            # 将个人之前借的书添加到集合中
            temp_bro = temp_bro | self.rp.modifyTuples(tup_2)
            while True:
                # 获取随机图书条码
                randomValue = 'YZ' + str(random.randint(1, 1000)).zfill(5)
                # 对比图书条码是否已在数据库中存在,存在就不发送借书请求
                if randomValue in checkDoubleValue:
                    print('获取随机图书已重复')
                else:
                    # 发送借书请求
                    self.rp.sendRequest(
                        'POST',
                        self.ep.getUrl() + '/service/api/e/flow/doclx/bro', {
                            'userToken': self.ep.getUserToken(),
                            'readerBarcode': tup_2[1],
                            'bookBarcode': randomValue
                        })
                    # 所有图书集合 / 个人图书集合添加图书
                    checkDoubleValue.add(randomValue)
                    temp_bro.add(randomValue)
                    # 循环次数自增
                    loopValue += 1
                    # 当循环次数大于等于个人借书随机数,跳出循环
                    if loopValue >= a:
                        # 更新数据,将读者信息更新到 tb_reader 数据库中
                        self.slp.updateReader((tup_2[1], tup_2[2], tup_2[3],
                                               str(temp_bro), tup_2[5],
                                               int(tup_2[6] + len(temp_bro)),
                                               int(tup_2[7] + len(temp_bro)),
                                               tup_2[8], tup_2[9], tup_2[0]))
                        # 清空个人借书集合,防止插入数据库值错误
                        temp_bro.clear()
                        break

        # 处理数据获取借阅数量,返回值是一个 list
        t = self.rp.modifyNum(checkDoubleValue)
        # 用于 list 下标递增
        lv = 0
        for tup_3 in self.slp.selectBook():
            # 更新数据,将图书信息更新到 tb_book 数据库中
            self.slp.updateBook(
                (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6],
                 t[lv], tup_3[8], tup_3[9], tup_3[0]))
            # 下标递增
            lv += 1
        # 更新数据,将统计信息更新到 tb_total 数据库中
        self.slp.updateTotal(
            (tb[0], int(tb[1]) + len(checkDoubleValue), tb[2], tb[3],
             str(self.rp.nowTime())))

    def returnBooks(self):
        """ 流通-借还管理-归还
        此方法用于给读者随机还书
        :return:无返回
        """
        # 获取 tb_total 表的数据
        tb = self.slp.selectTotal()
        # 好像没用,但是懒得删,怕爆炸 :)
        count = 0
        # temp_bro 用于存放借出图书;temp_ret 用于存放还回图书,循环一次会清空
        temp_bro = set()
        temp_ret = set()
        # temp_bro_all 用于存放借出图书;temp_ret_all 用于存放还回图书,不会清空
        temp_bro_all = set()
        temp_ret_all = set()
        # 循环从数据库中取出的 tb_reader 表信息
        for tup in self.slp.selectReader():
            # 获取数据库中用户借的图书条码,添加到集合中
            temp_bro = temp_bro | self.rp.modifyTuples(tup)
            # 如果借出是空的,就不发送借书请求,更新 tb_reader 数据库
            if len(temp_bro) == 0:
                self.slp.updateReader(
                    (tup[1], tup[2], tup[3], "", tup[5], len(temp_bro), tup[7],
                     int(tup[8]) - len(temp_bro), tup[9], tup[0]))
            else:
                # 获取还书随机值
                loopValue = random.randint(1, len(temp_bro))
                while loopValue > 0:
                    # 好像没软用,不敢删 :)
                    count += 1
                    # 获取集合中的任意一个条码
                    temp = temp_bro.pop()
                    # 将还回条码添加到还回集合中
                    temp_ret.add(temp)
                    # 发送 requests 请求,用户还书
                    self.rp.sendRequest(
                        'POST',
                        self.ep.getUrl() + '/service/api/e/flow/doclx/ret', {
                            'userToken': self.ep.getUserToken(),
                            'isSameCz': '1',
                            'bookBarcode': temp
                        })
                    # 递减到0退出循环
                    loopValue -= 1
                # 数据库中借书为空时运行程序容易把set()插入数据库中,做下处理
                # 如果借书为空,传空字符串
                if str(temp_bro) == 'set()':
                    self.slp.updateReader(
                        (tup[1], tup[2], tup[3], '', str(temp_ret),
                         len(temp_bro), tup[7], int(tup[7]) - len(temp_bro),
                         tup[9], tup[0]))
                # 借书不为空,就把信息更新到 tb_reader 数据库中
                else:
                    self.slp.updateReader(
                        (tup[1], tup[2], tup[3], str(temp_bro), str(temp_ret),
                         len(temp_bro), tup[7], int(tup[7]) - len(temp_bro),
                         tup[9], tup[0]))
            # 将每个人的借/还书添加到一个集合中
            temp_bro_all = temp_bro_all | temp_bro
            temp_ret_all = temp_ret_all | temp_ret
            # 清空集合,防止程序错误
            temp_bro.clear()
            temp_ret.clear()
        # 处理数据,获取各图书的还数量
        tba = self.rp.modifyNum(temp_bro_all)
        tra = self.rp.modifyNum(temp_ret_all)
        # 用于 list 下标递增
        lv = 0
        # 更新数据,将图书信息更新到 tb_book 数据库中
        for tup_3 in self.slp.selectBook():
            self.slp.updateBook(
                (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6],
                 tba[lv], tra[lv], tup_3[9], tup_3[0]))
            # 下标递增
            lv += 1
        # 更新数据,将统计信息更新到 tb_total 数据库中
        self.slp.updateTotal(
            (tb[0], tb[1], tb[2] + count, tb[3], str(self.rp.nowTime())))

    def renewBooks(self):
        """ 流通-借还管理-续借
        此方法用于给读者随机续借
        :return:无返回
        """
        # 保存每个用户借阅的图书
        temp = set()
        # 所有用户借阅的图书
        tenp_all = set()
        # 统计数据用
        count = 0
        # 获取 tb_total 表的数据
        tb = self.slp.selectTotal()
        # 循环从数据库中取出的 tb_reader 表信息
        for tup in self.slp.selectReader():
            # 循环值,判断什么时候跳出while循环
            loopValue = 1
            # 获取数据库中用户借的图书条码,添加到集合中
            temp = temp | self.rp.modifyTuples(tup)
            # print(temp)
            # 空的不处理
            if len(temp) != 0:
                # 获取续借随机值(每个用户续借多少本)
                a = random.randint(1, len(temp))
                while a >= loopValue:
                    # 获取set中的任意值
                    t = temp.pop()
                    # 将所有续借条码添加到集合中
                    tenp_all.add(t)
                    count += 1
                    # 发送 requests 请求,用户续借
                    self.rp.sendRequest(
                        'POST',
                        self.ep.getUrl() + '/service/api/e/flow/doclx/ren', {
                            'userToken': self.ep.getUserToken(),
                            'readerBarcode': tup[1],
                            'bookBarcode': t
                        })
                    loopValue += 1
                # 更新数据,将统计信息更新到 tb_reader 数据库中
                self.slp.updateReader((tup[1], tup[2], tup[3], tup[4], tup[5],
                                       tup[6], tup[7], tup[8], a, tup[0]))
                temp.clear()
        # 处理数据,获取各图书的续借数量
        t = self.rp.modifyNum(tenp_all)
        # 用于 list 下标递增
        lv = 0
        # 更新数据,将图书信息更新到 tb_book 数据库中
        for tup_3 in self.slp.selectBook():
            self.slp.updateBook(
                (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6],
                 tup_3[7], tup_3[8], t[lv], tup_3[0]))
            # 下标递增
            lv += 1
        # 更新数据,将统计信息更新到 tb_total 数据库中
        self.slp.updateTotal(
            (tb[0], tb[1], tb[2], tb[3] + count, str(self.rp.nowTime())))

    def allReturnBooks(self):
        """ 流通-借还管理-归还
        此方法用于给读者全部归还
        :return:无返回
        """
        # 发送 requests 请求,用户归还条码1~1000的图书
        for n in range(1, 1001):
            self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/doclx/ret', {
                    'userToken': self.ep.getUserToken(),
                    'isSameCz': '1',
                    'bookBarcode': 'YZ' + str(n).zfill(5)
                })

    def clearBooks(self):
        """ 流通-借还管理-归还
        此方法用于清除所有馆藏图书
        :return:无返回
        """
        # 用于存储馆藏书目的id
        l = list()
        # 清空前先把书都还了
        self.allReturnBooks()
        # 发送 requests 请求,获取书目信息,返回 json 值
        res_1 = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/catalog/catalogue/list', {
                'userToken': self.ep.getUserToken(),
                'pageNumber': 1,
                'pageSize': 50,
                'libId': self.ep.getLibid(),
                'userType': 1,
                'dateType': 1
            }).json()
        # 处理数据
        for dataList in res_1['data']['dataList']:
            # 发送 requests 请求,获取馆藏信息,返回 json 值
            res_2 = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/book/listByCatalogue', {
                    'userToken': self.ep.getUserToken(),
                    'marctyId': dataList['marctyid'],
                    'pageSize': 1000,
                    'pageNumber': 1,
                    'isShow': 0
                }).json()
            for r in res_2['data']['page']['dataList']:
                # 将要删除的馆藏 id 添加到列表中
                l.append(r['shuceid'])
        # 发送 requests 请求,删除馆藏信息,返回 json 值
        self.rp.sendRequest('POST',
                            self.ep.getUrl() + '/service/api/e/book/delete', {
                                'userToken': self.ep.getUserToken(),
                                'shuceIds': ','.join(l)
                            }).json()
        self.slp.deleteTotal()
        self.slp.deleteBook()
예제 #2
0
class InterviewPage:

    def __init__(self, loginName, loginPwd):
        self.rp = RequestsPage()
        self.ep = ElibPage(loginName, loginPwd)

    def ZDManage(self):
        print(self.subscriptionBooksImport())
        print(self.subscriptionBooks())
        print(self.directSubscription())
        print(self.subscriptionVerify())
        print(self.directVerify())


    def subscriptionBooksImport(self):
        """
        征订书目导入功能
        :return:
        """
        with open('D:\Cache\Project\TJProject\list.xls', mode="rb+") as f:  # 打开文件
            file = {
                "excel": ('list.xls', f.read()),  # 引号的file是接口的字段,后面的是文件的名称、文件的内容
                "userToken": self.ep.getUserToken(),  # 如果接口中有其他字段也可以加上
            }
        res = self.rp.sendRequest('FILE', self.ep.getUrl() + '/service/api/e/interview/file/zdsmI', file).json()
        r = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/zdsm/import/main', {
            'userToken': self.ep.getUserToken(),
            'path': res['data']['path'],
            'marcfbid': self.ep.getFblxid(isMore=False),
            'zdpcid': self.ep.getZdpcid(isMore=False),
            'isbn': 'ISBN,0',
            'ztming': '正题名,0',
            'zrsming': '责任者, 1',
            'cbzhe': '出版社, 1',
            'cbrqi': '出版日期, 1',
            'cbdi': '出版社, 1',
            'flhao': '分类号, 1',
            'jge': '价格, 1'
        }).json()
        return r['message']

    def subscriptionBooks(self):
        """
        征订书目预订功能
        :return:
        """
        # 先在 预订单管理 设置第一个为工作预定单
        self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/work/save', {
            'userToken': self.ep.getUserToken(),
            'ydpcid': self.ep.getYdd()[0]
        })
        # 获取征订目录列表
        res = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/zdpc/search', {
            'userToken': self.ep.getUserToken(),
            'pageNumber': 1,
            'pageSize': 50
        }).json()
        # 获取图书信息
        r = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/zdsm/search', {
            'userToken': self.ep.getUserToken(),
            'zdpcid': res['data']['dataList'][0]['zdpcid'],
            'pageNumber': 1,
            'pageSize': 50
        }).json()
        # 判断图书信息中价格是否存在
        price = 0
        if 'jge' in dict(r):
            price = int(self.rp.matchNumber(r['data']['page']['dataList'][0]['jge']))
        # 获取预订单信息
        yd = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/pcList', {
            'userToken': self.ep.getUserToken()
        }).json()
        # 预订
        result = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/smSave', {
            'userToken': self.ep.getUserToken(),
            'cygName': yd['data'][0]['cygName'],
            'ysName': yd['data'][0]['ysName'],
            'marcid': r['data']['page']['dataList'][0]['marcid'],
            'gysName': yd['data'][0]['gysName'],
            'ydbhao': '',
            'ydpcid': yd['data'][0]['ydpcid'],
            'ceshu': 1,
            'ydlaiyuan': '订购',
            'yjhbid': self.ep.getHbList(isMore='NO'),
            'jzleixing': '纸张',
            'yuanjia': price,
            'zdfangshi': '平装',
            'ydhbid': self.ep.getHbList(isMore='NO'),
            'juance': 1,
            'jiage': price,
            'fuzhu': '',
            'zdpcdm': res['data']['dataList'][0]['zdpcdm'],
            'ydpcdm': self.ep.getZdsmReserve(zdpcid=res['data']['dataList'][0]['zdpcid'], zdsmid=r['data']['page']['dataList'][0]['zdsmid']),
            'ysCode': yd['data'][0]['ysCode'],
            'zdpcid': self.ep.getZdpcid(isMore='NO'),
            'gysCode': yd['data'][0]['gysCode'],
            'ydleixing': '征订预订'
        }).json()
        print(result['message'])  # 操作成功!

    def directSubscription(self):
        """
        直接预订功能
        :return:
        """
        # 先在 预订单管理 设置第一个为工作预定单
        self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/work/save', {
            'userToken': self.ep.getUserToken(),
            'ydpcid': self.ep.getYdd()[0]
        })
        # 获取图书信息
        res = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/searchBook', {
            'userToken': self.ep.getUserToken(),
            'pageNumber': 1,
            'pageSize': 50,
            'flag': 1
        }).json()
        # 征订书目-直接预订
        r = self.ep.getZdsmReserve(marcid=res['data']['dataList'][0]['marcid'])
        # 预定
        result = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/smSave', {
            'userToken': self.ep.getUserToken(),
            'cygName': r['data']['cygName'],
            'ysName': r['data']['ysName'],
            'marcid': r['data']['marcid'],
            'gysName': r['data']['gysName'],
            'ydbhao': '',
            'ydpcid': r['data']['ydpcid'],
            'ceshu': 1,
            'ydlaiyuan': '订购',
            'yjhbid': self.ep.getHbList(isMore='NO'),
            'jzleixing': '纸张',
            'yuanjia': 0,
            'zdfangshi': '平装',
            'ydhbid': self.ep.getHbList(isMore='NO'),
            'juance': 1,
            'jiage': 0,
            'fuzhu': '',
            'ydpcdm': 1,
            'ysCode': r['data']['ysCode'],
            'gysCode': r['data']['gysCode'],
            'ydleixing': '直接预订'
        }).json()
        print(result['message'])  # 操作成功!  已超出预算金额,不能预订!

    def subscriptionVerify(self):
        """
        预订验收功能
        :return:
        """
        # 先在 验收单管理 设置第一个为工作验收单
        self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/work/save', {
            'userToken': self.ep.getUserToken(),
            'yspcid': self.ep.getYsd()[0]
        })
        # 获取图书信息
        res = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/smSearch', {
            'userToken': self.ep.getUserToken(),
            'pageNumber': 1,
            'pageSize': 50,
            'from': 1,
            'flag': 1
        }).json()
        # 获取索书号
        r = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/ys/curSshao', {
            'userToken': self.ep.getUserToken(),
            'marcid': res['data']['dataList'][0]['marcid']
        }).json()
        # 验收
        numList = list()
        for i in range(res['data']['dataList'][0]['ceshu']):
            numDict = dict()
            numDict['barcode'] = "TS" + str(random.randint(1, 10000)).zfill(5)
            numDict['libId'] = self.ep.getLibid()
            numDict['czId'] = self.ep.getCzid(isMore='NO')
            numDict['ltlxId'] = self.ep.getLtlxid(isMore='NO')
            numList.append(numDict)
        # '['
        #     '{"barcode": "test100", "libId": "2", "czId": "ebd840b69bc04948859cd05a4da638b3", "ltlxId": "1"},'
        #     '{"barcode": "test101", "libId": "2", "czId": "ebd840b69bc04948859cd05a4da638b3", "ltlxId": "1"}'
        # ']',

        result = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/ys/smSave', {
            'userToken': self.ep.getUserToken(),
            'marcid': res['data']['dataList'][0]['marcid'],
            'yslxing': '预订验收',
            'yspcid': self.ep.getYsd()[0],
            'collectionDtos': json.dumps(numList),
            'yjhbid': self.ep.getHbList(isMore='NO'),
            'yuanjia': res['data']['dataList'][0]['jiage'],
            'cejia': res['data']['dataList'][0]['jiage'],
            'ydlaiyuan': '订购',
            'ydhbid': self.ep.getHbList(isMore='NO'),
            'jiage': res['data']['dataList'][0]['jiage'],
            'taojia': res['data']['dataList'][0]['jiage'],
            'jzleixing': '纸张',
            'zdfangshi': '平装',
            'juance': 1,
            'fuben': res['data']['dataList'][0]['ceshu'],
            'sshao': r['data']['sshao'],
            'ydRecord': res['data']['dataList'][0]['ydRecord'],
            'ydsmid': res['data']['dataList'][0]['ydsmid'],
            'ydjge': res['data']['dataList'][0]['jiage']
        }).json()
        print(result['message'])

    def directVerify(self):
        """
        快捷验收功能
        :return:
        """
        # 先在 验收单管理 设置第一个为工作验收单
        self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/work/save', {
            'userToken': self.ep.getUserToken(),
            'yspcid': self.ep.getYsd()[0]
        })
        # 获取图书信息
        res = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/searchBook', {
            'userToken': self.ep.getUserToken(),
            'pageNumber': 1,
            'pageSize': 50,
            'flag': 1
        }).json()
        # 获取索书号
        r = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/yd/searchBookByMarcid', {
            'userToken': self.ep.getUserToken(),
            'marcid': res['data']['dataList'][0]['marcid']
        }).json()
        print(r['data']['sshao'])
        # 验收
        numList = list()
        for i in range(res['data']['dataList'][0]['fuben']+1):
            numDict = dict()
            numDict['barcode'] = "TS" + str(random.randint(1, 10000)).zfill(5)
            numDict['libId'] = self.ep.getLibid()
            numDict['czId'] = self.ep.getCzid(isMore='NO')
            numDict['ltlxId'] = self.ep.getLtlxid(isMore='NO')
            numList.append(numDict)

        result = self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/interview/ys/smSave', {
            'userToken': self.ep.getUserToken(),
            'marcid': res['data']['dataList'][0]['marcid'],
            'yslxing': '直接验收',
            'yspcid': self.ep.getYsd()[0],
            'collectionDtos': json.dumps(numList),
            'yjhbid': self.ep.getHbList(isMore='NO'),
            'yuanjia': r['data']['jge'],
            'cejia': r['data']['jge'],
            'ydlaiyuan': '订购',
            'ydhbid': self.ep.getHbList(isMore='NO'),
            'jiage': r['data']['jge'],
            'taojia': r['data']['jge'],
            'jzleixing': '纸张',
            'zdfangshi': '平装',
            'juance': 1,
            'fuben': res['data']['dataList'][0]['fuben']+1,
            'sshao': r['data']['sshao'],
        }).json()
        print(result['message'])