浏览代码

归档计量期筛选

ellisran 11 月之前
父节点
当前提交
b37e77f652
共有 3 个文件被更改,包括 24 次插入5 次删除
  1. 3 1
      app/controller/report_archive_controller.js
  2. 11 4
      app/service/rpt_archive.js
  3. 10 0
      app/service/stage.js

+ 3 - 1
app/controller/report_archive_controller.js

@@ -45,7 +45,9 @@ module.exports = app => {
             let stage_status = -1;
             const treeNodes = await ctx.service.rptTreeNode.getNodesByProjectId([-1, tender.data.project_id]);
             const custTreeNodes = await ctx.service.rptTreeNodeCust.getCustFoldersByUserId(this.ctx.session.sessionUser.accountId);
-            const stageList = await ctx.service.stage.getValidStagesShort(tender.id);
+            const allArchives = await ctx.service.rptArchive.getPrjStgArchiveByBz(ctx.session.sessionProject.id, null, tender.id);
+            // const stageList = await ctx.service.stage.getValidStagesShort(tender.id);
+            const stageList = await ctx.service.stage.getListByArchives(tender.id, ctx.helper._.map(allArchives, 'stage_id'));
             const isAdmin = ctx.session.sessionUser.is_admin;
             //
             // 。。。

+ 11 - 4
app/service/rpt_archive.js

@@ -65,10 +65,17 @@ module.exports = app => {
                 value: prjId,
                 operate: '=',
             });
-            this.sqlBuilder.setAndWhere('stage_id', {
-                value: stgId,
-                operate: '=',
-            });
+            if (stgId === null) {
+                this.sqlBuilder.setAndWhere('business_type', {
+                    value: this.db.escape('stage'),
+                    operate: '=',
+                });
+            } else {
+                this.sqlBuilder.setAndWhere('stage_id', {
+                    value: stgId,
+                    operate: '=',
+                });
+            }
             this.sqlBuilder.setAndWhere('tender_id', {
                 value: tenderId,
                 operate: '=',

+ 10 - 0
app/service/stage.js

@@ -366,6 +366,16 @@ module.exports = app => {
             return await this.db.query(sql, sqlParam);
         }
 
+        async getListByArchives(tid, ids) {
+            if (ids.length === 0) return [];
+            const sql = 'SELECT c.* FROM ?? as c LEFT JOIN (SELECT sid, MAX(end_time) as end_time FROM ?? WHERE ' +
+                'tid = ? AND sid in (' + this.ctx.helper.getInArrStrSqlFilter(ids) + ') GROUP BY sid) as ca ON c.id = ca.sid WHERE' +
+                ' c.tid = ? AND c.id in (' + this.ctx.helper.getInArrStrSqlFilter(ids) + ') AND c.status = ? ORDER BY c.order ASC';
+            const params = [this.tableName, this.ctx.service.stageAudit.tableName, tid, tid, auditConst.stage.status.checked];
+            const list = await this.db.query(sql, params);
+            return list;
+        }
+
         /**
          * 获取某一期信息(报表用)
          * @param stageId