Explorar o código

Merge branch 'dev' of http://192.168.1.41:3000/maixinrong/Calculation into dev

Tony Kang hai 1 ano
pai
achega
70e92cdc5e

+ 4 - 4
app/service/change.js

@@ -908,7 +908,7 @@ module.exports = app => {
                     await this.ctx.service.changeAuditList.updateToLedger(this.transaction, changeData.tid, changeData.cid);
 
                     // 审批通过 - 检查三方特殊推送
-                    await this.ctx.service.specMsg.addChangeMsg(transaction, this.ctx.session.sessionProject.id, changeData, pushOperate.change.checked);
+                    await this.ctx.service.specMsg.addChangeMsg(this.transaction, this.ctx.session.sessionProject.id, changeData, pushOperate.change.checked);
 
                     // 添加短信通知-审批通过提醒功能
                     // const mobile_array = [];
@@ -1878,16 +1878,16 @@ module.exports = app => {
             const accountId = this.ctx.session.sessionUser.accountId;
             const auditors = await this.ctx.service.changeAudit.getListOrderByTimes(change.cid, change.times);
             change.cancancel = 0;
-            if (change.status !== status.checked && change.status !== status.uncheck) {
+            if (change.status !== status.checked && change.status !== status.uncheck && change.status !== status.revise) {
                 if (change.status !== status.back) {
                     // 找出当前操作人上一个审批人,包括审批完成的和退回上一个审批人的,同时当前操作人为第一人时,就是则为原报
                     const onAuditor = this._.find(auditors, function(item) {
                         return item.uid === change.curAuditor.uid && item.status === auditStatus.checking;
                     });
 
-                    const preAudit = onAuditor.usort > 1 ? this._.find(auditors, { usort: onAuditor.usort - 1 }) : false;
+                    const preAudit = onAuditor.usort >= 1 ? this._.find(auditors, { usort: onAuditor.usort - 1 }) : false;
                     const preAid = preAudit ? (preAudit.status !== auditStatus.checkAgain ? preAudit.uid : false) : change.uid;
-                    // console.log(onAuditor, preAudit, auditors);
+                    // console.log(onAuditor, preAid);
                     if (onAuditor.uid === preAid && preAudit.status === auditStatus.checkCancel) {
                         return;// 不可以多次撤回
                     } else if (preAid === accountId && (preAid !== change.uid || (preAid === change.uid && preAudit.usite !== 0))) {

+ 9 - 2
app/service/change_audit.js

@@ -978,11 +978,12 @@ module.exports = app => {
 
             const transaction = await this.db.beginTransaction();
             try {
-                const curAudit = await this.getDataByCondition({ cid: change.cid, times: change.times - 1, status: auditConst.auditStatus.back });
+                // const curAudit = await this.getDataByCondition({ cid: change.cid, times: change.times - 1, status: auditConst.auditStatus.back });
+                const curAudit = await this.getAuditorByStatus(change.cid, change.times - 1, auditConst.auditStatus.back);
                 // 整理上一个流程审核人状态更新
                 // 顺移其后审核人流程顺序
                 const sql = 'UPDATE ' + this.tableName + ' SET `usort` = `usort` + 2 WHERE cid = ? AND times = ? AND `usort` > ?';
-                await transaction.query(sql, [change.cid, change.times -1, curAudit.usort]);
+                await transaction.query(sql, [change.cid, change.times - 1, curAudit.usort]);
                 // 当前审批人2次添加至流程中
                 const newAuditors = [];
                 newAuditors.push({
@@ -1024,6 +1025,12 @@ module.exports = app => {
                 throw err;
             }
         }
+
+        async getAuditorByStatus(cid, times, status, transaction= null) {
+            const sql = 'SELECT * FROM ?? WHERE `cid` = ? AND `times` = ? AND `status` = ? ORDER BY `usort` DESC';
+            const sqlParam = [this.tableName, cid, times, status];
+            return transaction ? await transaction.queryOne(sql, sqlParam) : await this.db.queryOne(sql, sqlParam);
+        }
     }
 
     return ChangeAudit;

+ 1 - 1
app/service/change_audit_list.js

@@ -1069,7 +1069,7 @@ module.exports = app => {
         async getPosSum(tid) {
             const sql = 'SELECT mx_id, Sum(qc_qty) AS qc_qty, Sum(qc_tp) AS qc_tp, Sum(qc_minus_qty) AS qc_minus_qty' +
                 '  FROM(' +
-                '    SELECT cal.gcl_id, Sum(cal.checked_amount) AS qc_qty, Sum(cal.checked_price) AS qc_tp, 0 As qc_minus_qty' +
+                '    SELECT cal.mx_id, Sum(cal.checked_amount) AS qc_qty, Sum(cal.checked_price) AS qc_tp, 0 As qc_minus_qty' +
                 `      FROM ${this.tableName} cal LEFT JOIN ${this.ctx.service.change.tableName} c ON cal.cid = c.cid` +
                 '      WHERE c.tid = ? AND c.valid AND c.status = ? AND cal.is_valuation' +
                 '      GROUP BY cal.mx_id' +

+ 5 - 3
app/service/payment_safe_bills.js

@@ -540,13 +540,15 @@ module.exports = app => {
             }
             const conn = await this.db.beginTransaction();
             try {
-                await conn.update(this.ctx.service.paymentDetail.tableName, { id: this.ctx.detail.id, decimal: JSON.stringify(this.ctx.detail.decimal)});
-                if (updateData.length > 0) await conn.update(this.tableName, updateData);
+                await conn.update(this.ctx.service.paymentDetail.tableName, { id: this.ctx.detail.id, bills_decimal: JSON.stringify(this.ctx.detail.decimal)});
+                if (updateData.length > 0) await conn.updateRows(this.tableName, updateData);
                 await conn.commit();
+                return { calc: calcQty || calcUp || calcTp, update: updateData };
             } catch(err) {
                 await conn.rollback();
+                return { calc: false, update: [] };
             }
-            return { calc: calcQty || calcUp || calcTp, update: updateData };
+
         }
     }
 

+ 3 - 3
app/service/rpt_gather_memory.js

@@ -581,7 +581,7 @@ module.exports = app => {
             });
             const billsData = await this.ctx.service.ledger.getData(tender.id);
             const dgnData = await this.ctx.service.stageBillsDgn.getDgnData(tender.id);
-            const changeBillsData = await ctx.service.changeAuditList.getBillsSum(this.ctx.tender.id);
+            const changeBillsData = await this.ctx.service.changeAuditList.getBillsSum(this.ctx.tender.id);
             this.ctx.helper.assignRelaData(billsData, [
                 { data: dgnData, fields: ['deal_dgn_qty1', 'deal_dgn_qty2', 'c_dgn_qty1', 'c_dgn_qty2'], prefix: '', relaId: 'id' },
                 { data: changeBillsData, fields: ['qc_qty', 'qc_tp', 'qc_minus_qty'], prefix: 'due_', relaId: 'gcl_id' },
@@ -594,11 +594,11 @@ module.exports = app => {
                     node.end_contract_qty = helper.add(node.pre_contract_qty, node.contract_qty);
                     node.end_qc_qty = helper.add(node.pre_qc_qty, node.qc_qty);
                     node.end_gather_qty = helper.add(node.pre_gather_qty, node.gather_qty);
-                    node.due_final_qty = ctx.helper.add(node.quantity, node.due_qc_qty);
+                    node.due_final_qty = helper.add(node.quantity, node.due_qc_qty);
                 },
             });
             const posData = await this.ctx.service.pos.getPosData({ tid: tender.id });
-            const changePosData = await ctx.service.changeAuditList.getPosSum(this.ctx.tender.id);
+            const changePosData = await this.ctx.service.changeAuditList.getPosSum(this.ctx.tender.id);
             this.ctx.helper.assignRelaData(posData, [
                 { data: changePosData, fields: ['qc_qty', 'qc_minus_qty'], prefix: 'due_', relaId: 'mx_id' },
             ]);

+ 31 - 4
app/view/payment_safe/modal.ejs

@@ -34,7 +34,7 @@
                                 <div class="input-group-prepend">
                                     <span class="input-group-text">单价</span>
                                 </div>
-                                <input type="number" id="psb-up" class="form-control" value="<%- ctx.detail.decimal.up %>" org="<%- ctx.detail.decimal.up %>" min="0" max="6" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
+                                <input type="number" id="psb-up" class="form-control" value="<%- ctx.detail.decimal.up %>" org="<%- ctx.detail.decimal.up %>" min="0" max="6" maxlength="1" oninput="limitDecimal(this)" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
                             </div>
                         </div>
                         <div class="col-4">
@@ -42,7 +42,7 @@
                                 <div class="input-group-prepend">
                                     <span class="input-group-text">数量</span>
                                 </div>
-                                <input type="number" id="psb-qty" class="form-control" value="<%- ctx.detail.decimal.qty %>" org="<%- ctx.detail.decimal.qty %>" min="0" max="6" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
+                                <input type="number" id="psb-qty" class="form-control" value="<%- ctx.detail.decimal.qty %>" org="<%- ctx.detail.decimal.qty %>" min="0" max="6" maxlength="1" oninput="limitDecimal(this)" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
                             </div>
                         </div>
                         <div class="col-4">
@@ -50,7 +50,7 @@
                                 <div class="input-group-prepend">
                                     <span class="input-group-text">金额</span>
                                 </div>
-                                <input type="number" id="psb-tp" class="form-control" value="<%- ctx.detail.decimal.tp %>" org="<%- ctx.detail.decimal.tp %>" min="0" max="6" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
+                                <input type="number" id="psb-tp" class="form-control" value="<%- ctx.detail.decimal.tp %>" org="<%- ctx.detail.decimal.tp %>" min="0" max="6" maxlength="1" oninput="limitDecimal(this)" <% if (ctx.detail.readOnly) { %>disabled<% } %>>
                             </div>
                         </div>
                     </div>
@@ -64,4 +64,31 @@
             </div>
         </div>
     </div>
-</div>
+</div>
+<script>
+    // 根据Min Max限制Input输入
+    function limitInputMinMax (obj) {
+        if (_.toNumber(obj.value) > _.toNumber(obj.max)) {
+            obj.value = obj.max;
+        }
+        if(_.toNumber(obj.value) < _.toNumber(obj.min)) {
+            obj.value = obj.min;
+        }
+    }
+    // 根据Maxlength限制input输入
+    function limitMaxLength (obj) {
+        if (obj.value.length > obj.maxLength) {
+            obj.value = obj.value.substr(0, obj.maxLength);
+        }
+    }
+    // 根据正则限制输入
+    function limitReg(obj, reg) {
+        obj.value = obj.value.replace(reg, '');
+    }
+    // 小数位数 input 输入限制
+    function limitDecimal(obj) {
+        limitReg(obj, /[^\d]/g);
+        limitMaxLength(obj);
+        limitInputMinMax(obj);
+    }
+</script>

+ 38 - 0
db_script/test_query.js

@@ -0,0 +1,38 @@
+// 计算变更令,正负变更数
+
+const defaultInfo = require('../app/const/tender_info');
+const BaseUtil = require('./baseUtils');
+const querySql = BaseUtil.querySql;
+const ZhCalc = BaseUtil.ZhCalc;
+
+const saveJSON = async function(obj, file) {
+    let defineStr = JSON.stringify(obj, '', '\t');
+    await BaseUtil.saveBufferFile(defineStr, file);
+};
+
+const loadReportArchiveData = async function() {
+    const tid = 4417, sOrder = 2;
+    const stage = await querySql('SELECT * FROM zh_stage where tid = ? and `order` = ?', [tid, sOrder]);
+    const rptArchive = await querySql('SELECT * FROM zh_rpt_archive where stage_id = ?', [stage[0].id]);
+    for (const ra of rptArchive) {
+        ra.content = ra.content ? JSON.parse(ra.content) : [];
+        console.log(BaseUtil.getFileName('rptArchive.json'));
+        await saveJSON(ra, BaseUtil.getFileName('rptArchive.json'));
+    }
+    const rptSign = await querySql('SELECT* FROM zh_rpt_archive_encryption where stage_id = ?', [stage[0].id]);
+    for (const rs of rptSign) {
+        rs.content = rs.content ? JSON.parse(rs.content) : [];
+        await saveJSON(rs, BaseUtil.getFileName('rptSign.json'));
+    }
+};
+
+const doCompleteTest = async function() {
+    try {
+        await loadReportArchiveData();
+    } catch (err) {
+        console.log(err);
+    }
+    BaseUtil.closePool();
+};
+
+doCompleteTest();