|
@@ -866,14 +866,6 @@ function summarizeToParent(parent, child, fields = null) {
|
|
for (let field of fields) {
|
|
for (let field of fields) {
|
|
parent[field] = scMathUtil.roundTo(parseFloat(parent[field]) + parseFloat(child[field]), decimal);
|
|
parent[field] = scMathUtil.roundTo(parseFloat(parent[field]) + parseFloat(child[field]), decimal);
|
|
}
|
|
}
|
|
- /* const decimal = -2;
|
|
|
|
- parent.engineeringCost = scMathUtil.roundTo(parseFloat(parent.engineeringCost) + parseFloat(child.engineeringCost), decimal);
|
|
|
|
- parent.subEngineering = scMathUtil.roundTo(parseFloat(parent.subEngineering) + parseFloat(child.subEngineering), decimal);
|
|
|
|
- parent.measure = scMathUtil.roundTo(parseFloat(parent.measure) + parseFloat(child.measure), decimal);
|
|
|
|
- parent.safetyConstruction = scMathUtil.roundTo(parseFloat(parent.safetyConstruction) + parseFloat(child.safetyConstruction), decimal);
|
|
|
|
- parent.other = scMathUtil.roundTo(parseFloat(parent.other) + parseFloat(child.other), decimal);
|
|
|
|
- parent.charge = scMathUtil.roundTo(parseFloat(parent.charge) + parseFloat(child.charge), decimal);
|
|
|
|
- parent.tax = scMathUtil.roundTo(parseFloat(parent.tax) + parseFloat(child.tax), decimal);*/
|
|
|
|
}
|
|
}
|
|
|
|
|
|
function getBuildingArea(projFeature){
|
|
function getBuildingArea(projFeature){
|
|
@@ -1049,13 +1041,6 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
for (let data of feeFields) {
|
|
for (let data of feeFields) {
|
|
flagFieldMapping[data.k] = data.v;
|
|
flagFieldMapping[data.k] = data.v;
|
|
}
|
|
}
|
|
- /*flagFieldMapping[billsFlags.ENGINEERINGCOST] = 'engineeringCost';
|
|
|
|
- flagFieldMapping[billsFlags.SUB_ENGINERRING] = 'subEngineering';
|
|
|
|
- flagFieldMapping[billsFlags.MEASURE] = 'measure';
|
|
|
|
- flagFieldMapping[billsFlags.SAFETY_CONSTRUCTION] = 'safetyConstruction';
|
|
|
|
- flagFieldMapping[billsFlags.OTHER] = 'other';
|
|
|
|
- flagFieldMapping[billsFlags.CHARGE] = 'charge';
|
|
|
|
- flagFieldMapping[billsFlags.TAX] = 'tax';*/
|
|
|
|
let projects = await projectModel.find({ID: {$in : projectIDs}, projType: projectType.project, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]});
|
|
let projects = await projectModel.find({ID: {$in : projectIDs}, projType: projectType.project, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]});
|
|
//设置建设项目的总建筑面积
|
|
//设置建设项目的总建筑面积
|
|
for(let project of projects){
|
|
for(let project of projects){
|
|
@@ -1071,7 +1056,6 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //IDMapping[project.ID] = {engineeringCost: 0, subEngineering: 0, measure: 0, safetyConstruction: 0, other: 0, charge: 0, tax: 0, estimate: 0, rate: 0, buildingArea: grossArea, perCost: ''};
|
|
|
|
IDMapping[project.ID] = {estimate: 0, rate: 0, buildingArea: grossArea, perCost: ''};
|
|
IDMapping[project.ID] = {estimate: 0, rate: 0, buildingArea: grossArea, perCost: ''};
|
|
initFees(IDMapping[project.ID], feeFields);
|
|
initFees(IDMapping[project.ID], feeFields);
|
|
console.log(IDMapping[project.ID]);
|
|
console.log(IDMapping[project.ID]);
|
|
@@ -1084,7 +1068,6 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
let engIDs = [];
|
|
let engIDs = [];
|
|
for(let eng of engineerings){
|
|
for(let eng of engineerings){
|
|
engIDs.push(eng.ID);
|
|
engIDs.push(eng.ID);
|
|
- //IDMapping[eng.ID] = {engineeringCost: 0, subEngineering: 0, measure: 0, safetyConstruction: 0, other: 0, charge: 0, tax: 0, estimate: 0, rate: 0, buildingArea: '', perCost: ''};
|
|
|
|
IDMapping[eng.ID] = {estimate: 0, rate: 0, buildingArea: '', perCost: ''};
|
|
IDMapping[eng.ID] = {estimate: 0, rate: 0, buildingArea: '', perCost: ''};
|
|
initFees(IDMapping[eng.ID], feeFields);
|
|
initFees(IDMapping[eng.ID], feeFields);
|
|
}
|
|
}
|
|
@@ -1095,8 +1078,6 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
if(tenders.length > 0){
|
|
if(tenders.length > 0){
|
|
for(let tender of tenders){
|
|
for(let tender of tenders){
|
|
tenderIDs.push(tender.ID);
|
|
tenderIDs.push(tender.ID);
|
|
- /*IDMapping[tender.ID] = {engineeringCost: 0, subEngineering: 0, measure: 0, safetyConstruction: 0, other: 0, charge: 0, tax: 0, rate: 0, estimate: 0,
|
|
|
|
- buildingArea: '', perCost: '',changeMark:tender.changeMark,property:tender.property};*/
|
|
|
|
IDMapping[tender.ID] = {rate: 0, estimate: 0, buildingArea: '', perCost: '', changeMark:tender.changeMark,property:tender.property};
|
|
IDMapping[tender.ID] = {rate: 0, estimate: 0, buildingArea: '', perCost: '', changeMark:tender.changeMark,property:tender.property};
|
|
initFees(IDMapping[tender.ID], feeFields);
|
|
initFees(IDMapping[tender.ID], feeFields);
|
|
let buildingArea = getBuildingArea(tender.property.projectFeature);
|
|
let buildingArea = getBuildingArea(tender.property.projectFeature);
|
|
@@ -1105,8 +1086,6 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//需要获取的清单固定类别综合合价:工程造价、分部分项、措施项目、安全文明施工专项、规费、其他项目、税金...
|
|
//需要获取的清单固定类别综合合价:工程造价、分部分项、措施项目、安全文明施工专项、规费、其他项目、税金...
|
|
- /*let needFlags = [billsFlags.ENGINEERINGCOST, billsFlags.SUB_ENGINERRING, billsFlags.MEASURE,
|
|
|
|
- billsFlags.SAFETY_CONSTRUCTION, billsFlags.CHARGE, billsFlags.OTHER, billsFlags.TAX];*/
|
|
|
|
let needFlags = feeFields.map(data => data.k);
|
|
let needFlags = feeFields.map(data => data.k);
|
|
//获取单位工程汇总金额需要用到的所有清单
|
|
//获取单位工程汇总金额需要用到的所有清单
|
|
let allBills = await billsModel.find({projectID: {$in: tenderIDs}, 'flags.flag': {$in: needFlags}, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]},
|
|
let allBills = await billsModel.find({projectID: {$in: tenderIDs}, 'flags.flag': {$in: needFlags}, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]},
|
|
@@ -1139,8 +1118,9 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
let engInfo = IDMapping[tender.ParentID];
|
|
let engInfo = IDMapping[tender.ParentID];
|
|
tenderInfo.rate = engInfo.engineeringCost == 0 ? 0 : scMathUtil.roundTo(tenderInfo.engineeringCost * 100 / engInfo.engineeringCost, rateDecimal);
|
|
tenderInfo.rate = engInfo.engineeringCost == 0 ? 0 : scMathUtil.roundTo(tenderInfo.engineeringCost * 100 / engInfo.engineeringCost, rateDecimal);
|
|
//单方造价
|
|
//单方造价
|
|
- tenderInfo.perCost = tenderInfo.buildingArea.toString().trim() === '' || tenderInfo.buildingArea == 0 ?
|
|
|
|
- tenderInfo.buildingArea.toString().trim() : scMathUtil.roundTo(tenderInfo.engineeringCost / tenderInfo.buildingArea, perCostDecimal);
|
|
|
|
|
|
+ tenderInfo.perCost = tenderInfo.buildingArea.toString().trim() === '' || tenderInfo.buildingArea == 0
|
|
|
|
+ ? tenderInfo.buildingArea.toString().trim()
|
|
|
|
+ : scMathUtil.roundTo(tenderInfo.engineeringCost / tenderInfo.buildingArea, perCostDecimal);
|
|
}
|
|
}
|
|
for(let eng of engineerings){
|
|
for(let eng of engineerings){
|
|
let engInfo = IDMapping[eng.ID];
|
|
let engInfo = IDMapping[eng.ID];
|
|
@@ -1151,8 +1131,9 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
for(let project of projects){
|
|
for(let project of projects){
|
|
let projectInfo = IDMapping[project.ID];
|
|
let projectInfo = IDMapping[project.ID];
|
|
projectInfo.rate = 100;
|
|
projectInfo.rate = 100;
|
|
- projectInfo.perCost = projectInfo.buildingArea.toString().trim() === '' || projectInfo.buildingArea == 0 ?
|
|
|
|
- projectInfo.buildingArea.toString().trim() : scMathUtil.roundTo(projectInfo.engineeringCost / projectInfo.buildingArea, perCostDecimal);
|
|
|
|
|
|
+ projectInfo.perCost = projectInfo.buildingArea.toString().trim() === '' || projectInfo.buildingArea == 0
|
|
|
|
+ ? projectInfo.buildingArea.toString().trim()
|
|
|
|
+ : scMathUtil.roundTo(projectInfo.engineeringCost / projectInfo.buildingArea, perCostDecimal);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return IDMapping;
|
|
return IDMapping;
|
|
@@ -1397,33 +1378,33 @@ async function getProjectByGranularity(tenderID, granularity, userID, versionNam
|
|
ENGINEERING: 2,
|
|
ENGINEERING: 2,
|
|
TENDER: 3
|
|
TENDER: 3
|
|
};
|
|
};
|
|
- let theTender = await projectModel.findOne({userID: userID, ID: tenderID}); //加上session的userID,防止tenderID被篡改过
|
|
|
|
|
|
+ let theTender = await projectModel.findOne({userID: userID, ID: tenderID}).lean(); //加上session的userID,防止tenderID被篡改过
|
|
if (!theTender) {
|
|
if (!theTender) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- let theEngineering = await projectModel.findOne({ID: theTender.ParentID});
|
|
|
|
|
|
+ let theEngineering = await projectModel.findOne({ID: theTender.ParentID}).lean();
|
|
if (!theEngineering) {
|
|
if (!theEngineering) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- let constructionProject = await projectModel.findOne({ID: theEngineering.ParentID});
|
|
|
|
|
|
+ let constructionProject = await projectModel.findOne({ID: theEngineering.ParentID}).lean();
|
|
if (!constructionProject) {
|
|
if (!constructionProject) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
let engineerings;
|
|
let engineerings;
|
|
if (granularity === GRANULARITY.PROJECT) {
|
|
if (granularity === GRANULARITY.PROJECT) {
|
|
- engineerings = await projectModel.find({ParentID: constructionProject.ID, $or: notDeleted});
|
|
|
|
|
|
+ engineerings = await projectModel.find({ParentID: constructionProject.ID, $or: notDeleted}).lean();
|
|
for (let eng of engineerings) {
|
|
for (let eng of engineerings) {
|
|
- eng._doc.children = await projectModel.find({ParentID: eng.ID, $or: notDeleted});
|
|
|
|
|
|
+ eng.children = await projectModel.find({ParentID: eng.ID, $or: notDeleted}).lean();
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
engineerings = [theEngineering];
|
|
engineerings = [theEngineering];
|
|
if (granularity === GRANULARITY.ENGINEERING) {
|
|
if (granularity === GRANULARITY.ENGINEERING) {
|
|
- theEngineering._doc.children = await projectModel.find({ParentID: theEngineering.ID, $or: notDeleted});
|
|
|
|
|
|
+ theEngineering.children = await projectModel.find({ParentID: theEngineering.ID, $or: notDeleted}).lean();
|
|
} else {
|
|
} else {
|
|
- theEngineering._doc.children = [theTender];
|
|
|
|
|
|
+ theEngineering.children = [theTender];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- constructionProject._doc.children = engineerings;
|
|
|
|
|
|
+ constructionProject.children = engineerings;
|
|
//获取汇总信息
|
|
//获取汇总信息
|
|
let feeFields = [
|
|
let feeFields = [
|
|
{k: billsFlags.ENGINEERINGCOST, v: 'engineeringCost'},
|
|
{k: billsFlags.ENGINEERINGCOST, v: 'engineeringCost'},
|
|
@@ -1440,12 +1421,12 @@ async function getProjectByGranularity(tenderID, granularity, userID, versionNam
|
|
{k: billsFlags.CLAIM_VISA, v: 'claimVisa'},
|
|
{k: billsFlags.CLAIM_VISA, v: 'claimVisa'},
|
|
{k: billsFlags.TAX, v: 'tax'}
|
|
{k: billsFlags.TAX, v: 'tax'}
|
|
];
|
|
];
|
|
- constructionProject._doc.summaryInfo = await getSummaryInfo([constructionProject.ID], feeFields);
|
|
|
|
|
|
+ constructionProject.summaryInfo = await getSummaryInfo([constructionProject.ID], feeFields);
|
|
//获取编制软件信息: 软件公司;软件名;版本号;授权信息; base64
|
|
//获取编制软件信息: 软件公司;软件名;版本号;授权信息; base64
|
|
let product = await productModel.findOne({});
|
|
let product = await productModel.findOne({});
|
|
let company = product.company || '珠海纵横创新软件有限公司',
|
|
let company = product.company || '珠海纵横创新软件有限公司',
|
|
version = product.version || '';
|
|
version = product.version || '';
|
|
- constructionProject._doc.softInfo = `${company};${versionName};${version};${userID}`;
|
|
|
|
|
|
+ constructionProject.softInfo = `${company};${versionName};${version};${userID}`;
|
|
return constructionProject;
|
|
return constructionProject;
|
|
}
|
|
}
|
|
|
|
|