budget_std.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. 'use strict';
  2. /**
  3. *
  4. *
  5. * @author Mai
  6. * @date
  7. * @version
  8. */
  9. module.exports = app => {
  10. class BudgetStd extends app.BaseService {
  11. /**
  12. * 构造函数
  13. *
  14. * @param {Object} ctx - egg全局变量
  15. * @return {void}
  16. */
  17. constructor(ctx) {
  18. super(ctx);
  19. this.tableName = 'budget_std';
  20. }
  21. async getDataByProjectId(pid) {
  22. const project = await this.ctx.service.project.getDataById(pid);
  23. const sid = this._.map(project.budget.split(','), this._.toInteger);
  24. return await this.getAllDataByCondition({
  25. where: { id: sid },
  26. columns: ['id', 'name'],
  27. });
  28. }
  29. async getStdList(id, type) {
  30. if (!type) return [[], []];
  31. const gclField = type + '_bills_id', xmjField = type + '_chapter_id';
  32. const std = await this.service.budgetStd.getDataById(id);
  33. const billsId = std[gclField] ? this._.map(std[gclField].split(','), this._.toInteger) : [];
  34. const chaptersId = std[xmjField] ? this._.map(std[xmjField].split(','), this._.toInteger) : [];
  35. const sql = 'SELECT `id`, `name`' +
  36. ' From ?? ' +
  37. ' WHERE `id` in ( ? ) ORDER BY FIELD(`id`, ?)';
  38. const sqlParam = ['zh_std_gcl_list', billsId, billsId];
  39. const billsList = billsId.length > 0 ? await this.db.query(sql, sqlParam) : [];
  40. const sql2 = 'SELECT `id`, `name`' +
  41. ' From ?? ' +
  42. ' WHERE `id` in ( ? ) ORDER BY FIELD(`id`, ?)';
  43. const sqlParam2 = ['zh_std_xmj_list', chaptersId, chaptersId];
  44. const chapterList = chaptersId.length > 0 ? await this.db.query(sql2, sqlParam2) : [];
  45. return [billsList, chapterList];
  46. }
  47. async getTemplateId(id, type) {
  48. if (!id || !type) throw '参数错误';
  49. const budgetStd = await this.getDataById(id);
  50. if (!budgetStd) throw '模板不存在';
  51. return budgetStd[type + '_template_id'];
  52. }
  53. }
  54. return BudgetStd;
  55. };