|
|
@@ -15,6 +15,21 @@ import EngineeringLibModel from "../../users/models/engineering_lib_model";
|
|
|
|
|
|
module.exports = {
|
|
|
copyTemplateData: async function (property, newProjID, callback) {
|
|
|
+ // 原ID引用更新成新ID引用
|
|
|
+ function parseCalcBase(calcBase, uuidMapping) {
|
|
|
+ const orgIDRefs = [...new Set(calcBase.match(/@\d+/g))];
|
|
|
+ orgIDRefs.forEach(orgRef => {
|
|
|
+ const orgID = orgRef.match(/\d+/)[0];
|
|
|
+ const newID = uuidMapping[orgID] || null;
|
|
|
+ // ID匹配不上则不转换这个引用
|
|
|
+ if (!newID) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const replaceStr = `@${newID}`;
|
|
|
+ calcBase = calcBase.replace(new RegExp(`${orgRef}\\b`, 'g'), replaceStr);
|
|
|
+ });
|
|
|
+ return calcBase;
|
|
|
+ }
|
|
|
async.parallel([
|
|
|
async function (cb) {
|
|
|
// 获取清单模板数据
|
|
|
@@ -27,11 +42,16 @@ module.exports = {
|
|
|
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 = parseCalcBase(template.calcBase, uuidMaping);
|
|
|
+ }
|
|
|
});
|
|
|
billsData.insertData(billsDatas, callback);
|
|
|
},
|