Prechádzať zdrojové kódy

实时更新tp_data

ellisran 1 rok pred
rodič
commit
420d6c7639

+ 2 - 2
app/service/material.js

@@ -92,7 +92,7 @@ module.exports = app => {
             if (materials.length > 0 && materials[0].status !== auditConst.status.checked) {
                 const material = materials[0];
                 const curAuditor = await this.ctx.service.materialAudit.getCurAuditor(material.id, material.times);
-                const isActive = curAuditor ? curAuditor.id === this.ctx.session.sessionUser.accountId : material.user_id === this.ctx.session.sessionUser.accountId;
+                const isActive = curAuditor ? curAuditor.aid === this.ctx.session.sessionUser.accountId : material.user_id === this.ctx.session.sessionUser.accountId;
                 if (isActive) {
                     material.curTimes = material.times;
                     material.curOrder = curAuditor ? curAuditor.order : 0;
@@ -116,7 +116,7 @@ module.exports = app => {
             if (materials.length > 0 && materials[0].status !== auditConst.status.checked) {
                 const material = materials[0];
                 const curAuditor = await this.ctx.service.materialAudit.getCurAuditor(material.id, material.times);
-                const isActive = curAuditor ? curAuditor.id === this.ctx.session.sessionUser.accountId : material.user_id === this.ctx.session.sessionUser.accountId;
+                const isActive = curAuditor ? curAuditor.aid === this.ctx.session.sessionUser.accountId : material.user_id === this.ctx.session.sessionUser.accountId;
                 if (isActive) {
                     material.curTimes = material.times;
                     material.curOrder = curAuditor ? curAuditor.order : 0;

+ 9 - 10
app/service/material_audit.js

@@ -91,7 +91,7 @@ module.exports = app => {
          * @return {Promise<*>}
          */
         async getCurAuditor(materialId, times = 1) {
-            const sql = 'SELECT la.`aid`, pa.`name`, pa.`company`, pa.`role`, pa.`mobile`, pa.`telephone`, la.`times`, la.`order`, la.`status`, la.`opinion`, la.`begin_time`, la.`end_time` ' +
+            const sql = 'SELECT la.`id`, la.`aid`, pa.`name`, pa.`company`, pa.`role`, pa.`mobile`, pa.`telephone`, la.`times`, la.`order`, la.`status`, la.`opinion`, la.`begin_time`, la.`end_time` ' +
                 '  FROM ?? AS la Left Join ?? AS pa On la.`aid` = pa.`id` ' +
                 '  WHERE la.`mid` = ? and la.`status` = ? and la.`times` = ?';
             const sqlParam = [this.tableName, this.ctx.service.projectAccount.tableName, materialId, auditConst.status.checking, times];
@@ -204,8 +204,8 @@ module.exports = app => {
             return true;
         }
 
-        async getTpData(materialId) {
-            const materialInfo = await this.ctx.service.material.getDataById(materialId);
+        async getTpData(transaction, materialId) {
+            const materialInfo = await transaction.get(this.ctx.service.material.tableName, { id: materialId });
             const tp_data = {
                 m_tp: materialInfo.m_tp !== null ? this.ctx.helper.round(materialInfo.m_tp, this.ctx.material.decimal.tp) : null,
                 tax_tp: materialInfo.material_tax ? (materialInfo.m_tax_tp ? materialInfo.m_tax_tp : materialInfo.m_tp) :
@@ -216,7 +216,7 @@ module.exports = app => {
             tp_data.total_tp = this.ctx.helper.add(tp_data.m_tp, tp_data.ex_tp);
             tp_data.total_tax_tp = !materialInfo.material_tax ? this.ctx.helper.add(tp_data.tax_tp, tp_data.ex_tax_tp) : tp_data.ex_tax_tp;
             if (materialInfo.is_stage_self) {
-                const materialStageList = await this.ctx.service.materialStage.getAllDataByCondition({ where: { mid: materialId }});
+                const materialStageList = await transaction.select(this.ctx.service.materialStage.tableName, { where: { mid: materialId } });
                 const stage_tp = [];
                 for (const ms of materialStageList) {
                     stage_tp.push({
@@ -250,8 +250,8 @@ module.exports = app => {
             }
 
             const transaction = await this.db.beginTransaction();
-            const tp_data = await this.getTpData(materialId);
             try {
+                const tp_data = await this.getTpData(transaction, materialId);
                 await transaction.update(this.tableName, { id: audit.id, status: auditConst.status.checking, begin_time: new Date() });
                 await transaction.update(this.ctx.service.material.tableName, {
                     id: materialId, status: auditConst.status.checking, tp_data: JSON.stringify(tp_data),
@@ -315,11 +315,10 @@ module.exports = app => {
 
             const nextAudit = await this.getDataByCondition({ mid: materialId, times, order: audit.order + 1 });
 
-            // 获取当前总金额及独立单价期的金额,添加到tp_data中,报表使用
-            const tp_data = await this.getTpData(materialId);
-
             const transaction = await this.db.beginTransaction();
             try {
+                // 获取当前总金额及独立单价期的金额,添加到tp_data中,报表使用
+                const tp_data = await this.getTpData(transaction, materialId);
                 await transaction.update(this.tableName, { id: audit.id, status: checkData.checkType, opinion: checkData.opinion, end_time: time, tp_data: JSON.stringify(tp_data) });
 
                 // 获取推送必要信息
@@ -500,8 +499,8 @@ module.exports = app => {
                 order++;
             }
             const transaction = await this.db.beginTransaction();
-            const tp_data = await this.getTpData(materialId);
             try {
+                const tp_data = await this.getTpData(transaction, materialId);
                 await transaction.update(this.tableName, { id: audit.id, status: checkData.checkType, opinion: checkData.opinion, end_time: time, tp_data: JSON.stringify(tp_data), });
                 // 添加到消息推送表
                 const noticeContent = await this.getNoticeContent(pid, audit.tid, materialId, audit.aid, checkData.opinion);
@@ -596,8 +595,8 @@ module.exports = app => {
             const preAuditor = auditors2[auditorIndex - 1];
             const noticeContent = await this.getNoticeContent(pid, audit.tid, materialId, audit.aid, checkData.opinion);
             const transaction = await this.db.beginTransaction();
-            const tp_data = await this.getTpData(materialId);
             try {
+                const tp_data = await this.getTpData(transaction, materialId);
                 // 添加到消息推送表
                 const records = [{ pid, type: pushType.material, uid: this.ctx.material.user_id, status: auditConst.status.checkNoPre, content: noticeContent }];
                 auditors2.forEach(audit => {

+ 15 - 1
app/service/material_list.js

@@ -290,7 +290,21 @@ module.exports = app => {
                 m_tp: tp.total_price,
                 m_tax_tp: tp.tax_total_price,
             };
-            return await transaction.update(this.ctx.service.material.tableName, updateData2);
+            const result = await transaction.update(this.ctx.service.material.tableName, updateData2);
+            // 找出当前人并更新tp_data
+            const tp_data = await this.ctx.service.materialAudit.getTpData(transaction, this.ctx.material.id);
+            if (this.ctx.material.status === auditConst.status.uncheck || this.ctx.material.status === auditConst.status.checkNo) {
+                await transaction.update(this.ctx.service.material.tableName, {
+                    id: this.ctx.material.id,
+                    tp_data: JSON.stringify(tp_data),
+                });
+            } else if (this.ctx.material.curAuditor) {
+                await transaction.update(this.ctx.service.materialAudit.tableName, {
+                    id: this.ctx.material.curAuditor.id,
+                    tp_data: JSON.stringify(tp_data),
+                });
+            }
+            return result;
         }
 
         /**

+ 1 - 1
app/service/payment_detail.js

@@ -25,7 +25,7 @@ module.exports = app => {
             if (details.length > 0 && details[0].status !== auditConst.status.checked) {
                 const detail = details[0];
                 const curAuditor = await this.ctx.service.paymentDetailAudit.getCurAuditor(detail.id, detail.times);
-                const isActive = curAuditor ? curAuditor.id === this.ctx.session.sessionUser.accountId : detail.uid === this.ctx.session.sessionUser.accountId;
+                const isActive = curAuditor ? curAuditor.aid === this.ctx.session.sessionUser.accountId : detail.uid === this.ctx.session.sessionUser.accountId;
                 if (isActive) {
                     detail.curTimes = detail.times;
                     detail.curOrder = curAuditor ? curAuditor.order : 0;