ソースを参照

关联标段把用户表也同步到项目中

ellisran 5 ヶ月 前
コミット
f5632c964b
1 ファイル変更65 行追加0 行削除
  1. 65 0
      app/service/tender.js

+ 65 - 0
app/service/tender.js

@@ -708,6 +708,71 @@ module.exports = app => {
                 await conn.updateRows(this.tableName, updateTenders);
                 await conn.update(this.ctx.service.subProject.tableName, { id: subProject.id, rela_tender: this._.uniq(orgRelaTenderId).join(',') });
                 await conn.update(this.ctx.service.budget.tableName, { id: subProject.budget_id, rela_tender: this._.uniq(orgRelaTenderId).join(',') });
+                // 需要把所有审批人也迁移至项目下
+                const subProjPermissionAudits = await this.ctx.service.subProjPermission.getAllDataByCondition({ where: { spid } });
+                const hadUids = this._.map(subProjPermissionAudits, 'uid');
+                const newUids = this._.cloneDeep(hadUids) || [];
+                console.log(tids);
+                console.log(tids.join(','));
+                const stageAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const stageAuditParams = [this.ctx.service.stageAudit.tableName];
+                const stageResult = await conn.query(stageAuditsSql, stageAuditParams);
+                newUids.push(...this._.map(stageResult, 'aid'));
+                const ledgerAuditsSql = `SELECT audit_id FROM ?? WHERE tender_id in (${tids.join(',')}) ${newUids.length > 0 ? ` AND audit_id NOT IN (${newUids.join(',')})` : ''} GROUP BY audit_id`;
+                const ledgerAuditParams = [this.ctx.service.ledgerAudit.tableName];
+                const ledgerResult = await conn.query(ledgerAuditsSql, ledgerAuditParams);
+                newUids.push(...this._.map(ledgerResult, 'audit_id'));
+                const auditAssAuditsSql = `SELECT ass_user_id FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND ass_user_id NOT IN (${newUids.join(',')})` : ''} GROUP BY ass_user_id`;
+                const auditAssAuditParams = [this.ctx.service.auditAss.tableName];
+                const auditAssResult = await conn.query(auditAssAuditsSql, auditAssAuditParams);
+                newUids.push(...this._.map(auditAssResult, 'ass_audit_id'));
+                const settleAuditsSql = `SELECT audit_id FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND audit_id NOT IN (${newUids.join(',')})` : ''} GROUP BY audit_id`;
+                const settleAuditParams = [this.ctx.service.settleAudit.tableName];
+                const settleResult = await conn.query(settleAuditsSql, settleAuditParams);
+                newUids.push(...this._.map(settleResult, 'audit_id'));
+                const changeAuditsSql = `SELECT uid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND uid NOT IN (${newUids.join(',')})` : ''} GROUP BY uid`;
+                const changeAuditParams = [this.ctx.service.changeAudit.tableName];
+                const changeResult = await conn.query(changeAuditsSql, changeAuditParams);
+                newUids.push(...this._.map(changeResult, 'uid'));
+                const changeApplyAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const changeApplyAuditParams = [this.ctx.service.changeApplyAudit.tableName];
+                const changeApplyResult = await conn.query(changeApplyAuditsSql, changeApplyAuditParams);
+                newUids.push(...this._.map(changeApplyResult, 'aid'));
+                const changeProjectAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const changeProjectAuditParams = [this.ctx.service.changeProjectAudit.tableName];
+                const changeProjectResult = await conn.query(changeProjectAuditsSql, changeProjectAuditParams);
+                newUids.push(...this._.map(changeProjectResult, 'aid'));
+                const changeProjectXsAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const changeProjectXsAuditParams = [this.ctx.service.changeProjectXsAudit.tableName];
+                const changeProjectXsResult = await conn.query(changeProjectXsAuditsSql, changeProjectXsAuditParams);
+                newUids.push(...this._.map(changeProjectXsResult, 'aid'));
+                const changePlanAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const changePlanAuditParams = [this.ctx.service.changePlanAudit.tableName];
+                const changePlanResult = await conn.query(changePlanAuditsSql, changePlanAuditParams);
+                newUids.push(...this._.map(changePlanResult, 'aid'));
+                const reviseAuditsSql = `SELECT audit_id FROM ?? WHERE tender_id in (${tids.join(',')}) ${newUids.length > 0 ? ` AND audit_id NOT IN (${newUids.join(',')})` : ''} GROUP BY audit_id`;
+                const reviseAuditParams = [this.ctx.service.reviseAudit.tableName];
+                const reviseResult = await conn.query(reviseAuditsSql, reviseAuditParams);
+                newUids.push(...this._.map(reviseResult, 'audit_id'));
+                const materialAuditsSql = `SELECT aid FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND aid NOT IN (${newUids.join(',')})` : ''} GROUP BY aid`;
+                const materialAuditParams = [this.ctx.service.materialAudit.tableName];
+                const materialResult = await conn.query(materialAuditsSql, materialAuditParams);
+                newUids.push(...this._.map(materialResult, 'aid'));
+                const advanceAuditsSql = `SELECT audit_id FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND audit_id NOT IN (${newUids.join(',')})` : ''} GROUP BY audit_id`;
+                const advanceAuditParams = [this.ctx.service.advanceAudit.tableName];
+                const advanceResult = await conn.query(advanceAuditsSql, advanceAuditParams);
+                newUids.push(...this._.map(advanceResult, 'audit_id'));
+                const tenderTouristSql = `SELECT user_id FROM ?? WHERE tid in (${tids.join(',')}) ${newUids.length > 0 ? ` AND user_id NOT IN (${newUids.join(',')})` : ''} GROUP BY user_id`;
+                const tenderTouristParams = [this.ctx.service.tenderTourist.tableName];
+                const tenderTouristResult = await conn.query(tenderTouristSql, tenderTouristParams);
+                newUids.push(...this._.map(tenderTouristResult, 'user_id'));
+                const diffUids = this._.difference(newUids, hadUids);
+                if (diffUids.length > 0) {
+                    const insertData = diffUids.map(x => {
+                        return { id: this.uuid.v4(), spid: subProject.id, pid: subProject.project_id, uid: x };
+                    });
+                    await conn.insert(this.ctx.service.subProjPermission.tableName, insertData);
+                }
                 await conn.commit();
                 return true;
             } catch (error) {