|
@@ -159,6 +159,12 @@ class Rpt_Data_Extractor {
|
|
|
//备注:项目工料机的数量是需要根据定额清单来计算的!这里的逻辑是对的
|
|
//备注:项目工料机的数量是需要根据定额清单来计算的!这里的逻辑是对的
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ if (key === projectConst.FEERATE) {
|
|
|
|
|
+ if (field[JV.PROP_FIELD_EXP_MAP].indexOf('getFeeRate(') >= 0 && rst.indexOf(projectConst.CALC_PROGRAM) < 0) {
|
|
|
|
|
+ //定额取费率情况下才需要额外的CALC_PROGRAM数据
|
|
|
|
|
+ rst.push(projectConst.CALC_PROGRAM);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} else if (key === projectConst.PROJECTGLJ) {
|
|
} else if (key === projectConst.PROJECTGLJ) {
|
|
@@ -331,7 +337,14 @@ class Rpt_Data_Extractor {
|
|
|
//把综合费率树结构数据拉扁
|
|
//把综合费率树结构数据拉扁
|
|
|
// fsUtil.writeObjToFile(feeRate, "D:/GitHome/temp/feeRateObj.jsp");
|
|
// fsUtil.writeObjToFile(feeRate, "D:/GitHome/temp/feeRateObj.jsp");
|
|
|
// console.log(feeRate);
|
|
// console.log(feeRate);
|
|
|
- let newFeeRates = setupFeeRate(feeRate.data._doc);
|
|
|
|
|
|
|
+ let calcProgram = getModuleDataByKey(rawDataObj.prjData, "calc_program");
|
|
|
|
|
+ // fsUtil.writeObjToFile(calcProgram, "D:/GitHome/temp/calcProgramObj.jsp");
|
|
|
|
|
+ let newFeeRates;
|
|
|
|
|
+ if (calcProgram) {
|
|
|
|
|
+ newFeeRates = setupFeeRate(feeRate.data._doc, calcProgram.data._doc);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ newFeeRates = setupFeeRate(feeRate.data._doc, null);
|
|
|
|
|
+ }
|
|
|
// console.log(newFeeRates);
|
|
// console.log(newFeeRates);
|
|
|
// fsUtil.writeObjToFile(newFeeRates, "D:/GitHome/temp/newFeeRateObj.js");
|
|
// fsUtil.writeObjToFile(newFeeRates, "D:/GitHome/temp/newFeeRateObj.js");
|
|
|
feeRate.data._doc.rates = newFeeRates;
|
|
feeRate.data._doc.rates = newFeeRates;
|
|
@@ -1293,7 +1306,7 @@ function setupMainFunc(obj, prop, ownRawObj) {
|
|
|
obj[prop].getFee = ext_mainGetFee;
|
|
obj[prop].getFee = ext_mainGetFee;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-function setupFeeRate(feeRateData){
|
|
|
|
|
|
|
+function setupFeeRate(feeRateData, calcProgramData){
|
|
|
let cacheObj = {}, topArr = [], rstArr = [], id_pre = 'ID_';
|
|
let cacheObj = {}, topArr = [], rstArr = [], id_pre = 'ID_';
|
|
|
const rateProperties = [];
|
|
const rateProperties = [];
|
|
|
for (let rate of feeRateData.rates) {
|
|
for (let rate of feeRateData.rates) {
|
|
@@ -1311,13 +1324,50 @@ function setupFeeRate(feeRateData){
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+ let newTopArr = [];
|
|
|
|
|
+ if (calcProgramData) {
|
|
|
|
|
+ let reg1 = new RegExp('III','g'), reg2 = new RegExp('II','g');
|
|
|
|
|
+ for (let tpl of calcProgramData.templates) {
|
|
|
|
|
+ //要根据templates重新编排一下(考虑数量单价情况,有数量单价情况下,会有一些费率数据获取不到的(利润、税金等),feeRateID 有数据值)
|
|
|
|
|
+ let hasRate = false;
|
|
|
|
|
+ for (let rate of topArr) {
|
|
|
|
|
+ let rName = rate.obj.name.replace(reg1, 'Ⅲ').replace(reg2, 'Ⅱ');
|
|
|
|
|
+ let cName = tpl.name.replace(reg1, 'Ⅲ').replace(reg2, 'Ⅱ');
|
|
|
|
|
+ if (rName === cName) {
|
|
|
|
|
+ hasRate = true;
|
|
|
|
|
+ rate.obj.ID = tpl.ID; // 重新安排ID !!!
|
|
|
|
|
+ newTopArr.push(rate);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!hasRate) {
|
|
|
|
|
+ //创建一个新的
|
|
|
|
|
+ const newRate = {obj: {}, items: []};
|
|
|
|
|
+ // name: tpl.name, ID: tpl.ID
|
|
|
|
|
+ newRate.obj.name = tpl.name;
|
|
|
|
|
+ newRate.obj.ID = tpl.ID;
|
|
|
|
|
+ let _doc = tpl._doc?tpl._doc:tpl;
|
|
|
|
|
+ for (let cItem of _doc.calcItems) {
|
|
|
|
|
+ cItem = cItem._doc ? cItem._doc : cItem;
|
|
|
|
|
+ if (cItem.hasOwnProperty('feeRateID')) {
|
|
|
|
|
+ if (cacheObj[id_pre + cItem.feeRateID]) {
|
|
|
|
|
+ newRate.items.push(cacheObj[id_pre + cItem.feeRateID]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ newTopArr.push(newRate);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ newTopArr = topArr;
|
|
|
|
|
+ }
|
|
|
let pri_func_set_property_rate = function (orgRateItem, rstRateItem) {
|
|
let pri_func_set_property_rate = function (orgRateItem, rstRateItem) {
|
|
|
rstRateItem[orgRateItem.obj.name] = orgRateItem.obj.rate;
|
|
rstRateItem[orgRateItem.obj.name] = orgRateItem.obj.rate;
|
|
|
for (let subOrgRateItem of orgRateItem.items) {
|
|
for (let subOrgRateItem of orgRateItem.items) {
|
|
|
pri_func_set_property_rate(subOrgRateItem, rstRateItem);
|
|
pri_func_set_property_rate(subOrgRateItem, rstRateItem);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
- for (let topRate of topArr) {
|
|
|
|
|
|
|
+ for (let topRate of newTopArr) {
|
|
|
let rstItem = {"name": topRate.obj.name, "ID": topRate.obj.ID};
|
|
let rstItem = {"name": topRate.obj.name, "ID": topRate.obj.ID};
|
|
|
for (let property of rateProperties) {
|
|
for (let property of rateProperties) {
|
|
|
rstItem[property] = 0;
|
|
rstItem[property] = 0;
|