advance.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. 'use strict'
  2. const auditConst = require('../const/audit').advance
  3. module.exports = app => {
  4. class Advance extends app.BaseService {
  5. constructor(ctx) {
  6. super(ctx)
  7. this.tableName = 'advance_pay'
  8. }
  9. /**
  10. * 获取预付款列表
  11. * @param {Number} tid 标段id
  12. * @param {Number} type 预付款类型
  13. */
  14. async getAdvanceList(tid, type) {
  15. this.initSqlBuilder()
  16. this.sqlBuilder.setAndWhere('tid', {
  17. value: tid,
  18. operate: '='
  19. })
  20. this.sqlBuilder.setAndWhere('type', {
  21. value: type,
  22. operate: '='
  23. })
  24. this.sqlBuilder.orderBy = [['order', 'desc']]
  25. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName)
  26. const advance = await this.db.query(sql, sqlParam)
  27. return advance
  28. }
  29. /**
  30. * 获取预付款最新一期
  31. * @param {Number} tid 标段id
  32. * @param {String} type 类型: 开工预付款|材料预付款 (0|1)
  33. * @param {Boolean} includeUnCheck 包括未上报的
  34. * @return {Promise<*>} 实例结果集
  35. */
  36. async getLastestAdvance(tid, type, includeUnCheck = false) {
  37. this.initSqlBuilder()
  38. this.sqlBuilder.setAndWhere('tid', {
  39. value: tid,
  40. operate: '='
  41. })
  42. this.sqlBuilder.setAndWhere('type', {
  43. value: type,
  44. operate: '='
  45. })
  46. if (!includeUnCheck) {
  47. this.sqlBuilder.setAndWhere('status', {
  48. value: auditConst.status.uncheck,
  49. operate: '!='
  50. })
  51. }
  52. this.sqlBuilder.orderBy = [['order', 'desc']]
  53. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName)
  54. const advance = await this.db.queryOne(sql, sqlParam)
  55. return advance
  56. }
  57. /**
  58. * 创建一条新的记录
  59. * @param {String} type 类型: 开工预付款|材料预付款 (start|material)
  60. * @return {Promise<*>} 插入结果集
  61. */
  62. async createRecord(type) {
  63. const { ctx } = this
  64. const uid = ctx.session.sessionUser.accountId
  65. const tid = ctx.tender.id
  66. const latestOrder = await this.getLastestAdvance(tid, type)
  67. const order = !latestOrder ? 1 : latestOrder.order + 1
  68. const record = await this.db.insert(this.tableName, { type, uid, tid, status: auditConst.status.uncheck, order })
  69. return await this.getDataById(record.insertId)
  70. }
  71. /**
  72. * 获取上一期预付款记录
  73. * @param {Number} tid 标段id
  74. * @param {Number} type 预付款类型
  75. */
  76. async getPreviousRecord(tid, type) {
  77. this.initSqlBuilder()
  78. this.sqlBuilder.setAndWhere('tid', {
  79. value: tid,
  80. operate: '='
  81. })
  82. this.sqlBuilder.setAndWhere('type', {
  83. value: type,
  84. operate: '='
  85. })
  86. this.sqlBuilder.orderBy = [['order', 'desc']]
  87. const [sql, sqlParam] = this.sqlBuilder.build(this.tableName)
  88. return await this.db.queryOne(sql, sqlParam)
  89. }
  90. // /**
  91. // * 更新预付款记录
  92. // * @param {Object} data 载荷
  93. // * @param {Number} id 预付款id
  94. // */
  95. // async updateAdvance(data, id) {
  96. // const result = await this.db.update(this.tableName, data, { where: { id } })
  97. // console.log(result)
  98. // }
  99. }
  100. return Advance
  101. }