|
@@ -41,6 +41,11 @@ let coeTypeMap = {
|
|
|
"设备":5
|
|
|
};
|
|
|
|
|
|
+let areaIncreaseMap = {
|
|
|
+ 1:"labour",
|
|
|
+ 2:"material",
|
|
|
+ 3:"machine"
|
|
|
+};
|
|
|
|
|
|
async function calculateQuantity(query,noNeedCal,refreshRationName = false,areaIncreaseFee,areaSetting){
|
|
|
try {
|
|
@@ -58,6 +63,10 @@ async function calculateQuantity(query,noNeedCal,refreshRationName = false,areaI
|
|
|
return null;
|
|
|
}
|
|
|
if(areaIncreaseFee !== null && areaIncreaseFee !== undefined) impactRation.areaIncreaseFee = areaIncreaseFee;
|
|
|
+ if(impactRation.areaIncreaseFee == true && !areaSetting){
|
|
|
+ let project = await project_model.findOne({ID:impactRation.projectID},'property.areaSetting');
|
|
|
+ areaSetting = project.property.areaSetting;
|
|
|
+ }
|
|
|
if(impactRation._doc.hasOwnProperty("rationAssList")&&impactRation.rationAssList.length>0){
|
|
|
let temTimes = [];
|
|
|
let thirdRationCodes=[];
|
|
@@ -85,7 +94,7 @@ async function calculateQuantity(query,noNeedCal,refreshRationName = false,areaI
|
|
|
}
|
|
|
gljList = sortRationGLJ(gljList);
|
|
|
for(let i =0;i<gljList.length;i++ ){
|
|
|
- let r = await calculateQuantityPerGLJ(gljList[i],gljList,coeList,assList,adjustState,noNeedCal);
|
|
|
+ let r = await calculateQuantityPerGLJ(gljList[i],gljList,coeList,assList,adjustState,noNeedCal,impactRation.areaIncreaseFee,areaSetting);
|
|
|
if(quantityUpdateCheck(gljList[i],r) == true) result.glj_result.push(r);
|
|
|
}
|
|
|
|
|
@@ -114,10 +123,6 @@ async function calculateQuantity(query,noNeedCal,refreshRationName = false,areaI
|
|
|
}
|
|
|
|
|
|
async function setAreaAdjustState(projectID,adjustState,areaSetting){
|
|
|
- if(!areaSetting){
|
|
|
- let project = await project_model.findOne({ID:projectID},'property.areaSetting');
|
|
|
- areaSetting = project.property.areaSetting;
|
|
|
- }
|
|
|
if(areaSetting){
|
|
|
let stringArr = [];
|
|
|
let labour = getStr(areaSetting.labour);
|
|
@@ -207,7 +212,7 @@ function sortRationGLJ(list) {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
-async function calculateQuantityPerGLJ(glj,gljList,coeList,assList,adjustState,noNeedCal) {
|
|
|
+async function calculateQuantityPerGLJ(glj,gljList,coeList,assList,adjustState,noNeedCal,areaIncreaseFee,areaSetting) {
|
|
|
let decimalObject =await decimal_facade.getProjectDecimal(glj.projectID);
|
|
|
let decimal = (decimalObject&&decimalObject.glj&&decimalObject.glj.quantity)?decimalObject.glj.quantity:3;
|
|
|
let quantity = scMathUtil.roundTo(parseFloat(glj.quantity),-decimal);
|
|
@@ -235,6 +240,9 @@ async function calculateQuantityPerGLJ(glj,gljList,coeList,assList,adjustState,n
|
|
|
quantity = scMathUtil.roundToString(quantity,decimal);
|
|
|
quantity = calculateQuantityByCustomerCoes(quantity,customerCoe,glj,decimal);
|
|
|
}
|
|
|
+ //计算面积增加费
|
|
|
+ if(areaIncreaseFee == true) quantity = calclateAreaIncrease(quantity,glj,areaSetting,decimal);
|
|
|
+
|
|
|
result.doc.quantity =scMathUtil.roundToString(quantity,decimal);
|
|
|
//2019-01-03 需求修改中间过程的价格不参与计算
|
|
|
//glj.quantity = quantity;//这里保存中间过程计算出来的消耗量,后面处理“+*”操作符时要用到
|
|
@@ -246,6 +254,19 @@ async function calculateQuantityPerGLJ(glj,gljList,coeList,assList,adjustState,n
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+function calclateAreaIncrease(quantity,glj,areaSetting,decimal){
|
|
|
+ if(areaSetting){
|
|
|
+ let atype = areaIncreaseMap[getRootGLJType(glj.type).ID];
|
|
|
+ if(atype && areaSetting[atype]){
|
|
|
+ quantity = scMathUtil.roundForObj(quantity,decimal);
|
|
|
+ quantity = scMathUtil.roundToString(quantity * (1 + areaSetting[atype]/100 ),decimal)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return quantity
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
async function calculateAss(quantity,assList,glj) {
|
|
|
for(let i=0;i<assList.length;i++){
|
|
|
if(assList[i].assRation){
|