123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- '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 TPolicyDeclarationService extends CrudService {
- constructor(ctx) {
- super(ctx, 't_policy_declaration');
- this.model = this.ctx.model.TPolicyDeclaration;
- this.oModel = this.ctx.model.Otheruser;
- this.dModel = this.ctx.model.TDeclarationApproval;
- }
- // 重写创建方法
- async create(data) {
- if (data.type == '2' && !data.link) {
- assert(false, '缺少链接字段');
- }
- let approval = await this.oModel.findById({_id: ObjectId(data.current_approval_id)});
- let approvalInfo = [];
- let time = new Date().getTime();
- approvalInfo.push({
- state: '0',
- state_description: '未审核',
- result_description: '',
- state_time: time,
- approval_id: data.current_approval_id,
- approval: approval.name
- });
- data.approval_info = approvalInfo;
- //data.current_approval_id = '';
- //data.current_state_time = time;
- const res = await this.model.create(data);
- return res;
- }
- // 重写删除方法
- async delete(data) {
- let temp = await this.dModel.findOne({policy_declaration_id: data.id});
- if (temp) {
- throw new BusinessError(ErrorCode.DATA_EXISTED, '已有企业申报该政策,禁止删除!');
- }
- await this.model.deleteOne({_id: ObjectId(data.id)});
- return 'deleted';
- }
- // 修改状态方法
- async state(data) {
- let approval = await this.oModel.findById({_id: ObjectId(data.current_approval_id)});
- let policyDeclaration = await this.model.findById({_id: ObjectId(data.id)});
- let time = new Date().getTime();
- policyDeclaration.current_state = data.state;
- policyDeclaration.current_state_description = data.state_description;
- policyDeclaration.current_result_description = data.result_description;
- policyDeclaration.current_state_time = time;
- policyDeclaration.current_approval_id = data.current_approval_id;
- policyDeclaration.current_approval = approval.name;
- policyDeclaration.approval_info.push({
- state: data.state,
- state_description: data.state_description,
- result_description: data.result_description,
- state_time: time,
- approval_id: data.current_approval_id,
- approval: approval.name
- });
- if (data.state == '1') {
- policyDeclaration.publish_time = time;
- }
- return await policyDeclaration.save();
- }
- // 条件查询
- async select(payload) {
- let {skip = 0, limit = 10} = payload;
- let match = {};
- if (payload.start_time && payload.end_time) {
- match.create_time = {$gte: Number(payload.start_time), $lt: Number(payload.end_time)};
- }
- if (payload.title) {
- match.title = {$regex: payload.title, $options: '$i'};
- }
- if (payload.subject_classification) {
- match.subject_classification = payload.subject_classification;
- }
- if (payload.subject_headings) {
- match.subject_headings = payload.subject_headings;
- }
- if (payload.current_state) {
- match.current_state = payload.current_state;
- }
- if (payload.type) {
- match.type = payload.type;
- }
- let sort = {};
- if (payload.sort && payload.asc) {
- sort[payload.sort] = Number.parseInt(payload.asc);
- } else {
- sort = {'create_time': -1};
- }
- const total = await this.model.find(match).countDocuments();
- const data = await this.model.find(match).sort(sort).skip(Number.parseInt(skip)).limit(Number.parseInt(limit));
- return {
- data,
- total,
- };
- }
- }
- module.exports = TPolicyDeclarationService;
|