Пример #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 Reader:
    def __init__(self):
        self.rp = RequestsPage()
        # self.rpp = ReadPage()
        self.ep = ElibPage('YZ', 'Td123456')
        self.slp = DBPage('book')

    def addReader(self):
        """
        创建读者
        :return: 无返回
        """
        l = list()
        # 获取随机值,插如 tb_reader 中
        # self.slp.addReader(self.ep.getRandomReaderID())
        for n in self.rp.getRandomReaderID():
            sex = self.ep.getXingbie()
            dzdw = self.rp.randomValue(self.ep.getDzdw())
            if sex == 1:
                l.append((n, '男', dzdw, '', '', 0, 0, 0, 0))
            else:
                l.append((n, '女', dzdw, '', '', 0, 0, 0, 0))
            # 发送添加读者的请求
            self.rp.sendRequest(
                'POST',
                self.ep.getUrl() +
                '/service/api/e/flow/readerManager/readerManagerSave',
                {
                    "userToken":
                    self.ep.getUserToken(),
                    "dzzhao":
                    n,  # 读者证号
                    "xming":
                    n,  # 姓名
                    "ztai":
                    "正常",  # 状态
                    "mima":
                    "123456",  # 密码
                    "dzlxid":
                    self.ep.getDzlxid(isMore=False),  # 读者类型
                    "jzrqi":
                    self.rp.nowTime(ty='end'),  # 截止日期
                    "qyrqi":
                    self.rp.nowTime(ty='now'),  # 启用日期
                    "libid":
                    self.ep.getLibid(),  # 馆id
                    "smrz":
                    "0",
                    "zhuanye":
                    "其他",
                    "zhiwu":
                    "无",
                    "zcheng":
                    "无",
                    "xueli":
                    "其他",
                    "xingbie":
                    sex,
                    "yajin":
                    "0",
                    "zhiye":
                    "其他",
                    "jycshu":
                    "0",
                    "yycshu":
                    "0",
                    "xjcshu":
                    "0",
                    "wzcshu":
                    "0",
                    "gjhjcshu":
                    "0",
                    "qkuan":
                    "0",
                    "dzdw":
                    dzdw,
                    "registerPlaceId":
                    self.rp.randomValue(self.ep.getRegisterPlaceId())  # 办证地点
                })
        # 添加到数据库中
        self.slp.addReader(l)
        self.slp.addTotal([(len(l), 0, 0, 0, str(self.rp.nowTime()))])

    def deleteReader(self):
        """
        删除读者
        :return: 无返回
        """
        l = list()
        # requests 模拟接口必要参数
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() +
            '/service/api/e/flow/readerManager/readerManagerList', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        for dataList in res['data']['dataList']:
            # 获取所有读者id,添加到列表中
            l.append(dataList['dzid'])
        # 发送请求删除所有读者
        self.rp.sendRequest(
            'POST',
            self.ep.getUrl() +
            '/service/api/e/flow/readerManager/readerManagerDel', {
                'userToken': self.ep.getUserToken(),
                'dzid': ','.join(l)
            })
        # 清空数据库
        self.slp.deleteReader()
