|
@@ -201,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 获取全部后节点数据
|
|
|
* @param {Number} tenderId - 标段id
|
|
|
* @param {Number} pid - 父节点id
|
|
@@ -328,42 +349,26 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ if (!selectData) {
|
|
|
+ throw '新增节点数据错误';
|
|
|
+ }
|
|
|
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('ledger_pid', {
|
|
|
- value: selectData.ledger_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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -378,45 +383,34 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
- this.transaction = await this.db.beginTransaction();
|
|
|
+ if (!selectData) {
|
|
|
+ throw '删除节点数据错误';
|
|
|
+ }
|
|
|
|
|
|
+ this.transaction = await this.db.beginTransaction();
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -431,24 +425,26 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ if (!selectData) {
|
|
|
+ throw '上移节点数据错误';
|
|
|
+ }
|
|
|
const preData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_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;
|
|
|
- }
|
|
|
+ if (!preData) {
|
|
|
+ throw '节点不可上移';
|
|
|
+ }
|
|
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, preData.order]);
|
|
|
- return resultData;
|
|
|
- } else {
|
|
|
- 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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -463,24 +459,26 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
+ if (!selectData) {
|
|
|
+ throw '下移节点数据错误';
|
|
|
+ }
|
|
|
const nextData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_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;
|
|
|
- }
|
|
|
+ if (!nextData) {
|
|
|
+ throw '节点不可下移'
|
|
|
+ }
|
|
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, nextData.order]);
|
|
|
- return resultData;
|
|
|
- } else {
|
|
|
- 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;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -586,6 +584,7 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
+ const newFullPath = selectData.full_path.replace(selectData.ledger_pid + '.', '');
|
|
|
try {
|
|
|
// 选中节点--父节点--全部后兄弟节点 order+1
|
|
|
await this._updateSelectNextsOrder(parentData);
|
|
@@ -594,7 +593,7 @@ module.exports = app => {
|
|
|
ledger_pid: parentData.ledger_pid,
|
|
|
order: parentData.order + 1,
|
|
|
level: selectData.level - 1,
|
|
|
- full_path: selectData.full_path.replace(selectData.ledger_pid + '.', '')
|
|
|
+ full_path: newFullPath
|
|
|
};
|
|
|
await this.transaction.update(this.tableName, updateData);
|
|
|
// 选中节点--全部子节点(含孙) level-1, full_path变更
|
|
@@ -608,17 +607,7 @@ 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.ledger_pid + '.', '') + '%'),
|
|
|
- operate: 'Like'
|
|
|
- });
|
|
|
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
- const resultData1 = await this.db.query(sql, sqlParam);
|
|
|
+ const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%');
|
|
|
const resultData2 = await this.getNextsData(tenderId, parentData.ledger_pid, parentData.order + 1);
|
|
|
return resultData1.concat(resultData2);
|
|
|
}
|
|
@@ -676,6 +665,7 @@ module.exports = app => {
|
|
|
const preLastChildData = await this.getLastChildData(tenderId, preData.ledger_id);
|
|
|
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
+ const newFullPath = selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id);
|
|
|
try {
|
|
|
// 选中节点--全部后节点 order--
|
|
|
await this._updateSelectNextsOrder(selectData, -1);
|
|
@@ -684,7 +674,7 @@ module.exports = app => {
|
|
|
ledger_pid: preData.ledger_pid,
|
|
|
order: preLastChildData ? preLastChildData.order + 1 : 1,
|
|
|
level: selectData.level + 1,
|
|
|
- full_path: selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id)
|
|
|
+ full_path: newFullPath
|
|
|
};
|
|
|
await this.transaction.update(this.tableName, updateData);
|
|
|
// 选中节点--全部子节点(含孙) level++, full_path
|
|
@@ -696,17 +686,7 @@ 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.ledger_id, preData.ledger_id + '.' + selectData.ledger_id) + '%'),
|
|
|
- operate: 'Like'
|
|
|
- });
|
|
|
- const [sql, sqlParam] = this.sqlBuilder.build(this.tableName);
|
|
|
- const resultData1 = await this.db.query(sql, sqlParam);
|
|
|
+ const resultData1 = await this.getDataByFullPath(tenderId, newFullPath + '%')
|
|
|
const resultData2 = await this.getNextsData(tenderId, preData.ledger_pid, preData.order);
|
|
|
return resultData1.concat(resultData2);
|
|
|
}
|