| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | /** * 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));    }};
 |