guhongwei 3 лет назад
Родитель
Сommit
e545f18672
1 измененных файлов с 402 добавлено и 40 удалено
  1. 402 40
      app/service/patent/patentinfo.js

+ 402 - 40
app/service/patent/patentinfo.js

@@ -38,7 +38,10 @@ class PatentinfoService extends CrudService {
 
   async query(query, { skip = 0, limit = 0 }) {
     const newquery = await this.resetCode(query);
-    const res = await this.model.find(newquery).skip(parseInt(skip)).limit(parseInt(limit))
+    const res = await this.model
+      .find(newquery)
+      .skip(parseInt(skip))
+      .limit(parseInt(limit))
       .sort({ create_date: -1 });
     return res;
   }
@@ -65,7 +68,11 @@ class PatentinfoService extends CrudService {
       delete newquery.user_id;
     }
     if (key_word) {
-      newquery.$or = [{ name: new RegExp(key_word) }, { abstract: new RegExp(key_word) }, { first_ask: new RegExp(key_word) }];
+      newquery.$or = [
+        { name: new RegExp(key_word) },
+        { abstract: new RegExp(key_word) },
+        { first_ask: new RegExp(key_word) },
+      ];
       delete newquery.key_word;
     }
     if (single_inventor) {
@@ -83,7 +90,10 @@ class PatentinfoService extends CrudService {
     const query = { 'inventor.user_id': { $in: pids } };
     if (status) query.status = status;
     if (term) query.term = term;
-    const data = await this.model.find(query).skip(parseInt(skip)).limit(parseInt(limit))
+    const data = await this.model
+      .find(query)
+      .skip(parseInt(skip))
+      .limit(parseInt(limit))
       .sort({ 'meta.createdAt': -1 });
     const total = await this.model.count(query);
     return { data, total };
@@ -109,7 +119,10 @@ class PatentinfoService extends CrudService {
     );
     // 2021-11-18 修改导入,根据model文件(和excel顺序一致)的顺序进行取字段
     const models = _.get(this.model, 'schema.obj');
-    const meta = Object.keys(models).map((i, index) => ({ key: i, index: index + 2 }));
+    const meta = Object.keys(models).map((i, index) => ({
+      key: i,
+      index: index + 2,
+    }));
     sheet.eachRow((row, rindex) => {
       if (rindex !== 1) {
         // 组织数据,图片的索引和行索引不一致,准确的说是:图片索引比行索引少1
@@ -123,12 +136,23 @@ class PatentinfoService extends CrudService {
         }
         // 根据meta整理数据
         // 需要日期转换的字段
-        const dateColumnArray = [ 'create_date', 'success_date', 'law_date', 'first_opendate', 'empower_date', 'lose_date', 'examine_date' ];
+        const dateColumnArray = [
+          'create_date',
+          'success_date',
+          'law_date',
+          'first_opendate',
+          'empower_date',
+          'lose_date',
+          'examine_date',
+        ];
         let obj = { img_url: [] };
         for (const m of meta) {
           const { key, index } = m;
-          if (dateColumnArray.includes(key)) obj[key] = moment(_.get(row.getCell(index), 'value')).format('YYYY-MM-DD');
-          else obj[key] = _.get(row.getCell(index), 'value');
+          if (dateColumnArray.includes(key)) {
+            obj[key] = moment(_.get(row.getCell(index), 'value')).format(
+              'YYYY-MM-DD'
+            );
+          } else if (key === 'incopat_link') { obj[key] = this.getUrl(_.get(row.getCell(index), 'value')); } else obj[key] = _.get(row.getCell(index), 'value');
         }
         obj = _.pickBy(obj, _.identity);
         arr.push(obj);
@@ -170,7 +194,9 @@ class PatentinfoService extends CrudService {
     }
     // 根据申请号做添加/修改
     for (const obj of arr) {
-      const has_data = await this.model.count({ create_number: obj.create_number });
+      const has_data = await this.model.count({
+        create_number: obj.create_number,
+      });
       if (!has_data) {
         await this.model.create(obj);
       } else {
@@ -190,7 +216,11 @@ class PatentinfoService extends CrudService {
       tenant: 'live',
     };
     try {
-      await this.ctx.service.util.httpUtil.cpost('/api/mission', 'mission', data);
+      await this.ctx.service.util.httpUtil.cpost(
+        '/api/mission',
+        'mission',
+        data
+      );
     } catch (error) {
       console.log(error);
       throw new BusinessError(ErrorCode.SERVICE_FAULT, '任务创建失败');
@@ -221,7 +251,11 @@ class PatentinfoService extends CrudService {
           status: '1',
           id: missionid,
         };
-        this.ctx.service.util.httpUtil.cpost('/api/mission/progress', 'mission', data);
+        this.ctx.service.util.httpUtil.cpost(
+          '/api/mission/progress',
+          'mission',
+          data
+        );
       } catch (error) {
         this.logger.error(`任务id:${missionid},进度更新失败`);
       }
@@ -232,7 +266,11 @@ class PatentinfoService extends CrudService {
         status: '2',
         uri: downloadPath,
       };
-      await this.ctx.service.util.httpUtil.cpost(`/api/mission/update/${missionid}`, 'mission', data);
+      await this.ctx.service.util.httpUtil.cpost(
+        `/api/mission/update/${missionid}`,
+        'mission',
+        data
+      );
     } catch (error) {
       this.logger.error(`任务id:${missionid},已完成更新失败`);
     }
@@ -341,38 +379,359 @@ class PatentinfoService extends CrudService {
 
   getHeader() {
     const arr = [
-      { header: '申请号', key: 'create_number', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '申请日', key: 'create_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '公开(公告)号', key: 'success_number', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '公开(公告)日', key: 'success_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '发明人', key: 'inventor', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '代理机构', key: 'agent', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '代理人', key: 'agent_personal', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '摘要', key: 'abstract', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '发明人地址', key: 'address', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '标题', key: 'name', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '申请人', key: 'apply_personal', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '专利有效性', key: 'term', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '专利类型', key: 'type', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '首页附图', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '公开国别', key: 'nationality', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: 'IPC主分类', key: 'ipc_type', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '当前法律状态', key: 'onlegal_status', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '法律状态', key: 'legal_status', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '法律文书日期', key: 'law_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '当前权利人', key: 'on_obligee', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '申请人地址(其他)', key: 'apply_address', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '申请人(其他)', key: 'apply_other', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '法律文书编号', key: 'law_num', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '首次公开日', key: 'first_opendate', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '授权公告日', key: 'empower_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '失效日', key: 'lose_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '实际审查失效日', key: 'examine_date', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
-      { header: '发明人(设计)其他', key: 'invention_design', width: 30, style: { alignment: { wrapText: true, vertical: 'middle', horizontal: 'center' } } },
+      {
+        header: '申请号',
+        key: 'create_number',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '申请日',
+        key: 'create_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '公开(公告)号',
+        key: 'success_number',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '公开(公告)日',
+        key: 'success_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '发明人',
+        key: 'inventor',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '代理机构',
+        key: 'agent',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '代理人',
+        key: 'agent_personal',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '摘要',
+        key: 'abstract',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '发明人地址',
+        key: 'address',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '标题',
+        key: 'name',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '申请人',
+        key: 'apply_personal',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '专利有效性',
+        key: 'term',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '专利类型',
+        key: 'type',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '首页附图',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '公开国别',
+        key: 'nationality',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: 'IPC主分类',
+        key: 'ipc_type',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '当前法律状态',
+        key: 'onlegal_status',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '法律状态',
+        key: 'legal_status',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '法律文书日期',
+        key: 'law_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '当前权利人',
+        key: 'on_obligee',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '申请人地址(其他)',
+        key: 'apply_address',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '申请人(其他)',
+        key: 'apply_other',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '法律文书编号',
+        key: 'law_num',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '首次公开日',
+        key: 'first_opendate',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '授权公告日',
+        key: 'empower_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '失效日',
+        key: 'lose_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '实际审查失效日',
+        key: 'examine_date',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
+      {
+        header: '发明人(设计)其他',
+        key: 'invention_design',
+        width: 30,
+        style: {
+          alignment: {
+            wrapText: true,
+            vertical: 'middle',
+            horizontal: 'center',
+          },
+        },
+      },
     ];
     return arr;
   }
 
+  /**
+   * 将excel的超链接对象中的url
+   * @param {Object} object excel中的超链接对象
+   */
+  getUrl(object) {
+    let urlStr = _.get(object, 'formula');
+    const s = urlStr.indexOf('(');
+    urlStr = urlStr.substring(s);
+    urlStr = _.trim(_.trim(urlStr, '('), ')');
+    const midArr = urlStr.split(',');
+    const url = _.trim(_.head(midArr), '"');
+    return url;
+  }
+
   async getByCreateNumber({ create_number }) {
     const data = await this.model.findOne({ create_number });
     return data;
@@ -387,7 +746,10 @@ class PatentinfoService extends CrudService {
     if (empower_sort === '0') {
       sort = 'asc';
     }
-    const data = await this.model.find(newQuery).sort({ empower_date: sort }).skip(parseInt(skip))
+    const data = await this.model
+      .find(newQuery)
+      .sort({ empower_date: sort })
+      .skip(parseInt(skip))
       .limit(parseInt(limit));
     const total = await this.model.count(newQuery);
     return { data, total };