|
@@ -481,6 +481,34 @@ module.exports = app => {
|
|
|
const result = await this.db.query(sql, sqlParam);
|
|
|
return result;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取多期(合同和数量变更相加)计量-小计(材料调差调用)
|
|
|
+ * @param {Number} tid - 标段id
|
|
|
+ * @param {String} stage_id_list - 期id列表
|
|
|
+ * @param {String} lid - 台账id
|
|
|
+ * @param {String} pid - 部位id
|
|
|
+ * @returns {Promise<void>}
|
|
|
+ */
|
|
|
+ async getGatherQtyByMaterial(tid, stage_id_list, lid, pid) {
|
|
|
+ stage_id_list = stage_id_list !== null ? stage_id_list.split(',') : [];
|
|
|
+ let gather_qty = 0;
|
|
|
+ for (const sid of stage_id_list) {
|
|
|
+ const sql = 'SELECT Pos.contract_qty, Pos.qc_qty FROM ' +
|
|
|
+ ' (SELECT * FROM ' + this.tableName + ' WHERE tid = ? AND sid = ?) As Pos ' +
|
|
|
+ ' INNER JOIN ( ' +
|
|
|
+ ' SELECT MAX(`times` * ' + timesLen + ' + `order`) As `flow`, `tid`, `sid`, `pid` From ' + this.tableName +
|
|
|
+ ' WHERE `tid` = ? AND sid = ?' +
|
|
|
+ ' GROUP BY `pid`' +
|
|
|
+ ' ) As MaxFilter ' +
|
|
|
+ ' ON (Pos.times * ' + timesLen + ' + Pos.order) = MaxFilter.flow And Pos.pid = MaxFilter.pid And Pos.sid = MaxFilter.sid' +
|
|
|
+ ' WHERE Pos.lid = ? AND Pos.pid = ?';
|
|
|
+ const sqlParam = [tid, sid, tid, sid, lid, pid];
|
|
|
+ const result = await this.db.queryOne(sql, sqlParam);
|
|
|
+ gather_qty = this.ctx.helper.add(gather_qty, this.ctx.helper.add(result.contract_qty, result.qc_qty));
|
|
|
+ }
|
|
|
+ return gather_qty !== 0 ? gather_qty : null;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return StagePos;
|