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

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

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

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

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

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

        记录一下↓↓↓

一、工具准备

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

 

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

 

 二、相关代码

// 文件框值更新事件
    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

三、实现效果

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

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

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

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

 

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

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

参考资料:  



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

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

 

 

 

 

你可能感兴趣的:(vue.js)