Kaynağa Gözat

多人协同时,审批退回后,锁定相关

MaiXinRong 2 yıl önce
ebeveyn
işleme
abe619af73

+ 3 - 1
app/controller/stage_controller.js

@@ -186,7 +186,8 @@ module.exports = app => {
                     attData[index].in_time = moment(attData[index].in_time * 1000).format('YYYY-MM-DD');
                 }
                 renderData.attData = attData;
-                renderData.coopwd = ((ctx.stage.status === auditConst.status.uncheck || ctx.stage.status === auditConst.status.checkNo) && ctx.session.sessionUser.accountId === ctx.stage.user_id) || ((ctx.stage.status === auditConst.status.checking || ctx.stage.status === auditConst.status.checkNoPre) && ctx.stage.curAuditor && ctx.stage.curAuditor.aid === ctx.session.sessionUser.accountId);
+                renderData.coopwd = ((ctx.stage.status === auditConst.status.uncheck || ctx.stage.status === auditConst.status.checkNo) && ctx.session.sessionUser.accountId === ctx.stage.user_id)
+                    || ((ctx.stage.status === auditConst.status.checking || ctx.stage.status === auditConst.status.checkNoPre) && ctx.stage.curAuditor && ctx.stage.curAuditor.aid === ctx.session.sessionUser.accountId);
                 // 获取收方单列表
                 const sfData = await ctx.service.stageShoufang.getAllDataByCondition({ where: { sid: ctx.stage.id }, orders: [['id', 'desc']] });
                 for (const sf of sfData) {
@@ -386,6 +387,7 @@ module.exports = app => {
                                 ctx.tender.id, uid) : [];
                             const stageTimes = (ctx.stage.status === auditConst.status.checkNo && ctx.stage.user_id !== ctx.session.sessionUser.accountId) ? ctx.stage.times - 1 : ctx.stage.times;
                             responseData.data.cooperationConfirm = uid !== null ? await ctx.service.cooperationConfirm.getValidData(ctx.tender.id, ctx.stage.id, stageTimes, uid) : [];
+                            responseData.data.locked = await ctx.service.cooperationConfirm.getLockedId(ctx.tender, ctx.stage);
                             break;
                         case 'spec':
                             const spec = {zlj: JSON.parse(JSON.stringify(stdConst.zlj)), jrg: stdConst.jrg};

+ 26 - 2
app/public/js/path_tree.js

@@ -1227,11 +1227,24 @@ const createNewPathTree = function (type, setting) {
             // stage关联索引
             this.stageItems = {};
         }
+
+        _loadLockedNodes(ids){
+            this.Locked = ids || [];
+            for (const f of this.Locked) {
+                const node = this.getItems(f.ledger_id);
+                node.locked = true;
+                const posterity = this.getPosterity(node);
+                for (const pn of posterity) {
+                    pn.locked = true;
+                    pn.lock = true;
+                }
+            }
+        }
         /**
          * 加载数据(初始化), 并给数据添加部分树结构必须数据
          * @param datas
          */
-        loadDatas(datas) {
+        loadDatas(datas, locked) {
             super.loadDatas(datas);
             // 清空旧数据
             this.stageItems = {};
@@ -1240,6 +1253,7 @@ const createNewPathTree = function (type, setting) {
                 const keyName = itemsPre + data[this.setting.stageId];
                 this.stageItems[keyName] = data;
             }
+            this._loadLockedNodes(locked)
         }
         // 解锁相关
         _loadPwdCache() {
@@ -1473,12 +1487,22 @@ const createNewPathTree = function (type, setting) {
             refresh.push(this.getNodeIndex(p.node));
             const posterity = this._getPwdPosterity(p.node);
             for (const pn of posterity) {
-                pn.lock = isLock;
+                pn.lock = pn.locked || isLock;
                 refresh.push(this.getNodeIndex(pn));
             }
             if (!this.loadingPwd) this._savePwdCache();
             return refresh;
         }
+
+        getLockedInfo(node) {
+            const ownerNodes = this.getAllParents(node);
+            const lockedInfo = [];
+            for (const on of ownerNodes) {
+                const filter = this.Locked.filter(x => { return x.ledger_id === on.ledger_id; });
+                lockedInfo.push(...filter);
+            }
+            return lockedInfo;
+        }
     }
 
     class MasterTree extends FxTree {

+ 27 - 5
app/public/js/stage.js

@@ -386,7 +386,13 @@ $(document).ready(() => {
             } else if (p.check && !p.confirm && coopwd) {
                 html.push('<td>', `<a name="ledger-confirm" href="javascript: void(0);" lid="${p.ledger_id}" class="btn btn-sm btn-success">确认</a>`, '</td>');
             } else {
-                html.push('<td>', '</td>');
+                const lockedInfo = stageTree.getLockedInfo(p.node);
+                if (lockedInfo.length > 0) {
+                    const lockedUser = lockedInfo.map(x => { return  x.name; });
+                    html.push('<td>', `审批人 ${lockedInfo.join(',')} 确认通过`, '</td>');
+                } else {
+                    html.push('<td>', '</td>');
+                }
             }
             html.push('</tr>');
         }
@@ -1639,7 +1645,20 @@ $(document).ready(() => {
                     $('#shoufang-pos').text('').hide();
                     $('#addshoufang').modal('show');
                 }
-            }
+            },
+            lockedSpr: '----',
+            lockedHint: {
+                name: '检查审批状态',
+                visible: function (key, opt) {
+                    const node = SpreadJsObj.getSelectObject(slSpread.getActiveSheet());
+                    return node.locked;
+                },
+                callback: function (key, opt) {
+                    const node = SpreadJsObj.getSelectObject(slSpread.getActiveSheet());
+                    const lockedInfo = stageTree.getLockedInfo(node);
+                    toastr.warning(`审批人 ${lockedInfo.map(x => { return x.name; }).join(',')} 审批通过,如需修改,请联系审批人重新审批`);
+                }
+            },
         }
     });
 
