|
@@ -9,6 +9,7 @@
|
|
|
*/
|
|
|
const calcFields = ['contract_qty', 'qc_qty'];
|
|
|
const auditConst = require('../const/audit');
|
|
|
+const timesLen = auditConst.stage.timesLen;
|
|
|
|
|
|
module.exports = app => {
|
|
|
class StageBills extends app.BaseService {
|
|
@@ -34,11 +35,11 @@ module.exports = app => {
|
|
|
const lidSql = lid ? ' And lid in (?)' : '';
|
|
|
const sql = 'SELECT * FROM ' + this.tableName + ' As Bills ' +
|
|
|
' INNER JOIN ( ' +
|
|
|
- ' SELECT MAX(`times`) As `times`, MAX(`order`) As `order`, `lid`, `sid` From ' + this.tableName +
|
|
|
+ ' SELECT MAX(`times` * ' + timesLen + ' + `order`) As `progress`, `lid`, `sid` From ' + this.tableName +
|
|
|
' WHERE tid = ? And sid = ?' + lidSql +
|
|
|
' GROUP BY `lid`' +
|
|
|
' ) As MaxFilter ' +
|
|
|
- ' ON Bills.times = MaxFilter.times And Bills.order = MaxFilter.order And Bills.lid = MaxFilter.lid And Bills.`sid` = MaxFilter.`sid`';
|
|
|
+ ' ON (Bills.times * ' + timesLen + ' + `order`) = MaxFilter.progress And Bills.lid = MaxFilter.lid And Bills.`sid` = MaxFilter.`sid`';
|
|
|
const sqlParam = [tid, sid];
|
|
|
if (!lid) {
|
|
|
return await this.db.query(sql, sqlParam);
|
|
@@ -64,11 +65,11 @@ module.exports = app => {
|
|
|
const lidSql = lid ? ' And Bills.lid in (?)' : '';
|
|
|
const sql = 'SELECT * FROM ' + this.tableName + ' As Bills ' +
|
|
|
' INNER JOIN ( ' +
|
|
|
- ' SELECT MAX(`times`) As `times`, MAX(`order`) As `order`, `lid` From ' + this.tableName +
|
|
|
+ ' SELECT MAX(`times` * ' + timesLen + ' + `order`) As `progress`, `lid` From ' + this.tableName +
|
|
|
' WHERE `times` < ? OR (`times` = ? AND `order` <= ?)' +
|
|
|
' GROUP BY `lid`' +
|
|
|
' ) As MaxFilter ' +
|
|
|
- ' ON Bills.times = MaxFilter.times And Bills.order = MaxFilter.order And Bills.lid = MaxFilter.lid' +
|
|
|
+ ' ON (Bills.times * ' + timesLen + ' + `order`) = MaxFilter.progress And Bills.lid = MaxFilter.lid' +
|
|
|
' WHERE Bills.tid = ? And Bills.sid = ?' + lidSql;
|
|
|
const sqlParam = [times, times, order, tid, sid];
|
|
|
if (!lid) {
|
|
@@ -240,11 +241,11 @@ module.exports = app => {
|
|
|
async getSumTotalPrice(stage) {
|
|
|
const sql = 'SELECT Sum(`contract_tp`) As `contract_tp`, Sum(`qc_tp`) As `qc_tp` FROM ' + this.tableName + ' As Bills ' +
|
|
|
' INNER JOIN ( ' +
|
|
|
- ' SELECT MAX(`times`) As `times`, MAX(`order`) As `order`, `lid` From ' + this.tableName +
|
|
|
+ ' SELECT MAX(`times` * ' + timesLen + ' + `order`) As `flow`, `lid` From ' + this.tableName +
|
|
|
' WHERE `times` <= ? AND `order` <= ?' +
|
|
|
' GROUP BY `lid`' +
|
|
|
' ) As MaxFilter ' +
|
|
|
- ' ON Bills.times = MaxFilter.times And Bills.order = MaxFilter.order And Bills.lid = MaxFilter.lid' +
|
|
|
+ ' ON (Bills.times * ' + timesLen + ' + `order`) = MaxFilter.flow And Bills.lid = MaxFilter.lid' +
|
|
|
' WHERE Bills.sid = ?';
|
|
|
const sqlParam = [stage.curTimes, stage.curOrder, stage.id];
|
|
|
const result = await this.db.queryOne(sql, sqlParam);
|
|
@@ -254,11 +255,11 @@ module.exports = app => {
|
|
|
async getSumTotalPriceFilter(stage, operate, filter) {
|
|
|
const sql = 'SELECT Sum(`contract_tp`) As `contract_tp`, Sum(`qc_tp`) As `qc_tp` FROM ( ' + this.tableName + ' As Bills ' +
|
|
|
' INNER JOIN ( ' +
|
|
|
- ' SELECT MAX(`times`) As `times`, MAX(`order`) As `order`, `lid` From ' + this.tableName +
|
|
|
+ ' SELECT MAX(`times` * ' + timesLen + ' + `order`) As `flow`, `lid` From ' + this.tableName +
|
|
|
' WHERE `times` <= ? AND `order` <= ?' +
|
|
|
' GROUP BY `lid`' +
|
|
|
' ) As MaxFilter ' +
|
|
|
- ' ON Bills.times = MaxFilter.times And Bills.order = MaxFilter.order And Bills.lid = MaxFilter.lid, ' +
|
|
|
+ ' ON (Bills.times * ' + timesLen + ' + `order`) = MaxFilter.flow And Bills.lid = MaxFilter.lid, ' +
|
|
|
' ' + this.ctx.service.ledger.tableName + ' As Ledger ) ' +
|
|
|
' WHERE Bills.sid = ? AND Bills.lid = Ledger.id And Ledger.b_code ' + operate + ' ?';
|
|
|
const sqlParam = [stage.times, stage.curAuditor ? stage.curAuditor.order : 0, stage.id, filter];
|