lrf402788946 3 سال پیش
والد
کامیت
71f99befc3
3فایلهای تغییر یافته به همراه74 افزوده شده و 0 حذف شده
  1. 5 0
      app/controller/patent/patentinfo.js
  2. 1 0
      app/router/patent/patentinfo.js
  3. 68 0
      app/service/patent/patentinfo.js

+ 5 - 0
app/controller/patent/patentinfo.js

@@ -14,5 +14,10 @@ class PatentinfoController extends Controller {
     const data = await this.service.queryByOrg(this.ctx.query);
     this.ctx.ok(data);
   }
+
+  async mechQuery() {
+    const data = await this.service.mechQuery(this.ctx.query);
+    this.ctx.ok(data);
+  }
 }
 module.exports = CrudController(PatentinfoController, meta);

+ 1 - 0
app/router/patent/patentinfo.js

@@ -9,6 +9,7 @@ module.exports = app => {
   const target = 'patentinfo';
   const metaTime = app.middleware.createTime();
   router.get(target, `${profix}${vision}/${index}/${target}/queryByOrg`, metaTime, controller[index][target].queryByOrg);
+  router.get(target, `${profix}${vision}/${index}/${target}/mechQuery`, metaTime, controller[index][target].mechQuery);
   router.resources(target, `${profix}${vision}/${index}/${target}`, metaTime, controller[index][target]); // index、create、show、destroy
   router.post(target, `${profix}${vision}/${index}/${target}/update/:id`, controller[index][target].update);
   router.post(target, `${profix}${vision}/${index}/${target}/toImport`, controller[index][target].toImport);

+ 68 - 0
app/service/patent/patentinfo.js

@@ -441,6 +441,74 @@ class PatentinfoService extends CrudService {
     const data = await this.model.findOne({ create_number });
     return data;
   }
+
+  async mechQuery(query) {
+    const code = _.get(query, 'code');
+    assert(code, '缺少机构信息!');
+    const { empower_sort, ...others } = query;
+    const newQuery = await this.toSetQuery(others);
+    console.log(newQuery);
+    let sort = 'desc';
+    if (empower_sort === '0') {
+      sort = 'asc';
+    }
+    const data = await this.model.find(newQuery).sort({ empower_date: sort });
+    const total = await this.model.count(newQuery);
+    return { data, total };
+  }
+
+  async toSetQuery(query) {
+    let queryObject = {};
+    for (const key in query) {
+      if (key === 'code') {
+        const cquery = await this.dealCode(query[key]);
+        queryObject = { ...queryObject, ...cquery };
+      } else if (key === 'empower_year') {
+        queryObject.empower_date = this.dealYearRange(query[key]);
+      } else if (key === 'apply_year') {
+        queryObject.create_date = this.dealYearRange(query[key]);
+      } else if (key === 'ipc_type') {
+        queryObject.ipc_type = new RegExp(`/\^${query[key]}/`, 'i');
+      } else if (key === 'field') {
+        queryObject.abstract = new RegExp(query[key]);
+      } else if (key === 'create_number') {
+        queryObject.create_number = new RegExp(query[key]);
+      } else if (key === 'first_inventor') {
+        queryObject.inventor = new RegExp(`/\^${query[key]}/`, 'i');
+      } else if (key === 'on_obligee') {
+        queryObject.on_obligee = new RegExp(`/\^${query[key]}/`, 'i');
+      } else if (key === 'type') {
+        queryObject.type = new RegExp(`/\^${query[key]}/`, 'i');
+      } else if (key === 'is_empower') {
+        let r = '';
+        if (query[key] === '0') r = true;
+        else r = false;
+        queryObject.empower_date = { $exists: r };
+      } else if (key === 'term') {
+        queryObject.term = new RegExp(query[key]);
+      } else if (key === 'is_lose') {
+        const toDay = moment().format('YYYY-MM-DD');
+        let r = '';
+        if (query[key] === '0') r = { $gt: toDay };
+        else r = { $lte: toDay };
+        queryObject.lose_date = r;
+      }
+      return queryObject;
+    }
+  }
+  async dealCode(code) {
+    let pids = await this.personalModel.find({ code }, { _id: 1 });
+    if (pids.length <= 0) return { data: [], total: 0 };
+    pids = pids.map(i => i._id);
+    const query = { user_id: { $elemMatch: { $in: pids } } };
+    return query;
+  }
+  async dealYearRange(year) {
+    const start = `${year}-01-01`;
+    const end = `${year}-12-31`;
+    const obj = { $gte: start, $lte: end };
+    return obj;
+  }
 }
 
 module.exports = PatentinfoService;