Преглед изворни кода

多期清单数据整合计算

MaiXinRong пре 4 година
родитељ
комит
90e060311d
1 измењених фајлова са 10 додато и 15 уклоњено
  1. 10 15
      app/service/stage_bills.js

+ 10 - 15
app/service/stage_bills.js

@@ -407,21 +407,16 @@ module.exports = app => {
          * @return {Promise<void>}
          */
         async getStagesData(tid, stage_id_list) {
-            let stage_id_listSql = '';
-            stage_id_list = stage_id_list.indexOf(',') !== -1 ? stage_id_list.split(',') : stage_id_list;
-            if (stage_id_list) {
-                if (stage_id_list instanceof Array) {
-                    stage_id_listSql = stage_id_list.length > 0 ? ' And sid in (' + this.ctx.helper.getInArrStrSqlFilter(stage_id_list) + ')' : '';
-                } else {
-                    stage_id_listSql = ' And sid in (' + this.db.escape(stage_id_list) + ')';
-                }
-            }
-            const sql = 'SELECT `lid`, `tid`, `sid`, SUM(`contract_qty`) as `contract_qty`, SUM(`contract_tp`) as `contract_tp`, ' +
-                'SUM(`qc_qty`) as `qc_qty`, SUM(`qc_tp`) as `qc_tp` FROM ' + this.tableName + ' WHERE `tid` = ? ' +
-                stage_id_listSql + ' GROUP BY `lid`';
-            const sqlParam = [tid];
-            const result = await this.db.query(sql, sqlParam);
-            console.log('result', result);
+            const whereSql = this.ctx.helper.whereSql({tid: tid, sid: stage_id_list.split(',')});
+            const sql = 'SELECT Bills.lid, Bills.tid, Bills.sid,' +
+                '    Sum(Bills.contract_qty) As contract_qty, Sum(Bills.contract_tp) As contract_tp,' +
+                '    Sum(Bills.qc_qty) As qc_qty, Sum(Bills.qc_tp) As qc_tp' +
+                '  FROM ' + this.tableName + ' As Bills ' +
+                '  INNER JOIN ( ' +
+                '    SELECT MAX(`times` * ' + timesLen + ' + `order`) As `progress`, `tid`, `lid`, `sid` From ' + this.tableName + whereSql + ' GROUP BY `lid`, `sid`' +
+                '  ) As MaxFilter ' +
+                '  ON (Bills.times * ' + timesLen + ' + `order`) = MaxFilter.progress And Bills.tid = MaxFilter.tid And Bills.lid = MaxFilter.lid And Bills.`sid` = MaxFilter.`sid`';
+            const result = await this.db.query(sql);
             return result;
         }