فهرست منبع

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

TonyKang 4 سال پیش
والد
کامیت
d67837dd17

+ 1 - 0
app/const/tender_info.js

@@ -158,6 +158,7 @@ const defaultInfo = {
     ledger_check: {
         same_code: true,
         sibling: true,
+        over: true,
     }
 };
 

+ 7 - 15
app/controller/ledger_controller.js

@@ -472,26 +472,18 @@ module.exports = app => {
                     ? await ctx.service.pos.getPosData({ tid: ctx.tender.id }) : [];
 
                 const checkDataModel = require('../lib/ledger').checkData;
-                const checkData = new checkDataModel(ctx);
+                const checkData = new checkDataModel(ctx, measureType);
                 checkData.loadData(ledgerData, posData);
-                const sameCodeError = ctx.tender.info.ledger_check.same_code ? checkData.checkSameCode() : [];
-                const siblingError = ctx.tender.info.ledger_check.sibling ? checkData.checkSibling() : [];
 
-                const qtyData = ctx.helper.checkBillsWithPos(ledgerData, posData,
-                    ['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
-                qtyData.error.forEach(x => { x.errorType = 'qty'; });
-                const tpData = ctx.helper.checkBillsTp(ledgerData, [
+                ctx.tender.info.ledger_check.same_code && checkData.checkSameCode();
+                ctx.tender.info.ledger_check.sibling && checkData.checkSibling();
+
+                checkData.checkBillsQty(['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
+                checkData.checkBillsTp([
                     {qty: 'sgfh_qty', tp: 'sgfh_tp'}, {qty: 'qtcl_qty', tp: 'qtcl_tp'},
                     {qty: 'sjcl_qty', tp: 'sjcl_tp'}, {qty: 'quantity', tp: 'total_price'}
                 ], this.ctx.tender.info.decimal);
-                tpData.error.forEach(x => { x.errorType = 'tp'; });
-                ctx.body = { err: 0, msg: '', data: {
-                    error: [...qtyData.error, ...tpData.error, ...sameCodeError, ...siblingError],
-                    source: {
-                        bills: [...qtyData.source.bills, ...tpData.source.bills],
-                        pos: [...qtyData.source.pos, ...tpData.source.pos],
-                    },
-                }};
+                ctx.body = { err: 0, msg: '', data: checkData.checkResult };
             } catch (err) {
                 this.log(err);
                 ctx.body = this.ajaxErrorBody(err, '检查数据错误');

+ 8 - 18
app/controller/revise_controller.js

@@ -460,27 +460,17 @@ module.exports = app => {
                 const revisePos = await ctx.service.revisePos.getData(ctx.tender.id);
 
                 const checkDataModel = require('../lib/ledger').checkData;
-                const checkData = new checkDataModel(ctx);
-                checkData.loadData(reviseBills, revisePos);
-                const sameCodeError = ctx.tender.info.ledger_check.same_code ? checkData.checkSameCode() : [];
-                const siblingError = ctx.tender.info.ledger_check.sibling ? checkData.checkSibling() : [];
-
-                const qtyData = ctx.helper.checkBillsWithPos(reviseBills, revisePos,
-                    ['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
-                qtyData.error.forEach(x => { x.errorType = 'qty'; });
-                const tpData = ctx.helper.checkBillsTp(reviseBills, [
+                const reviseCheck = new checkDataModel(ctx, measureType);
+                reviseCheck.loadData(reviseBills, revisePos);
+                ctx.tender.info.ledger_check.same_code && reviseCheck.checkSameCode();
+                ctx.tender.info.ledger_check.sibling && reviseCheck.checkSibling();
+
+                reviseCheck.checkBillsQty(['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
+                reviseCheck.checkBillsTp([
                     {qty: 'sgfh_qty', tp: 'sgfh_tp'}, {qty: 'qtcl_qty', tp: 'qtcl_tp'},
                     {qty: 'sjcl_qty', tp: 'sjcl_tp'}, {qty: 'quantity', tp: 'total_price'}
                 ], this.ctx.tender.info.decimal);
-                tpData.error.forEach(x => { x.errorType = 'tp'; });
-                ctx.body = { err: 0, msg: '', data: {
-                        error: [...qtyData.error, ...tpData.error, ...sameCodeError, ...siblingError],
-                        source: {
-                            bills: [...qtyData.source.bills, ...tpData.source.bills],
-                            pos: [...qtyData.source.pos, ...tpData.source.pos],
-                        },
-                    }
-                };
+                ctx.body = { err: 0, msg: '', data: reviseCheck.checkResult };
             } catch (err) {
                 this.log(err);
                 ctx.body = this.ajaxErrorBody(err, '检查数据错误');

+ 6 - 16
app/controller/stage_controller.js

@@ -358,31 +358,21 @@ module.exports = app => {
 
         async check(ctx) {
             try {
-                const projRela = await this.ctx.service.project.getFunRela(this.ctx.session.sessionProject.id);
                 const ledgerData = await this._getStageLedgerData(ctx);
                 const posData = await this._getStagePosData(ctx);
 
                 const checkDataModel = require('../lib/ledger').checkData;
-                const checkData = new checkDataModel(ctx);
+                const checkData = new checkDataModel(ctx, measureType);
                 checkData.loadData(ledgerData, posData);
                 await this.ctx.service.s2bProj.refreshSessionS2b();
-                const check3fResult = checkData.check3fLimit(ctx.tender.data);
+                checkData.check3fLimit(ctx.tender.data);
+                checkData.checkBillsQty(['sgfh_qty', 'qtcl_qty', 'sjcl_qty', 'quantity']);
 
-                const [qtyData, overData] = ctx.helper.checkBillsWithPos2(ledgerData, posData,
-                    ['contract_qty', 'qc_qty'], projRela.banOver, this.ctx.tender.data.measure_type === measureType.tz.value);
-                qtyData.error.forEach(x => { x.errorType = 'qty'; });
-                overData.error.forEach(x => {x.errorType = 'over'});
-                const tpData = ctx.helper.checkBillsTp(ledgerData.filter(x => {return !x.is_tp}), [
+                ctx.tender.info.ledger_check.over && checkData.checkOverRange(['contract_qty', 'qc_qty']);
+                checkData.checkBillsTp([
                     { qty: 'contract_qty', tp: 'contract_tp' }, { qty: 'qc_qty', tp: 'qc_tp' },
                 ], this.ctx.tender.info.decimal);
-                tpData.error.forEach(x => { x.errorType = 'tp'; });
-                ctx.body = { err: 0, msg: '', data: {
-                    error: [...qtyData.error, ...tpData.error, ...overData.error, ...check3fResult.error],
-                    source: {
-                        bills: ctx.helper._.uniqBy([...qtyData.source.bills, ...tpData.source.bills, ...overData.source.bills, ...check3fResult.source.bills], 'id'),
-                        pos: ctx.helper._.uniqBy([...qtyData.source.pos, ...tpData.source.pos, ...overData.source.pos, ...check3fResult.source.pos], 'id'),
-                    },
-                } };
+                ctx.body = { err: 0, msg: '', data: checkData.checkResult };
             } catch (err) {
                 this.log(err);
                 ctx.body = this.ajaxErrorBody(err, '检查数据错误');

+ 6 - 1
app/controller/wap_controller.js

@@ -440,8 +440,13 @@ module.exports = app => {
             try {
                 const tender = ctx.tender.data;
                 ctx.advance.advancePayTotal = ctx.tender.info.deal_param[ advanceConst.typeCol[ctx.advance.type].key + 'Advance'];
+                const times = ctx.advance.status === auditConst.advance.status.checkNo ? ctx.advance.times - 1 : ctx.advance.times;
+                if (ctx.advance.status === auditConst.advance.status.checkNo) {
+                    ctx.advance.curAuditor = await ctx.service.advanceAudit.getAuditorByStatus(ctx.advance.id, ctx.advance.status, times);
+                    ctx.advance.auditors = await ctx.service.advanceAudit.getAuditors(ctx.advance.id, times);
+                }
                 // 获取审批流程中左边列表
-                ctx.advance.auditors2 = await ctx.service.advanceAudit.getAuditGroupByList(ctx.advance.id, ctx.advance.times);
+                ctx.advance.auditors2 = await ctx.service.advanceAudit.getAuditGroupByList(ctx.advance.id, times);
                 const renderData = {
                     tender,
                     advance: ctx.advance,

+ 0 - 165
app/extend/helper.js

@@ -1156,171 +1156,6 @@ module.exports = {
         return request.url.indexOf('/wap/') !== -1;
     },
 
-    getDefaultCheckResult() {
-        return {
-            error: [],
-            source: {
-                bills: [],
-                pos: [],
-            },
-        };
-    },
-
-    checkBillsWithPos(bills, pos, fields) {
-        const result = this.getDefaultCheckResult();
-        for (const b of bills) {
-            const pr = _.remove(pos, { lid: b.id });
-            const checkData = {},
-                calcData = {};
-            if (pr && pr.length > 0) {
-                for (const field of fields) {
-                    checkData[field] = b[field] ? b[field] : 0;
-                }
-                for (const p of pr) {
-                    for (const field of fields) {
-                        calcData[field] = this.add(calcData[field], p[field]);
-                    }
-                }
-                if (!_.isMatch(checkData, calcData)) {
-                    result.error.push({
-                        ledger_id: b.ledger_id,
-                        b_code: b.b_code,
-                        name: b.name,
-                        error: { checkData, calcData },
-                    });
-                    result.source.bills.push(b);
-                    for (const p of pr) {
-                        result.source.pos.push(p);
-                    }
-                }
-            }
-        }
-        return result;
-    },
-
-    checkBillsOverRange(bills, posRange, isTz) {
-        // if (isTz && posRange.length > 0) {
-        //     for (const p of posRange) {
-        //         const end_contract_qty = this.add(p.pre_contract_qty, p.contract_qty);
-        //         if (end_contract_qty > p.quantity) return true;
-        //     }
-        //     return false;
-        // } else {
-        //     const end_qc_qty = this.add(bills.qc_qty, bills.pre_qc_qty);
-        //     const end_qc_tp = this.add(bills.qc_tp, bills.pre_qc_tp);
-        //     const end_gather_qty = this.sum([bills.contract_qty, bills.pre_contract_qty, end_qc_qty]);
-        //     const end_gather_tp = this.sum([bills.contract_tp, bills.pre_contract_tp, end_qc_tp]);
-        //     if (isTz) {
-        //         if (end_gather_qty) {
-        //             return !bills.quantity || Math.abs(end_gather_qty) > Math.abs(this.add(bills.quantity, end_qc_qty));
-        //         } else if (end_gather_tp) {
-        //             return !bills.total_price || Math.abs(end_gather_tp) > Math.abs(this.add(bills.total_price, end_qc_tp));
-        //         }
-        //     } else {
-        //         if (end_gather_qty) {
-        //             return !bills.deal_qty || Math.abs(end_gather_qty) > Math.abs(this.add(bills.deal_qty, end_qc_qty));
-        //         } else if (end_gather_tp) {
-        //             return !bills.deal_tp || Math.abs(end_gather_tp) > Math.abs(this.add(bills.deal_tp, end_qc_tp));
-        //         }
-        //     }
-        // }
-        if (isTz && posRange.length > 0) {
-            if (posRange.length > 0) {
-                for (const p of posRange) {
-                    const end_contract_qty = this.add(p.pre_contract_qty, p.contract_qty);
-                    if (!p.quantity) return !!end_contract_qty;
-                    return p.quantity > 0
-                        ? end_contract_qty > p.quantity
-                        : end_contract_qty < p.quantity || end_contract_qty > 0;
-                }
-                return false;
-            }
-        } else {
-            const end_contract_qty = this.add(bills.contract_qty, bills.pre_contract_qty);
-            const end_contract_tp = this.add(bills.contract_tp, bills.pre_contract_tp);
-            if (bills.is_tp) {
-                const compare_tp = isTz ? bills.total_price : bills.deal_tp;
-                if (!compare_tp) return !!end_contract_tp;
-                return compare_tp >= 0 ? end_contract_tp > compare_tp : end_contract_tp < compare_tp || end_contract_tp > 0;
-            } else {
-                const compare_qty = isTz ? bills.quantity : bills.deal_qty;
-                if (!compare_qty) return !!end_contract_qty;
-                return compare_qty >= 0 ? end_contract_qty > compare_qty : end_contract_qty < compare_qty || end_contract_qty > 0;
-            }
-        }
-
-    },
-
-    checkBillsWithPos2(bills, pos, fields, checkOver, isTz) {
-        const result = this.getDefaultCheckResult(), overResult = this.getDefaultCheckResult();
-        for (const b of bills) {
-            let hasSource = false;
-            const pr = _.remove(pos, { lid: b.id });
-            const checkData = {},
-                calcData = {};
-            if (pr && pr.length > 0) {
-                for (const field of fields) {
-                    checkData[field] = b[field] ? b[field] : 0;
-                }
-                for (const p of pr) {
-                    for (const field of fields) {
-                        calcData[field] = this.add(calcData[field], p[field]);
-                    }
-                }
-                if (!_.isMatch(checkData, calcData)) {
-                    hasSource = true;
-                    result.error.push({
-                        ledger_id: b.ledger_id,
-                        b_code: b.b_code,
-                        name: b.name,
-                        error: { checkData, calcData },
-                    });
-                    result.source.bills.push(b);
-                    for (const p of pr) {
-                        result.source.pos.push(p);
-                    }
-                }
-            }
-            if (checkOver && this.checkBillsOverRange(b, pr, isTz)) {
-                overResult.error.push({
-                    ledger_id: b.ledger_id,
-                    b_code: b.b_code,
-                    name: b.name,
-                });
-                if (!hasSource) {
-                    overResult.source.bills.push(b);
-                    for (const p of pr) {
-                        overResult.source.pos.push(p);
-                    }
-                }
-            }
-        }
-        return [result, overResult];
-    },
-
-    checkBillsTp(bills, field, decimal) {
-        const result = this.getDefaultCheckResult();
-        for (const b of bills) {
-            if (!b.check_calc) continue;
-
-            const checkData = {}, calcData = {};
-            for (const f of field) {
-                checkData[f.tp] = b[f.tp] || 0;
-                calcData[f.tp] = this.mul(b.unit_price, b[f.qty], decimal.tp) || 0;
-            }
-            if (!this._.isMatch(checkData, calcData)) {
-                result.error.push({
-                    ledger_id: b.ledger_id,
-                    b_code: b.b_code,
-                    name: b.name,
-                    error: { checkData, calcData },
-                });
-                result.source.bills.push(b);
-            }
-        }
-        return result;
-    },
-
     check18MainCode(code) {
         return /^([0-9]([0-9][0-9])*)?(GD[0-9]{3}([0-9][0-9])*)?$/.test(code);
     },

+ 149 - 23
app/lib/ledger.js

@@ -573,10 +573,18 @@ class pos {
 }
 
 class checkData {
-    constructor(ctx) {
+    constructor(ctx, measureType) {
         this.ctx = ctx;
         this.checkBills = new billsTree(ctx, { id: 'ledger_id', pid: 'ledger_pid', order: 'order', level: 'level', rootId: -1 });
         this.checkPos = new pos({ id: 'id', ledgerId: 'lid' });
+        this.checkResult = {
+            error: [],
+            source: {
+                bills: [],
+                pos: [],
+            },
+        };
+        this.measureType = measureType;
     }
 
     _check3f(data, limit, ratio) {
@@ -630,7 +638,7 @@ class checkData {
         }
     };
 
-    _checkLeafBills3fLimit(checkType, bills, result, checkInfo) {
+    _checkLeafBills3fLimit(checkType, bills, checkInfo) {
         const over = [], lost = [];
         const posRange = this.checkPos.getLedgerPos(bills.id);
         if (posRange && posRange.length > 0) {
@@ -666,7 +674,7 @@ class checkData {
         }
         if (over.length + lost.length > 0) {
             for (const o of over) {
-                result.error.push({
+                this.checkResult.error.push({
                     ledger_id: bills.ledger_id,
                     b_code: bills.b_code,
                     name: bills.name,
@@ -674,18 +682,20 @@ class checkData {
                 });
             }
             for (const l of lost) {
-                result.error.push({
+                this.checkResult.error.push({
                     ledger_id: bills.ledger_id,
                     b_code: bills.b_code,
                     name: bills.name,
                     errorType: 's2b_lost_' + l,
                 });
             }
-            result.source.bills.push(bills);
-            if (posRange && posRange.length > 0) result.source.pos.push(...posRange);
+            if (!this.checkResult.source.bills.find(x => {return x.ledger_id === bills.ledger_id})) {
+                this.checkResult.source.bills.push(bills);
+                if (posRange && posRange.length > 0) this.checkResult.source.pos.push(...posRange);
+            }
         }
     }
-    _recursiveCheckBills3fLimit(checkType, bills, result, parentCheckInfo) {
+    _recursiveCheckBills3fLimit(checkType, bills, parentCheckInfo) {
         const checkInfo = this.ctx.helper._.assign({}, parentCheckInfo);
         for (const ct of checkType) {
             if (bills[ct + '_limit'] > 0) {
@@ -694,10 +704,10 @@ class checkData {
         }
         if (bills.children && bills.children.length > 0) {
             for (const c of bills.children) {
-                this._recursiveCheckBills3fLimit(checkType, c, result, checkInfo);
+                this._recursiveCheckBills3fLimit(checkType, c, checkInfo);
             }
         } else {
-            this._checkLeafBills3fLimit(checkType, bills, result, checkInfo);
+            this._checkLeafBills3fLimit(checkType, bills, checkInfo);
         }
     }
 
@@ -707,7 +717,6 @@ class checkData {
     }
 
     checkSibling() {
-        const error = [];
         for (const node of this.checkBills.nodes) {
             if (!node.children || node.children.length === 0) continue;
             let hasXmj, hasGcl;
@@ -715,25 +724,23 @@ class checkData {
                 if (child.b_code) hasXmj = true;
                 if (!child.b_code) hasGcl = true;
             }
-            if (hasXmj && hasGcl) error.push({
+            if (hasXmj && hasGcl) this.checkResult.error.push({
                 ledger_id: node.ledger_id,
                 b_code: node.b_code,
                 name: node.name,
                 errorType: 'sibling',
             });
         }
-        return error;
     }
 
     checkSameCode() {
-        const error = [];
         let xmj = this.checkBills.nodes.filter(x => { return /^((GD*)|G)?[0-9]+/.test(x.code); });
         let check = null;
         while (xmj.length > 0) {
             [check, xmj] = this.ctx.helper._.partition(xmj, x => { return x.code === xmj[0].code; });
             if (check.length > 1) {
                 for (const c of check) {
-                    error.push({
+                    this.checkResult.error.push({
                         ledger_id: c.ledger_id,
                         b_code: c.b_code,
                         name: c.name,
@@ -742,24 +749,143 @@ class checkData {
                 }
             }
         }
-        return error;
     }
 
     check3fLimit(tender) {
-        const result = {
-            error: [],
-            source: {bills: [], pos: []},
-        };
-
         const check = [];
         if (tender.s2b_gxby_limit) check.push('gxby');
         if (tender.s2b_dagl_limit) check.push('dagl');
-        if (check.length === 0) return result;
+        if (check.length === 0) return;
 
         for (const b of this.checkBills.children) {
-            this._recursiveCheckBills3fLimit(check, b, result, {});
+            this._recursiveCheckBills3fLimit(check, b, {});
+        }
+    }
+    checkBillsQty(fields) {
+        for (const b of this.checkBills.nodes) {
+            if (b.children && b.children.length > 0) continue;
+            const pr = this.checkPos.getLedgerPos(b.id);
+            if (!pr || pr.length === 0) continue;
+            const checkData = {},
+                calcData = {};
+            for (const field of fields) {
+                checkData[field] = b[field] ? b[field] : 0;
+            }
+            for (const p of pr) {
+                for (const field of fields) {
+                    calcData[field] = this.ctx.helper.add(calcData[field], p[field]);
+                }
+            }
+            if (!this.ctx.helper._.isMatch(checkData, calcData)) {
+                this.checkResult.error.push({
+                    ledger_id: b.ledger_id,
+                    b_code: b.b_code,
+                    name: b.name,
+                    errorType: 'qty',
+                    error: { checkData, calcData },
+                });
+                if (!this.checkResult.source.bills.find(x => {return x.ledger_id === b.ledger_id})) {
+                    this.checkResult.source.bills.push(b);
+                    for (const p of pr) {
+                        this.checkResult.source.pos.push(p);
+                    }
+                }
+            }
+        }
+    }
+    checkBillsTp(field, decimal) {
+        for (const b of this.checkBills.nodes) {
+            if ((b.children && b.children.length > 0) || !b.check_calc) continue;
+
+            const checkData = {}, calcData = {};
+            for (const f of field) {
+                checkData[f.tp] = b[f.tp] || 0;
+                calcData[f.tp] = this.ctx.helper.mul(b.unit_price, b[f.qty], decimal.tp) || 0;
+            }
+            if (!this.ctx.helper._.isMatch(checkData, calcData)) {
+                this.checkResult.error.push({
+                    ledger_id: b.ledger_id,
+                    b_code: b.b_code,
+                    name: b.name,
+                    errorType: 'tp',
+                    error: { checkData, calcData },
+                });
+                if (!this.checkResult.source.bills.find(x => {return x.ledger_id === b.ledger_id})) {
+                    this.checkResult.source.bills.push(b);
+                }
+            }
+        }
+    }
+    _checkBillsOverRange(bills, posRange, isTz) {
+        // if (isTz && posRange.length > 0) {
+        //     for (const p of posRange) {
+        //         const end_contract_qty = this.add(p.pre_contract_qty, p.contract_qty);
+        //         if (end_contract_qty > p.quantity) return true;
+        //     }
+        //     return false;
+        // } else {
+        //     const end_qc_qty = this.add(bills.qc_qty, bills.pre_qc_qty);
+        //     const end_qc_tp = this.add(bills.qc_tp, bills.pre_qc_tp);
+        //     const end_gather_qty = this.sum([bills.contract_qty, bills.pre_contract_qty, end_qc_qty]);
+        //     const end_gather_tp = this.sum([bills.contract_tp, bills.pre_contract_tp, end_qc_tp]);
+        //     if (isTz) {
+        //         if (end_gather_qty) {
+        //             return !bills.quantity || Math.abs(end_gather_qty) > Math.abs(this.add(bills.quantity, end_qc_qty));
+        //         } else if (end_gather_tp) {
+        //             return !bills.total_price || Math.abs(end_gather_tp) > Math.abs(this.add(bills.total_price, end_qc_tp));
+        //         }
+        //     } else {
+        //         if (end_gather_qty) {
+        //             return !bills.deal_qty || Math.abs(end_gather_qty) > Math.abs(this.add(bills.deal_qty, end_qc_qty));
+        //         } else if (end_gather_tp) {
+        //             return !bills.deal_tp || Math.abs(end_gather_tp) > Math.abs(this.add(bills.deal_tp, end_qc_tp));
+        //         }
+        //     }
+        // }
+        if (isTz && posRange.length > 0) {
+            if (posRange.length > 0) {
+                for (const p of posRange) {
+                    const end_contract_qty = this.ctx.helper.add(p.pre_contract_qty, p.contract_qty);
+                    if (!p.quantity) return !!end_contract_qty;
+                    return p.quantity > 0
+                        ? end_contract_qty > p.quantity
+                        : end_contract_qty < p.quantity || end_contract_qty > 0;
+                }
+                return false;
+            }
+        } else {
+            const end_contract_qty = this.ctx.helper.add(bills.contract_qty, bills.pre_contract_qty);
+            const end_contract_tp = this.ctx.helper.add(bills.contract_tp, bills.pre_contract_tp);
+            if (bills.is_tp) {
+                const compare_tp = isTz ? bills.total_price : bills.deal_tp;
+                if (!compare_tp) return !!end_contract_tp;
+                return compare_tp >= 0 ? end_contract_tp > compare_tp : end_contract_tp < compare_tp || end_contract_tp > 0;
+            } else {
+                const compare_qty = isTz ? bills.quantity : bills.deal_qty;
+                if (!compare_qty) return !!end_contract_qty;
+                return compare_qty >= 0 ? end_contract_qty > compare_qty : end_contract_qty < compare_qty || end_contract_qty > 0;
+            }
+        }
+    }
+    checkOverRange() {
+        const isTz = this.ctx.tender.data.measure_type === this.measureType.tz.value;
+        for (const b of this.checkBills.nodes) {
+            if (b.children && b.children.length > 0) continue;
+            const pr = this.checkPos.getLedgerPos(b.id) || [];
+
+            if (this._checkBillsOverRange(b, pr, isTz)) {
+                this.checkResult.error.push({
+                    ledger_id: b.ledger_id,
+                    b_code: b.b_code,
+                    name: b.name,
+                    errorType: 'over',
+                });
+                if (!this.checkResult.source.bills.find(x => {return x.ledger_id === b.ledger_id})) {
+                    this.checkResult.source.bills.push(b);
+                    if (pr.length > 0) this.checkResult.source.pos.push(...pr);
+                }
+            }
         }
-        return result;
     }
 }
 

+ 151 - 25
app/lib/rptCustomData.js

@@ -8,6 +8,7 @@
  * @version
  */
 const auditConst = require('../const/audit');
+const Ledger = require('./ledger');
 
 /**
  * 季华项目 定制报表
@@ -228,28 +229,24 @@ class jhHelper {
         }
     }
 
-    async _loadStageBillsData(tender, stage, gsDefine, auditors) {
+    async _loadStageBillsData(tender, stage, gsDefine, auditors, filterGcl = true) {
         const helper = this.ctx.helper;
         // 加载截止上期/本期
         let billsData = await this.ctx.service.ledger.getData(tender.id);
-        billsData = billsData.filter(x => { return x.b_code && x.is_leaf });
+        if (filterGcl) billsData = billsData.filter(x => { return x.b_code && x.is_leaf });
         const curStage = await this.ctx.service.stageBills.getLastestStageData(tender.id, stage.id);
         const preStage = stage.order > 1 ? await this.ctx.service.stageBillsFinal.getFinalData(tender, stage.order - 1) : [];
         const loadData = [
-            { data: curStage, fields: ['qc_qty', 'qc_tp'], prefix: '', relaId: 'lid' },
-            { data: preStage, fields: ['qc_qty', 'qc_tp'], prefix: 'pre_', relaId: 'lid' }
+            { data: curStage, fields: this.billsQueryField, prefix: '', relaId: 'lid' },
+            { data: preStage, fields: this.billsQueryField, prefix: 'pre_', relaId: 'lid' }
         ];
         for (const dc of gsDefine.defaultCompare) {
             const auditor = auditors[dc];
+            if (!auditor) continue;
             const auditorStage = await this.ctx.service.stageBills.getAuditorStageData(tender.id, stage.id, auditor.times, auditor.order);
-            loadData.push({ data: auditorStage, fields: ['qc_qty', 'qc_tp'], prefix: `r${dc}_`, relaId: 'lid' });
+            loadData.push({ data: auditorStage, fields: this.billsQueryField, prefix: `r${dc}_`, relaId: 'lid' });
         }
         helper.assignRelaData(billsData, loadData);
-        // 计算截止本期
-        billsData.forEach(x => {
-            x.end_qc_qty = helper.add(x.qc_qty, x.pre_qc_qty);
-            x.end_qc_tp = helper.add(x.qc_tp, x.pre_qc_tp);
-        });
         return billsData;
     }
 
@@ -264,13 +261,11 @@ class jhHelper {
         ];
         for (const dc of gsDefine.defaultCompare) {
             const auditor = auditors[dc];
+            if (!auditor) continue;
             const auditorStage = await this.ctx.service.stagePos.getAuditorStageData2(tender.id, stage.id, auditor.times, auditor.order);
             loadData.push({ data: auditorStage, fields: ['qc_qty'], prefix: `r${dc}_`, relaId: 'pid' });
         }
         helper.assignRelaData(posData, loadData);
-        posData.forEach(x => {
-            x.end_qc_qty = helper.add(x.qc_qty, x.pre_qc_qty);
-        });
         return posData;
     }
 
@@ -287,7 +282,15 @@ class jhHelper {
             times: stage.curTimes, order: 0
         });
         const billsData = await this._loadStageBillsData(tender, stage, gsDefine, auditors);
+        // 计算截止本期
+        billsData.forEach(x => {
+            x.end_qc_qty = helper.add(x.qc_qty, x.pre_qc_qty);
+            x.end_qc_tp = helper.add(x.qc_tp, x.pre_qc_tp);
+        });
         const posData = await this._loadStagePosData(tender, stage, gsDefine, auditors);
+        posData.forEach(x => {
+            x.end_qc_qty = helper.add(x.qc_qty, x.pre_qc_qty);
+        });
         // 创建索引
         const billsIndex = {};
         for (const b of billsData) {
@@ -308,27 +311,111 @@ class jhHelper {
         this._loadChangeDetail(billsIndex, finalChangeData, gsDefine, 'pre_');
         this._generateResult(billsData, gsDefine, tender.info.decimal);
     }
+    async _gatherStageBillsData(tender, stage, gsDefine) {
+        if (!stage) return;
+        const helper = this.ctx.helper;
+
+        await this.ctx.service.stage.doCheckStage(stage);
+
+        const auditors = this.getLastestAuditors(stage.auditors);
+        const user = await this.ctx.service.projectAccount.getDataById(stage.user_id);
+        auditors.unshift({
+            aid: user.id, name: user.name, company: user.company, role: user.role,
+            times: stage.curTimes, order: 0
+        });
+        const billsData = await this._loadStageBillsData(tender, stage, gsDefine, auditors, false);
+        const billsTree = new Ledger.billsTree(this.ctx, {
+            id: 'ledger_id',
+            pid: 'ledger_pid',
+            order: 'order',
+            level: 'level',
+            rootId: -1,
+            keys: ['id', 'ledger_id'],
+            stageId: 'id',
+            calcFields: ['deal_tp', 'total_price', 'contract_tp', 'qc_tp', 'gather_tp', 'pre_contract_tp', 'pre_qc_tp', 'pre_gather_tp'],
+            calc: function (node) {
+                if (node.children && node.children.length === 0) {
+                    node.pre_gather_qty = helper.add(node.pre_contract_qty, node.pre_qc_qty);
+                    node.gather_qty = helper.add(node.contract_qty, node.qc_qty);
+                    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.pre_gather_tp = helper.add(node.pre_contract_tp, node.pre_qc_tp);
+                node.gather_tp = helper.add(node.contract_tp, node.qc_tp);
+                node.end_contract_tp = helper.add(node.pre_contract_tp, node.contract_tp);
+                node.end_qc_tp = helper.add(node.pre_qc_tp, node.qc_tp);
+                node.end_gather_tp = helper.add(node.pre_gather_tp, node.gather_tp);
+                for (const dc of gsDefine.defaultCompare) {
+                    const prefix = `r${dc}_`;
+                    node[prefix + 'gather_qty'] = helper.add(node[prefix + 'contract_qty'], node[prefix + 'qc_qty']);
+                    node[prefix + 'gather_tp'] = helper.add(node[prefix + 'contract_tp'], node[prefix + 'qc_tp']);
+                }
+            }
+        });
+        billsTree.loadDatas(billsData);
+        billsTree.calculateAll();
+
+        this.resultTree.loadGatherTree(billsTree, function (gatherNode, sourceNode) {
+            gatherNode.s_qty = helper.add(gatherNode.s_qty, sourceNode.quantity);
+            gatherNode.s_tp = helper.add(gatherNode.s_tp, sourceNode.total_price);
 
-    async _gatherMonthData(tender, month, defaultCompare) {
+            gatherNode.s_dgn_qty1 = helper.add(gatherNode.s_dgn_qty1, sourceNode.dgn_qty1);
+            gatherNode.s_dgn_qty2 = helper.add(gatherNode.s_dgn_qty2, sourceNode.dgn_qty2);
+
+            gatherNode.s_contract_qty = helper.add(gatherNode.s_contract_qty, sourceNode.contract_qty);
+            gatherNode.s_contract_tp = helper.add(gatherNode.s_contract_tp, sourceNode.contract_tp);
+            gatherNode.s_qc_qty = helper.add(gatherNode.s_qc_qty, sourceNode.qc_qty);
+            gatherNode.s_qc_tp = helper.add(gatherNode.s_qc_tp, sourceNode.qc_tp);
+            gatherNode.s_gather_qty = helper.add(gatherNode.s_gather_qty, sourceNode.gather_qty);
+            gatherNode.s_gather_tp = helper.add(gatherNode.s_gather_tp, sourceNode.gather_tp);
+
+            gatherNode.s_pre_contract_qty = helper.add(gatherNode.s_pre_contract_qty, sourceNode.pre_contract_qty);
+            gatherNode.s_pre_contract_tp = helper.add(gatherNode.s_pre_contract_tp, sourceNode.pre_contract_tp);
+            gatherNode.s_pre_qc_qty = helper.add(gatherNode.s_pre_qc_qty, sourceNode.pre_qc_qty);
+            gatherNode.s_pre_qc_tp = helper.add(gatherNode.s_pre_qc_tp, sourceNode.pre_qc_tp);
+            gatherNode.s_pre_gather_qty = helper.add(gatherNode.s_pre_gather_qty, sourceNode.pre_gather_qty);
+            gatherNode.s_pre_gather_tp = helper.add(gatherNode.s_pre_gather_tp, sourceNode.pre_gather_tp);
+
+            gatherNode.s_end_contract_qty = helper.add(gatherNode.s_end_contract_qty, sourceNode.end_contract_qty);
+            gatherNode.s_end_contract_tp = helper.add(gatherNode.s_end_contract_tp, sourceNode.end_contract_tp);
+            gatherNode.s_end_qc_qty = helper.add(gatherNode.s_end_qc_qty, sourceNode.end_qc_qty);
+            gatherNode.s_end_qc_tp = helper.add(gatherNode.s_end_qc_tp, sourceNode.end_qc_tp);
+            gatherNode.s_end_gather_qty = helper.add(gatherNode.s_end_gather_qty, sourceNode.end_gather_qty);
+            gatherNode.s_end_gather_tp = helper.add(gatherNode.s_end_gather_tp, sourceNode.end_gather_tp);
+
+            for (const dc of gsDefine.defaultCompare) {
+                const prefix = `r${dc}_`;
+                gatherNode[prefix + 'contract_qty'] = helper.add(gatherNode[prefix + 'contract_qty'], sourceNode[prefix + 'contract_qty']);
+                gatherNode[prefix + 'contract_tp'] = helper.add(gatherNode[prefix + 'contract_tp'], sourceNode[prefix + 'contract_tp']);
+                gatherNode[prefix + 'qc_qty'] = helper.add(gatherNode[prefix + 'qc_qty'], sourceNode[prefix + 'qc_qty']);
+                gatherNode[prefix + 'qc_tp'] = helper.add(gatherNode[prefix + 'qc_tp'], sourceNode[prefix + 'qc_tp']);
+                gatherNode[prefix + 'gather_qty'] = helper.add(gatherNode[prefix + 'gather_qty'], sourceNode[prefix + 'gather_qty']);
+                gatherNode[prefix + 'gather_tp'] = helper.add(gatherNode[prefix + 'gather_tp'], sourceNode[prefix + 'gather_tp']);
+            }
+        });
+    }
+
+    async _gatherMonthData(tender, month, defaultCompare, fun) {
         const stages = await this._getValidStages(tender.id);
         const stage = this.ctx.helper._.find(stages, {s_time: month});
-        await this._gatherStageData(tender, stage, defaultCompare);
+        await fun.call(this, tender, stage, defaultCompare);
     }
 
-    async _gatherFinalData(tender, defaultCompare) {
+    async _gatherFinalData(tender, defaultCompare, fun) {
         const stages = await this._getValidStages(tender.id);
-        await this._gatherStageData(tender, stages[0], defaultCompare);
+        await fun.call(this, tender, stages[0], defaultCompare);
     }
 
-    async _gatherCheckedFinalData(tender, defaultCompare) {
+    async _gatherCheckedFinalData(tender, defaultCompare, fun) {
         const stages = await this._getCheckedStages(tender.id);
-        await this._gatherStageData(tender, stages[0], defaultCompare);
+        await fun.call(this, tender, stages[0], defaultCompare);
     }
 
-    async _gatherIndexData(tender, index, defaultCompare) {
+    async _gatherIndexData(tender, index, defaultCompare, fun) {
         const stages = await this._getValidStages(tender.id);
         const stage = this.ctx.helper._.find(stages, {order: index});
-        await this._gatherStageData(tender, stage, defaultCompare);
+        await fun.call(this, tender, stage, defaultCompare);
     }
 
     /**
@@ -339,6 +426,7 @@ class jhHelper {
      * @returns {Promise<Array>}
      */
     async gather(memFieldKeys, gsDefine, gsCustom) {
+        this.billsQueryField = ['qc_qty', 'qc_tp'];
         if (!gsDefine || !gsDefine.enable) return [];
         if (!gsCustom || !gsCustom.tenders || gsCustom.tenders.length === 0) return [];
 
@@ -349,16 +437,16 @@ class jhHelper {
 
             switch (gsSetting.type) {
                 case 'month':
-                    await this._gatherMonthData(tender, gsCustom.month, gsSetting);
+                    await this._gatherMonthData(tender, gsCustom.month, gsSetting, this._gatherStageData);
                     break;
                 case 'final':
-                    await this._gatherFinalData(tender, gsSetting);
+                    await this._gatherFinalData(tender, gsSetting, this._gatherStageData);
                     break;
                 case 'checked-final':
-                    await this._gatherCheckedFinalData(tender, gsSetting);
+                    await this._gatherCheckedFinalData(tender, gsSetting, this._gatherStageData);
                     break;
                 case 'stage':
-                    await this._gatherIndexData(tender, gsCustom.stage, gsSetting);
+                    await this._gatherIndexData(tender, gsCustom.stage, gsSetting, this._gatherStageData);
                     break;
                 default: throw '未知汇总类型';
             }
@@ -370,6 +458,7 @@ class jhHelper {
     }
 
     async convert(tid, sid, memFieldKeys, option) {
+        this.billsQueryField = ['qc_qty', 'qc_tp'];
         if (!option) return [];
         const setting = JSON.parse(option);
         if (!setting || !setting.defaultCompare) return [];
@@ -381,6 +470,43 @@ class jhHelper {
         this.result.sort((x, y) => { return helper.compareCode(x.b_code, y.b_code); });
         return this.result;
     }
+
+    async gatherBills(memFieldKeys, gsDefine, gsCustom) {
+        if (!gsDefine || !gsDefine.enable) return [];
+        if (!gsCustom || !gsCustom.tenders || gsCustom.tenders.length === 0) return [];
+
+        const gsSetting = JSON.parse(gsDefine.setting);
+        if (!gsSetting.defaultCompare) return [];
+        this.billsQueryField = ['contract_qty', 'contract_tp', 'qc_qty', 'qc_tp'];
+        this.resultTree = new Ledger.gatherTree(this.ctx, {
+            id: 'id',
+            pid: 'pid',
+            order: 'order',
+            level: 'level',
+            rootId: -1
+        });
+        for (const t of gsCustom.tenders) {
+            const tender = await this.ctx.service.tender.getCheckTender(t.tid);
+
+            switch (gsSetting.type) {
+                case 'month':
+                    await this._gatherMonthData(tender, gsCustom.month, gsSetting, this._gatherStageBillsData);
+                    break;
+                case 'final':
+                    await this._gatherFinalData(tender, gsSetting, this._gatherStageBillsData);
+                    break;
+                case 'checked-final':
+                    await this._gatherCheckedFinalData(tender, gsSetting, this._gatherStageBillsData);
+                    break;
+                case 'stage':
+                    await this._gatherIndexData(tender, gsCustom.stage, gsSetting, this._gatherStageBillsData);
+                    break;
+                default: throw '未知汇总类型';
+            }
+        }
+        this.resultTree.generateSortNodes();
+        return this.resultTree.getDefaultDatas();
+    }
 }
 
 module.exports = {

+ 3 - 3
app/lib/stage_im.js

@@ -319,11 +319,11 @@ class StageIm {
                 (!im.pid || im.pid === d.pid) &&
                 (!im.pos_name || im.pos_name === d.pos_name);
         });
-        if (im.code === '101-1-b') console.log(im, cd);
         if (cd) {
-            im.custom_define = cd.custom_define ? cd.custom_define.split(',') : this.imFields;
+            im.custom_define = im.custom_define !== null
+                ? (cd.custom_define ? cd.custom_define.split(',') : [])
+                : this.imFields;
             this._.assignInWith(im, cd, function(oV, sV, key) {
-                if (key === 'calc_memo') console.log(im.code, sV);
                 return im.custom_define.indexOf(key) > -1 ? sV : oV;
             });
             if (im.code === '101-1-b') console.log(im.calc_memo);

+ 4 - 4
app/public/js/shares/cs_tools.js

@@ -43,7 +43,7 @@ const showSideTools = function (show) {
 
 const showSelectTab = function(select, spread, afterShow) {
     const tab = $(select), tabPanel = $(tab.attr('content'));
-    $('a', '#side-menu').removeClass('active');
+    $('a', '.side-menu').removeClass('active');
     tab.addClass('active');
     $('.tab-content .tab-pane').removeClass('active');
     tabPanel.addClass('active');
@@ -156,7 +156,7 @@ const showSelectTab = function(select, spread, afterShow) {
             };
             const showErrorList = function () {
                 const tab = $(setting.tabSelector), tabPanel = $(tab.attr('content'));
-                $('a', '#side-menu').removeClass('active');
+                $('a', '.side-menu').removeClass('active');
                 tab.addClass('active');
                 $('.tab-content .tab-pane').removeClass('active');
                 tabPanel.addClass('active');
@@ -307,7 +307,7 @@ const showSelectTab = function(select, spread, afterShow) {
             const hideCheckData = function () {
                 const tab = $(setting.tabSelector), tabPanel = $(tab.attr('content'));
                 if (tab.hasClass('active')) {
-                    $('a', '#side-menu').removeClass('active');
+                    $('a', '.side-menu').removeClass('active');
                     tab.addClass('active');
                     $('.tab-content .tab-pane').removeClass('active');
                     tabPanel.addClass('active');
@@ -335,7 +335,7 @@ const showSelectTab = function(select, spread, afterShow) {
             };
             const showCheckList = function () {
                 const tab = $(setting.tabSelector), tabPanel = $(tab.attr('content'));
-                $('a', '#side-menu').removeClass('active');
+                $('a', '.side-menu').removeClass('active');
                 tab.addClass('active');
                 $('.tab-content .tab-pane').removeClass('active');
                 tabPanel.addClass('active');

+ 0 - 8
app/public/js/stage.js

@@ -632,14 +632,6 @@ $(document).ready(() => {
     // 初始化 台账 spread
     const slSpread = SpreadJsObj.createNewSpread($('#stage-ledger')[0]);
     customizeStageTreeSetting(ledgerSpreadSetting, customColDisplay());
-    ledgerSpreadSetting.cols.push(
-        {title: '工序限制', colSpan: '1', rowSpan: '2', field: 'gxby_limit', hAlign: 0, width: 80, readOnly: true},
-        {title: '档案限制', colSpan: '1', rowSpan: '2', field: 'dagl_limit', hAlign: 0, width: 80, readOnly: true},
-    );
-    posSpreadSetting.cols.push(
-        {title: '工序限制', colSpan: '1', rowSpan: '2', field: 'gxby_limit', hAlign: 0, width: 80, readOnly: true},
-        {title: '档案限制', colSpan: '1', rowSpan: '2', field: 'dagl_limit', hAlign: 0, width: 80, readOnly: true},
-    );
     // 数量变更列,添加按钮
     const qcCol = _.find(ledgerSpreadSetting.cols, {field: 'qc_qty'});
     qcCol.readOnly = true;

+ 5 - 2
app/public/js/stage_bwtz.js

@@ -345,6 +345,8 @@ $(document).ready(() => {
             headerFont: 'bold 10px 微软雅黑',
             font: '10px 微软雅黑'
         };
+        if (gxby) setting.cols.push({title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@'});
+        if (dagl) setting.cols.push({title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@'});
         if (!xmjSheet.zh_tree) return;
         for (const node of xmjSheet.zh_tree.nodes) {
             data.push({
@@ -353,7 +355,7 @@ $(document).ready(() => {
                 contract_tp: node.contract_tp, qc_tp: node.qc_tp, gather_tp: node.gather_tp,
                 end_contract_tp: node.end_contract_tp, end_qc_tp: node.end_qc_tp, end_gather_tp: node.end_gather_tp,
                 end_gather_percent: node.end_gather_percent,
-                drawing_code: node.drawing_code, postil: node.postil, memo: node.memo
+                drawing_code: node.drawing_code, postil: node.postil, memo: node.memo, gxby: getGxbyText(node), dagl: getDaglText(node),
             });
             if (node.unitTree) {
                 for (const unitNode of node.unitTree.nodes) {
@@ -368,7 +370,8 @@ $(document).ready(() => {
                         end_qc_qty: unitNode.end_qc_qty, end_qc_tp: unitNode.end_qc_tp,
                         end_gather_qty: unitNode.end_gather_qty, end_gather_tp: unitNode.end_gather_tp,
                         end_gather_percent: unitNode.end_gather_percent,
-                        drawing_code: unitNode.drawing_code_merge, postil: unitNode.postil_merge, memo: unitNode.memo_merge
+                        drawing_code: unitNode.drawing_code_merge, postil: unitNode.postil_merge, memo: unitNode.memo_merge,
+                        gxby: getGxbyText(unitNode), dagl: getDaglText(unitNode),
                     });
                 }
             }

+ 4 - 0
app/service/report.js

@@ -247,6 +247,10 @@ module.exports = app => {
                         const jhHelper2 = new rptCustomData.jhHelper(this.ctx);
                         rst[filter] = await jhHelper2.gather(memFieldKeys[filter], customDefine.gather_select, customSelect ? customSelect.gather_select : null);
                         break;
+                    case 'mem_jh_gather_stage_bills_compare':
+                        const jhHelper3 = new rptCustomData.jhHelper(this.ctx);
+                        rst[filter] = await jhHelper3.gatherBills(memFieldKeys[filter], customDefine.gather_select, customSelect ? customSelect.gather_select : null);
+                        break;
                     // case 'mem_material_bills':
                     //     rst[filter] = await service.rptGatherMemory.getMaterialBills(params.tender_id, params.material_order, memFieldKeys[filter]);
                     //     break;

+ 5 - 5
app/view/advance/detail.ejs

@@ -206,7 +206,7 @@
                                 </td>
                                 <td width="70%">
 
-                                    <% auditHistory.forEach((auditors, idx) => { %>
+                                    <% auditHistory.forEach((history, idx) => { %>
                                         <!-- 展开/收起历史流程 -->
                                         <% if(idx === auditHistory.length - 1 && auditHistory.length !== 1) { %>
                                             <div class="text-right">
@@ -216,7 +216,7 @@
                                         <div class="<%- idx < auditHistory.length - 1 ? 'fold-card' : '' %>">
                                             <div class="text-center text-muted" ><%- idx+1 %>#</div>
                                             <ul class="timeline-list list-unstyled mt-2">
-                                                <% auditors.forEach((auditor, index) => { %>
+                                                <% history.forEach((auditor, index) => { %>
                                                 <% if (index === 0) { %>
                                                 <li class="timeline-list-item pb-2">
                                                     <div class="timeline-item-date">
@@ -244,7 +244,7 @@
                                                     <div class="timeline-item-date">
                                                         <%- ctx.helper.formatDate(auditor.end_time) %>
                                                     </div>
-                                                    <% if(index < auditors.length - 1) { %>
+                                                    <% if(index < history.length - 1) { %>
                                                     <div class="timeline-item-tail"></div>
                                                     <% } %>
                                                     <% if(auditor.status === auditConst.status.checked) { %>
@@ -288,7 +288,7 @@
                                                     <div class="timeline-item-date">
                                                         <%- ctx.helper.formatDate(auditor.end_time) %>
                                                     </div>
-                                                    <% if(index < auditors.length - 1) { %>
+                                                    <% if(index < history.length - 1) { %>
                                                     <div class="timeline-item-tail"></div>
                                                     <% } %>
                                                     <% if(auditor.status === auditConst.status.checked) { %>
@@ -317,7 +317,7 @@
                                                                             class="pull-right
                                                                                         <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
                                                                             <%- auditor.status === auditConst.status.checkNo ? advance.user.name : '' %>
-                                                                            <%- auditor.status === auditConst.status.checkNoPre ? auditors[index-1].name : '' %>
+                                                                            <%- auditor.status === auditConst.status.checkNoPre ? auditors.find(item => item.order === auditor.sort-1).name : '' %>
                                                                         </span>
                                                                     </p>
                                                                     <p class="text-muted mb-0"><%- auditor.role %></p>

+ 6 - 6
app/view/change/index.ejs

@@ -70,21 +70,21 @@
                     <thead>
                     <tr>
                         <th width="20%" id="sort_change">申请编号/变更令号</th><th width="30%">工程名称</th>
-                        <th width="10%">变更类别</th><th width="10%">变更金额</th>
+                        <th width="10%">变更性质</th><th width="10%">变更金额</th>
                         <th width="10%">审批状态</th><th width="15%">审批进度</th><th></th>
                     </tr>
                     </thead>
                     <tbody id="changeList">
-                    <% const classArray = []; %>
-                    <% for (const t in changeConst.class) { %>
-                    <% const cClass = changeConst.class[t] %>
-                    <% classArray[cClass.value] = cClass.name %>
+                    <% const qualityArray = []; %>
+                    <% for (const t in changeConst.quality) { %>
+                    <% const cQuality = changeConst.quality[t] %>
+                    <% qualityArray[cQuality.value] = cQuality.name %>
                     <% } %>
                     <% for (const c of changes) { %>
                     <tr>
                         <td><a href="/tender/<%- tender.id %>/change/<%- c.cid %>/information"><% if (c.status !== auditConst.status.checked) { %><%- c.code %><% } else { %><%- c.p_code %><% } %></a></td>
                         <td><%- c.name %></td>
-                        <td><%- classArray[c.class] %><% c.class %></td>
+                        <td><%- qualityArray[c.quality] %><% c.quality %></td>
                         <td style="text-align: right"><%= ctx.helper.roundNum(c.total_price, tpUnit) %></td>
                         <% if (c.status === auditConst.status.uncheck && ctx.tender.isTourist) { %>
                             <td>

+ 5 - 5
app/view/material/audit_modal.ejs

@@ -219,7 +219,7 @@
                                                             class="pull-right
                                                                             <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
                                                             <%- auditor.status === auditConst.status.checkNo ? ctx.material.user.name : '' %>
-                                                            <%- auditor.status === auditConst.status.checkNoPre ? auditors[index-1].name : '' %>
+                                                            <%- auditor.status === auditConst.status.checkNoPre ? ctx.material.auditors2.find(item => item.order === auditor.sort-1).name : '' %>
                                                         </span>
                                                     </p>
                                                     <p class="text-muted mb-0"><%- auditor.role %></p>
@@ -407,7 +407,7 @@
                                                                     class="pull-right
                                                                                     <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
                                                                     <%- auditor.status === auditConst.status.checkNo ? ctx.material.user.name : '' %>
-                                                                    <%- auditor.status === auditConst.status.checkNoPre ? auditors[index-1].name : '' %>
+                                                                    <%- auditor.status === auditConst.status.checkNoPre ? ctx.material.auditors2.find(item => item.order === auditor.sort-1).name : '' %>
                                                                 </span>
                                                             </p>
                                                             <p class="text-muted mb-0"><%- auditor.role %></p>
@@ -574,7 +574,7 @@
                                                                     id="inlineRadio2"
                                                                     value="<%- auditConst.status.checkNoPre %>">
                                                                 <label class="form-check-label" for="inlineRadio2">退回上一审批人
-                                                                    <%- auditors[index-1].name %></label>
+                                                                    <%- ctx.material.auditors2.find(item => item.order === auditor.sort-1).name %></label>
                                                             </div>
                                                             <% } %>
                                                         </div>
@@ -620,7 +620,7 @@
                                                                     class="pull-right
                                                                                     <%- auditConst.statusClass[auditor.status] %>"><%- auditor.status !== auditConst.status.uncheck ? auditConst.statusString[auditor.status] : ''%>
                                                                     <%- auditor.status === auditConst.status.checkNo ? ctx.material.user.name : '' %>
-                                                                    <%- auditor.status === auditConst.status.checkNoPre ? auditors[index-1].name : '' %>
+                                                                    <%- auditor.status === auditConst.status.checkNoPre ? ctx.material.auditors2.find(item => item.order === auditor.sort-1).name : '' %>
                                                                 </span>
                                                             </p>
                                                             <p class="text-muted mb-0"><%- auditor.role %></p>
@@ -648,7 +648,7 @@
                                                                         id="inlineRadio2"
                                                                         value="<%- auditConst.status.checkNoPre %>">
                                                                     <label class="form-check-label" for="inlineRadio2">退回上一审批人
-                                                                        <%- auditors[index-1].name %></label>
+                                                                        <%- ctx.material.auditors2.find(item => item.order === auditor.sort-1).name %></label>
                                                                 </div>
                                                                 <% } %>
                                                             </div>

+ 1 - 11
app/view/setting/fun.ejs

@@ -11,16 +11,6 @@
                 <div class="row m-0 mt-3">
                     <div class="col-6">
                         <div class="form-group">
-                            <label>超计控制</label>
-                            <div>
-                                <div class="form-check form-check-inline">
-                                    <input class="form-check-input" type="checkbox" name="ban_over" <% if (funRela.banOver) { %>checked<% } %> onchange="updateSetting();">
-                                    <label class="form-check-label" for="inlineCheckbox6">超计时限制上报审批/审批通过</label>
-                                </div>
-                            </div>
-                        </div>
-
-                        <div class="form-group">
                             <label>中间计量模式设置</label>
                             <div>
                                 <% for (const i in imType) { %>
@@ -46,6 +36,6 @@
         autoFlashHeight();
     });
     const updateSetting = function () {
-        postData('/setting/fun/update', {imType: parseInt($('[name=im_type]:checked').val()), banOver: $('[name=ban_over]')[0].checked});
+        postData('/setting/fun/update', {imType: parseInt($('[name=im_type]:checked').val())});
     }
 </script>

+ 2 - 2
app/view/setting/s2b.ejs

@@ -54,7 +54,7 @@
                                         <% } else { %>
                                         <td>
                                             <div class="input-group input-group-sm" style="width:90px">
-                                                <input type="number" class="form-control" max="100" min="0" step="2" value="<%- s.ratio || 100 %>" status="<%- s.value %>" onchange="updateStatusRatio(this);">
+                                                <input type="number" class="form-control" max="100" min="0" step="2" value="<%- s.ratio || 0 %>" status="<%- s.value %>" onchange="updateStatusRatio(this);">
                                                 <div class="input-group-append">
                                                     <span class="input-group-text">%</span>
                                                 </div>
@@ -139,11 +139,11 @@
         });
     }
     const updateStatusRatio = function (obj) {
-
         const data = { type: 'dagl' };
         data.status = parseInt(obj.getAttribute('status'));
         try {
             data.ratio = parseFloat(obj.value);
+            if (data.ratio > 100 || data.ratio < 0) throw '请输入0-100间的数字';
         } catch (error) {
             toastr.warning('请输入0-100间的数字');
             return;

+ 2 - 0
app/view/stage/bwtz.ejs

@@ -253,4 +253,6 @@
     };
     const decimal = <%- ctx.tender.info.decimal.tp %>;
     const thousandth = <%- ctx.tender.info.display.thousandth %>;
+    const gxby = <%- ctx.session.sessionProject.gxby %>;
+    const dagl = <%- ctx.session.sessionProject.dagl %>;
 </script>

+ 6 - 0
app/view/tender/detail_modal.ejs

@@ -1607,6 +1607,10 @@
                         <input type="checkbox" class="custom-control-input" id="lc_sibling" checked="">
                         <label class="custom-control-label" for="lc_sibling">项目节清单同层次</label>
                     </div>
+                    <div class="custom-control custom-checkbox mb-2">
+                        <input type="checkbox" class="custom-control-input" id="lc_over" checked="">
+                        <label class="custom-control-label" for="lc_over">超计判断</label>
+                    </div>
                 </div>
             </div>
             <div class="modal-footer">
@@ -1624,6 +1628,7 @@
     const loadLedgerCheckProperty = function () {
         $('#lc_same_code')[0].checked = property.ledger_check.same_code;
         $('#lc_sibling')[0].checked = property.ledger_check.sibling;
+        $('#lc_over')[0].checked = property.ledger_check.over;
     }
     $('#bd-set-10').on('show.bs.modal', function () {
         loadLedgerCheckProperty();
@@ -1633,6 +1638,7 @@
             ledger_check: {
                 same_code: $('#lc_same_code')[0].checked,
                 sibling: $('#lc_sibling')[0].checked,
+                over: $('#lc_over')[0].checked,
             },
         };
         const tenderId = window.location.pathname.split('/')[2];

+ 74 - 1
builder_report_index_define.js

@@ -1692,6 +1692,79 @@ const jh_gather_im_change = {
         { name: '本期-数量变更-金额_4', field: 'r4_qc_tp', type: dataType.currency },
     ],
 };
+const jh_gather_stage_bills_compare = {
+    name: '【定制】季华-期-清单-汇总-多审 数据表(mem_jh_gather_stage_bills_compare)',
+    remark: '',
+    id: 64,
+    key: 'mem_jh_gather_stage_bills_compare',
+    prefix: '【定制】季华-期-清单-汇总-多审',
+    cols: [
+        { name: '项目节编号', field: 'code', type: dataType.str },
+        { name: '清单编号', field: 'b_code', type: dataType.str },
+        { name: '名称', field: 'name', type: dataType.str },
+        { name: '单位', field: 'unit', type: dataType.str },
+        { name: '单价', field: 'unit_price', type: dataType.currency },
+
+        { name: '(合计)台账-数量', field: 's_qty', type: dataType.currency },
+        { name: '(合计)台账-金额', field: 's_tp', type: dataType.currency },
+
+        { name: '(合计)本期-合同-数量', field: 's_contract_qty', type: dataType.currency },
+        { name: '(合计)本期-合同-金额', field: 's_contract_tp', type: dataType.currency },
+        { name: '(合计)本期-变更-数量', field: 's_qc_qty', type: dataType.currency },
+        { name: '(合计)本期-变更-金额', field: 's_qc_tp', type: dataType.currency },
+        { name: '(合计)本期-完成-数量', field: 's_gather_qty', type: dataType.currency },
+        { name: '(合计)本期-完成-金额', field: 's_gather_tp', type: dataType.currency },
+
+        { name: '(合计)截止上期-合同-数量', field: 's_pre_contract_qty', type: dataType.currency },
+        { name: '(合计)截止上期-合同-金额', field: 's_pre_contract_tp', type: dataType.currency },
+        { name: '(合计)截止上期-变更-数量', field: 's_pre_qc_qty', type: dataType.currency },
+        { name: '(合计)截止上期-变更-金额', field: 's_pre_qc_tp', type: dataType.currency },
+        { name: '(合计)截止上期-完成-数量', field: 's_pre_gather_qty', type: dataType.currency },
+        { name: '(合计)截止上期-完成-金额', field: 's_pre_gather_tp', type: dataType.currency },
+
+        { name: '(合计)截止本期-合同-数量', field: 's_end_contract_qty', type: dataType.currency },
+        { name: '(合计)截止本期-合同-金额', field: 's_end_contract_tp', type: dataType.currency },
+        { name: '(合计)截止本期-变更-数量', field: 's_end_qc_qty', type: dataType.currency },
+        { name: '(合计)截止本期-变更-金额', field: 's_end_qc_tp', type: dataType.currency },
+        { name: '(合计)截止本期-完成-数量', field: 's_end_gather_qty', type: dataType.currency },
+        { name: '(合计)截止本期-完成-金额', field: 's_end_gather_tp', type: dataType.currency },
+
+        { name: '(原报)本期-合同-数量', field: 'r0_contract_qty', type: dataType.currency },
+        { name: '(原报)本期-合同-金额', field: 'r0_contract_tp', type: dataType.currency },
+        { name: '(原报)本期-变更-数量', field: 'r0_qc_qty', type: dataType.currency },
+        { name: '(原报)本期-变更-金额', field: 'r0_qc_tp', type: dataType.currency },
+        { name: '(原报)本期-完成-数量', field: 'r0_gather_qty', type: dataType.currency },
+        { name: '(原报)本期-完成-金额', field: 'r0_gather_tp', type: dataType.currency },
+
+        { name: '(1审)本期-合同-数量', field: 'r1_contract_qty', type: dataType.currency },
+        { name: '(1审)本期-合同-金额', field: 'r1_contract_tp', type: dataType.currency },
+        { name: '(1审)本期-变更-数量', field: 'r1_qc_qty', type: dataType.currency },
+        { name: '(1审)本期-变更-金额', field: 'r1_qc_tp', type: dataType.currency },
+        { name: '(1审)本期-完成-数量', field: 'r1_gather_qty', type: dataType.currency },
+        { name: '(1审)本期-完成-金额', field: 'r1_gather_tp', type: dataType.currency },
+
+        { name: '(2审)本期-合同-数量', field: 'r2_contract_qty', type: dataType.currency },
+        { name: '(2审)本期-合同-金额', field: 'r2_contract_tp', type: dataType.currency },
+        { name: '(2审)本期-变更-数量', field: 'r2_qc_qty', type: dataType.currency },
+        { name: '(2审)本期-变更-金额', field: 'r2_qc_tp', type: dataType.currency },
+        { name: '(2审)本期-完成-数量', field: 'r2_gather_qty', type: dataType.currency },
+        { name: '(2审)本期-完成-金额', field: 'r2_gather_tp', type: dataType.currency },
+
+        { name: '(3审)本期-合同-数量', field: 'r3_contract_qty', type: dataType.currency },
+        { name: '(3审)本期-合同-金额', field: 'r3_contract_tp', type: dataType.currency },
+        { name: '(3审)本期-变更-数量', field: 'r3_qc_qty', type: dataType.currency },
+        { name: '(3审)本期-变更-金额', field: 'r3_qc_tp', type: dataType.currency },
+        { name: '(3审)本期-完成-数量', field: 'r3_gather_qty', type: dataType.currency },
+        { name: '(3审)本期-完成-金额', field: 'r3_gather_tp', type: dataType.currency },
+
+        { name: '树结构-id', field: 'id', type: dataType.int },
+        { name: '树结构-父项id', field: 'pid', type: dataType.int },
+        { name: '树结构-层次', field: 'level', type: dataType.int },
+        { name: '树结构-排序', field: 'order', type: dataType.int },
+        { name: '树结构-完整路径', field: 'full_path', type: dataType.str },
+        { name: '树结构-是否子项', field: 'is_leaf', type: dataType.int },
+    ],
+};
 
 const custom_select = {
     name: '【用户交互】用户选择信息 数据表(mem_custom_select)',
@@ -1829,7 +1902,7 @@ const defines = [
     stage_change, stage_change_bills, stage_change_ledger,
     gcl_gather_bills, gcl_gather_xmj,
     ledger_tag, stage_tag, all_tag,
-    jh_im_change, jh_gather_im_change,
+    jh_im_change, jh_gather_im_change, jh_gather_stage_bills_compare,
     custom_select,
 ];
 for (const d of defines) {

+ 0 - 405
sql/update.sql

@@ -1,408 +0,0 @@
-ALTER TABLE `zh_ledger_cooperation` ADD `company` VARCHAR(100) NULL DEFAULT '' COMMENT '单位或备注名,筛选用' AFTER `sign_path`;
-
---
---
-
-CREATE TABLE `zh_cooperation_confirm` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `tid` int(11) NOT NULL COMMENT '标段id',
-  `sid` int(11) NOT NULL COMMENT '期id',
-  `times` tinyint(11) NOT NULL COMMENT '次数',
-  `ledger_id` int(11) NOT NULL COMMENT '台账id',
-  `uid` int(11) NOT NULL COMMENT '审批人id',
-  `create_time` datetime DEFAULT NULL COMMENT '确认时间',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='多人协同确认表';
-
-
-ALTER TABLE `zh_advance_audit`
-CHANGE COLUMN `type` `type` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '预付款类型,0为开工预付款,1为材料预付款,2为安全生产费预付款' ;
-
-ALTER TABLE `zh_advance_pay`
-CHANGE COLUMN `type` `type` INT(1) NOT NULL DEFAULT '0' COMMENT '预付款类型,0为开工预付款,1为材料预付款,2位安全生产费预付款' ;
-
-ALTER TABLE `zh_tender`
-ADD COLUMN `s2b_gxby_check`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '工序报验-检查计量' AFTER `copy_id`,
-ADD COLUMN `s2b_gxby_limit`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '限制上报' AFTER `s2b_gxby_check`,
-ADD COLUMN `s2b_dagl_check`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '档案管理-检查计量' AFTER `s2b_gxby_limit`,
-ADD COLUMN `s2b_dagl_limit`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '档案管理-限制上报' AFTER `s2b_dagl_check`;
-
-ALTER TABLE `zh_pos_0`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_1`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_2`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_3`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_4`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_5`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_6`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_7`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_8`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_9`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_10`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_11`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_12`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_13`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_14`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_15`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_16`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_17`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_18`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_pos_19`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_0`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_1`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_2`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_3`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_4`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_5`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_6`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_7`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_8`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_9`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_10`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_11`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_12`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_13`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_14`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_15`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_16`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_17`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_18`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_pos_19`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_0`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_1`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_2`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_3`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_4`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_5`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_6`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_7`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_8`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_ledger_9`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_0`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_1`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_2`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_3`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_4`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_5`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_6`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_7`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_8`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
-ALTER TABLE `zh_revise_bills_9`
-ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
-ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
-ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
-ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
-
---更新归档结构
-ALTER TABLE `calculation`.`zh_rpt_archive`
-CHANGE COLUMN `archive_id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
-
---
---
-
-CREATE TABLE `zh_tender_tourist` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `tid` int(11) NOT NULL COMMENT '标段id',
-  `user_id` int(11) NOT NULL COMMENT '用户id',
-  `in_time` datetime DEFAULT NULL COMMENT '添加时间',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='标段游客表';
-
-ALTER TABLE `zh_change` ADD `is_revise` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否是修订状态' AFTER `tp_decimal`;

+ 408 - 0
sql/update20210615.sql

@@ -0,0 +1,408 @@
+ALTER TABLE `zh_ledger_cooperation` ADD `company` VARCHAR(100) NULL DEFAULT '' COMMENT '单位或备注名,筛选用' AFTER `sign_path`;
+
+--
+-- 表的结构 `zh_cooperation_confirm`
+--
+
+CREATE TABLE `zh_cooperation_confirm` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `tid` int(11) NOT NULL COMMENT '标段id',
+  `sid` int(11) NOT NULL COMMENT '期id',
+  `times` tinyint(11) NOT NULL COMMENT '次数',
+  `ledger_id` int(11) NOT NULL COMMENT '台账id',
+  `uid` int(11) NOT NULL COMMENT '审批人id',
+  `create_time` datetime DEFAULT NULL COMMENT '确认时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='多人协同确认表';
+
+
+ALTER TABLE `zh_advance_audit`
+CHANGE COLUMN `type` `type` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '预付款类型,0为开工预付款,1为材料预付款,2为安全生产费预付款' ;
+
+ALTER TABLE `zh_advance_pay`
+CHANGE COLUMN `type` `type` INT(1) NOT NULL DEFAULT '0' COMMENT '预付款类型,0为开工预付款,1为材料预付款,2位安全生产费预付款' ;
+
+-- 接口相关
+ALTER TABLE `zh_tender`
+ADD COLUMN `s2b_gxby_check`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '工序报验-检查计量' AFTER `copy_id`,
+ADD COLUMN `s2b_gxby_limit`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '限制上报' AFTER `s2b_gxby_check`,
+ADD COLUMN `s2b_dagl_check`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '档案管理-检查计量' AFTER `s2b_gxby_limit`,
+ADD COLUMN `s2b_dagl_limit`  tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '档案管理-限制上报' AFTER `s2b_dagl_check`;
+
+ALTER TABLE `zh_pos_0`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_1`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_2`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_3`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_4`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_5`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_6`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_7`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_8`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_9`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_10`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_11`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_12`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_13`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_14`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_15`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_16`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_17`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_18`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_pos_19`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_0`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_1`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_2`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_3`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_4`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_5`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_6`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_7`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_8`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_9`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_10`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_11`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_12`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_13`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_14`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_15`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_16`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_17`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_18`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_pos_19`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_0`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_1`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_2`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_3`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_4`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_5`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_6`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_7`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_8`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_ledger_9`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_0`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_1`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_2`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_3`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_4`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_5`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_6`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_7`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_8`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+ALTER TABLE `zh_revise_bills_9`
+ADD COLUMN `gxby_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `gxby_status`,
+ADD COLUMN `gxby_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `gxby_limit`,
+ADD COLUMN `dagl_limit`  int(4) NOT NULL DEFAULT -1 COMMENT '计量是否受限,-1不受限,0受限不可计量,1受限可计量' AFTER `dagl_status`,
+ADD COLUMN `dagl_ratio`  decimal(6,4) NOT NULL DEFAULT 0 COMMENT '允许计量比例,-1表示不限制' AFTER `dagl_limit`;
+
+--更新归档结构
+ALTER TABLE `calculation`.`zh_rpt_archive`
+CHANGE COLUMN `archive_id` `id` INT(11) NOT NULL AUTO_INCREMENT ;
+
+--
+-- 表的结构 `zh_tender_tourist`
+--
+
+CREATE TABLE `zh_tender_tourist` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `tid` int(11) NOT NULL COMMENT '标段id',
+  `user_id` int(11) NOT NULL COMMENT '用户id',
+  `in_time` datetime DEFAULT NULL COMMENT '添加时间',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='标段游客表';
+
+ALTER TABLE `zh_change` ADD `is_revise` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否是修订状态' AFTER `tp_decimal`;