|
@@ -6,7 +6,7 @@
|
|
|
|
|
|
|
|
|
let gljUtil = {
|
|
|
- calcProjectGLJQuantity:function (projectGLJDatas,rationGLJDatas,rationDatas,billsDatas,q_decimal,_,scMathUtil) {
|
|
|
+ calcProjectGLJQuantity:function (projectGLJDatas,rationGLJDatas,rationDatas,billsDatas,q_decimal,_,scMathUtil,isTender) {
|
|
|
let project_gljs = projectGLJDatas.gljList;
|
|
|
let mixRatioMap = projectGLJDatas.mixRatioMap;
|
|
|
let rations = rationDatas;
|
|
@@ -15,16 +15,20 @@ let gljUtil = {
|
|
|
let rationGljGroup = _.groupBy(rationGLJDatas,'projectGLJID');
|
|
|
let IDarray = this.getSubdivisionAndTechBillsLeavesID(billsDatas);//分别取分部分项和技术措施项目的所有叶子清单ID
|
|
|
let billIDs = IDarray[0],tech_billIDS = IDarray[1];
|
|
|
+ let sField = isTender==true?"tenderSubdivisionQuantity":"subdivisionQuantity";
|
|
|
+ let tField = isTender==true?"tenderTechQuantity":"techQuantity";
|
|
|
+ let qField = isTender==true?"tenderQuantity":"quantity";
|
|
|
+
|
|
|
for(let pglj of project_gljs ){
|
|
|
let pg_index = this.getIndex(pglj,this.gljKeyArray);
|
|
|
- pglj.subdivisionQuantity = 0;
|
|
|
- pglj.techQuantity = 0;
|
|
|
- pglj.quantity = 0;
|
|
|
+ pglj[sField] = 0;
|
|
|
+ pglj[tField] = 0;
|
|
|
+ pglj[qField] = 0;
|
|
|
let gljGroup = rationGljGroup[pglj.id]?rationGljGroup[pglj.id]:[];//定额工料机没有,有可能是定额类型的工料机
|
|
|
- let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil);
|
|
|
- pglj.subdivisionQuantity = result.subdivisionQuantity;
|
|
|
- pglj.techQuantity = result.techQuantity;
|
|
|
- pglj.quantity = result.quantity;
|
|
|
+ let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil,isTender);
|
|
|
+ pglj[sField] = result.subdivisionQuantity;
|
|
|
+ pglj[tField] = result.techQuantity;
|
|
|
+ pglj[qField] = result.quantity;
|
|
|
quantityMap[pg_index] = pglj;
|
|
|
}
|
|
|
//计算做为组成物的消耗量
|
|
@@ -35,20 +39,17 @@ let gljUtil = {
|
|
|
let m_glj = quantityMap[m_index];
|
|
|
let p_glj = quantityMap[pkey];
|
|
|
if(m_glj&&p_glj){
|
|
|
- let quantity = scMathUtil.roundForObj(parseFloat(p_glj.quantity)*parseFloat(m.consumption),q_decimal);
|
|
|
- let techQuantity = scMathUtil.roundForObj(parseFloat(p_glj.techQuantity)*parseFloat(m.consumption),q_decimal);
|
|
|
- let subdivisionQuantity = scMathUtil.roundForObj(parseFloat(p_glj.subdivisionQuantity)*parseFloat(m.consumption),q_decimal);
|
|
|
- m_glj.quantity = scMathUtil.roundForObj(parseFloat(m_glj.quantity)+quantity,q_decimal);
|
|
|
- m_glj.techQuantity = scMathUtil.roundForObj(parseFloat(m_glj.techQuantity)+techQuantity,q_decimal);
|
|
|
- m_glj.subdivisionQuantity = scMathUtil.roundForObj(parseFloat(m_glj.subdivisionQuantity)+subdivisionQuantity,q_decimal);
|
|
|
- if(m_glj.id == 6832){
|
|
|
- console.log(m_glj.quantity)
|
|
|
- }
|
|
|
+ let quantity = scMathUtil.roundForObj(parseFloat(p_glj[qField])*parseFloat(m.consumption),q_decimal);
|
|
|
+ let techQuantity = scMathUtil.roundForObj(parseFloat(p_glj[tField])*parseFloat(m.consumption),q_decimal);
|
|
|
+ let subdivisionQuantity = scMathUtil.roundForObj(parseFloat(p_glj[sField])*parseFloat(m.consumption),q_decimal);
|
|
|
+ m_glj[qField] = scMathUtil.roundForObj(parseFloat(m_glj[qField])+quantity,q_decimal);
|
|
|
+ m_glj[tField] = scMathUtil.roundForObj(parseFloat(m_glj[tField])+techQuantity,q_decimal);
|
|
|
+ m_glj[sField] = scMathUtil.roundForObj(parseFloat(m_glj[sField])+subdivisionQuantity,q_decimal);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil) {
|
|
|
+ getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil,isTender) {
|
|
|
let result={};
|
|
|
let quantity_sum=0;//工料机汇总消耗量
|
|
|
let sum = 0;//分部分项总消耗量
|
|
@@ -60,6 +61,10 @@ let gljUtil = {
|
|
|
if(!r_quantity){
|
|
|
continue;
|
|
|
}
|
|
|
+ if(isTender == true){
|
|
|
+ glj_quantity = this.getRationGLJTenderQuantity(rg,tem_ration,q_decimal,scMathUtil);
|
|
|
+ r_quantity = this.getRationTenderQuantity(tem_ration,q_decimal,scMathUtil);
|
|
|
+ }
|
|
|
let total = scMathUtil.roundForObj(glj_quantity*r_quantity, q_decimal);
|
|
|
quantity_sum = scMathUtil.roundForObj(quantity_sum+total,q_decimal);
|
|
|
if(_.includes(billIDs,rg.billsItemID)){//计算分部分项
|
|
@@ -73,6 +78,9 @@ let gljUtil = {
|
|
|
if(ra.type == this.rationType.gljRation&&ra.projectGLJID===pglj.id){
|
|
|
let r_quantity = scMathUtil.roundForObj(ra.quantity,q_decimal);
|
|
|
r_quantity = r_quantity?r_quantity:0;
|
|
|
+ if(isTender == true){
|
|
|
+ r_quantity = this.getRationTenderQuantity(ra,q_decimal,scMathUtil);
|
|
|
+ }
|
|
|
quantity_sum = scMathUtil.roundForObj(quantity_sum+r_quantity,q_decimal);
|
|
|
if(_.includes(billIDs,ra.billsItemID)){//计算分部分项
|
|
|
sum = scMathUtil.roundForObj(sum+r_quantity,q_decimal);
|
|
@@ -88,6 +96,37 @@ let gljUtil = {
|
|
|
result.quantity = quantity_sum;
|
|
|
return result;
|
|
|
},
|
|
|
+ getRationGLJTenderQuantity:function (ration_glj,ration,q_decimal,scMathUtil) {
|
|
|
+ let coeMap = {
|
|
|
+ 1:'labour', //人工
|
|
|
+ 2:'material',//材料
|
|
|
+ 3:'machine',//机械
|
|
|
+ 4:'main', //主材
|
|
|
+ 5:'equipment'//设备
|
|
|
+ };
|
|
|
+ let typeString = ration_glj.type +"";
|
|
|
+ let coeField = "";
|
|
|
+ for(let key in coeMap){
|
|
|
+ if(typeString.indexOf(key)!= -1){
|
|
|
+ coeField = coeMap[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let coe = ration.quantityCoe&&this.isNotEmpty(ration.quantityCoe[coeField])?ration.quantityCoe[coeField]:1;
|
|
|
+ coe = parseFloat(coe);
|
|
|
+ let glj_quantity = scMathUtil.roundForObj(ration_glj.quantity, q_decimal);
|
|
|
+ return scMathUtil.roundForObj(glj_quantity * coe,q_decimal);
|
|
|
+ },
|
|
|
+ getRationTenderQuantity:function (ration,q_decimal,scMathUtil) {
|
|
|
+ let rationQuantityCoe = this.isNotEmpty(ration.rationQuantityCoe)?ration.rationQuantityCoe:1;
|
|
|
+ rationQuantityCoe = parseFloat(rationQuantityCoe);
|
|
|
+ let r_quantity = ration?scMathUtil.roundForObj(ration.quantity,q_decimal):0;
|
|
|
+ return scMathUtil.roundForObj(r_quantity * rationQuantityCoe,q_decimal);
|
|
|
+ },
|
|
|
+
|
|
|
+ isNotEmpty:function (str) {
|
|
|
+ return this.isDef(str) && str!="";
|
|
|
+ },
|
|
|
+
|
|
|
getSubdivisionAndTechBillsLeavesID:function (billsDatas) {//分别取分部分项和技术措施项目的所有叶子清单ID
|
|
|
if(typeof (projectObj) !== 'undefined'){//存在,说明在前端调用
|
|
|
return [projectObj.project.Bills.getSubdivisionProjectLeavesID(),projectObj.project.Bills.getTechLeavesID()];
|