@@ -2078,7 +2097,8 @@ $(document).ready(() => {
     // 加载计量单元数据 - 暂时统一加载,如有需要,切换成动态加载并缓存
     postData(window.location.pathname + '/load', { filter: 'ledger;pos;detail;change;import_change;tag;cooperation' }, function (result) {
         // 加载树结构
-        stageTree.loadDatas(result.ledgerData);
+        console.log(result.locked);
+        stageTree.loadDatas(result.ledgerData, result.locked);
         // 加载部位明细
         stagePos.loadDatas(result.posData);
         checkShowLast(result.ledgerData.length);
@@ -4625,7 +4645,7 @@ $(document).ready(() => {
         const noUsed = stageTree.pwd.filter(x => {return !checkUsed(stageTree, stagePos, x.node) });
         const data = {
             opinion: $(`${'#sp-done'}`).find('[name=opinion]').val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' '),
-            noUsed: noUsed.map(x => { return x.id; }),
+            coop_noUsed: noUsed && noUsed.length > 0 ? noUsed.map(x => { return x.id; }) : [],
             checkType,
         };
         $('#sp-done').modal('hide');
@@ -4635,11 +4655,13 @@ $(document).ready(() => {
     });
     $('#audit-check1').submit(function (e) {
         const checkType = parseInt($('[name=checkType]:checked').val());
+        const confirm = stageTree.pwd.filter(x => {return x.confirm });
         const data = {
             opinion: $(`${'#sp-back'}`).find('[name=opinion]').val().replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' '),
+            coop_checked: confirm && confirm.length > 0 ? confirm.map(x => { return x.id; }) : [],
             checkType,
         };
-        if ($('#warning-text').length) $('#warning-text').remove()
+        if ($('#warning-text').length) $('#warning-text').remove();
         if (!checkType && !$('#warning-text').length) {
             $('#reject-process').prepend('<p id="warning-text" style="color: red; margin: 0;">请选择退回流程</p>');
             return false

+ 65 - 0
app/service/cooperation_confirm.js

@@ -8,6 +8,8 @@
  * @version
  */
 
+const auditConst = require('../const/audit');
+
 module.exports = app => {
     class CooperationConfirm extends app.BaseService {
         /**
@@ -57,6 +59,69 @@ module.exports = app => {
         async delBycheckNoPre(uid, stage, transaction) {
             return await transaction.delete(this.tableName, { tid: stage.tid, sid: stage.id, times: stage.times, uid });
         }
+
+        async lockConfirm4CheckNoPre(stage, uid, pre_uid, transaction) {
+            if (!transaction) throw '缺少参数';
+
+            const locked = await this.getAllDataByCondition({ where: { sid: stage.sid, locked: 1, times: stage.curTimes } });
+            // 审批人数据锁定
+            const locking = await this.getAllDataByCondition({ where: { sid: stage.sid, times: stage.curTimes, uid: uid } });
+            if (locking.length > 0) {
+                const updateLock = locking.map(x => { return { id: x.id, locked: 1 }; });
+                await transaction.updateRows(this.tableName, updateLock);
+            }
+            const preConfirm = await this.getAllDataByCondition({ where: { sid: stage.sid, times: stage.curTimes, uid: pre_uid } });
+            // 前审批人数据,与被锁定数据相关数据确认状态保留
+            locked.push(...locking);
+            if (preConfirm.length > 0) {
+                const delConfirm = [];
+                for (const pc of preConfirm) {
+                    const bills = await this.ctx.service.ledger.getDataByCondition({ tender_id: stage.tid, ledger_id: pc.ledger_id });
+                    const billsOwner = bills.full_path.split('-');
+                    const exist = locked.find(x => { return billsOwner.indexOf(x.ledger_id + '') >= 0; });
+                    if (!exist) delConfirm.push(pc.id);
+                }
+                if (delConfirm.length > 0) await transaction.delete(this.tableName, { id: delConfirm });
+            }
+        }
+
+        async lockComfirm4CheckNo(stage, uid, auditors, transaction) {
+            if (!transaction) throw '缺少参数';
+            // 审批人数据锁定
+            const lockConfirm = await this.getAllDataByCondition({ where: { sid: stage.id, times: stage.curTimes, uid: uid } });
+            const insertData = [];
+            lockConfirm.forEach(x => {
+                delete x.id;
+                x.locked = 1;
+                insertData.push(x);
+            });
+            // 审批人前所有角色,与锁定数据相关确认状态保留
+            const keepUid = [ stage.user_id ];
+            for (const a of auditors) {
+                if (a.aid === uid) break;
+                keepUid.push(a.aid);
+            }
+            const keepConfirm = await this.getAllDataByCondition({ where: { sid: stage.id, times: stage.curTimes, uid: keepUid } });
+            for (const kc of keepConfirm) {
+                const bills = await this.ctx.service.ledger.getDataByCondition({ tender_id: stage.tid, ledger_id: kc.ledger_id });
+                const billsOwner = bills.full_path.split('-');
+                const exist = lockConfirm.find(x => { return billsOwner.indexOf(x.ledger_id + '') >= 0; });
+                if (exist) {
+                    delete kc.id;
+                    kc.locked = 0;
+                    insertData.push(kc);
+                }
+            }
+            await transaction.insert(this.tableName, insertData);
+        }
+
+        async getLockedId(tender, stage) {
+            // const lockedCoop = await this.getAllDataByCondition({ where: { sid: stage.id, times: stage.curTimes, locked: 1 } });
+            const sql = `SELECT cc.ledger_id, cc.uid, pa.name FROM ${this.tableName} cc` +
+                    `  LEFT JOIN ${this.ctx.service.projectAccount.tableName} pa ON cc.uid = pa.id` +
+                    '  WHERE cc.sid = ? AND cc.times = ? AND cc.locked = 1';
+            return await this.db.query(sql, [stage.id, stage.curTimes]);
+        }
     }
 
     return CooperationConfirm;

+ 5 - 3
app/service/stage_audit.js

@@ -642,6 +642,9 @@ module.exports = app => {
                 await this.ctx.service.stageSafeProd.updateHistory(this.ctx.stage, transaction);
                 await this.ctx.service.stageTempLand.updateHistory(this.ctx.stage, transaction);
 
+                // 锁定本人数据,保留锁定数据相关确认状态
+                await this.ctx.service.cooperationConfirm.lockComfirm4CheckNo(this.ctx.stage, audit.aid, auditors, transaction);
+
                 // 添加短信通知-审批退回提醒功能
                 // const mobile_array = [];
                 const stageInfo = await this.ctx.service.stage.getDataById(stageId);
@@ -804,9 +807,8 @@ module.exports = app => {
                 await this.ctx.service.stageSafeProd.updateHistory(this.ctx.stage, transaction);
                 await this.ctx.service.stageTempLand.updateHistory(this.ctx.stage, transaction);
 
-                // 多人协同数据确认删除本人和上一个审批人确认状态
-                await this.ctx.service.cooperationConfirm.delBycheckNoPre(audit.aid, this.ctx.stage, transaction);
-                await this.ctx.service.cooperationConfirm.delBycheckNoPre(preAuditor.aid, this.ctx.stage, transaction);
+                // 锁定本人数据,保留锁定数据相关确认状态
+                await this.ctx.service.cooperationConfirm.lockConfirm4CheckNoPre(this.ctx.stage, audit.aid, transaction);
 
                 // 同步 期信息
                 await transaction.update(this.ctx.service.stage.tableName, {

+ 2 - 121
sql/update.sql

@@ -1,122 +1,2 @@
-ALTER TABLE `zh_stage_audit`
-ADD COLUMN `lock_lid`  text NULL COMMENT '锁定台账id(以,分隔)' AFTER `opinion`;
-
-ALTER TABLE `zh_material_stage_bills` ADD `expr` VARCHAR(1000) NULL DEFAULT NULL COMMENT '表达式' AFTER `quantity`;
-UPDATE `zh_material_stage_bills` a, `zh_material_bills` b SET a.`expr`= b.`expr` WHERE a.`mb_id` = b.`id`;
-
-UPDATE `zh_material_bills` a, `zh_material` b SET a.`expr`= null WHERE a.`mid` = b.`id` AND t_type = 2 AND b.`is_stage_self` = 1;
-
-CREATE TABLE `zh_s2b_spec_pull` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `pid` int(11) NOT NULL,
-  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
-  `pull_type` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '类型',
-  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
-  `info` text COLLATE utf8_unicode_ci COMMENT '拉取数据所需信息(json)',
-  `memo` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
-  `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '获取数据地址',
-  `valid` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',
-  `pull_class` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '分类',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
-ALTER TABLE `zh_tender_info`
-ADD COLUMN `gxby_info`  varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '工序报验信息' AFTER `fun_rela`,
-ADD COLUMN `dagl_info`  varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '档案管理信息' AFTER `gxby_info`;
-
-ALTER TABLE `zh_ledger_extra_0`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_1`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_2`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_3`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_4`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_5`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_6`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_7`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_8`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_ledger_extra_9`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-
-ALTER TABLE `zh_pos_extra_0`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_1`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_2`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_3`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_4`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_5`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_6`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_7`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_8`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_9`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_10`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_11`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_12`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_13`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_14`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_15`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_16`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_17`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_18`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-ALTER TABLE `zh_pos_extra_19`
-ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
-ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
-
-
-
+ALTER TABLE `zh_cooperation_confirm`
+ADD COLUMN `locked`  tinyint(4) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否锁定' AFTER `create_time`;

+ 119 - 0
sql/update20221024.sql

@@ -0,0 +1,119 @@
+ALTER TABLE `zh_material_stage_bills` ADD `expr` VARCHAR(1000) NULL DEFAULT NULL COMMENT '表达式' AFTER `quantity`;
+-- 同步旧数据
+UPDATE `zh_material_stage_bills` a, `zh_material_bills` b SET a.`expr`= b.`expr` WHERE a.`mb_id` = b.`id`;
+
+UPDATE `zh_material_bills` a, `zh_material` b SET a.`expr`= null WHERE a.`mid` = b.`id` AND t_type = 2 AND b.`is_stage_self` = 1;
+
+CREATE TABLE `zh_s2b_spec_pull` (
+  `id` int(11) NOT NULL AUTO_INCREMENT,
+  `pid` int(11) NOT NULL,
+  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
+  `pull_type` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '类型',
+  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
+  `info` text COLLATE utf8_unicode_ci COMMENT '拉取数据所需信息(json)',
+  `memo` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '备注',
+  `url` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '获取数据地址',
+  `valid` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '是否启用',
+  `pull_class` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '分类',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+ALTER TABLE `zh_tender_info`
+ADD COLUMN `gxby_info`  varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '工序报验信息' AFTER `fun_rela`,
+ADD COLUMN `dagl_info`  varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '' COMMENT '档案管理信息' AFTER `gxby_info`;
+
+ALTER TABLE `zh_ledger_extra_0`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_1`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_2`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_3`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_4`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_5`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_6`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_7`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_8`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_ledger_extra_9`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+
+ALTER TABLE `zh_pos_extra_0`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_1`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_2`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_3`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_4`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_5`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_6`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_7`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_8`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_9`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_10`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_11`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_12`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_13`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_14`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_15`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_16`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_17`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_18`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+ALTER TABLE `zh_pos_extra_19`
+ADD COLUMN `dagl_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '档案管理id' AFTER `dagl_url`,
+ADD COLUMN `gxby_id`  varchar(50) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '工序报验id' AFTER `dagl_id`;
+
+
+