|
|
@@ -168,10 +168,18 @@ class billsModel extends baseModel {
|
|
|
return await this.model.bulkWrite(operations);
|
|
|
}
|
|
|
//删除清单节点的所有子节点及其他附带数据
|
|
|
- async deepDeleteBill(bills, userID){
|
|
|
+ async deepDeleteBill(bills, userID, projectID){
|
|
|
let bill_ids = [],
|
|
|
ration_ids = [];
|
|
|
let me = this;
|
|
|
+ function getIDs(datas){
|
|
|
+ let ids = [];
|
|
|
+ for(let data of datas){
|
|
|
+ ids.push(data.ID);
|
|
|
+ }
|
|
|
+ return ids;
|
|
|
+ }
|
|
|
+ /*
|
|
|
async function findBillsChildren(bills){
|
|
|
if(bills.length > 0){
|
|
|
let ids = getIDs(bills);
|
|
|
@@ -180,14 +188,36 @@ class billsModel extends baseModel {
|
|
|
await findBillsChildren(findBills);
|
|
|
}
|
|
|
}
|
|
|
- function getIDs(datas){
|
|
|
- let ids = [];
|
|
|
- for(let data of datas){
|
|
|
- ids.push(data.ID);
|
|
|
+ await findBillsChildren(bills);
|
|
|
+ /*/
|
|
|
+ // 优化:一次性获取所有清单,再一个个剔除,剩下bills下所有的子清单,省的递归查询
|
|
|
+ const allBills = await me.model.find({projectID: projectID}, '-_id');
|
|
|
+ function getAllSubIDs(topDatas) {
|
|
|
+ bill_ids = bill_ids.concat(getIDs(topDatas));
|
|
|
+ function _getSubs(datas, rstBills) {
|
|
|
+ let subIDs = []
|
|
|
+ for (let bill of allBills) {
|
|
|
+ for(let data of datas){
|
|
|
+ if (data.ID === bill.ParentID) {
|
|
|
+ subIDs.push(bill.ID);
|
|
|
+ rstBills.push(bill);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return subIDs;
|
|
|
+ }
|
|
|
+ let chkBills = [];
|
|
|
+ let chkIds = _getSubs(topDatas, chkBills);
|
|
|
+ while (chkIds.length > 0) {
|
|
|
+ bill_ids = bill_ids.concat(chkIds);
|
|
|
+ let subBills = [];
|
|
|
+ chkIds = _getSubs(chkBills, subBills);
|
|
|
+ chkBills = subBills;
|
|
|
}
|
|
|
- return ids;
|
|
|
}
|
|
|
- await findBillsChildren(bills);
|
|
|
+ getAllSubIDs(bills);
|
|
|
+ //*/
|
|
|
+
|
|
|
//剔除第一个节点
|
|
|
bill_ids = bill_ids.slice(1);
|
|
|
//获取删除清单下的所有定额
|