tPolicyDeclaration.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. 'use strict';
  2. const assert = require('assert');
  3. const _ = require('lodash');
  4. const {ObjectId} = require('mongoose').Types;
  5. const {CrudService} = require('naf-framework-mongoose/lib/service');
  6. const {BusinessError, ErrorCode} = require('naf-core').Error;
  7. class TPolicyDeclarationService extends CrudService {
  8. constructor(ctx) {
  9. super(ctx, 't_policy_declaration');
  10. this.model = this.ctx.model.TPolicyDeclaration;
  11. this.oModel = this.ctx.model.Otheruser;
  12. this.dModel = this.ctx.model.TDeclarationApproval;
  13. }
  14. // 重写创建方法
  15. async create(data) {
  16. if (data.type == '2' && !data.link) {
  17. assert(false, '缺少链接字段');
  18. }
  19. let approval = await this.oModel.findById({_id: ObjectId(data.current_approval_id)});
  20. let approvalInfo = [];
  21. let time = new Date().getTime();
  22. approvalInfo.push({
  23. state: '0',
  24. state_description: '未审核',
  25. result_description: '',
  26. state_time: time,
  27. approval_id: data.current_approval_id,
  28. approval: approval.name
  29. });
  30. data.approval_info = approvalInfo;
  31. //data.current_approval_id = '';
  32. //data.current_state_time = time;
  33. const res = await this.model.create(data);
  34. return res;
  35. }
  36. // 重写删除方法
  37. async delete(data) {
  38. let temp = await this.dModel.findOne({policy_declaration_id: data.id});
  39. if (temp) {
  40. throw new BusinessError(ErrorCode.DATA_EXISTED, '已有企业申报该政策,禁止删除!');
  41. }
  42. await this.model.deleteOne({_id: ObjectId(data.id)});
  43. return 'deleted';
  44. }
  45. // 修改状态方法
  46. async state(data) {
  47. let approval = await this.oModel.findById({_id: ObjectId(data.current_approval_id)});
  48. let policyDeclaration = await this.model.findById({_id: ObjectId(data.id)});
  49. let time = new Date().getTime();
  50. policyDeclaration.current_state = data.state;
  51. policyDeclaration.current_state_description = data.state_description;
  52. policyDeclaration.current_result_description = data.result_description;
  53. policyDeclaration.current_state_time = time;
  54. policyDeclaration.current_approval_id = data.current_approval_id;
  55. policyDeclaration.current_approval = approval.name;
  56. policyDeclaration.approval_info.push({
  57. state: data.state,
  58. state_description: data.state_description,
  59. result_description: data.result_description,
  60. state_time: time,
  61. approval_id: data.current_approval_id,
  62. approval: approval.name
  63. });
  64. if (data.state == '1') {
  65. policyDeclaration.publish_time = time;
  66. }
  67. return await policyDeclaration.save();
  68. }
  69. // 条件查询
  70. async select(payload) {
  71. let {skip = 0, limit = 10} = payload;
  72. let match = {};
  73. if (payload.start_time && payload.end_time) {
  74. match.create_time = {$gte: Number(payload.start_time), $lt: Number(payload.end_time)};
  75. }
  76. if (payload.title) {
  77. match.title = {$regex: payload.title, $options: '$i'};
  78. }
  79. if (payload.subject_classification) {
  80. match.subject_classification = payload.subject_classification;
  81. }
  82. if (payload.subject_headings) {
  83. match.subject_headings = payload.subject_headings;
  84. }
  85. if (payload.current_state) {
  86. match.current_state = payload.current_state;
  87. }
  88. if (payload.type) {
  89. match.type = payload.type;
  90. }
  91. let sort = {};
  92. if (payload.sort && payload.asc) {
  93. sort[payload.sort] = Number.parseInt(payload.asc);
  94. } else {
  95. sort = {'create_time': -1};
  96. }
  97. const total = await this.model.find(match).countDocuments();
  98. const data = await this.model.find(match).sort(sort).skip(Number.parseInt(skip)).limit(Number.parseInt(limit));
  99. return {
  100. data,
  101. total,
  102. };
  103. }
  104. }
  105. module.exports = TPolicyDeclarationService;