1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246 |
- 'use strict';
- const assert = require('assert');
- const _ = require('lodash');
- const { ObjectId } = require('mongoose').Types;
- const { CrudService } = require('naf-framework-mongoose/lib/service');
- const { BusinessError, ErrorCode } = require('naf-core').Error;
- class TNewAssignService extends CrudService {
- constructor(ctx) {
- super(ctx, 't_new_assign');
- this.model = this.ctx.model.TNewAssign;
- this.cModel = this.ctx.model.Claimneed;
- this.iModel = this.ctx.model.IntelligentDocking;
- }
- // 重写创建方法
- async create(data) {
- const {type, userid,product_name} = data;
- const res = await this.model.create(data);
- let tempMsg = '';
- switch(type)
- {
- case '1':
- tempMsg = '债权需求';
- break;
- case '2':
- tempMsg = '融资需求';
- break;
- }
- let msg = await this.ctx.service.viewnews.insertViewNews('指派操作',`您申请的${tempMsg}已指派为新的金融产品${product_name},请知晓。`,userid);
- return data;
- }
- // 条件查询
- async select(payload) {
- let {skip = 0, limit = 10} = payload;
- let match = {};
- if (payload.company_name) {
- match.company_name = {$regex: payload.company_name, $options: '$i'};
- }
- if (payload.institution_name) {
- match.institution_name = {$regex: payload.institution_name, $options: '$i'};
- }
- if (payload.product_name) {
- match.product_name = {$regex: payload.product_name, $options: '$i'};
- }
- if (payload.is_exist) {
- match.is_exist = payload.is_exist;
- }
- if (payload.demand_id) {
- match.demand_id = payload.demand_id;
- }
- if (payload.government_name) {
- match[`information.government_name`] = {$regex: payload.government_name, $options: '$i'};
- }
- if (payload.status) {
- match[`information.status`] = payload.status;
- }
- if (payload.company_type) {
- match[`information.company_type`] = payload.company_type;
- }
- let sort = {};
- if (payload.sort && payload.asc) {
- sort[payload.sort] = Number.parseInt(payload.asc);
- } else {
- sort = {'meta.createdAt': -1};
- }
- let dataAgg = [
- {
- $match: {
- 'status': '0'
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- meta: 1,
- }
- },
- {
- $lookup: {
- from: 'company_identify',
- localField: 'userid',
- foreignField: 'uid',
- as: 'company_identifys',
- },
- },
- {
- $unwind: {
- path: '$company_identifys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "institution",
- let: {
- jg_id: "$jg_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_id"]
- },
- ]
- }
- }
- },
- ],
- as: "institutions"
- }
- },
- {
- $unwind: {
- path: '$institutions',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "t_finance_claims",
- let: {
- jg_pro_id: "$jg_pro_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_pro_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_finance_claimss"
- }
- },
- {
- $unwind: {
- path: '$t_finance_claimss',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "dictionary",
- let: {
- ensure_id: "$ensure_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "db"]
- },
- {
- $eq: ['$code', "$$ensure_id"]
- },
- ]
- }
- }
- },
- ],
- as: "dictionarys"
- }
- },
- {
- $unwind: {
- path: '$dictionarys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- ensure_name:'$dictionarys.name',
- company_name: '$company_identifys.company_name',
- institution_name: '$institutions.name',
- product_name: '$t_finance_claimss.name',
- demand_id: {
- $toString: "$_id"
- },
- meta: 1,
- }
- },
- {
- $lookup:
- {
- from: "t_new_assign",
- let: {
- demand_id: "$demand_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "1"]
- },
- {
- $eq: ['$demand_id', "$$demand_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_new_assigns"
- }
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- ensure_name: 1,
- demand_id: 1,
- company_name: 1,
- institution_name: 1,
- product_name: 1,
- is_exist: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: "2",
- else : "1"
- }
- },
- information: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: {},
- else : { $arrayElemAt: [ "$t_new_assigns", 0 ] },
- }
- },
- meta: 1,
- }
- },
- {
- $match: match,
- },
- {
- $sort: sort,
- },
- {
- $skip: Number.parseInt(skip),
- },
- {
- $limit:Number.parseInt(limit),
- },
- ];
- let totalAgg = [
- {
- $match: {
- 'status': '0'
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- meta: 1,
- }
- },
- {
- $lookup: {
- from: 'company_identify',
- localField: 'userid',
- foreignField: 'uid',
- as: 'company_identifys',
- },
- },
- {
- $unwind: {
- path: '$company_identifys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "institution",
- let: {
- jg_id: "$jg_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_id"]
- },
- ]
- }
- }
- },
- ],
- as: "institutions"
- }
- },
- {
- $unwind: {
- path: '$institutions',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "t_finance_claims",
- let: {
- jg_pro_id: "$jg_pro_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_pro_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_finance_claimss"
- }
- },
- {
- $unwind: {
- path: '$t_finance_claimss',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "dictionary",
- let: {
- ensure_id: "$ensure_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "db"]
- },
- {
- $eq: ['$code', "$$ensure_id"]
- },
- ]
- }
- }
- },
- ],
- as: "dictionarys"
- }
- },
- {
- $unwind: {
- path: '$dictionarys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- ensure_name:'$dictionarys.name',
- company_name: '$company_identifys.company_name',
- institution_name: '$institutions.name',
- product_name: '$t_finance_claimss.name',
- demand_id: {
- $toString: "$_id"
- },
- meta: 1,
- }
- },
- {
- $lookup:
- {
- from: "t_new_assign",
- let: {
- demand_id: "$demand_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "1"]
- },
- {
- $eq: ['$demand_id', "$$demand_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_new_assigns"
- }
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- use: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- project_status: 1,
- remarks: 1,
- cdata: 1,
- ensure_id: 1,
- ensure_name: 1,
- demand_id: 1,
- company_name: 1,
- institution_name: 1,
- product_name: 1,
- is_exist: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: "2",
- else : "1"
- }
- },
- information: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: {},
- else : { $arrayElemAt: [ "$t_new_assigns", 0 ] },
- }
- },
- meta: 1,
- }
- },
- {
- $match: match,
- },
- {
- $count: 'total',
- },
- ];
- const data = await this.cModel.aggregate(dataAgg);
- const totalTemp = await this.cModel.aggregate(totalAgg);
- if (totalTemp.length == 0) {
- totalTemp.push({ total: 0 });
- }
- const [{ total }] = totalTemp;
- return {
- data,
- total,
- };
- }
- // 条件查询
- async financingSelect(payload) {
- let {skip = 0, limit = 10} = payload;
- let match = {};
- if (payload.company_name) {
- match.company_name = {$regex: payload.company_name, $options: '$i'};
- }
- if (payload.institution_name) {
- match.institution_name = {$regex: payload.institution_name, $options: '$i'};
- }
- if (payload.product_name) {
- match.product_name = {$regex: payload.product_name, $options: '$i'};
- }
- if (payload.is_exist) {
- match.is_exist = payload.is_exist;
- }
- if (payload.demand_id) {
- match.demand_id = payload.demand_id;
- }
- if (payload.government_name) {
- match[`information.government_name`] = {$regex: payload.government_name, $options: '$i'};
- }
- if (payload.status) {
- match[`information.status`] = payload.status;
- }
- if (payload.company_type) {
- match[`information.company_type`] = payload.company_type;
- }
- let sort = {};
- if (payload.sort && payload.asc) {
- sort[payload.sort] = Number.parseInt(payload.asc);
- } else {
- sort = {'meta.createdAt': -1};
- }
- let dataAgg = [
- {
- $project: {
- jg_id: 1,
- jg_pro_id: '$cid',
- userid: '$uid',
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: '$additional_information',
- ensure_id: 1,
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $lookup: {
- from: 'company_identify',
- localField: 'userid',
- foreignField: 'uid',
- as: 'company_identifys',
- },
- },
- {
- $unwind: {
- path: '$company_identifys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "institution",
- let: {
- jg_id: "$jg_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_id"]
- },
- ]
- }
- }
- },
- ],
- as: "institutions"
- }
- },
- {
- $unwind: {
- path: '$institutions',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "t_finance_claims",
- let: {
- jg_pro_id: "$jg_pro_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_pro_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_finance_claimss"
- }
- },
- {
- $unwind: {
- path: '$t_finance_claimss',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "dictionary",
- let: {
- ensure_id: "$ensure_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "db"]
- },
- {
- $eq: ['$code', "$$ensure_id"]
- },
- ]
- }
- }
- },
- ],
- as: "dictionarys"
- }
- },
- {
- $unwind: {
- path: '$dictionarys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: 1,
- ensure_id: 1,
- ensure_name:'$dictionarys.name',
- company_name: '$company_identifys.company_name',
- institution_name: '$institutions.name',
- product_name: '$t_finance_claimss.name',
- demand_id: {
- $toString: "$_id"
- },
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $lookup:
- {
- from: "t_new_assign",
- let: {
- demand_id: "$demand_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "2"]
- },
- {
- $eq: ['$demand_id', "$$demand_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_new_assigns"
- }
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: 1,
- ensure_id: 1,
- ensure_name: 1,
- demand_id: 1,
- company_name: 1,
- institution_name: 1,
- product_name: 1,
- is_exist: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: "2",
- else : "1"
- }
- },
- information: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: {},
- else : { $arrayElemAt: [ "$t_new_assigns", 0 ] },
- }
- },
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $match: match,
- },
- {
- $sort: sort,
- },
- {
- $skip: Number.parseInt(skip),
- },
- {
- $limit:Number.parseInt(limit),
- },
- ];
- let totalAgg = [
- {
- $project: {
- jg_id: 1,
- jg_pro_id: '$cid',
- userid: '$uid',
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: '$additional_information',
- ensure_id: 1,
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $lookup: {
- from: 'company_identify',
- localField: 'userid',
- foreignField: 'uid',
- as: 'company_identifys',
- },
- },
- {
- $unwind: {
- path: '$company_identifys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "institution",
- let: {
- jg_id: "$jg_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_id"]
- },
- ]
- }
- }
- },
- ],
- as: "institutions"
- }
- },
- {
- $unwind: {
- path: '$institutions',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "t_finance_claims",
- let: {
- jg_pro_id: "$jg_pro_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [
- {
- $eq: [{
- $toString: "$_id"
- }, "$$jg_pro_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_finance_claimss"
- }
- },
- {
- $unwind: {
- path: '$t_finance_claimss',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $lookup:
- {
- from: "dictionary",
- let: {
- ensure_id: "$ensure_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "db"]
- },
- {
- $eq: ['$code', "$$ensure_id"]
- },
- ]
- }
- }
- },
- ],
- as: "dictionarys"
- }
- },
- {
- $unwind: {
- path: '$dictionarys',
- preserveNullAndEmptyArrays: false,
- },
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: 1,
- ensure_id: 1,
- ensure_name:'$dictionarys.name',
- company_name: '$company_identifys.company_name',
- institution_name: '$institutions.name',
- product_name: '$t_finance_claimss.name',
- demand_id: {
- $toString: "$_id"
- },
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $lookup:
- {
- from: "t_new_assign",
- let: {
- demand_id: "$demand_id"
- },
- pipeline: [
- {
- $match:
- {
- $expr:
- {
- $and:
- [ {
- $eq: ['$type', "2"]
- },
- {
- $eq: ['$demand_id', "$$demand_id"]
- },
- ]
- }
- }
- },
- ],
- as: "t_new_assigns"
- }
- },
- {
- $project: {
- jg_id: 1,
- jg_pro_id: 1,
- userid: 1,
- money: 1,
- mongey_min_rate: 1,
- mongey_max_rate: 1,
- claims_min_term: 1,
- claims_max_term: 1,
- remarks: 1,
- ensure_id: 1,
- ensure_name: 1,
- demand_id: 1,
- company_name: 1,
- institution_name: 1,
- product_name: 1,
- is_exist: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: "2",
- else : "1"
- }
- },
- information: {
- $cond: {
- if : {
- $eq: [{
- $size: "$t_new_assigns"
- }, 0]
- },
- then: {},
- else : { $arrayElemAt: [ "$t_new_assigns", 0 ] },
- }
- },
- meta: 1,
- person: 1,
- phone: 1,
- opening_bank: 1,
- orientation: 1,
- when: 1,
- }
- },
- {
- $match: match,
- },
- {
- $count: 'total',
- },
- ];
- const data = await this.iModel.aggregate(dataAgg);
- const totalTemp = await this.iModel.aggregate(totalAgg);
- if (totalTemp.length == 0) {
- totalTemp.push({ total: 0 });
- }
- const [{ total }] = totalTemp;
- return {
- data,
- total,
- };
- }
- }
- module.exports = TNewAssignService;
|