Prechádzať zdrojové kódy

加两个清单固定类别:
专项技术措施暂估价、专业发包工程管理费

zhongzewei 7 rokov pred
rodič
commit
a9a07ad829

+ 75 - 0
modules/bills_lib/models/bills_lib_interfaces.js

@@ -14,6 +14,81 @@ const engLibModel = mongoose.model('engineering_lib');
 let uuid = require('uuid');
 let billsLibDao = function(){};
 
+billsLibDao.prototype.copyLib = async function (fromLib, toLib) {
+    console.log('entner---------------------');
+    //插入工作内容
+    let orgJobs = await JobContent.find({billsLibId: fromLib});
+    console.log(fromLib);
+    let jobCounter = await counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_jobs, orgJobs.length);
+    let maxJobId = jobCounter.sequence_value;
+    let jobTask = [],
+        orgNewJobMapping = {};
+    for (let i = 0; i < orgJobs.length; i++) {
+        let jobData = orgJobs[i]._doc;
+        delete jobData._id;
+        let newID = (maxJobId - (orgJobs.length - 1) + i);
+        orgNewJobMapping[jobData.id] = newID;
+        jobData.id = newID;
+        jobData.billsLibId = toLib;
+        jobTask.push({insertOne: {document: jobData}});
+    }
+    if (jobTask.length > 0) {
+        await JobContent.bulkWrite(jobTask);
+    }
+    //插入项目特征
+    let orgItems = await ItemCharacter.find({billsLibId: fromLib});
+    let itemCounter = await counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib_items, orgItems.length);
+    let maxItemId = itemCounter.sequence_value;
+    let itemTask = [],
+        orgNewItemMapping = {};
+    for (let i = 0; i < orgItems.length; i++) {
+        let itemData = orgItems[i]._doc;
+        delete itemData._id;
+        let newID = (maxItemId - (orgItems.length - 1) + i);
+        orgNewItemMapping[itemData.id] = newID;
+        itemData.id = newID;
+        itemData.billsLibId = toLib;
+        itemTask.push({insertOne: {document: itemData}});
+    }
+    if (itemTask.length > 0) {
+        await ItemCharacter.bulkWrite(itemTask);
+    }
+    //插入清单
+    let billsTask = [];
+    let bills = await Bills.find({billsLibId: fromLib});
+    let IDMapping = {},
+        billsDatas = [];
+    for (let b of bills) {
+        let bData = b._doc;
+        delete bData._id;
+        bData.billsLibId = toLib;
+        billsDatas.push(bData);
+        IDMapping[bData.ID] = uuid.v1();
+    }
+    for (let bD of billsDatas) {
+        bD.ID = IDMapping[bD.ID];
+        if (IDMapping[bD.NextSiblingID]) {
+            bD.NextSiblingID = IDMapping[bD.NextSiblingID];
+        }
+        if (IDMapping[bD.ParentID]) {
+            bD.ParentID = IDMapping[bD.ParentID];
+        }
+        for (let subJob of bD.jobs) {
+            if (orgNewJobMapping[subJob.id]) {
+                subJob.id = orgNewJobMapping[subJob.id];
+            }
+        }
+        for (let subItem of bD.items) {
+            if (orgNewItemMapping[subItem.id]) {
+                subItem.id = orgNewItemMapping[subItem.id];
+            }
+        }
+        billsTask.push({insertOne: {document: bD}});
+    }
+    if (billsTask.length > 0) {
+        await Bills.bulkWrite(billsTask);
+    }
+};
 
 billsLibDao.prototype.getMaxNumber = function(gData, callback){
     let billsLibId = gData.billsLibId;

+ 9 - 2
modules/common/const/bills_fixed.js

@@ -42,7 +42,12 @@ const fixedFlag = {
     //工程造价
     ENGINEERINGCOST: 19,
     //增值税
-    ADDED_VALUE_TAX: 20
+    ADDED_VALUE_TAX: 20,
+    //专项技术措施暂估价
+    SPECIAL_TECH_PROVISIONAL: 21,
+    //专业发包工程管理费
+    LET_CONTRACT_MANAGEMENT: 22
+
 };
 const fixedFlagList = [
     {name: "分部分项工程", value: fixedFlag.SUB_ENGINERRING},
@@ -64,7 +69,9 @@ const fixedFlagList = [
     {name: "工程排污费", value: fixedFlag.POLLUTANTS},
     {name: "税金", value: fixedFlag.TAX},
     {name: "工程造价", value: fixedFlag.ENGINEERINGCOST},
-    {name: "增值税", value: fixedFlag.ADDED_VALUE_TAX}
+    {name: "增值税", value: fixedFlag.ADDED_VALUE_TAX},
+    {name: '专项技术措施暂估价', value: fixedFlag.SPECIAL_TECH_PROVISIONAL},
+    {name: '专业发包工程管理费', value: fixedFlag.LET_CONTRACT_MANAGEMENT},
 ];
 
 export {fixedFlag as default, fixedFlagList as List};