|
@@ -1,16 +1,24 @@
|
|
|
'use strict';
|
|
|
|
|
|
/**
|
|
|
- * 标段项目节数据模型
|
|
|
+ * 标段--台账 数据模型
|
|
|
*
|
|
|
* @author CaiAoLin
|
|
|
* @date 2017/12/1
|
|
|
* @version
|
|
|
*/
|
|
|
|
|
|
+const needField = {
|
|
|
+ id: 'ledger_id',
|
|
|
+ pid: 'ledger_pid',
|
|
|
+ order: 'order',
|
|
|
+ level: 'level',
|
|
|
+ fullPath: 'full_path'
|
|
|
+}
|
|
|
+
|
|
|
module.exports = app => {
|
|
|
|
|
|
- class TenderNode extends app.BaseService {
|
|
|
+ class Ledger extends app.BaseService {
|
|
|
|
|
|
/**
|
|
|
* 构造函数
|
|
@@ -20,7 +28,7 @@ module.exports = app => {
|
|
|
*/
|
|
|
constructor(ctx) {
|
|
|
super(ctx);
|
|
|
- this.tableName = 'tender_node';
|
|
|
+ this.tableName = 'ledger';
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -45,8 +53,8 @@ module.exports = app => {
|
|
|
// 整理数据
|
|
|
const insertData = [];
|
|
|
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;
|
|
|
delete tmp.id;
|
|
|
delete tmp.pid;
|
|
@@ -113,7 +121,7 @@ module.exports = app => {
|
|
|
value: tenderId,
|
|
|
operate: '=',
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_id', {
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_id', {
|
|
|
value: nodeId,
|
|
|
operate: '=',
|
|
|
});
|
|
@@ -136,7 +144,7 @@ module.exports = app => {
|
|
|
value: tenderId,
|
|
|
operate: '='
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
value: pid,
|
|
|
operate: '='
|
|
|
});
|
|
@@ -165,7 +173,7 @@ module.exports = app => {
|
|
|
value: tenderId,
|
|
|
operate: '='
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
value: pid,
|
|
|
operate: '=',
|
|
|
});
|
|
@@ -209,7 +217,7 @@ module.exports = app => {
|
|
|
value: tenderId,
|
|
|
operate: '='
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
value: pid,
|
|
|
operate: '=',
|
|
|
});
|
|
@@ -242,8 +250,8 @@ module.exports = app => {
|
|
|
value: select.order + 1,
|
|
|
operate: '>=',
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
- value: select.template_pid,
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
+ value: select.ledger_pid,
|
|
|
operate: '=',
|
|
|
});
|
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
@@ -266,7 +274,7 @@ module.exports = app => {
|
|
|
*/
|
|
|
async _getMaxNodeId(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);
|
|
|
return queryResult.max_id;
|
|
|
}
|
|
@@ -295,11 +303,11 @@ module.exports = app => {
|
|
|
}
|
|
|
|
|
|
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.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);
|
|
|
|
|
|
this.cache.set(cacheKey, maxId + 1, 'EX', this.ctx.app.config.cacheTime);
|
|
@@ -340,8 +348,8 @@ module.exports = app => {
|
|
|
value: selectData.tender_id,
|
|
|
operate: '=',
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
- value: selectData.template_pid,
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
+ value: selectData.ledger_pid,
|
|
|
operate: '=',
|
|
|
});
|
|
|
this.sqlBuilder.setAndWhere('order', {
|
|
@@ -423,7 +431,7 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
- const preData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, selectData.order - 1);
|
|
|
+ const preData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order - 1);
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
|
|
|
if (selectData && preData) {
|
|
@@ -436,7 +444,7 @@ module.exports = app => {
|
|
|
throw err;
|
|
|
}
|
|
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, preData.order]);
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, preData.order]);
|
|
|
return resultData;
|
|
|
} else {
|
|
|
throw '上移节点数据错误';
|
|
@@ -455,7 +463,7 @@ module.exports = app => {
|
|
|
return [];
|
|
|
}
|
|
|
const selectData = await this.getDataByNodeId(tenderId, selectId);
|
|
|
- const nextData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, selectData.order + 1);
|
|
|
+ const nextData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, selectData.order + 1);
|
|
|
this.transaction = await this.db.beginTransaction();
|
|
|
|
|
|
if (selectData && nextData) {
|
|
@@ -468,7 +476,7 @@ module.exports = app => {
|
|
|
throw err;
|
|
|
}
|
|
|
|
|
|
- const resultData = await this.getDataByParentAndOrder(tenderId, selectData.template_pid, [selectData.order, nextData.order]);
|
|
|
+ const resultData = await this.getDataByParentAndOrder(tenderId, selectData.ledger_pid, [selectData.order, nextData.order]);
|
|
|
return resultData;
|
|
|
} else {
|
|
|
throw '下移节点数据错误';
|
|
@@ -496,7 +504,7 @@ module.exports = app => {
|
|
|
selfOperate: '-'
|
|
|
});
|
|
|
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'
|
|
|
});
|
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
@@ -513,21 +521,21 @@ module.exports = app => {
|
|
|
*/
|
|
|
async _syncUpLevelNexts(selectData) {
|
|
|
// 查询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) {
|
|
|
// 修改nextsData pid, 排序
|
|
|
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;
|
|
|
this.sqlBuilder.setUpdateData('order', {
|
|
|
value: Math.abs(orderInc),
|
|
|
selfOperate: orderInc > 0 ? '+' : '-'
|
|
|
});
|
|
|
- this.sqlBuilder.setAndWhere('template_pid', {
|
|
|
- value: selectData.template_pid,
|
|
|
+ this.sqlBuilder.setAndWhere('ledger_pid', {
|
|
|
+ value: selectData.ledger_pid,
|
|
|
operate: '='
|
|
|
});
|
|
|
this.sqlBuilder.setAndWhere('order', {
|
|
@@ -538,8 +546,8 @@ module.exports = app => {
|
|
|
await this.transaction.query(sql1, sqlParam1);
|
|
|
|
|
|
// 修改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 = [];
|
|
|
sqlArr.push('Update ?? SET `full_path` = Replace(`full_path`,' + oldSubStr + ',' + newSubStr + ') Where');
|
|
|
sqlArr.push('(`tender_id` = ' + selectData.tender_id +')');
|
|
@@ -572,7 +580,7 @@ module.exports = app => {
|
|
|
if (!selectData) {
|
|
|
throw '升级节点数据错误';
|
|
|
}
|
|
|
- const parentData = await this.getDataByNodeId(tenderId, selectData.template_pid);
|
|
|
+ const parentData = await this.getDataByNodeId(tenderId, selectData.ledger_pid);
|
|
|
if (!parentData) {
|
|
|
throw '升级节点数据错误'
|
|
|
}
|
|
@@ -583,10 +591,10 @@ module.exports = app => {
|
|
|
await this._updateSelectNextsOrder(parentData);
|
|
|
// 选中节点 修改pid, order, full_path
|
|
|
const updateData = {id: selectData.id,
|
|
|
- template_pid: parentData.template_pid,
|
|
|
+ ledger_pid: parentData.ledger_pid,
|
|
|
order: parentData.order + 1,
|
|
|
level: selectData.level - 1,
|
|
|
- full_path: selectData.full_path.replace(selectData.template_pid + '.', '')
|
|
|
+ full_path: selectData.full_path.replace(selectData.ledger_pid + '.', '')
|
|
|
};
|
|
|
await this.transaction.update(this.tableName, updateData);
|
|
|
// 选中节点--全部子节点(含孙) level-1, full_path变更
|
|
@@ -606,12 +614,12 @@ module.exports = app => {
|
|
|
operate: '='
|
|
|
});
|
|
|
this.sqlBuilder.setAndWhere('full_path', {
|
|
|
- value: this.db.escape(selectData.full_path.replace(selectData.template_pid + '.', '') + '%'),
|
|
|
+ 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 resultData2 = await this.getNextsData(tenderId, parentData.template_pid, parentData.order + 1);
|
|
|
+ const resultData2 = await this.getNextsData(tenderId, parentData.ledger_pid, parentData.order + 1);
|
|
|
return resultData1.concat(resultData2);
|
|
|
}
|
|
|
|
|
@@ -637,7 +645,7 @@ module.exports = app => {
|
|
|
selfOperate: '+'
|
|
|
});
|
|
|
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'
|
|
|
});
|
|
|
const [sql, sqlParam] = this.sqlBuilder.build(this.tableName, 'update');
|
|
@@ -661,11 +669,11 @@ module.exports = app => {
|
|
|
if (!selectData) {
|
|
|
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) {
|
|
|
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();
|
|
|
try {
|
|
@@ -673,10 +681,10 @@ module.exports = app => {
|
|
|
await this._updateSelectNextsOrder(selectData, -1);
|
|
|
// 选中节点 修改pid, level, order, full_path
|
|
|
const updateData = {id: selectData.id,
|
|
|
- template_pid: preData.template_pid,
|
|
|
+ ledger_pid: preData.ledger_pid,
|
|
|
order: preLastChildData ? preLastChildData.order + 1 : 1,
|
|
|
level: selectData.level + 1,
|
|
|
- full_path: selectData.full_path.replace(selectData.template_id, preData.template_id + '.' + selectData.template_id)
|
|
|
+ full_path: selectData.full_path.replace(selectData.ledger_id, preData.ledger_id + '.' + selectData.ledger_id)
|
|
|
};
|
|
|
await this.transaction.update(this.tableName, updateData);
|
|
|
// 选中节点--全部子节点(含孙) level++, full_path
|
|
@@ -694,15 +702,15 @@ module.exports = app => {
|
|
|
operate: '='
|
|
|
});
|
|
|
this.sqlBuilder.setAndWhere('full_path', {
|
|
|
- value: this.db.escape(selectData.full_path.replace(selectData.template_id, preData.template_id + '.' + selectData.template_id) + '%'),
|
|
|
+ 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 resultData2 = await this.getNextsData(tenderId, preData.template_pid, preData.order);
|
|
|
+ const resultData2 = await this.getNextsData(tenderId, preData.ledger_pid, preData.order);
|
|
|
return resultData1.concat(resultData2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return TenderNode;
|
|
|
+ return Ledger;
|
|
|
};
|