Browse Source

多人协同问题

MaiXinRong 2 years ago
parent
commit
ce42d9ec66
6 changed files with 279 additions and 297 deletions
  1. 6 0
      app/lib/rm/material.js
  2. 45 59
      app/middleware/stage_check.js
  3. 39 49
      app/service/stage.js
  4. 1 1
      publish.md
  5. 0 188
      sql/update.sql
  6. 188 0
      sql/update20230212.sql

+ 6 - 0
app/lib/rm/material.js

@@ -231,6 +231,8 @@ class ReportMemoryMaterial {
 
     async getMaterialBills(tender_id, material_order, fields) {
         const material = await this.ctx.service.material.getDataByCondition({tid: tender_id, order: material_order});
+        if (!material) return [];
+
         try {
             const billsData = await this.ctx.service.ledger.getData(tender_id);
             if (this._checkFieldsExist(fields, billsFields.stage)) {
@@ -262,6 +264,8 @@ class ReportMemoryMaterial {
 
     async getMaterialPos(tender_id, material_order, fields) {
         const material = await this.ctx.service.material.getDataByCondition({tid: tender_id, order: material_order});
+        if (!material) return [];
+
         try {
             const posData = await this.ctx.service.pos.getAllDataByCondition({ where: {tid: tender_id }});
             if (this._checkFieldsExist(fields, posFields.stage)) {
@@ -385,6 +389,8 @@ class ReportMemoryMaterial {
 
     async getMaterialStage(tender_id, material_order, fields) {
         const material = await this.ctx.service.material.getDataByCondition({tid: tender_id, order: material_order});
+        if (!material) return [];
+
         if (material.is_stage_self) {
             return await this.ctx.service.materialStage.getAllDataByCondition({ where: { mid: material.id } });
         } else {

+ 45 - 59
app/middleware/stage_check.js

@@ -68,6 +68,7 @@ module.exports = options => {
             const accountId = this.session.sessionUser.accountId,
                 auditorIds = _.map(stage.auditors, 'aid');
             let auditAssists = yield this.service.stageAuditAss.getData(stage);
+            // 过滤无效的协审人
             auditAssists = auditAssists.filter(x => {
                 return x.user_id === stage.user_id || auditorIds.indexOf(x.user_id) >= 0;
             });
@@ -78,20 +79,61 @@ module.exports = options => {
                 shareIds = [];
             stage.users = stage.status === status.uncheck ? [stage.user_id, ...userAssistIds] : [stage.user_id, ...userAssistIds, ...auditorIds, ...auditAssistIds];
             stage.relaAssists = auditAssists.filter(x => { return x.user_id === accountId });
-            if (stage.status === status.uncheck || stage.status === status.checkNo) {
+            if (stage.status === status.uncheck) {
                 stage.readOnly = accountId !== stage.user_id && userAssistIds.indexOf(accountId) < 0;
-                if (!stage.readOnly) stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                if (!stage.readOnly) {
+                    stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                }
+                stage.curTimes = stage.times;
+                stage.curOrder = 0;
+            } else if (stage.status === status.checkNo) {
+                stage.readOnly = accountId !== stage.user_id && userAssistIds.indexOf(accountId) < 0;
+                const checkNoAudit = yield this.service.stageAudit.getDataByCondition({
+                    sid: stage.id, times: stage.times - 1, status: status.checkNo,
+                });
+                if (!stage.readOnly) {
+                    stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                    stage.curTimes = stage.times;
+                    stage.curOrder = 0;
+                } else {
+                    stage.curTimes = stage.times - 1;
+                    stage.curOrder = checkNoAudit.order;
+                }
             } else if (stage.status === status.checked) {
                 stage.readOnly = true;
+                stage.curTimes = stage.times;
+                stage.curOrder = _.max(_.map(stage.auditors, 'order'));
             } else {
                 const ass = stage.auditAssists.find(x => { return x.user_id === stage.curAuditor.aid && x.ass_user_id === accountId; });
                 stage.readOnly = stage.curAuditor.aid !== accountId && !ass;
-                if (!stage.readOnly) stage.assist = ass;
+                stage.curTimes = stage.times;
+                if (!stage.readOnly) {
+                    stage.assist = ass;
+                    stage.curOrder = stage.curAuditor.order;
+                } else {
+                    stage.curOrder = stage.curAuditor.order - 1;
+                }
             }
             if (stage.readOnly) {
                 stage.assist = accountId === stage.user_id || auditorIds.indexOf(accountId) >= 0 ? null : auditAssists.find(x => { return x.ass_user_id === accountId});
             }
 
+            const permission = this.session.sessionUser.permission;
+            if (stage.users.indexOf(accountId) >= 0) {
+                stage.filePermission = true;
+            } else {
+                if (shareIds.indexOf(accountId) !== -1 || (permission !== null && permission.tender !== undefined && permission.tender.indexOf('2') !== -1)) {// 分享人
+                    if (stage.status === status.uncheck) {
+                        throw '您无权查看该数据';
+                    }
+                    stage.filePermission = false;
+                } else if (this.tender.isTourist || this.session.sessionUser.is_admin) {
+                    stage.filePermission = this.tender.touristPermission.file || auditorIds.indexOf(accountId) !== -1;
+                } else {
+                    throw '您无权查看该数据';
+                }
+            }
+
             // 获取当前审批人的上一个审批人,判断是否是当前登录人,并赋予撤回功能,(当审批人存在有审批过时,上一人不允许再撤回)
             stage.cancancel = 0;
             if (stage.status !== status.checked && stage.status !== status.uncheck) {
@@ -123,62 +165,6 @@ module.exports = options => {
                 }
             }
 
-            const permission = this.session.sessionUser.permission;
-            if (accountId === stage.user_id || userAssistIds.indexOf(accountId) >= 0) { // 原报
-                stage.curTimes = stage.times;
-                if (stage.status === status.uncheck || stage.status === status.checkNo) {
-                    stage.curOrder = 0;
-                } else if (stage.status === status.checked) {
-                    stage.curOrder = _.max(_.map(stage.auditors, 'order'));
-                } else {
-                    stage.curOrder = stage.curAuditor.aid === accountId ? stage.curAuditor.order : stage.curAuditor.order - 1;
-                }
-                stage.filePermission = true;
-            } else if (auditorIds.indexOf(accountId) !== -1 || auditAssistIds.indexOf(accountId) >= 0) { // 审批人/协审
-                if (stage.status === status.uncheck) {
-                    throw '您无权查看该数据';
-                }
-                stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                if (stage.status === status.checked) {
-                    stage.curOrder = _.max(_.map(stage.auditors, 'order'));
-                } else if (stage.status === status.checkNo) {
-                    const audit = yield this.service.stageAudit.getDataByCondition({
-                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
-                    });
-                    stage.curOrder = audit.order;
-                } else {
-                    stage.curOrder = accountId === stage.curAuditor.aid ? stage.curAuditor.order : stage.curAuditor.order - 1;
-                }
-                stage.filePermission = true;
-            } else if (shareIds.indexOf(accountId) !== -1 || (permission !== null && permission.tender !== undefined && permission.tender.indexOf('2') !== -1)) { // 分享人
-                if (stage.status === status.uncheck) {
-                    throw '您无权查看该数据';
-                }
-                stage.readOnly = true;
-                stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                if (stage.status === status.checkNo) {
-                    const audit = yield this.service.stageAudit.getDataByCondition({
-                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
-                    });
-                    stage.curOrder = audit.order;
-                } else {
-                    stage.curOrder = stage.status === status.checked ? _.max(_.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
-                }
-                stage.filePermission = false;
-            } else if (this.tender.isTourist || this.session.sessionUser.is_admin) {
-                stage.curTimes = stage.times;
-                if (stage.status === status.uncheck || stage.status === status.checkNo) {
-                    stage.curOrder = 0;
-                } else if (stage.status === status.checked) {
-                    stage.curOrder = _.max(_.map(stage.auditors, 'order'));
-                } else {
-                    stage.curOrder = stage.curAuditor.order;
-                }
-                stage.filePermission = this.tender.touristPermission.file || auditorIds.indexOf(accountId) !== -1;
-            } else { // 其他不可见
-                throw '您无权查看该数据';
-            }
-
             const lastRevise = yield this.service.ledgerRevise.getLastestRevise(this.tender.id);
             stage.revising = (lastRevise && lastRevise.status !== reviseStatus.checked) || false;
             this.stage = stage;

+ 39 - 49
app/service/stage.js

@@ -93,71 +93,61 @@ module.exports = app => {
             await this.loadStageUser(stage);
 
             const accountId = this.ctx.session.sessionUser.accountId, shareIds = [];
-            if (stage.status === status.uncheck || stage.status === status.checkNo) {
+            const isTenderTourist = await this.service.tenderTourist.getDataByCondition({ tid: stage.tid, user_id: accountId });
+            const permission = this.ctx.session.sessionUser.permission;
+            if (stage.status === status.uncheck) {
+                stage.readOnly = accountId !== stage.user_id && stage.userAssistIds.indexOf(accountId) < 0;
+                if (!stage.readOnly) {
+                    stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                }
+                stage.curTimes = stage.times;
+                stage.curOrder = 0;
+            } else if (stage.status === status.checkNo) {
                 stage.readOnly = accountId !== stage.user_id && stage.userAssistIds.indexOf(accountId) < 0;
-                if (!stage.readOnly) stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                const checkNoAudit = await this.service.stageAudit.getDataByCondition({
+                    sid: stage.id, times: stage.times - 1, status: status.checkNo,
+                });
+                if (!stage.readOnly) {
+                    stage.assist = stage.userAssists.find(x => { return x.ass_user_id === accountId; });
+                    stage.curTimes = stage.times;
+                    stage.curOrder = 0;
+                } else {
+                    stage.curTimes = stage.times - 1;
+                    stage.curOrder = checkNoAudit.order;
+                }
             } else if (stage.status === status.checked) {
                 stage.readOnly = true;
+                stage.curTimes = stage.times;
+                stage.curOrder = _.max(_.map(stage.auditors, 'order'));
             } else {
                 const ass = stage.auditAssists.find(x => { return x.user_id === stage.curAuditor.aid && x.ass_user_id === accountId; });
                 stage.readOnly = stage.curAuditor.aid !== accountId && !ass;
-                if (!stage.readOnly) stage.assist = ass;
+                stage.curTimes = stage.times;
+                if (!stage.readOnly) {
+                    stage.assist = ass;
+                    stage.curOrder = stage.curAuditor.order;
+                } else {
+                    stage.curOrder = stage.curAuditor.order - 1;
+                }
             }
             if (stage.readOnly) {
                 stage.assist = accountId === stage.user_id || stage.auditorIds.indexOf(accountId) >= 0
                     ? null
                     : stage.assists.find(x => { return x.ass_user_id === accountId});
             }
-            const isTenderTourist = await this.service.tenderTourist.getDataByCondition({ tid: stage.tid, user_id: accountId });
-            const permission = this.ctx.session.sessionUser.permission;
-            if (accountId === stage.user_id || stage.userAssistIds.indexOf(accountId) >= 0) { // 原报
-                stage.curTimes = stage.times;
-                if (stage.status === status.uncheck || stage.status === status.checkNo) {
-                    stage.curOrder = 0;
-                } else if (stage.status === status.checked) {
-                    stage.curOrder = this._.max(this._.map(stage.auditors, 'order'));
-                } else {
-                    stage.curOrder = stage.curAuditor.aid === accountId ? stage.curAuditor.order : stage.curAuditor.order - 1;
-                }
+            if (stage.users.indexOf(accountId) >= 0) {
                 stage.filePermission = true;
-            } else if (!!isTenderTourist || force) { // 游客
-                stage.readOnly = true;
-                stage.curTimes = stage.times;
-                if (stage.status === status.uncheck || stage.status === status.checkNo) {
-                    stage.curOrder = 0;
-                } else if (stage.status === status.checked) {
-                    stage.curOrder = this._.max(this._.map(stage.auditors, 'order'));
-                } else {
-                    stage.curOrder = stage.curAuditor.order;
-                }
-            } else if (stage.auditorIds.indexOf(accountId) >= 0 || stage.auditAssistIds.indexOf(accountId) >= 0) { // 审批人
-                if (stage.status === status.uncheck) throw '您无权查看该数据';
-                stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                if (stage.status === status.checked) {
-                    stage.curOrder = this._.max(this._.map(stage.auditors, 'order'));
-                } else if (stage.status === status.checkNo) {
-                    const audit = await this.service.stageAudit.getDataByCondition({
-                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
-                    });
-                    stage.curOrder = audit.order;
+            } else {
+                if (shareIds.indexOf(accountId) !== -1 || (permission !== null && permission.tender !== undefined && permission.tender.indexOf('2') !== -1)) {// 分享人
+                    if (stage.status === status.uncheck) {
+                        throw '您无权查看该数据';
+                    }
+                    stage.filePermission = false;
+                } else if (!!isTenderTourist || force) {
+                    stage.filePermission = this.tender.touristPermission.file;
                 } else {
-                    stage.curOrder = accountId === stage.curAuditor.aid ? stage.curAuditor.order : stage.curAuditor.order - 1;
-                }
-                stage.filePermission = true;
-            } else if (shareIds.indexOf(accountId) !== -1 || (permission !== null && permission.tender !== undefined && permission.tender.indexOf('2') !== -1)) { // 分享人
-                if (stage.status === status.uncheck) {
                     throw '您无权查看该数据';
                 }
-                stage.readOnly = true;
-                stage.curTimes = stage.status === status.checkNo ? stage.times - 1 : stage.times;
-                if (stage.status === status.checkNo) {
-                    const audit = await this.service.stageAudit.getDataByCondition({
-                        sid: stage.id, times: stage.times - 1, status: status.checkNo,
-                    });
-                    stage.curOrder = audit.order;
-                } else {
-                    stage.curOrder = stage.status === status.checked ? this._.max(this._.map(stage.auditors, 'order')) : stage.curAuditor.order - 1;
-                }
             }
 
             let time = stage.readOnly ? stage.cache_time_r : stage.cache_time_l;

+ 1 - 1
publish.md

@@ -11,7 +11,7 @@
 如果没有特殊说明,则在第默认操作的第3步前,执行相关脚本,如果有特殊要求,需特别说明
 
 ### V3.5.28.0227
-2022-1024 ~ 2023-02-07(uat) ~ ... prod
+2022-1024 ~ 2023-02-07(uat) ~ 2023-02-12 prod
 3.1 pay:
     - 重算所有合同支付项order
 #### uat

+ 0 - 188
sql/update.sql

@@ -1,188 +0,0 @@
-ALTER TABLE `zh_project_account` CHANGE `stamp_path` `stamp_path` VARCHAR(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户签章oss地址';
-
-ALTER TABLE `zh_revise_price`
-ADD COLUMN `rela_lid`  varchar(1000) NOT NULL DEFAULT '' COMMENT '关联台账id(zh_ledger.ledger_id)' AFTER `use_stage_order`;
-ALTER TABLE `zh_revise_price`
-ADD COLUMN `rela_cid`  varchar(5000) NOT NULL DEFAULT '' COMMENT '关联变更令id(zh_change.cid)' AFTER `rela_lid`;
-ALTER TABLE `zh_revise_price`
-ADD COLUMN `his_rela_cid`  varchar(5000) NOT NULL DEFAULT '' COMMENT '审批通过后,关联变更令id(zh_change.cid)' AFTER `rela_cid`;
-
-CREATE TABLE `zh_audit_ass` (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `pid` int(11) unsigned NOT NULL COMMENT '项目id',
-  `tid` int(11) unsigned NOT NULL COMMENT '标段id',
-  `user_id` int(11) unsigned NOT NULL COMMENT '主账号id',
-  `ass_user_id` int(11) unsigned NOT NULL COMMENT '协审账号id',
-  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '用户名',
-  `company` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '单位',
-  `role` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '角色',
-  `ass_ledger_id` varchar(1000) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '协审台账id(zh_ledger.ledger_id)',
-  PRIMARY KEY (`id`),
-  KEY `idx_tid` (`tid`) USING BTREE,
-  KEY `idx_tid_user` (`tid`,`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
-CREATE TABLE `zh_stage_audit_ass` (
-  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-  `pid` int(11) unsigned NOT NULL COMMENT '项目id',
-  `tid` int(11) unsigned NOT NULL COMMENT '标段id',
-  `sid` int(11) unsigned NOT NULL COMMENT '期id',
-  `times` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '审批次',
-  `user_id` int(11) unsigned NOT NULL COMMENT '主账号id',
-  `ass_user_id` int(11) unsigned NOT NULL COMMENT '协审人账号id',
-  `ass_ledger_id` varchar(5000) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '协审台账id(zh_ledger.ledger_id)',
-  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
-  `company` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '单位',
-  `role` varchar(255) 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 '更新时间',
-  `confirm` tinyint(4) unsigned NOT NULL DEFAULT '1',
-  `locked` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '锁定',
-  PRIMARY KEY (`id`),
-  KEY `idx_sid_times` (`sid`,`times`) USING BTREE,
-  KEY `idx_sid_times_user` (`sid`,`times`,`user_id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
-ALTER TABLE `zh_budget_final`
-ADD COLUMN `deal_dgn_qty1`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同-数量1' AFTER `dgn_qty`,
-ADD COLUMN `deal_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同-数量2' AFTER `deal_dgn_qty1`,
-ADD COLUMN `c_dgn_qty1`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量1' AFTER `deal_dgn_qty2`,
-ADD COLUMN `c_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量2' AFTER `c_dgn_qty1`,
-ADD COLUMN `final_contract_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同金额' AFTER `final_dgn_qty2`,
-ADD COLUMN `final_qc_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更金额' AFTER `final_cotnract_tp`;
-
-ALTER TABLE `zh_tender`
-ADD COLUMN `rpt_show_level`  varchar(50) NOT NULL DEFAULT 'last' AFTER `c_plan_list_rule`;
-
-ALTER TABLE `zh_ledger_0`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_1`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_2`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_3`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_4`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_5`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_6`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_7`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_8`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_ledger_9`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-
-ALTER TABLE `zh_pos_0`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_1`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_2`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_3`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_4`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_5`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_6`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_7`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_8`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_9`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_10`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_11`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_12`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_13`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_14`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_15`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_16`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_17`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_18`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_pos_19`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-
-ALTER TABLE `zh_revise_bills_0`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_1`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_2`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_3`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_4`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_5`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_6`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_7`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_8`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_bills_9`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-
-ALTER TABLE `zh_revise_pos_0`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_1`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_2`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_3`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_4`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_5`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_6`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_7`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_8`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_9`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_10`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_11`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_12`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_13`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_14`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_15`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_16`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_17`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_18`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-ALTER TABLE `zh_revise_pos_19`
-ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
-
-ALTER TABLE `zh_stage_pay`
-ADD COLUMN `porder` tinyint(4) NOT NULL DEFAULT '0' COMMENT '排序' AFTER `sorder`;
-UPDATE zh_stage_pay sp LEFT JOIN zh_pay p ON sp.pid = p.id SET sp.porder = p.`order`;
-
-ALTER TABLE `zh_change_ledger` ADD `formc` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否为变更新增(用于区分台账)' AFTER `ccid`;
-ALTER TABLE `zh_change_pos` ADD `formc` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否为变更新增(用于区分台账)' AFTER `ccid`;
-
-ALTER TABLE `zh_stage_audit` ADD `is_old` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否为旧流程(用于管理员修改流程时旧数据保留但不影响新流程)' AFTER `lock_lid`;

+ 188 - 0
sql/update20230212.sql

@@ -0,0 +1,188 @@
+ALTER TABLE `zh_project_account` CHANGE `stamp_path` `stamp_path` VARCHAR(5000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户签章oss地址';
+
+ALTER TABLE `zh_revise_price`
+ADD COLUMN `rela_lid`  varchar(1000) NOT NULL DEFAULT '' COMMENT '关联台账id(zh_ledger.ledger_id)' AFTER `use_stage_order`;
+ALTER TABLE `zh_revise_price`
+ADD COLUMN `rela_cid`  varchar(5000) NOT NULL DEFAULT '' COMMENT '关联变更令id(zh_change.cid)' AFTER `rela_lid`;
+ALTER TABLE `zh_revise_price`
+ADD COLUMN `his_rela_cid`  varchar(5000) NOT NULL DEFAULT '' COMMENT '审批通过后,关联变更令id(zh_change.cid)' AFTER `rela_cid`;
+
+CREATE TABLE `zh_audit_ass` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT,
+  `pid` int(11) unsigned NOT NULL COMMENT '项目id',
+  `tid` int(11) unsigned NOT NULL COMMENT '标段id',
+  `user_id` int(11) unsigned NOT NULL COMMENT '主账号id',
+  `ass_user_id` int(11) unsigned NOT NULL COMMENT '协审账号id',
+  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '用户名',
+  `company` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '单位',
+  `role` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '角色',
+  `ass_ledger_id` varchar(1000) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '协审台账id(zh_ledger.ledger_id)',
+  PRIMARY KEY (`id`),
+  KEY `idx_tid` (`tid`) USING BTREE,
+  KEY `idx_tid_user` (`tid`,`user_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+CREATE TABLE `zh_stage_audit_ass` (
+  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
+  `pid` int(11) unsigned NOT NULL COMMENT '项目id',
+  `tid` int(11) unsigned NOT NULL COMMENT '标段id',
+  `sid` int(11) unsigned NOT NULL COMMENT '期id',
+  `times` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '审批次',
+  `user_id` int(11) unsigned NOT NULL COMMENT '主账号id',
+  `ass_user_id` int(11) unsigned NOT NULL COMMENT '协审人账号id',
+  `ass_ledger_id` varchar(5000) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '协审台账id(zh_ledger.ledger_id)',
+  `name` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '名称',
+  `company` varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '单位',
+  `role` varchar(255) 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 '更新时间',
+  `confirm` tinyint(4) unsigned NOT NULL DEFAULT '1',
+  `locked` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '锁定',
+  PRIMARY KEY (`id`),
+  KEY `idx_sid_times` (`sid`,`times`) USING BTREE,
+  KEY `idx_sid_times_user` (`sid`,`times`,`user_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
+
+ALTER TABLE `zh_budget_final`
+ADD COLUMN `deal_dgn_qty1`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同-数量1' AFTER `dgn_qty`,
+ADD COLUMN `deal_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同-数量2' AFTER `deal_dgn_qty1`,
+ADD COLUMN `c_dgn_qty1`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量1' AFTER `deal_dgn_qty2`,
+ADD COLUMN `c_dgn_qty2`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更-数量2' AFTER `c_dgn_qty1`,
+ADD COLUMN `final_contract_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-合同金额' AFTER `final_dgn_qty2`,
+ADD COLUMN `final_qc_tp`  decimal(24,8) NOT NULL DEFAULT 0 COMMENT '决算-变更金额' AFTER `final_contract_tp`;
+
+ALTER TABLE `zh_tender`
+ADD COLUMN `rpt_show_level`  varchar(50) NOT NULL DEFAULT 'last' AFTER `c_plan_list_rule`;
+
+ALTER TABLE `zh_ledger_0`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_1`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_2`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_3`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_4`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_5`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_6`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_7`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_8`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_ledger_9`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+
+ALTER TABLE `zh_pos_0`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_1`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_2`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_3`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_4`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_5`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_6`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_7`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_8`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_9`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_10`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_11`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_12`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_13`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_14`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_15`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_16`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_17`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_18`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_pos_19`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+
+ALTER TABLE `zh_revise_bills_0`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_1`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_2`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_3`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_4`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_5`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_6`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_7`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_8`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_bills_9`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+
+ALTER TABLE `zh_revise_pos_0`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_1`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_2`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_3`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_4`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_5`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_6`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_7`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_8`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_9`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_10`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_11`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_12`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_13`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_14`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_15`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_16`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_17`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_18`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+ALTER TABLE `zh_revise_pos_19`
+ADD COLUMN `ccid`  varchar(36) NULL DEFAULT '' COMMENT 'create_change_id(uuid)' AFTER `crid`;
+
+ALTER TABLE `zh_stage_pay`
+ADD COLUMN `porder` tinyint(4) NOT NULL DEFAULT '0' COMMENT '排序' AFTER `sorder`;
+UPDATE zh_stage_pay sp LEFT JOIN zh_pay p ON sp.pid = p.id SET sp.porder = IF(ISNull(p.`order`), 0, p.`order`);
+
+ALTER TABLE `zh_change_ledger` ADD `formc` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否为变更新增(用于区分台账)' AFTER `ccid`;
+ALTER TABLE `zh_change_pos` ADD `formc` TINYINT(1) NOT NULL DEFAULT '1' COMMENT '是否为变更新增(用于区分台账)' AFTER `ccid`;
+
+ALTER TABLE `zh_stage_audit` ADD `is_old` TINYINT(1) NOT NULL DEFAULT '0' COMMENT '是否为旧流程(用于管理员修改流程时旧数据保留但不影响新流程)' AFTER `opinion`;