|
@@ -1,16 +1,24 @@
|
|
'use strict';
|
|
'use strict';
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 标段项目节数据模型
|
|
|
|
|
|
+ * 标段--台账 数据模型
|
|
*
|
|
*
|
|
* @author CaiAoLin
|
|
* @author CaiAoLin
|
|
* @date 2017/12/1
|
|
* @date 2017/12/1
|
|
* @version
|
|
* @version
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
+const needField = {
|
|
|
|
+ id: 'ledger_id',
|
|
|
|
+ pid: 'ledger_pid',
|
|
|
|
+ order: 'order',
|
|
|
|
+ level: 'level',
|
|
|
|
+ fullPath: 'full_path'
|
|
|
|
+}
|
|
|
|
+
|
|
module.exports = app => {
|
|
module.exports = app => {
|
|
|
|
|
|
- class TenderNode extends app.BaseService {
|
|
|
|
|
|
+ class Ledger extends app.BaseService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 构造函数
|
|
* 构造函数
|
|
@@ -20,7 +28,7 @@ module.exports = app => {
|
|
*/
|
|
*/
|
|
constructor(ctx) {
|
|
constructor(ctx) {
|
|
super(ctx);
|
|
super(ctx);
|
|
- this.tableName = 'tender_node';
|
|
|
|
|
|
+ this.tableName = 'ledger';
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -45,8 +53,8 @@ module.exports = app => {
|
|
// 整理数据
|
|
// 整理数据
|
|
const insertData = [];
|
|
const insertData = [];
|
|
for (const tmp of data) {
|
|
for (const tmp of data) {
|
|
- tmp.template_id = tmp.id;
|
|
|
|
- tmp.template_pid = tmp.pid;
|
|
|
|
|
|
+ tmp.ledger_id = tmp.id;
|
|
|
|
+ tmp.ledger_pid = tmp.pid;
|
|
tmp.tender_id = tenderId;
|
|
tmp.tender_id = tenderId;
|
|
delete tmp.id;
|
|
delete tmp.id;
|
|
delete tmp.pid;
|
|
delete tmp.pid;
|
|
@@ -113,7 +121,7 @@ module.exports = app => {
|
|
value: tenderId,
|
|
value: tenderId,
|
|
operate: '=',
|
|
operate: '=',
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_id', {
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_id', {
|
|
value: nodeId,
|
|
value: nodeId,
|
|
operate: '=',
|
|
operate: '=',
|
|
});
|
|
});
|
|
@@ -136,7 +144,7 @@ module.exports = app => {
|
|
value: tenderId,
|
|
value: tenderId,
|
|
operate: '='
|
|
operate: '='
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
value: pid,
|
|
value: pid,
|
|
operate: '='
|
|
operate: '='
|
|
});
|
|
});
|
|
@@ -165,7 +173,7 @@ module.exports = app => {
|
|
value: tenderId,
|
|
value: tenderId,
|
|
operate: '='
|
|
operate: '='
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
value: pid,
|
|
value: pid,
|
|
operate: '=',
|
|
operate: '=',
|
|
});
|
|
});
|
|
@@ -193,6 +201,27 @@ module.exports = app => {
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
+ * 根据full_path获取数据 full_path Like ‘1.2.3%’(传参full_path = '1.2.3%')
|
|
|
|
+ * @param {Number} tenderId - 标段id
|
|
|
|
+ * @param {String} full_path - 路径
|
|
|
|
+ * @returns {Promise<void>}
|
|
|
|
+ */
|
|
|
|
+ async getDataByFullPath(tenderId, full_path) {
|
|
|
|
+ this.initSqlBuilder();
|
|
|
|
+ this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
+ value: tenderId,
|
|
|
|
+ operate: '='
|
|
|
|
+ });
|
|
|
|
+ this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
+ value: this.db.escape(full_path),
|
|
|
|
+ operate: 'Like'
|
|
|
|
+ });
|
|
|
|
+ let [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
|
+ const resultData = await this.db.query(sql, sqlParam);
|
|
|
|
+ return resultData;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
* 根据 父节点ID 和 节点排序order 获取全部后节点数据
|
|
* 根据 父节点ID 和 节点排序order 获取全部后节点数据
|
|
* @param {Number} tenderId - 标段id
|
|
* @param {Number} tenderId - 标段id
|
|
* @param {Number} pid - 父节点id
|
|
* @param {Number} pid - 父节点id
|
|
@@ -209,7 +238,7 @@ module.exports = app => {
|
|
value: tenderId,
|
|
value: tenderId,
|
|
operate: '='
|
|
operate: '='
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
value: pid,
|
|
value: pid,
|
|
operate: '=',
|
|
operate: '=',
|
|
});
|
|
});
|
|
@@ -242,8 +271,8 @@ module.exports = app => {
|
|
value: select.order + 1,
|
|
value: select.order + 1,
|
|
operate: '>=',
|
|
operate: '>=',
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
- value: select.template_pid,
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
|
+ value: select.ledger_pid,
|
|
operate: '=',
|
|
operate: '=',
|
|
});
|
|
});
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
@@ -266,7 +295,7 @@ module.exports = app => {
|
|
*/
|
|
*/
|
|
async _getMaxNodeId(tenderId) {
|
|
async _getMaxNodeId(tenderId) {
|
|
const sql = 'SELECT Max(??) As max_id FROM ?? Where tender_id = ' + tenderId;
|
|
const sql = 'SELECT Max(??) As max_id FROM ?? Where tender_id = ' + tenderId;
|
|
- const sqlParam = ['template_id', this.tableName];
|
|
|
|
|
|
+ const sqlParam = ['ledger_id', this.tableName];
|
|
const queryResult = await this.db.queryOne(sql, sqlParam);
|
|
const queryResult = await this.db.queryOne(sql, sqlParam);
|
|
return queryResult.max_id;
|
|
return queryResult.max_id;
|
|
}
|
|
}
|
|
@@ -295,11 +324,11 @@ module.exports = app => {
|
|
}
|
|
}
|
|
|
|
|
|
data.tender_id = tenderId;
|
|
data.tender_id = tenderId;
|
|
- data.template_id = maxId + 1;
|
|
|
|
- data.template_pid = selectData.template_pid;
|
|
|
|
|
|
+ data.ledger_id = maxId + 1;
|
|
|
|
+ data.ledger_pid = selectData.ledger_pid;
|
|
data.level = selectData.level;
|
|
data.level = selectData.level;
|
|
data.order = selectData.order + 1;
|
|
data.order = selectData.order + 1;
|
|
- data.full_path = selectData.full_path.replace(selectData.template_id, data.template_id);
|
|
|
|
|
|
+ data.full_path = selectData.full_path.replace(selectData.ledger_id, data.ledger_id);
|
|
const result = await this.transaction.insert(this.tableName, data);
|
|
const result = await this.transaction.insert(this.tableName, data);
|
|
|
|
|
|
this.cache.set(cacheKey, maxId + 1, 'EX', this.ctx.app.config.cacheTime);
|
|
this.cache.set(cacheKey, maxId + 1, 'EX', this.ctx.app.config.cacheTime);
|
|
@@ -320,42 +349,26 @@ module.exports = app => {
|
|
return [];
|
|
return [];
|
|
}
|
|
}
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
|
+ if (!selectData) {
|
|
|
|
+ throw '新增节点数据错误';
|
|
|
|
+ }
|
|
this.transaction = await this.db.beginTransaction();
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
|
|
|
- if (selectData) {
|
|
|
|
- try {
|
|
|
|
- // 选中节点的所有后兄弟节点,order+1
|
|
|
|
- await this._updateSelectNextsOrder(selectData);
|
|
|
|
- // 数据库创建新增节点数据
|
|
|
|
- await this._addNodeData(tenderId, selectData, data);
|
|
|
|
- await this.transaction.commit();
|
|
|
|
- } catch (err) {
|
|
|
|
- await this.transaction.rollback();
|
|
|
|
- throw err;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 查询应返回的结果
|
|
|
|
- this.initSqlBuilder();
|
|
|
|
- this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
- value: selectData.tender_id,
|
|
|
|
- operate: '=',
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
- value: selectData.template_pid,
|
|
|
|
- operate: '=',
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('order', {
|
|
|
|
- value: selectData.order,
|
|
|
|
- operate: '>',
|
|
|
|
- });
|
|
|
|
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
|
- const resultData = this.db.query(sql, sqlParam);
|
|
|
|
|
|
|
|
- return resultData;
|
|
|
|
- } else {
|
|
|
|
- throw '新增节点数据错误';
|
|
|
|
|
|
+ try {
|
|
|
|
+ // 选中节点的所有后兄弟节点,order+1
|
|
|
|
+ await this._updateSelectNextsOrder(selectData);
|
|
|
|
+ // 数据库创建新增节点数据
|
|
|
|
+ await this._addNodeData(tenderId, selectData, data);
|
|
|
|
+ await this.transaction.commit();
|
|
|
|
+ } catch (err) {
|
|
|
|
+ await this.transaction.rollback();
|
|
|
|
+ throw err;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // 查询应返回的结果
|
|
|
|
+ const resultData = this.getNextsData(selectData.tender_id, selectData.ledger_pid, selectData.order);
|
|
|
|
+ return resultData;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -370,45 +383,34 @@ module.exports = app => {
|
|
return [];
|
|
return [];
|
|
}
|
|
}
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
- this.transaction = await this.db.beginTransaction();
|
|
|
|
|
|
+ if (!selectData) {
|
|
|
|
+ throw '删除节点数据错误';
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ this.transaction = await this.db.beginTransaction();
|
|
let resultData = [];
|
|
let resultData = [];
|
|
- if (selectData) {
|
|
|
|
- try {
|
|
|
|
- // 获取将要被删除的数据
|
|
|
|
- this.initSqlBuilder();
|
|
|
|
- this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
- value: tenderId,
|
|
|
|
- operate: '='
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
- value: this.db.escape(selectData.full_path + '%'),
|
|
|
|
- operate: 'Like'
|
|
|
|
- });
|
|
|
|
- let [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
|
- resultData = await this.db.query(sql, sqlParam);
|
|
|
|
- // 删除
|
|
|
|
- this.initSqlBuilder();
|
|
|
|
- this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
- value: tenderId,
|
|
|
|
- operate: '='
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
- value: this.db.escape(selectData.full_path + '%'),
|
|
|
|
- operate: 'Like'
|
|
|
|
- });
|
|
|
|
- [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'delete');
|
|
|
|
- const operate = await this.transaction.query(sql, sqlParam);
|
|
|
|
- this.transaction.commit();
|
|
|
|
- } catch(err) {
|
|
|
|
- resultData = [];
|
|
|
|
- await this.transaction.rollback();
|
|
|
|
- throw err;
|
|
|
|
- }
|
|
|
|
- return resultData;
|
|
|
|
- } else {
|
|
|
|
- throw '删除节点数据错误';
|
|
|
|
|
|
+ try {
|
|
|
|
+ // 获取将要被删除的数据
|
|
|
|
+ resultData = await this.getDataByFullPath(tenderId, selectData.full_path + '%');
|
|
|
|
+ // 删除
|
|
|
|
+ this.initSqlBuilder();
|
|
|
|
+ this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
+ value: tenderId,
|
|
|
|
+ operate: '='
|
|
|
|
+ });
|
|
|
|
+ this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
+ value: this.db.escape(selectData.full_path + '%'),
|
|
|
|
+ operate: 'Like'
|
|
|
|
+ });
|
|
|
|
+ const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'delete');
|
|
|
|
+ const operate = await this.transaction.query(sql, sqlParam);
|
|
|
|
+ this.transaction.commit();
|
|
|
|
+ } catch(err) {
|
|
|
|
+ resultData = [];
|
|
|
|
+ await this.transaction.rollback();
|
|
|
|
+ throw err;
|
|
}
|
|
}
|
|
|
|
+ return resultData;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -423,24 +425,26 @@ module.exports = app => {
|
|
return [];
|
|
return [];
|
|
}
|
|
}
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
- const preData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, selectData.order - 1);
|
|
|
|
- this.transaction = await this.db.beginTransaction();
|
|
|
|
-
|
|
|
|
- if (selectData && preData) {
|
|
|
|
- try {
|
|
|
|
- const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order - 1});
|
|
|
|
- const pData = await this.transaction.update(this.tableName, {id: preData.id, order: preData.order + 1});
|
|
|
|
- this.transaction.commit();
|
|
|
|
- } catch (err) {
|
|
|
|
- await this.transaction.rollback();
|
|
|
|
- throw err;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, preData.order]);
|
|
|
|
- return resultData;
|
|
|
|
- } else {
|
|
|
|
|
|
+ if (!selectData) {
|
|
throw '上移节点数据错误';
|
|
throw '上移节点数据错误';
|
|
}
|
|
}
|
|
|
|
+ const preData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order - 1);
|
|
|
|
+ if (!preData) {
|
|
|
|
+ throw '节点不可上移';
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.transaction = await this.db.beginTransaction();
|
|
|
|
+ try {
|
|
|
|
+ const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order - 1});
|
|
|
|
+ const pData = await this.transaction.update(this.tableName, {id: preData.id, order: preData.order + 1});
|
|
|
|
+ this.transaction.commit();
|
|
|
|
+ } catch (err) {
|
|
|
|
+ await this.transaction.rollback();
|
|
|
|
+ throw err;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, preData.order]);
|
|
|
|
+ return resultData;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -455,24 +459,26 @@ module.exports = app => {
|
|
return [];
|
|
return [];
|
|
}
|
|
}
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
- const nextData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, selectData.order + 1);
|
|
|
|
- this.transaction = await this.db.beginTransaction();
|
|
|
|
-
|
|
|
|
- if (selectData && nextData) {
|
|
|
|
- try {
|
|
|
|
- const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order + 1});
|
|
|
|
- const pData = await this.transaction.update(this.tableName, {id: nextData.id, order: nextData.order - 1});
|
|
|
|
- this.transaction.commit();
|
|
|
|
- } catch (err) {
|
|
|
|
- await this.transaction.rollback();
|
|
|
|
- throw err;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, nextData.order]);
|
|
|
|
- return resultData;
|
|
|
|
- } else {
|
|
|
|
|
|
+ if (!selectData) {
|
|
throw '下移节点数据错误';
|
|
throw '下移节点数据错误';
|
|
}
|
|
}
|
|
|
|
+ const nextData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order + 1);
|
|
|
|
+ if (!nextData) {
|
|
|
|
+ throw '节点不可下移'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.transaction = await this.db.beginTransaction();
|
|
|
|
+ try {
|
|
|
|
+ const sData = await this.transaction.update(this.tableName, {id: selectData.id, order: selectData.order + 1});
|
|
|
|
+ const pData = await this.transaction.update(this.tableName, {id: nextData.id, order: nextData.order - 1});
|
|
|
|
+ this.transaction.commit();
|
|
|
|
+ } catch (err) {
|
|
|
|
+ await this.transaction.rollback();
|
|
|
|
+ throw err;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, nextData.order]);
|
|
|
|
+ return resultData;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -496,7 +502,7 @@ module.exports = app => {
|
|
selfOperate: '-'
|
|
selfOperate: '-'
|
|
});
|
|
});
|
|
this.sqlBuilder.setUpdateData('full_path', {
|
|
this.sqlBuilder.setUpdateData('full_path', {
|
|
- value: ['`full_path`', this.db.escape(selectData.template_pid + '.'), this.db.escape('')],
|
|
|
|
|
|
+ value: ['`full_path`', this.db.escape(selectData.ledger_pid + '.'), this.db.escape('')],
|
|
literal: 'Replace'
|
|
literal: 'Replace'
|
|
});
|
|
});
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
@@ -513,21 +519,21 @@ module.exports = app => {
|
|
*/
|
|
*/
|
|
async _syncUpLevelNexts(selectData) {
|
|
async _syncUpLevelNexts(selectData) {
|
|
// 查询selectData的lastChild
|
|
// 查询selectData的lastChild
|
|
- const lastChildData = await this.getLastChildData(selectData.tender_id, selectData.template_id);
|
|
|
|
- const nextsData = await this.getNextsData(selectData.tender_id, selectData.template_pid, selectData.order);
|
|
|
|
|
|
+ const lastChildData = await this.getLastChildData(selectData.tender_id, selectData.ledger_id);
|
|
|
|
+ const nextsData = await this.getNextsData(selectData.tender_id, selectData.ledger_pid, selectData.order);
|
|
if (nextsData && nextsData.length > 0) {
|
|
if (nextsData && nextsData.length > 0) {
|
|
// 修改nextsData pid, 排序
|
|
// 修改nextsData pid, 排序
|
|
this.initSqlBuilder();
|
|
this.initSqlBuilder();
|
|
- this.sqlBuilder.setUpdateData('template_pid', {
|
|
|
|
- value: selectData.template_id
|
|
|
|
|
|
+ this.sqlBuilder.setUpdateData('ledger_pid', {
|
|
|
|
+ value: selectData.ledger_id
|
|
});
|
|
});
|
|
const orderInc = lastChildData ? lastChildData.order - selectData.order : - selectData.order;
|
|
const orderInc = lastChildData ? lastChildData.order - selectData.order : - selectData.order;
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
value: Math.abs(orderInc),
|
|
value: Math.abs(orderInc),
|
|
selfOperate: orderInc > 0 ? '+' : '-'
|
|
selfOperate: orderInc > 0 ? '+' : '-'
|
|
});
|
|
});
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
|
- value: selectData.template_pid,
|
|
|
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
|
+ value: selectData.ledger_pid,
|
|
operate: '='
|
|
operate: '='
|
|
});
|
|
});
|
|
this.sqlBuilder.setAndWhere('order', {
|
|
this.sqlBuilder.setAndWhere('order', {
|
|
@@ -538,8 +544,8 @@ module.exports = app => {
|
|
await this.transaction.query(sql1, sqlParam1);
|
|
await this.transaction.query(sql1, sqlParam1);
|
|
|
|
|
|
// 修改nextsData及其子节点的full_path
|
|
// 修改nextsData及其子节点的full_path
|
|
- const oldSubStr = this.db.escape(selectData.template_pid + '.');
|
|
|
|
- const newSubStr = this.db.escape(selectData.template_id + '.');
|
|
|
|
|
|
+ const oldSubStr = this.db.escape(selectData.ledger_pid + '.');
|
|
|
|
+ const newSubStr = this.db.escape(selectData.ledger_id + '.');
|
|
const sqlArr = [];
|
|
const sqlArr = [];
|
|
sqlArr.push('Update ?? SET `full_path` = Replace(`full_path`,' + oldSubStr + ',' + newSubStr + ') Where');
|
|
sqlArr.push('Update ?? SET `full_path` = Replace(`full_path`,' + oldSubStr + ',' + newSubStr + ') Where');
|
|
sqlArr.push('(`tender_id` = ' + selectData.tender_id +')');
|
|
sqlArr.push('(`tender_id` = ' + selectData.tender_id +')');
|
|
@@ -572,21 +578,22 @@ module.exports = app => {
|
|
if (!selectData) {
|
|
if (!selectData) {
|
|
throw '升级节点数据错误';
|
|
throw '升级节点数据错误';
|
|
}
|
|
}
|
|
- const parentData = await this.getDataByNodeId(tenderId, selectData.template_pid);
|
|
|
|
|
|
+ const parentData = await this.getDataByNodeId(tenderId, selectData.ledger_pid);
|
|
if (!parentData) {
|
|
if (!parentData) {
|
|
throw '升级节点数据错误'
|
|
throw '升级节点数据错误'
|
|
}
|
|
}
|
|
|
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
|
+ const newFullPath = selectData.full_path.replace(selectData.ledger_pid + '.', '');
|
|
try {
|
|
try {
|
|
// 选中节点--父节点--全部后兄弟节点 order+1
|
|
// 选中节点--父节点--全部后兄弟节点 order+1
|
|
await this._updateSelectNextsOrder(parentData);
|
|
await this._updateSelectNextsOrder(parentData);
|
|
// 选中节点 修改pid, order, full_path
|
|
// 选中节点 修改pid, order, full_path
|
|
const updateData = {id: selectData.id,
|
|
const updateData = {id: selectData.id,
|
|
- template_pid: parentData.template_pid,
|
|
|
|
|
|
+ ledger_pid: parentData.ledger_pid,
|
|
order: parentData.order + 1,
|
|
order: parentData.order + 1,
|
|
level: selectData.level - 1,
|
|
level: selectData.level - 1,
|
|
- full_path: selectData.full_path.replace(selectData.template_pid + '.', '')
|
|
|
|
|
|
+ full_path: newFullPath
|
|
};
|
|
};
|
|
await this.transaction.update(this.tableName, updateData);
|
|
await this.transaction.update(this.tableName, updateData);
|
|
// 选中节点--全部子节点(含孙) level-1, full_path变更
|
|
// 选中节点--全部子节点(含孙) level-1, full_path变更
|
|
@@ -600,18 +607,8 @@ module.exports = app => {
|
|
}
|
|
}
|
|
|
|
|
|
// 查询修改的数据
|
|
// 查询修改的数据
|
|
- this.initSqlBuilder();
|
|
|
|
- this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
- value: tenderId,
|
|
|
|
- operate: '='
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
- value: this.db.escape(selectData.full_path.replace(selectData.template_pid + '.', '') + '%'),
|
|
|
|
- operate: 'Like'
|
|
|
|
- });
|
|
|
|
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
|
- const resultData1 = await this.db.query(sql, sqlParam);
|
|
|
|
- const resultData2 = await this.getNextsData(tenderId, parentData.template_pid, parentData.order + 1);
|
|
|
|
|
|
+ const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%');
|
|
|
|
+ const resultData2 = await this.getNextsData(tenderId, parentData.ledger_pid, parentData.order + 1);
|
|
return resultData1.concat(resultData2);
|
|
return resultData1.concat(resultData2);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -637,7 +634,7 @@ module.exports = app => {
|
|
selfOperate: '+'
|
|
selfOperate: '+'
|
|
});
|
|
});
|
|
this.sqlBuilder.setUpdateData('full_path', {
|
|
this.sqlBuilder.setUpdateData('full_path', {
|
|
- value: ['`full_path`', this.db.escape(selectData.template_id), this.db.escape(preData.template_id + '.' + selectData.template_id)],
|
|
|
|
|
|
+ value: ['`full_path`', this.db.escape(selectData.ledger_id), this.db.escape(preData.ledger_id + '.' + selectData.ledger_id)],
|
|
literal: 'Replace'
|
|
literal: 'Replace'
|
|
});
|
|
});
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
@@ -661,22 +658,23 @@ module.exports = app => {
|
|
if (!selectData) {
|
|
if (!selectData) {
|
|
throw '降级节点数据错误';
|
|
throw '降级节点数据错误';
|
|
}
|
|
}
|
|
- const preData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, selectData.order-1);
|
|
|
|
|
|
+ const preData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order-1);
|
|
if (!preData) {
|
|
if (!preData) {
|
|
throw '节点不可降级';
|
|
throw '节点不可降级';
|
|
}
|
|
}
|
|
- const preLastChildData = await this.getLastChildData(tenderId, preData.template_id);
|
|
|
|
|
|
+ const preLastChildData = await this.getLastChildData(tenderId, preData.ledger_id);
|
|
|
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
|
+ const newFullPath = selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id);
|
|
try {
|
|
try {
|
|
// 选中节点--全部后节点 order--
|
|
// 选中节点--全部后节点 order--
|
|
await this._updateSelectNextsOrder(selectData, -1);
|
|
await this._updateSelectNextsOrder(selectData, -1);
|
|
// 选中节点 修改pid, level, order, full_path
|
|
// 选中节点 修改pid, level, order, full_path
|
|
const updateData = {id: selectData.id,
|
|
const updateData = {id: selectData.id,
|
|
- template_pid: preData.template_pid,
|
|
|
|
|
|
+ ledger_pid: preData.ledger_pid,
|
|
order: preLastChildData ? preLastChildData.order + 1 : 1,
|
|
order: preLastChildData ? preLastChildData.order + 1 : 1,
|
|
level: selectData.level + 1,
|
|
level: selectData.level + 1,
|
|
- full_path: selectData.full_path.replace(selectData.template_id, preData.template_id + '.' + selectData.template_id)
|
|
|
|
|
|
+ full_path: newFullPath
|
|
};
|
|
};
|
|
await this.transaction.update(this.tableName, updateData);
|
|
await this.transaction.update(this.tableName, updateData);
|
|
// 选中节点--全部子节点(含孙) level++, full_path
|
|
// 选中节点--全部子节点(含孙) level++, full_path
|
|
@@ -688,21 +686,11 @@ module.exports = app => {
|
|
}
|
|
}
|
|
|
|
|
|
// 查询修改的数据
|
|
// 查询修改的数据
|
|
- this.initSqlBuilder();
|
|
|
|
- this.sqlBuilder.setAndWhere('tender_id', {
|
|
|
|
- value: tenderId,
|
|
|
|
- operate: '='
|
|
|
|
- });
|
|
|
|
- this.sqlBuilder.setAndWhere('full_path', {
|
|
|
|
- value: this.db.escape(selectData.full_path.replace(selectData.template_id, preData.template_id + '.' + selectData.template_id) + '%'),
|
|
|
|
- operate: 'Like'
|
|
|
|
- });
|
|
|
|
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
|
- const resultData1 = await this.db.query(sql, sqlParam);
|
|
|
|
- const resultData2 = await this.getNextsData(tenderId, preData.template_pid, preData.order);
|
|
|
|
|
|
+ const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%')
|
|
|
|
+ const resultData2 = await this.getNextsData(tenderId, preData.ledger_pid, preData.order);
|
|
return resultData1.concat(resultData2);
|
|
return resultData1.concat(resultData2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- return TenderNode;
|
|
|
|
|
|
+ return Ledger;
|
|
};
|
|
};
|