Forráskód Böngészése

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/YangHuCost

zhongzewei 6 éve
szülő
commit
ac03239dd0

+ 36 - 27
modules/main/facade/ration_facade.js

@@ -164,7 +164,7 @@ async function replaceRations(userID,data,compilation) {
     let recodes = [];
     let recodes = [];
     for(let recode of data.nodeInfo){
     for(let recode of data.nodeInfo){
         let stdRation = await searchDao.getRationItem(userID,compilation._id,data.libIDs,recode.newCode, null);
         let stdRation = await searchDao.getRationItem(userID,compilation._id,data.libIDs,recode.newCode, null);
-        let newRecode = await replaceRation(recode,stdRation,data.defaultLibID,data.projectID,data.calQuantity,compilation);
+        let newRecode = await replaceRation(recode,stdRation,data.defaultLibID,data.projectID,data.calQuantity,compilation,data.cleanzmhs);
         if(newRecode){
         if(newRecode){
             recodes.push(newRecode);
             recodes.push(newRecode);
         }else {
         }else {
@@ -186,20 +186,20 @@ async function getDefaultProgramID(data) {
     return programID;
     return programID;
 }
 }
 
 
-async function replaceRation(nodeInfo,stdRation,defaultLibID,projectID,calQuantity,compilation) {
+async function replaceRation(nodeInfo,stdRation,defaultLibID,projectID,calQuantity,compilation,cleanzmhs) {
     if(nodeInfo.newCode == null||nodeInfo.newCode ==""){//说明是删除编号,则要变成一条空定额
     if(nodeInfo.newCode == null||nodeInfo.newCode ==""){//说明是删除编号,则要变成一条空定额
         await deleRationSubRecode(projectID,nodeInfo.ID);//删除定额下挂的各种数据,如定额工料机等
         await deleRationSubRecode(projectID,nodeInfo.ID);//删除定额下挂的各种数据,如定额工料机等
         return await setEmptyRation(projectID,nodeInfo.ID);
         return await setEmptyRation(projectID,nodeInfo.ID);
     }else if(stdRation){
     }else if(stdRation){
-        await deleRationSubRecode(projectID,nodeInfo.ID);//删除定额下挂的各种数据,如定额工料机等
-        let newRation = await updateRation(stdRation,defaultLibID,nodeInfo.ID,nodeInfo.billsItemID,projectID,calQuantity);//生成并插入新的定额
-        return await addRationSubList(stdRation,newRation,nodeInfo.needInstall,compilation);
+        await deleRationSubRecode(projectID,nodeInfo.ID,cleanzmhs);//删除定额下挂的各种数据,如定额工料机等
+        let newRation = await updateRation(stdRation,defaultLibID,nodeInfo.ID,nodeInfo.billsItemID,projectID,calQuantity,cleanzmhs);//生成并插入新的定额
+        return await addRationSubList(stdRation,newRation,nodeInfo.needInstall,compilation,cleanzmhs);
     }else {
     }else {
         return null;
         return null;
     }
     }
 }
 }
 
 
-async function addRationSubList(stdRation,newRation,needInstall,compilation) {
+async function addRationSubList(stdRation,newRation,needInstall,compilation,cleanzmhs=false) {
     let startTime = +new Date();
     let startTime = +new Date();
     let ration_gljs = await addRationGLJ(stdRation,newRation,compilation);
     let ration_gljs = await addRationGLJ(stdRation,newRation,compilation);
     let addRationGLJTime = +new Date();
     let addRationGLJTime = +new Date();
@@ -208,13 +208,16 @@ async function addRationSubList(stdRation,newRation,needInstall,compilation) {
     let addRationCoeTime = +new Date();
     let addRationCoeTime = +new Date();
     console.log("添加定额coe时间-----"+(addRationCoeTime - addRationGLJTime));
     console.log("添加定额coe时间-----"+(addRationCoeTime - addRationGLJTime));
     let ration_installations = [];
     let ration_installations = [];
-    if(needInstall && stdRation.type == 'std'){//只有标准的定额才有安装增加费,补充的定额没有安装增加费
-        ration_installations =  await addRationInstallFee(stdRation,newRation);
+    let ration_template = [];
+    if(cleanzmhs == false){//清除子目换算即cleanzmh==true时 模板子目、安装增加费不用恢复成标准的
+        if(needInstall && stdRation.type == 'std'){//只有标准的定额才有安装增加费,补充的定额没有安装增加费
+            ration_installations =  await addRationInstallFee(stdRation,newRation);
+        }
+        let addRationInstallFeeTime = +new Date();
+        console.log("添加定额install时间-----"+(addRationInstallFeeTime - addRationCoeTime));
+        //添加定额模板子目
+        ration_template = await addRationTemplate(stdRation,newRation);
     }
     }
-    let addRationInstallFeeTime = +new Date();
-    console.log("添加定额install时间-----"+(addRationInstallFeeTime - addRationCoeTime));
-    //添加定额模板子目
-    let ration_template = await addRationTemplate(stdRation,newRation);
     return {ration:newRation,ration_gljs:ration_gljs,ration_coes:ration_coes,ration_installations:ration_installations,ration_templates:ration_template?[ration_template]:[]};
     return {ration:newRation,ration_gljs:ration_gljs,ration_coes:ration_coes,ration_installations:ration_installations,ration_templates:ration_template?[ration_template]:[]};
 }
 }
 
 
@@ -468,18 +471,23 @@ async function addRationGLJ(std,newRation,compilation) {
     return rationGLJShowList;
     return rationGLJShowList;
 }
 }
 
 
-async function deleRationSubRecode(projectID,rationID) {//删除挂在定额下的数据,如工程量明细,定额工料机等
+async function deleRationSubRecode(projectID,rationID,cleanzmhs=false) {//删除挂在定额下的数据,如工程量明细,定额工料机等
     let delete_query={projectID: projectID, rationID: rationID};
     let delete_query={projectID: projectID, rationID: rationID};
     //删除工程量明细
     //删除工程量明细
-    await deleteSubListByQuery(delete_query) ;
+    await deleteSubListByQuery(delete_query,cleanzmhs) ;
 }
 }
 
 
-async function deleteSubListByQuery(delete_query) {
-    await quantity_detail.deleteByQuery(delete_query) ;//删除工程量明细
+async function deleteSubListByQuery(delete_query,cleanzmhs=false) {
+    if(cleanzmhs == false){//清空子目换算即cleanzmh==true时不需要清空工程量明细、模板关联子目、安装增加费
+        await quantity_detail.deleteByQuery(delete_query) ;//删除工程量明细
+        await rationInstallationModel.deleteMany(delete_query);//删除安装增加费
+        await rationTemplateModel.deleteMany(delete_query);//删除模板关联子目
+    }
+    //to do稳定土也要删除
+
     await ration_coe.deleteMany(delete_query);//删除附注条件
     await ration_coe.deleteMany(delete_query);//删除附注条件
     await ration_glj.deleteMany(delete_query);//删除定额工料机
     await ration_glj.deleteMany(delete_query);//删除定额工料机
-    await rationInstallationModel.deleteMany(delete_query);//删除安装增加费
-    await rationTemplateModel.deleteMany(delete_query);//删除模板关联子目
+
 }
 }
 
 
 async function updateCoeAdjust(data,compilation) {
 async function updateCoeAdjust(data,compilation) {
@@ -516,7 +524,7 @@ async function updateCoeAdjust(data,compilation) {
 
 
 
 
 
 
-async function  updateRation(std,defaultLibID,rationID,billsItemID,projectID,calQuantity) {
+async function  updateRation(std,defaultLibID,rationID,billsItemID,projectID,calQuantity,cleanzmh=false) {
     // insertNewRation
     // insertNewRation
     let ration ={};
     let ration ={};
     ration.code = std.code;
     ration.code = std.code;
@@ -546,16 +554,17 @@ async function  updateRation(std,defaultLibID,rationID,billsItemID,projectID,cal
     else if(std.rationRepId === defaultLibID && ration.from === 'cpt') {
     else if(std.rationRepId === defaultLibID && ration.from === 'cpt') {
         ration.prefix = '补';
         ration.prefix = '补';
     }
     }
-    if(std.feeType == undefined || std.feeType == null || std.feeType ==''){//定额取费专业为空的情况下,取项目属性中的定额取费专业ID
-        ration.programID = await getProgramForProject(projectID);
-    }else {
-        ration.programID = std.feeType;
-    }
     ration.rationAssList = createRationAss(std);//生成辅助定额
     ration.rationAssList = createRationAss(std);//生成辅助定额
-    if(calQuantity){
-       await CalculateQuantity(ration,billsItemID,projectID);
+    if(cleanzmh==false){//如果是清空子目换算,即cleanzmh==true 保留定额工程量、工程量表达式、含量(分解系数)、取费专业(取费类别)
+        if(std.feeType == undefined || std.feeType == null || std.feeType ==''){//定额取费专业为空的情况下,取项目属性中的定额取费专业ID
+            ration.programID = await getProgramForProject(projectID);
+        }else {
+            ration.programID = std.feeType;
+        }
+        if( calQuantity){
+            await CalculateQuantity(ration,billsItemID,projectID);
+        }
     }
     }
-
      let unsetObject = {
      let unsetObject = {
          "marketUnitFee":1,
          "marketUnitFee":1,
          'marketTotalFee':1,
          'marketTotalFee':1,

+ 5 - 1
modules/reports/rpt_component/helper/jpc_helper_common_output.js

@@ -2,7 +2,7 @@ let JV = require('../jpc_value_define');
 let JpcFieldHelper = require('./jpc_helper_field');
 let JpcFieldHelper = require('./jpc_helper_field');
 
 
 let JpcCommonOutputHelper = {
 let JpcCommonOutputHelper = {
-    createCommonOutputWithoutDecorate: function (node, value) {
+    createCommonOutputWithoutDecorate: function (node, value, forceCombine) {
         let me = this, rst = {};
         let me = this, rst = {};
         //1. font/style/control
         //1. font/style/control
         rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
         rst[JV.PROP_FONT] = node[[JV.PROP_FONT]];
@@ -14,9 +14,13 @@ let JpcCommonOutputHelper = {
         // innerFormat(node[JV.PROP_FORMAT], rst);
         // innerFormat(node[JV.PROP_FORMAT], rst);
         if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] !== null) {
         if (node[JV.PROP_PREFIX] && rst[JV.PROP_VALUE] !== null) {
             rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
             rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX] + rst[JV.PROP_VALUE];
+        } else if (node[JV.PROP_PREFIX] && forceCombine) {
+            rst[JV.PROP_VALUE] = node[JV.PROP_PREFIX];
         }
         }
         if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] !== null) {
         if (node[JV.PROP_SUFFIX] && rst[JV.PROP_VALUE] !== null) {
             rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
             rst[JV.PROP_VALUE] = rst[JV.PROP_VALUE] + node[JV.PROP_SUFFIX];
+        } else if (node[JV.PROP_SUFFIX] && forceCombine) {
+            rst[JV.PROP_VALUE] = node[JV.PROP_SUFFIX];
         }
         }
         return rst;
         return rst;
     },
     },

+ 1 - 1
modules/reports/rpt_component/helper/jpc_helper_discrete.js

@@ -60,7 +60,7 @@ let JpcDiscreteHelper = {
                                 let param = JE.P(df[JV.PROP_PARAM_ID], $CURRENT_RPT);
                                 let param = JE.P(df[JV.PROP_PARAM_ID], $CURRENT_RPT);
                                 value = param[JV.PROP_DFT_VALUE];
                                 value = param[JV.PROP_DFT_VALUE];
                             }
                             }
-                            let item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, null);
+                            let item = JpcCommonOutputHelper.createCommonOutputWithoutDecorate(df, value, true);
                             //position
                             //position
                             item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx, false, false);
                             item[JV.PROP_AREA] = JpcAreaHelper.outputArea(df[JV.PROP_AREA], band, unitFactor, 1, 0, 1, 0, multiCols, multiColIdx, false, false);
                             rst.push(item);
                             rst.push(item);

+ 1 - 1
public/web/tree_sheet/tree_sheet_helper.js

@@ -170,7 +170,7 @@ var TREE_SHEET_HELPER = {
                         }/*else if(node.sourceType == ModuleNames.bills &&projectObj.ifItemCharHiden(setting)){//清单、并且项目特征列隐藏的时候悬浮提示  这里改成在 计量单位那里提示
                         }/*else if(node.sourceType == ModuleNames.bills &&projectObj.ifItemCharHiden(setting)){//清单、并且项目特征列隐藏的时候悬浮提示  这里改成在 计量单位那里提示
                             tag = node.data.itemCharacterText?node.data.itemCharacterText:'';
                             tag = node.data.itemCharacterText?node.data.itemCharacterText:'';
                         }*/
                         }*/
-                        if(tag!=null&&tag!="") sheet.setTag(iRow, iCol,tag);
+                        if(tag!=null) sheet.setTag(iRow, iCol,tag);
                     }
                     }
                     /*if(colSetting.data.field=="name"){ 2018-08-06 改成在编号列悬浮提示
                     /*if(colSetting.data.field=="name"){ 2018-08-06 改成在编号列悬浮提示
                         let tag = node.data.itemCharacterText?node.data.itemCharacterText:'';
                         let tag = node.data.itemCharacterText?node.data.itemCharacterText:'';

+ 5 - 3
test/unit/reports/test_preview_page.js

@@ -24,15 +24,17 @@ cfgCacheUtil.setupDftCache();
 let fsUtil = require("../../../public/fsUtil");
 let fsUtil = require("../../../public/fsUtil");
 
 
 // let demoPrjId = - 1;
 // let demoPrjId = - 1;
-let demoRptId = 275; //重庆09年建筑 09表
+// let demoRptId = 275; //重庆09年建筑 09表
 // let demoRptId = 229; //重庆09年建筑 封2表
 // let demoRptId = 229; //重庆09年建筑 封2表
+let demoRptId = 28; //09 重庆养护2018
 
 
 let pagesize = "A4";
 let pagesize = "A4";
 
 
 // demoPrjId = 720; //QA: DW3
 // demoPrjId = 720; //QA: DW3
 // demoPrjId = 1626; //QA:
 // demoPrjId = 1626; //QA:
 //*/
 //*/
-let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了
+// let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了
+let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 let userId_Dft = userId_Leng;
 let userId_Dft = userId_Leng;
 /*/
 /*/
  let userId_Dft = "595328da1934dc327cad08eb";
  let userId_Dft = "595328da1934dc327cad08eb";
@@ -57,7 +59,7 @@ test('测试 - 预览: ', function (t) {
                 printCom.initialize(rptTpl);
                 printCom.initialize(rptTpl);
                 let pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
                 let pageRst = printCom.outputAsPreviewPage(rptTpl, defProperties);
                 if (pageRst) {
                 if (pageRst) {
-                    fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/previewPageResult.jsp");
+                    fsUtil.writeObjToFile(pageRst, "D:/GitHome/YangHuCost/tmp/previewPageResult.jsp");
                     t.pass('pass with succeed!');
                     t.pass('pass with succeed!');
                     t.end();
                     t.end();
                 } else {
                 } else {

+ 4 - 1
test/unit/reports/test_rpt_test_template.js

@@ -27,7 +27,10 @@ let fsUtil = require("../../../public/fsUtil");
 
 
 let demoPrjId = - 1;
 let demoPrjId = - 1;
 // let demoRptId = 38; //5.2.2表
 // let demoRptId = 38; //5.2.2表
-let demoRptId = 6; //封面
+// let demoRptId = 6; //封面
+// let demoRptId = 22; //03
+// let demoRptId = 26; //07
+let demoRptId = 28; //09
 
 
 let pagesize = "A4";
 let pagesize = "A4";
 //288: 11-2表(新)
 //288: 11-2表(新)

+ 7 - 7
web/building_saas/main/js/models/calc_program.js

@@ -1676,15 +1676,15 @@ class CalcProgram {
                         buf = (sum_rtf / bq).toDecimal(decimalObj.process);
                         buf = (sum_rtf / bq).toDecimal(decimalObj.process);
                         btuf = (sum_rttf / btq).toDecimal(decimalObj.process);
                         btuf = (sum_rttf / btq).toDecimal(decimalObj.process);
                     };
                     };
-                    if (isBaseFeeType(ft.type) ||
-                        (me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice && ft.type == "common")){
+                    // if (isBaseFeeType(ft.type) ||
+                    //     (me.project.property.billsCalcMode === leafBillGetFeeType.rationPrice && ft.type == "common")){
                         btf = sum_rtf;
                         btf = sum_rtf;
                         bttf = sum_rttf;
                         bttf = sum_rttf;
-                    }
-                    else{
-                        btf = (buf.toDecimal(decimalObj.bills.unitPrice) * bq).toDecimal(decimalObj.process);
-                        bttf = (btuf.toDecimal(decimalObj.bills.unitPrice) * btq).toDecimal(decimalObj.process);
-                    };
+                    // }
+                    // else{
+                    //     btf = (buf.toDecimal(decimalObj.bills.unitPrice) * bq).toDecimal(decimalObj.process);
+                    //     bttf = (btuf.toDecimal(decimalObj.bills.unitPrice) * btq).toDecimal(decimalObj.process);
+                    // };
                 };
                 };
 
 
                 ftObj.totalFee = btf.toDecimal(decimalObj.bills.totalPrice);
                 ftObj.totalFee = btf.toDecimal(decimalObj.bills.totalPrice);

+ 5 - 1
web/building_saas/main/js/models/main_consts.js

@@ -28,7 +28,9 @@ const baseMaterialTypes = [
     gljType.MORTAR,
     gljType.MORTAR,
     gljType.MIX_RATIO,
     gljType.MIX_RATIO,
     gljType.COMMERCIAL_CONCRETE,
     gljType.COMMERCIAL_CONCRETE,
-    gljType.COMMERCIAL_MORTAR
+    gljType.COMMERCIAL_MORTAR,
+    gljType.PURCHASE_COMPONENT,
+    gljType.GREEN_SEEDLING
 ];
 ];
 // 计算基数 [定额基价机械费] 要用到的机械类型。
 // 计算基数 [定额基价机械费] 要用到的机械类型。
 const baseMachineTypes = [
 const baseMachineTypes = [
@@ -49,6 +51,8 @@ const allMaterialTypes = [
     gljType.MIX_RATIO,
     gljType.MIX_RATIO,
     gljType.COMMERCIAL_CONCRETE,
     gljType.COMMERCIAL_CONCRETE,
     gljType.COMMERCIAL_MORTAR,
     gljType.COMMERCIAL_MORTAR,
+    gljType.PURCHASE_COMPONENT,
+    gljType.GREEN_SEEDLING,
     gljType.MAIN_MATERIAL,
     gljType.MAIN_MATERIAL,
     gljType.EQUIPMENT
     gljType.EQUIPMENT
 ];
 ];

+ 3 - 3
web/building_saas/main/js/models/ration.js

@@ -377,7 +377,7 @@ var Ration = {
                 ration.contain = scMathUtil.roundForObj(ration.quantity/billsQuantity,process_decimal);
                 ration.contain = scMathUtil.roundForObj(ration.quantity/billsQuantity,process_decimal);
             }
             }
         };
         };
-        ration.prototype.updateRationCodes = function (recodes) {
+        ration.prototype.updateRationCodes = function (recodes,cleanzmhs = false) {
             let libID =  rationLibObj.getCurrentStdRationLibID();
             let libID =  rationLibObj.getCurrentStdRationLibID();
             let libIDs = rationLibObj.getStdRationLibIDs();
             let libIDs = rationLibObj.getStdRationLibIDs();
             let defaultLibID = rationLibObj.getDefaultStdRationLibID();
             let defaultLibID = rationLibObj.getDefaultStdRationLibID();
@@ -396,14 +396,14 @@ var Ration = {
                     needInstall = project.Bills.isFBFX(r.node);
                     needInstall = project.Bills.isFBFX(r.node);
                 }
                 }
                 r.value===null||r.value===undefined?"":r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
                 r.value===null||r.value===undefined?"":r.value = r.value.replace(/[\s\r\n]/g, "");//去掉空格回车换行等字符
-                if(r.value != r.node.data.code){
+                if(cleanzmhs  == true||r.value != r.node.data.code){
                     nodeInfo.push({ID:r.node.data.ID,billsItemID:r.node.data.billsItemID,newCode:r.value,needInstall:needInstall});
                     nodeInfo.push({ID:r.node.data.ID,billsItemID:r.node.data.billsItemID,newCode:r.value,needInstall:needInstall});
                     refershNodes.push(r.node);
                     refershNodes.push(r.node);
                 }
                 }
             }
             }
             let calQuantity = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
             let calQuantity = optionsOprObj.getOption(optionsOprObj.optionsTypes.GENERALOPTS, 'rationQuanACToBillsQuan');
             $.bootstrapLoading.start();
             $.bootstrapLoading.start();
-            CommonAjax.post("/ration/replaceRations",{nodeInfo:nodeInfo,libIDs:libIDs,defaultLibID: defaultLibID,projectID:projectID,calQuantity:calQuantity},function (data) {
+            CommonAjax.post("/ration/replaceRations",{nodeInfo:nodeInfo,libIDs:libIDs,defaultLibID: defaultLibID,projectID:projectID,calQuantity:calQuantity,cleanzmhs:cleanzmhs},function (data) {
                 for(let recode of data){
                 for(let recode of data){
                    let node =  mainTree.getNodeByID(recode.ration.ID);
                    let node =  mainTree.getNodeByID(recode.ration.ID);
                    if(node) {
                    if(node) {

+ 15 - 0
web/building_saas/main/js/views/project_view.js

@@ -1384,6 +1384,21 @@ var projectObj = {
                         return projectObj.project.isInstall();
                         return projectObj.project.isInstall();
                     }
                     }
                 },
                 },
+                "cleanzmhs":{
+                    name:'清空定额调整',
+                    icon: 'fa-remove',
+                    callback: function (key, opt) {
+                        let selected = project.mainTree.selected;
+                        projectObj.project.Ration.updateRationCodes([{'node':selected, value:selected.data.code}],true);
+                    },
+                    visible: function(key, opt){
+                        let selected = project.mainTree.selected;
+                        if (selected && selected.sourceType == ModuleNames.ration) {
+                            return true;
+                        }
+                        return false;
+                    }
+                },
                 "delete": {
                 "delete": {
                     name: '删除',
                     name: '删除',
                     icon: 'fa-remove',
                     icon: 'fa-remove',