|  | @@ -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){
 |