| 
					
				 | 
			
			
				@@ -590,6 +590,11 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const selects = await this.getDataByKidAndCount(options, kid, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (selects.length !== count) throw '升级节点数据错误'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._.findIndex(selects, function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return item.c_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw '存在合同节点不可升级'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const first = selects[0], last = selects[count - 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const parent = await this.getDataByKid(options, first[this.setting.pid]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!parent) throw '升级节点数据错误'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -651,6 +656,11 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!count) count = 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const selects = await this.getDataByKidAndCount(options, kid, count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!selects) throw '降级节点数据错误'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._.findIndex(selects, function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return item.c_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw '存在合同节点不可降级'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const first = selects[0], last = selects[count - 1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const pre = await this.getDataByParentAndOrder(options, first[this.setting.pid], first[this.setting.order] - 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (!pre) throw '节点不可降级'; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -879,6 +889,11 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 查询selectData的lastChild 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const lastChild = await this.getLastChildData(options, select[this.setting.kid]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             const nexts = await this.getNextsData(options, select[this.setting.pid], select[this.setting.order]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._.findIndex(nexts, function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return item.c_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw '存在合同节点不可升级'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (nexts && nexts.length > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 修改nextsData pid, 排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // this.initSqlBuilder(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -904,8 +919,8 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // const [sql1, sqlParam1] = this.sqlBuilder.build(this.tableName, 'update'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const orderInc = lastChild ? lastChild[this.setting.order] - select[this.setting.order] : - select[this.setting.order]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const sql1 = 'UPDATE ?? SET `' + this.setting.order + '` = ' + (orderInc > 0 ? '+' : '-') + Math.abs(orderInc) + ' WHERE ' + this.ctx.helper._getOptionsSql(options) + ' AND ' + this.setting.pid + ' = ? AND `' + this.setting.order + '` > ?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                const sqlParam1 = [this.tableName, select[this.setting.kid], select[this.setting.pid], select[this.setting.order]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const sql1 = 'UPDATE ?? SET `'+ this.setting.pid + '` = '+ select[this.setting.kid] +' , `' + this.setting.order + '` = `'+ this.setting.order + '`' + (orderInc > 0 ? '+' : '-') + Math.abs(orderInc) + ' WHERE ' + this.ctx.helper._getOptionsSql(options) + ' AND ' + this.setting.pid + ' = ? AND `' + this.setting.order + '` > ?'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const sqlParam1 = [this.tableName, select[this.setting.pid], select[this.setting.order]]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 transaction ? await transaction.query(sql1, sqlParam1) : await this.db.query(sql1, sqlParam1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 // 选中节点 isLeaf应为false 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -919,8 +934,8 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const oldSubStr = this.db.escape(select[this.setting.pid] + '-'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const newSubStr = this.db.escape(select[this.setting.kid] + '-'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const sqlArr = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sqlArr.push('Update ?? SET `' + this.setting.fullPath + '` = Replace(`' + this.setting.fullPath + '`,' + oldSubStr + ',' + newSubStr + ') Where'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sqlArr.push('(`' + this.ctx.helper._getOptionsSql(options) + ')'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sqlArr.push('Update ?? SET `' + this.setting.fullPath + '` = Replace(`' + this.setting.fullPath + '`,' + oldSubStr + ',' + newSubStr + ') Where '); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sqlArr.push(this.ctx.helper._getOptionsSql(options)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sqlArr.push(' And ('); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 for (const data of nexts) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     sqlArr.push('`' + this.setting.fullPath + '` Like ' + this.db.escape(data[this.setting.fullPath] + '%')); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -931,6 +946,7 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sqlArr.push(')'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const sql = sqlArr.join(''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 const resultData = transaction ? await transaction.query(sql, [this.tableName]) : await this.db.query(sql, [this.tableName]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                transaction ? await transaction.query(sql, [this.ctx.service.contract.tableName]) : await this.db.query(sql, [this.ctx.service.contract.tableName]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return resultData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -942,6 +958,12 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          * @private 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async _syncUplevelChildren(options, select, transaction = null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const children = await this.getDataByFullPath(options, select[this.setting.fullPath] + '-%'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._.findIndex(children, function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return item.c_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw '存在合同节点不可升级'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // this.initSqlBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // this.sqlBuilder.setAndWhere(this.setting.mid, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //     value: select[this.setting.mid], 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -977,6 +999,12 @@ module.exports = app => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          * @private 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         async _syncDownlevelChildren(options, select, newFullPath, transaction = null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const children = await this.getDataByFullPath(options, select[this.setting.fullPath] + '-%'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this._.findIndex(children, function (item) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return item.c_code; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }) !== -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw '存在合同节点不可降级'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // this.initSqlBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // this.sqlBuilder.setAndWhere(this.setting.mid, { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //     value: select[this.setting.mid], 
			 |