利用开放的isbn查询Api接口录入图书信息,工作效率倍增

您所在的位置:网站首页 isbn查询app 利用开放的isbn查询Api接口录入图书信息,工作效率倍增

利用开放的isbn查询Api接口录入图书信息,工作效率倍增

2023-06-21 16:28| 来源: 网络整理| 查看: 265

        工作上接了个任务,要将1000多本书整理分类,然后打标签搬到图书柜上。并且还要将书名  作者  书号  类别  出版社  出版时间等信息录入到图书管理系统中,方便借阅。

        刚开始想着,那就一本本敲字录入信息呗,就重复性的工作。结果就是录了一星期才录了200本…而且还烦躁--

        然后就想着写个程序吧,先用扫描枪扫描图书上的条形码获取isbn码,然后调用其他的isbn开放接口,来自动获取到其他数据,导出Excel文件,最后整理录入数据库就行~(此处因数据库所处电脑不能联网,只能在另一台电脑上利用excel导出操作来进行获取数据,然后刻盘导入到图书管理系统)

        干干干~~花了一晚上+一上午,写好了哈哈。

        正好到今天又一周,终于把近1200本书全搞定了。

        记录一下↓↓↓

一、工具准备

69ff9966049c43c28f5a3a6dc85a6e0a.jpeg

 

 b282c431f6684900a10a6aed5b1c8444.jpg

 

 二、相关代码

// 文件框值更新事件 handleClick(e) { try { // 获取导入的文件 const files = e.target.files; const rawFile = files[0]; if (!rawFile) return; // 插件的导入方法 LAY_EXCEL.importExcel(files, {}, (data) => { console.log("导入JSON:" + JSON.stringify(data)); // 列名转英文方法 data = LAY_EXCEL.filterImportData(data, { isbn: "A", // 梳理时 要确保字段名对应上 bookName: "B", author: "C", press: "D", pressDate: "E", pressPlace: "F", price: "G", bookDesc: "H" }); console.log("梳理后JSON:" + JSON.stringify(data)); /* 这里要注意 xlsx文件默认的第一页名字叫 Sheet1 , 一般这么写 data[0].Sheet1 如果改过,比如SheetJS , 这里需要对应修改 data[0].SheetJS */ // 获取表格数据 const Sheet1 = data[0].sheet1; console.log(Sheet1); this.getawaitData(Sheet1); // this.exportConfig.value = false; // console.log(res); // this.tableData = res; // 新增一条 if (this.tableData.length > 0) { this.$message.success("导入成功!"); } }); } catch (e) { this.$message.error("导入错误: " + e.message); } }, // 导入 importExcel() { this.$refs["excel-upload-input"].click(); }, // 导出 exportExcel() { if (this.tableData.length === 0) { return this.$message.error("无数据可导出"); } // 姓名 手机号 入职日期 转正日期 工号 部门 const data = [...this.tableData]; console.log(data); data.unshift({ isbn: "isbn", bookName: "书名", author: "作者", press: "出版者", pressDate: "出版日期", pressPlace: "出版地", price: "价格", bookDesc: "简介" }); // 执行导出函数,系统会弹出弹框 LAY_EXCEL.exportExcel( { sheet1: data }, "导出接口数据.xlsx", "xlsx" ); this.$message.error("导出成功"); }

 异步请求处理:因该接口不允许同时访问多次请求,所以采用异步请求的方式,间隔1秒

async getawaitData(Sheet1) { const res = []; for (let i = 0; i < Sheet1.length; i++) { if (i == 0) { // 取到第一行的列头 this.tableHeader = Object.values(Sheet1[0]); // 跳过列头 continue; } console.log(Sheet1[i].isbn); const isbn1 = Sheet1[i].isbn; const vote = {}; const url1 = "http://47.99.80.202:6066/openApi/getInfoByIsbn?isbn=" + isbn1 + "&appKey=ae1718d4587744b0b79f940fbef69e77"; await new Promise(res => setTimeout(res, 1000));// 等待后执行,1000为1秒 await axios.get(url1) .then(response => { console.log("getawaitData::"); console.log(url1); console.log(response); console.log("--------------------"); vote.isbn = response.data.data.isbn; vote.bookName = response.data.data.bookName; vote.author = response.data.data.author; vote.press = response.data.data.press; if (response.data.data.pressDate == null) { vote.pressDate = ""; } else { vote.pressDate = response.data.data.pressDate[0] + "-" + response.data.data.pressDate[1] + "-1"; } vote.pressPlace = response.data.data.pressPlace; vote.price = response.data.data.price / 100; vote.bookDesc = response.data.data.bookDesc; res.push(vote); }) .catch(error => { console.log(error); vote.isbn = isbn1; res.push(vote); this.$message.error("导入错误: " + error.message); }); // console.log(Sheet1[i]); // this.tableData.push(Sheet1[i]); // 新增一条 } this.tableData = res; }

接口地址为:http://47.99.80.202:6066/openApi/getInfoByIsbn?isbn=9787511368669&appKey=ae1718d4587744b0b79f940fbef69e77

三、实现效果

fbde9a46cb7240be8eb95424b2a4d687.png 

5700946d9b4e4924b0db3a666a3d40a1.png 

最后就直接将该excel文件导入管理系统中就ok了。 

c9acc3831cba4a97ab684f0285b81717.jpeg 3eb01b4aa6af4d378972ea281dcb87c0.jpg

 

Tip:因图书管理系统所用电脑不能联网,所以不能直接调用互联网接口查询插入。

若有条件联网,以后再试试直接扫描就能录入图书信息功能————

参考资料:  

全网最全最稳定中文ISBN信息查询api接口_贺老板_的博客-CSDN博客_图书api接口

vue多个等待几秒再执行,可以用await加setTimeout实现_myforr的博客-CSDN博客_vue 等待几秒

 

 

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3