|
|
@@ -14,40 +14,40 @@ const engLibModel = mongoose.model('engineering_lib');
|
|
|
let uuid = require('uuid');
|
|
|
let billsLibDao = function(){};
|
|
|
|
|
|
-billsLibDao.prototype.copyLib = async function (fromLib, toLib) {
|
|
|
- console.log('entner---------------------');
|
|
|
+billsLibDao.prototype.copyLib = async function (userName, libName, fromLibId) {
|
|
|
+ const libData = await this.createStdBillsLibSync(userName, libName);
|
|
|
+ const newLibId = libData.billsLibId;
|
|
|
//插入工作内容
|
|
|
- let orgJobs = await JobContent.find({billsLibId: fromLib});
|
|
|
- console.log(fromLib);
|
|
|
+ let orgJobs = await JobContent.find({billsLibId: fromLibId}).lean();
|
|
|
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;
|
|
|
+ let jobData = orgJobs[i];
|
|
|
delete jobData._id;
|
|
|
let newID = (maxJobId - (orgJobs.length - 1) + i);
|
|
|
orgNewJobMapping[jobData.id] = newID;
|
|
|
jobData.id = newID;
|
|
|
- jobData.billsLibId = toLib;
|
|
|
+ jobData.billsLibId = newLibId;
|
|
|
jobTask.push({insertOne: {document: jobData}});
|
|
|
}
|
|
|
if (jobTask.length > 0) {
|
|
|
await JobContent.bulkWrite(jobTask);
|
|
|
}
|
|
|
//插入项目特征
|
|
|
- let orgItems = await ItemCharacter.find({billsLibId: fromLib});
|
|
|
+ let orgItems = await ItemCharacter.find({billsLibId: fromLibId}).lean();
|
|
|
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;
|
|
|
+ let itemData = orgItems[i];
|
|
|
delete itemData._id;
|
|
|
let newID = (maxItemId - (orgItems.length - 1) + i);
|
|
|
orgNewItemMapping[itemData.id] = newID;
|
|
|
itemData.id = newID;
|
|
|
- itemData.billsLibId = toLib;
|
|
|
+ itemData.billsLibId = newLibId;
|
|
|
itemTask.push({insertOne: {document: itemData}});
|
|
|
}
|
|
|
if (itemTask.length > 0) {
|
|
|
@@ -55,13 +55,13 @@ billsLibDao.prototype.copyLib = async function (fromLib, toLib) {
|
|
|
}
|
|
|
//插入清单
|
|
|
let billsTask = [];
|
|
|
- let bills = await Bills.find({billsLibId: fromLib});
|
|
|
+ let bills = await Bills.find({billsLibId: fromLibId}).lean();
|
|
|
let IDMapping = {},
|
|
|
billsDatas = [];
|
|
|
for (let b of bills) {
|
|
|
- let bData = b._doc;
|
|
|
+ let bData = b;
|
|
|
delete bData._id;
|
|
|
- bData.billsLibId = toLib;
|
|
|
+ bData.billsLibId = newLibId;
|
|
|
billsDatas.push(bData);
|
|
|
IDMapping[bData.ID] = uuid.v1();
|
|
|
}
|
|
|
@@ -73,6 +73,15 @@ billsLibDao.prototype.copyLib = async function (fromLib, toLib) {
|
|
|
if (IDMapping[bD.ParentID]) {
|
|
|
bD.ParentID = IDMapping[bD.ParentID];
|
|
|
}
|
|
|
+ // 更新sectionInfo数据
|
|
|
+ if (bD.sectionInfo) {
|
|
|
+ const first = IDMapping[bD.sectionInfo.first];
|
|
|
+ const second = IDMapping[bD.sectionInfo.second];
|
|
|
+ const third = IDMapping[bD.sectionInfo.third];
|
|
|
+ bD.sectionInfo.first = first || null;
|
|
|
+ bD.sectionInfo.second = second || null;
|
|
|
+ bD.sectionInfo.third = third || null;
|
|
|
+ }
|
|
|
for (let subJob of bD.jobs) {
|
|
|
if (orgNewJobMapping[subJob.id]) {
|
|
|
subJob.id = orgNewJobMapping[subJob.id];
|
|
|
@@ -88,6 +97,7 @@ billsLibDao.prototype.copyLib = async function (fromLib, toLib) {
|
|
|
if (billsTask.length > 0) {
|
|
|
await Bills.bulkWrite(billsTask);
|
|
|
}
|
|
|
+ return libData;
|
|
|
};
|
|
|
|
|
|
billsLibDao.prototype.getMaxNumber = function(gData, callback){
|
|
|
@@ -140,6 +150,20 @@ billsLibDao.prototype.getStdBillsLib = function(callback){
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+billsLibDao.prototype.createStdBillsLibSync = async function (userName, libName) {
|
|
|
+ const counterRst = await counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib, 1);
|
|
|
+ const dateStr = moment().format('YYYY-MM-DD HH:mm:ss');
|
|
|
+ const libData = {
|
|
|
+ creator: userName,
|
|
|
+ createDate: dateStr,
|
|
|
+ recentOpr: [{operator: userName, operateDate: dateStr}],
|
|
|
+ billsLibId: counterRst.sequence_value,
|
|
|
+ billsLibName: libName,
|
|
|
+ deleted: false
|
|
|
+ };
|
|
|
+ await StdBillsLib.create(libData);
|
|
|
+ return libData;
|
|
|
+};
|
|
|
|
|
|
billsLibDao.prototype.createStdBillsLib = function(clibData, callback){
|
|
|
counter.counterDAO.getIDAfterCount(counter.moduleName.billsLib, 1, function(err, result){
|