|
|
@@ -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;
|