|
@@ -441,6 +441,74 @@ class PatentinfoService extends CrudService {
|
|
const data = await this.model.findOne({ create_number });
|
|
const data = await this.model.findOne({ create_number });
|
|
return data;
|
|
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;
|
|
module.exports = PatentinfoService;
|