|
@@ -1017,11 +1017,14 @@ async function getTendersFeeInfo(tenders) {
|
|
|
return IDMapping;
|
|
|
}
|
|
|
|
|
|
-async function getSummaryInfo(projectIDs, feeFields = null){
|
|
|
- function initFees(obj, feeFields) {
|
|
|
+async function getSummaryInfo(projectIDs, feeFields = null, engineeringCostFields = null){
|
|
|
+ function initFees(obj, feeFields, engineeringCostFields) {
|
|
|
for (let data of feeFields) {
|
|
|
obj[data.v] = 0;
|
|
|
}
|
|
|
+ for (let data of engineeringCostFields) {
|
|
|
+ obj[data.k] = 0;
|
|
|
+ }
|
|
|
}
|
|
|
if (!feeFields) {
|
|
|
feeFields = [
|
|
@@ -1034,6 +1037,10 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
|
{k: billsFlags.TAX, v: 'tax'}
|
|
|
];
|
|
|
}
|
|
|
+ // 项目总造价的各个费用,k为汇总的字段,v为工程造价的费用字段
|
|
|
+ if (!engineeringCostFields) {
|
|
|
+ engineeringCostFields = [{ k: 'estimate', v: 'estimate' }];
|
|
|
+ }
|
|
|
//ID与汇总信息映射
|
|
|
let IDMapping = {};
|
|
|
//固定清单类别与汇总金额字段映射
|
|
@@ -1056,21 +1063,21 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- IDMapping[project.ID] = {estimate: 0, rate: 0, buildingArea: grossArea, perCost: ''};
|
|
|
- initFees(IDMapping[project.ID], feeFields);
|
|
|
+ IDMapping[project.ID] = {rate: 0, buildingArea: grossArea, perCost: ''};
|
|
|
+ initFees(IDMapping[project.ID], feeFields, engineeringCostFields);
|
|
|
console.log(IDMapping[project.ID]);
|
|
|
}
|
|
|
|
|
|
//单项工程
|
|
|
let engineerings = await projectModel.find({ParentID: {$in : projectIDs}, projType: projectType.engineering, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]});
|
|
|
- //单位工程
|
|
|
let tenders = [];
|
|
|
let engIDs = [];
|
|
|
for(let eng of engineerings){
|
|
|
engIDs.push(eng.ID);
|
|
|
- IDMapping[eng.ID] = {estimate: 0, rate: 0, buildingArea: '', perCost: ''};
|
|
|
- initFees(IDMapping[eng.ID], feeFields);
|
|
|
+ IDMapping[eng.ID] = {rate: 0, buildingArea: '', perCost: ''};
|
|
|
+ initFees(IDMapping[eng.ID], feeFields, engineeringCostFields);
|
|
|
}
|
|
|
+ //单位工程
|
|
|
if(engIDs.length > 0){
|
|
|
tenders = await projectModel.find({ParentID: {$in : engIDs}, projType: projectType.tender, $or: [{deleteInfo: null}, {'deleteInfo.deleted': false}]});
|
|
|
}
|
|
@@ -1078,8 +1085,8 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
|
if(tenders.length > 0){
|
|
|
for(let tender of tenders){
|
|
|
tenderIDs.push(tender.ID);
|
|
|
- IDMapping[tender.ID] = {rate: 0, estimate: 0, buildingArea: '', perCost: '', changeMark:tender.changeMark,property:tender.property};
|
|
|
- initFees(IDMapping[tender.ID], feeFields);
|
|
|
+ IDMapping[tender.ID] = {rate: 0, buildingArea: '', perCost: '', changeMark:tender.changeMark,property:tender.property};
|
|
|
+ initFees(IDMapping[tender.ID], feeFields, engineeringCostFields);
|
|
|
let buildingArea = getBuildingArea(tender.property.projectFeature);
|
|
|
if(buildingArea){
|
|
|
IDMapping[tender.ID]['buildingArea'] = buildingArea;
|
|
@@ -1095,13 +1102,14 @@ async function getSummaryInfo(projectIDs, feeFields = null){
|
|
|
let billsFlag = bills.flags[0]['flag'];
|
|
|
let costField = flagFieldMapping[billsFlag];
|
|
|
IDMapping[bills.projectID][costField] = getTotalFee(bills, 'common');
|
|
|
- //暂估合价(工程造价暂估合价)
|
|
|
+ // 工程造价各费用
|
|
|
if (billsFlag === billsFlags.ENGINEERINGCOST){
|
|
|
- IDMapping[bills.projectID]['estimate'] = getTotalFee(bills, 'estimate');
|
|
|
+ engineeringCostFields.forEach(({k, v}) => {
|
|
|
+ IDMapping[bills.projectID][k] = getTotalFee(bills, v);
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
- let summaryFields = feeFields.map(data => data.v);
|
|
|
- summaryFields.push('estimate');
|
|
|
+ let summaryFields = [...feeFields, ...engineeringCostFields].map(data => data.v);
|
|
|
//进行单项工程级别的汇总
|
|
|
for(let tender of tenders){
|
|
|
summarizeToParent(IDMapping[tender.ParentID], IDMapping[tender.ID], summaryFields);
|
|
@@ -1372,7 +1380,7 @@ async function getProjectFeature(valuationID, engineeringName, feeName) {
|
|
|
|
|
|
//根据单位工程,获取建设项目-单项工程-单位工程,不包含无单位工程的单项工程
|
|
|
//@param {Number}tenderID(单位工程ID) {Number}granularity(颗粒度 1:建设项目 2:单项工程 3:单位工程)
|
|
|
-async function getProjectByGranularity(tenderID, granularity, userID, versionName) {
|
|
|
+async function getProjectByGranularity(tenderID, granularity, summaryObj, userID, versionName) {
|
|
|
const GRANULARITY = {
|
|
|
PROJECT: 1,
|
|
|
ENGINEERING: 2,
|
|
@@ -1406,22 +1414,8 @@ async function getProjectByGranularity(tenderID, granularity, userID, versionNam
|
|
|
}
|
|
|
constructionProject.children = engineerings;
|
|
|
//获取汇总信息
|
|
|
- let feeFields = [
|
|
|
- {k: billsFlags.ENGINEERINGCOST, v: 'engineeringCost'},
|
|
|
- {k: billsFlags.SUB_ENGINERRING, v: 'subEngineering'},
|
|
|
- {k: billsFlags.MEASURE, v: 'measure'},
|
|
|
- {k: billsFlags.SAFETY_CONSTRUCTION, v: 'safetyConstruction'},
|
|
|
- {k: billsFlags.OTHER, v: 'other'},
|
|
|
- {k: billsFlags.CHARGE, v: 'charge'},
|
|
|
- {k: billsFlags.PROVISIONAL, v: 'provisional'},
|
|
|
- {k: billsFlags.MATERIAL_PROVISIONAL, v: 'materialProvisional'},
|
|
|
- {k: billsFlags.ENGINEERING_ESITIMATE, v: 'engineeringEstimate'},
|
|
|
- {k: billsFlags.DAYWORK, v: 'daywork'},
|
|
|
- {k: billsFlags.TURN_KEY_CONTRACT, v: 'turnKeyContract'},
|
|
|
- {k: billsFlags.CLAIM_VISA, v: 'claimVisa'},
|
|
|
- {k: billsFlags.TAX, v: 'tax'}
|
|
|
- ];
|
|
|
- constructionProject.summaryInfo = await getSummaryInfo([constructionProject.ID], feeFields);
|
|
|
+ const { feeFields, engineeringCostFields } = summaryObj;
|
|
|
+ constructionProject.summaryInfo = await getSummaryInfo([constructionProject.ID], feeFields, engineeringCostFields);
|
|
|
//获取编制软件信息: 软件公司;软件名;版本号;授权信息; base64
|
|
|
let product = await productModel.findOne({});
|
|
|
let company = product.company || '珠海纵横创新软件有限公司',
|