Пример #3
0
class LTTest(unittest.TestCase):
    def __init__(self, *args, **kwargs):
        super(LTTest, self).__init__(*args, **kwargs)
        self.book = Book()
        self.reader = Reader()
        self.db = DBPage('book')
        self.rp = RequestsPage()
        self.ep = ElibPage('YZ', 'Td123456')

    def test_lttj_default(self):
        """ 流通-流通统计
        获取总计数据 与 tb_total的借/还数 进行比较
        :return:
        """
        # TODO: 1. 增加每本图书藏址到数据库中  2. 增加对藏址图书统计的测试
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/lttjList', {
                'userToken': self.ep.getUserToken(),
                'type': 1,
                'cygid0': self.ep.getLibid(),
                'cygid1': self.ep.getLibid(),
                'timeType': 1,
                'pageSize': 50,
                'pageNumber': 1
            }).json()
        self.assertEqual(res['data']['dataList'][0]['list2'][0]['jccs'],
                         str(self.db.selectTotal()[1]))
        self.assertEqual(res['data']['dataList'][0]['list2'][0]['ghcs'],
                         str(self.db.selectTotal()[2]))

    def test_ltxd_default(self):
        """ 流通-流通详单
        获取总的数据数量 与 tb_total的借/还/续相加 进行比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', {
                'userToken': self.ep.getUserToken(),
                'pageNumber': 1,
                'pageSize': 50,
                'libId': self.ep.getLibid()
            }).json()
        result = self.db.selectTotal()[1] + self.db.selectTotal(
        )[2] + self.db.selectTotal()[3]
        self.assertEqual(res['data']['totalElements'], str(result))

    def test_ltxd_search_readerId(self):
        """ 流通-流通详单
        查询每个读者的借/还/续总量 与 tb_reader的读者借/还/续相加 进行比较
        :return:
        """
        for data in self.db.selectReader():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', {
                    'userToken': self.ep.getUserToken(),
                    'pageNumber': 1,
                    'pageSize': 50,
                    'libId': self.ep.getLibid(),
                    'dzzhao': data[1]
                }).json()
            self.assertEqual(res['data']['totalElements'],
                             str(data[7] + data[8] + data[9]))

    def test_ltxd_search_title(self):
        """ 流通-流通详单
        查询每本书的借/还/续总量 与 tb_book的图书借/还/续相加 进行比较
        PS:由于tb_book中的借数量是减掉了还的数量,所以统计时还的数量应该为2倍
        :return:
        """
        for data in self.db.selectBook():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', {
                    'userToken': self.ep.getUserToken(),
                    'pageNumber': 1,
                    'pageSize': 50,
                    'libId': self.ep.getLibid(),
                    'ztming': data[1]
                }).json()
            self.assertEqual(res['data']['totalElements'],
                             str(data[7] + data[8] * 2 + data[9]))

    def test_dzjyphb_default(self):
        """ 流通-读者借阅排行榜
        查询每个读者的总借阅册次 与 tb_reader的读者总借阅册次 进行比较
        :return:
        """
        for data in self.db.selectReader():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/lttj/dzjyphb', {
                    'userToken': self.ep.getUserToken(),
                    'libid': self.ep.getLibid(),
                    'renshu': 100,
                    'pageNumber': 1,
                    'pageSize': 50,
                    'jycs': 1,
                    'dzzhao': data[1]
                }).json()
            self.assertEqual(res['data']['dataList'][0]['jieyuecs'],
                             data[7] + data[9])

    def test_dzjhtj_default(self):
        """ 流通-读者借还统计
        查询每个读者的借/还/续次数 与 tb_reader的借/还/续次数 进行比较
        :return:
        """
        for data in self.db.selectReader():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/lttj/dzjhtj', {
                    'userToken': self.ep.getUserToken(),
                    'libid': self.ep.getLibid(),
                    'pageNumber': 1,
                    'pageSize': 50,
                    'dzzhao': data[1]
                }).json()
            self.assertEqual(res['data']['page']['dataList'][0]['jieyuecs'],
                             data[7] + data[9])
            self.assertEqual(res['data']['page']['dataList'][0]['guihuancs'],
                             data[8])
            self.assertEqual(res['data']['page']['dataList'][0]['xujiecs'],
                             data[9])

    def test_wxjyphb_default(self):
        """ 流通-文献借阅排行榜
        查询每本书的总借阅册次 与 tb_book的读者总借阅册次 进行比较
        :return:
        """
        for data in self.db.selectBook():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/lttj/wxjyphb', {
                    'userToken': self.ep.getUserToken(),
                    'libid': self.ep.getLibid(),
                    'renshu': 100,
                    'pageNumber': 1,
                    'pageSize': 50,
                    'jycs': 1,
                    'ztming': data[1]
                }).json()
            print(data)
            print(res['data']['dataList'][0])
            for r in res['data']['dataList']:
                if r['ztming'] == data[1]:
                    self.assertEqual(res['data']['dataList'][0]['jieyuecs'],
                                     data[7] + data[8])

    def test_wxjhtj_default(self):
        """ 流通-文献借还统计
        查询每个大类的借阅册次 与 tb_book的每个书目挑选相关类型相加 进行比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/wxjhtj', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid()
            }).json()
        for data in res['data']:
            val = 0
            for d in self.db.selectBookFlh(data['wxlx']):
                val = val + d[0] + d[1] + d[2]
            self.assertEqual(data['jycs'], str(val))

    def test_dzlxjhtj_default(self):
        """ 流通-读者类型借还统计
        因为只有一个读者类型,所以直接和 tb_total 的借阅数/归还数进行比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/dzlxjhtj', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 15
            }).json()
        for data in res['data']['dataList']:
            self.assertEqual(
                data['jieyuecs'],
                self.db.selectTotal()[1] + self.db.selectTotal()[3])
            self.assertEqual(data['guihuancs'], self.db.selectTotal()[2])

    def test_dzdwjhtj_default(self):
        """ 流通-读者单位借还统计
        根据数据库中读者的读者单位全部相加 进行比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/dzdwjhtj', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 15
            }).json()
        for data in res['data']['dataList']:
            val_bro, val_ret = 0, 0
            for d in self.db.selectReaderDzdw(data['dzdw']):
                val_bro = val_bro + d[0] + d[3]
                val_ret = val_ret + d[1]
            self.assertEqual(data['jieyuecs'], val_bro)
            self.assertEqual(data['guihuancs'], val_ret)

    def test_zzph_default(self):
        """ 流通-著者排行
        根据数据库中书目的著者比较借阅次数
        PS:借阅次数在还书方法中减掉了还书次数,所以完整的借阅次数应该为借阅次数+归还次数
        :return:
        """
        for data in self.db.selectBook():
            if data[5] == '':
                break
            else:
                res = self.rp.sendRequest(
                    'POST',
                    self.ep.getUrl() + '/service/api/e/flow/lttj/authorRank', {
                        'userToken': self.ep.getUserToken(),
                        'libId': self.ep.getLibid(),
                        'pageNumber': 1,
                        'pageSize': 50,
                        'equalType': 1,
                        'brwNum': 1,
                        'rankNum': 100,
                        'author': data[5]
                    }).json()
            self.assertEqual(res['data']['dataList'][0]['brwNum'],
                             str(data[7] + data[8]))

    def test_dzbqjhtj_defaul(self):
        """ 流通-读者标签借还统计
        根据 selectReaderDzdw 方法,会返回读者借/还/性别的元祖,根据性别将借/还相添加比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/readerLabelCir', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        for data in res['data']['dataList']:
            bro_num, ret_num = 0, 0
            for d in self.db.selectReaderDzdw(data['readerUnit']):
                if d[2] == data['readerGenderName']:
                    bro_num = bro_num + d[0] + d[3]
                    ret_num = ret_num + d[1]
            self.assertEqual(data['brwNum'], bro_num)
            self.assertEqual(data['returnNum'], ret_num)

    def test_dzxbjytj_defaul(self):
        """ 流通-读者性别借阅统计
        根据 selectReaderSex 方法,会返回读者借/续的元祖,将借/续相添加比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() +
            '/service/api/e/flow/lttj/readerGenderBorrowList', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'statisticalPeriod': 0,
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        num_1, num_2, man_num, famale_num = 0, 0, 0, 0
        for data in res['data']['dataList']:
            man_num = man_num + int(data['manBorrwoNumber'])
            famale_num = famale_num + int(data['femaleBorrowNumber'])
        for mNum in self.db.selectReaderSex('男'):
            num_1 = num_1 + mNum[0] + mNum[1]
        for fNum in self.db.selectReaderSex('女'):
            num_2 = num_2 + fNum[0] + fNum[1]
        self.assertEqual(num_1, man_num)
        self.assertEqual(num_2, famale_num)

    def test_dzxbjytj_total(self):
        """ 流通-读者性别借阅统计
        由于测试时合计小于月数量,故将月数量循环相加与合计相比较
        :return:
        """
        res_1 = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() +
            '/service/api/e/flow/lttj/readerGenderBorrowList', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'statisticalPeriod': 0,
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        res_2 = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/totalGenderBorrow', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        man_num, famale_num = 0, 0
        for data in res_1['data']['dataList']:
            print(data)
            man_num = man_num + int(data['manBorrwoNumber'])
            famale_num = famale_num + int(data['femaleBorrowNumber'])
        print(res_2['data'])
        self.assertEqual(man_num, res_2['data']['manBorrow'])
        self.assertEqual(famale_num, res_2['data']['femaleBorrow'])

    def test_jysktj_default(self):
        """ 流通-借阅时刻统计
        获取合计数量和数据库 tb_book 借阅/续借相比较
        :return:
        """
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/timeBorrowList', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'date1': self.rp.nowTime('start'),
                'date2': self.rp.nowTime('end'),
                'time1': '00',
                'time2': '00'
            }).json()
        data = self.db.selectTotal()
        self.assertEqual(res['data']['totalBorrow'][0], data[1] + data[3])

    def test_jysktj_total(self):
        """ 流通-借阅时刻统计
        获取合计数量和各个时间段 相比较
        :return:
        """
        num = 0
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/lttj/timeBorrowList', {
                'userToken': self.ep.getUserToken(),
                'libId': self.ep.getLibid(),
                'date1': self.rp.nowTime('start'),
                'date2': self.rp.nowTime('end'),
                'time1': '00',
                'time2': '00'
            }).json()
        for data in res['data']['hourList']:
            num = num + int(data['borrowNumber'])
        self.assertEqual(res['data']['totalBorrow'][0], num)

    def test_dzdqjycx_default(self):
        """ 流通-读者当前借阅查询
        每本书进行搜索,搜索的到就ok
        :return:
        """
        for data in self.db.selectReader():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjycx', {
                    'userToken': self.ep.getUserToken(),
                    'libid': self.ep.getLibid(),
                    'dzzhao': data[1],
                    'pageNumber': 1,
                    'pageSize': 50
                }).json()
            num = 0
            for d in res['data']['dataList']:
                num += 1
                if d['tiaoma'] in data[4]:
                    self.assertTrue(True)
                else:
                    self.assertTrue(False)
            self.assertEqual(num, len(self.rp.modifyTuples(data)))

    def test_dzdqjycx_total(self):
        """ 流通-读者当前借阅查询
        计算每个用户图书的数量,和总量进行比较
        :return:
        """
        num = 0
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjycx', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        for data in self.db.selectReader():
            num = num + len(self.rp.modifyTuples(data))
        self.assertEqual(num, int(res['data']['totalElements']))

    def test_dzlsjycx_default(self):
        """ 流通-读者历史借阅查询
        每本书进行搜索,搜索的到就ok
        :return:
        """
        for data in self.db.selectReader():
            res = self.rp.sendRequest(
                'POST',
                self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjylscx', {
                    'userToken': self.ep.getUserToken(),
                    'libid': self.ep.getLibid(),
                    'dzzhao': data[1],
                    'pageNumber': 1,
                    'pageSize': 50
                }).json()
            print(res)
            num = 0
            for d in res['data']['dataList']:
                num += 1
                if d['tiaoma'] in data[5]:
                    self.assertTrue(True)
                else:
                    self.assertTrue(False)
            self.assertEqual(num, len(self.rp.modifyTuples(data, value=5)))

    def test_dzlsjycx_total(self):
        """ 流通-读者历史借阅查询
        计算每个用户图书的数量,和总量进行比较
        :return:
        """
        num = 0
        res = self.rp.sendRequest(
            'POST',
            self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjylscx', {
                'userToken': self.ep.getUserToken(),
                'libid': self.ep.getLibid(),
                'pageNumber': 1,
                'pageSize': 50
            }).json()
        for data in self.db.selectReader():
            num = num + len(self.rp.modifyTuples(data, value=5))
        self.assertEqual(num, int(res['data']['totalElements']))