|
@@ -177,19 +177,60 @@ module.exports = app => {
|
|
const material = await this.db.get(this.ctx.service.material.tableName, { tid: this.ctx.tender.id, order: m });
|
|
const material = await this.db.get(this.ctx.service.material.tableName, { tid: this.ctx.tender.id, order: m });
|
|
if (!material) continue;
|
|
if (!material) continue;
|
|
|
|
|
|
- const prefix = 'm_' + material.order + '_';
|
|
|
|
- calcPrefix.push(prefix);
|
|
|
|
- const defaultData = {};
|
|
|
|
- defaultData[prefix + 'order'] = material.order;
|
|
|
|
-
|
|
|
|
- const curMaterial = material.status === auditConst.material.status.checked
|
|
|
|
- ? await this.ctx.service.materialBillsHistory.getAllDataByCondition({ where: { mid: material.id } })
|
|
|
|
- : await this.ctx.service.materialBills.getAllDataByCondition({ where: { tid }});
|
|
|
|
- const relaId = material.status === auditConst.material.status.checked ? 'mb_id' : 'id';
|
|
|
|
-
|
|
|
|
- this.ctx.helper.assignRelaData(materialData, [
|
|
|
|
- {data: curMaterial, fields, prefix: prefix, relaId, defaultData: defaultData}
|
|
|
|
- ]);
|
|
|
|
|
|
+ if (material.is_stage_self) {
|
|
|
|
+ let curMaterial = [];
|
|
|
|
+ if (material.status !== auditConst.material.status.checked) {
|
|
|
|
+ const sql = 'SELECT msb.id, msb.tid, msb.mid, msb.ms_id, ms.sid, ms.`order` as s_order, mb.order, mb.t_type, mb.code, mb.name, mb.unit, mb.spec, mb.m_type, mb.in_time, msb.mb_id, ' +
|
|
|
|
+ ' msb.quantity, mb.expr,' +
|
|
|
|
+ ' mb.basic_price, mb.basic_times, ' +
|
|
|
|
+ ' msb.msg_tp, msb.msg_times, msb.msg_spread, mb.m_up_risk, mb.m_down_risk, msb.m_spread, msb.m_tp, mb.pre_tp, msb.m_tax_tp, mb.tax_pre_tp, mb.origin, ' +
|
|
|
|
+ ' msb.remark, msb.is_summary, mb.m_tax, mb.in_time, mb.origin' +
|
|
|
|
+ ` FROM ${this.ctx.service.materialStageBills.tableName} msb` +
|
|
|
|
+ ` LEFT JOIN ${this.ctx.service.materialBills.tableName} mb ON msb.mb_id = mb.id` +
|
|
|
|
+ ' LEFT JOIN ' + this.ctx.service.materialStage.tableName + ' ms ON msb.ms_id = ms.id ' +
|
|
|
|
+ ` WHERE msb.mid = ?` +
|
|
|
|
+ ' ORDER By msb.ms_id, mb.order';
|
|
|
|
+ curMaterial = await this.ctx.app.mysql.query(sql, [material.id]);
|
|
|
|
+ } else {
|
|
|
|
+ const sql = 'SELECT msb.id, msb.tid, msb.mid, msb.ms_id, ms.sid, ms.`order` as s_order, mb.order, mb.t_type, mb.code, mb.name, mb.unit, mb.spec, mb.m_type, mb.in_time, msb.mb_id,' +
|
|
|
|
+ ' msb.quantity, mbh.expr,' +
|
|
|
|
+ ' mb.basic_price, mb.basic_times, ' +
|
|
|
|
+ ' msb.msg_tp, msb.msg_times, msb.msg_spread, mbh.m_up_risk, mbh.m_down_risk, msb.m_spread, msb.m_tp, mbh.pre_tp, msb.m_tax_tp, mbh.tax_pre_tp, mbh.origin, ' +
|
|
|
|
+ ' msb.remark, msb.is_summary, mbh.m_tax, mb.in_time, mbh.origin' +
|
|
|
|
+ ` FROM ${this.ctx.service.materialStageBills.tableName} msb` +
|
|
|
|
+ ' LEFT JOIN ' + this.ctx.service.materialBillsHistory.tableName + ' mbh ON msb.mb_id = mbh.mb_id AND msb.mid = mbh.mid' +
|
|
|
|
+ ' LEFT JOIN ' + this.ctx.service.materialBills.tableName + ' mb ON msb.mb_id = mb.id ' +
|
|
|
|
+ ' LEFT JOIN ' + this.ctx.service.materialStage.tableName + ' ms ON msb.ms_id = ms.id ' +
|
|
|
|
+ ' WHERE msb.mid = ?'+
|
|
|
|
+ ' ORDER By msb.ms_id, mb.order';
|
|
|
|
+ curMaterial = await this.ctx.app.mysql.query(sql, [material.id]);
|
|
|
|
+ }
|
|
|
|
+ const stageId = material.stage_id.split(',');
|
|
|
|
+ materialData.forEach(x => { return x['m_' + material.order + '_' + 'stageId'] = stageId });
|
|
|
|
+ for (const sid of stageId) {
|
|
|
|
+ const prefix = 'm_' + material.order + '_' + `s${sid}_`;
|
|
|
|
+ calcPrefix.push(prefix);
|
|
|
|
+ const defaultData = {};
|
|
|
|
+ defaultData[prefix + 'order'] = material.order;
|
|
|
|
+ const sidInt = parseInt(sid);
|
|
|
|
+ const curStageMaterial = curMaterial.filter(x => { return x.sid === sidInt; });
|
|
|
|
+ this.ctx.helper.assignRelaData(materialData, [
|
|
|
|
+ {data: curStageMaterial, fields, prefix: prefix, relaId: 'mb_id', defaultData: defaultData}
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ const prefix = 'm_' + material.order + '_';
|
|
|
|
+ calcPrefix.push(prefix);
|
|
|
|
+ const defaultData = {};
|
|
|
|
+ defaultData[prefix + 'order'] = material.order;
|
|
|
|
+ const curMaterial = material.status === auditConst.material.status.checked
|
|
|
|
+ ? await this.ctx.service.materialBillsHistory.getAllDataByCondition({ where: { mid: material.id } })
|
|
|
|
+ : await this.ctx.service.materialBills.getAllDataByCondition({ where: { tid }});
|
|
|
|
+ const relaId = material.status === auditConst.material.status.checked ? 'mb_id' : 'id';
|
|
|
|
+ this.ctx.helper.assignRelaData(materialData, [
|
|
|
|
+ {data: curMaterial, fields, prefix: prefix, relaId, defaultData: defaultData}
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
return materialData;
|
|
return materialData;
|