/** * Created by Mai on 2017/4/24. */ let billsData = require('../../main/models/bills'); let projCounter = require('../../main/models/proj_counter_model'); let projSetting = require('../../main/models/proj_setting_model'); let async = require('async'); const uuidV1 = require('uuid/v1'); const mongoose = require('mongoose'); let mainColLibModel = mongoose.model('std_main_col_lib'); const billsUtil = require('../../../public/billsUtil'); const BillsTemplateModel = require("../models/templates/bills_template_model"); const EngineeringLibModel = require("../../users/models/engineering_lib_model"); module.exports = { copyTemplateData: async function (property, newProjID, callback) { async.parallel([ async function (cb) { // 获取清单模板数据 let billsTemplateModel = new BillsTemplateModel(); let templateData = JSON.stringify(await billsTemplateModel.getTemplateDataForNewProj(property.templateLibID)); let billsDatas = JSON.parse(templateData); let uuidMaping = Object.create(null); uuidMaping['-1'] = -1; //建立uuid-ID映射 for(let bill of billsDatas){ uuidMaping[bill.ID] = uuidV1(); } const reg = /@\d+/; billsDatas.forEach(function (template) { template.projectID = newProjID; template.ID = uuidMaping[template.ID] ? uuidMaping[template.ID] : -1; template.ParentID = uuidMaping[template.ParentID] ? uuidMaping[template.ParentID] : -1; template.NextSiblingID = uuidMaping[template.NextSiblingID] ? uuidMaping[template.NextSiblingID] : -1; const needToParseCalcBase = template.calcBase && reg.test(template.calcBase); if (needToParseCalcBase) { template.calcBase = billsUtil.parseCalcBase(template.calcBase, uuidMaping); } }); billsData.insertData(billsDatas, callback); }, async function (cb) { let engineeringModel = new EngineeringLibModel(); let engineering = await engineeringModel.getEngineering(property.engineering_id); let mainTreeCol = await mainColLibModel.findOne({'ID':property.colLibID}); projSetting.insertData({"projectID": newProjID, main_tree_col: mainTreeCol.main_tree_col,glj_col:engineering.glj_col}, cb); } ], (err) => callback(err)); } };