浏览代码

02表 工料机数量汇总四舍五入

TonyKang 6 年之前
父节点
当前提交
6ce2ffc95f

+ 46 - 38
modules/reports/util/rpt_yanghu_data_util.js

@@ -329,6 +329,10 @@ class Rpt_Data_Extractor {
                         //把显示在清单中的量材转移到工料机去, 顺带把项目工料机的组成物工料机分解出来,分解的工料机作为定额工料机保存(02表用)
                         moveRationData(srcData, rawDataObj);
                         break;
+                    case JV.PROP_HANDLE_TYPE_COMPONENT_MOVE:
+                        //把定额下的组成物的工料机分解出来,分解的工料机作为定额工料机保存(02表用)
+                        moveRationComponentData(srcData, rawDataObj);
+                        break;
                     case JV.PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT:
                         //重庆2018 09-x表专用,机械数据用 组成物替换掉 ^_^!
                         componentReplacement(rawDataObj);
@@ -870,52 +874,56 @@ function moveRationData(rationData, rawDataObj) {
                 //无
             }
         }
-        //这里考虑到项目工料机有组成物,那么这些组成物应该要归类到定额工料机下
-        let newComponentItem = [];
-        for (let rationGljItem of getActDataArr(rationGljData)) {
-            for (let prjGljItem of prjGljData.data.gljList) {
-                if (prjGljItem.id === rationGljItem.projectGLJID) {
-                    if (prjGljItem.ratio_data && prjGljItem.ratio_data.length > 0 && !gljUtil.isConcreteType(prjGljItem.type)) {
-                        //有组成物
-                        for (let comItem of prjGljItem.ratio_data) {
-                            let copyItem = {};
-                            copyItem.ID = comItem._id.toString();
-                            copyItem.projectID = rationGljItem.projectID;
-                            copyItem.rationID = rationGljItem.rationID;
-                            // copyItem.rationItemQuantity = rationGljItem.quantity;
-                            copyItem.quantity = parseFloat(rationGljItem.quantity) * parseFloat(comItem.consumption);
-                            copyItem.name = comItem.name;
-                            copyItem.code = comItem.code;
-                            copyItem.unit = comItem.unit;
-                            copyItem.specs = comItem.specs;
-                            // copyItem.shortName = comItem.shortName;
-                            copyItem.billsItemID = rationGljItem.billsItemID;
-                            copyItem.type = comItem.type;
-                            //其他属性,要根据工料机ID来查找
-                            for (let gljIdx = 0; gljIdx < prjGljData.data.gljList.length; gljIdx++) {
-                                if (prjGljData.data.gljList[gljIdx].code === comItem.code) {
-                                    copyItem.projectGLJID = prjGljData.data.gljList[gljIdx].id;
-                                    copyItem.original_code = prjGljData.data.gljList[gljIdx].original_code;
-                                    copyItem.is_main_material = prjGljData.data.gljList[gljIdx].is_main_material;
-                                    copyItem.is_adjust_price = prjGljData.data.gljList[gljIdx].is_adjust_price;
-                                    copyItem.unit_price = {};
-                                    copyItem.unit_price.base_price = prjGljData.data.gljList[gljIdx].unit_price.base_price;
-                                    copyItem.unit_price.market_price = prjGljData.data.gljList[gljIdx].unit_price.market_price;
-                                    break;
-                                }
+        // fsUtil.writeObjToFile(rationGljData.data, "D:/GitHome/ConstructionCost/tmp/afterMoveGLJ.jsp");
+    }
+}
+
+//有些项目工料机有组成物,有些表需要显示这些组成物,此函数把这些组成物抽出并归类到定额工料机下
+function moveRationComponentData(rationData, rawDataObj) {
+    let rationGljData = getModuleDataByKey(rawDataObj.prjData, projectConst.RATION_GLJ);
+    let prjGljData = getModuleDataByKey(rawDataObj.prjData, projectConst.PROJECTGLJ);
+    let newComponentItem = [];
+    for (let rationGljItem of getActDataArr(rationGljData)) {
+        for (let prjGljItem of prjGljData.data.gljList) {
+            if (prjGljItem.id === rationGljItem.projectGLJID) {
+                if (prjGljItem.ratio_data && prjGljItem.ratio_data.length > 0 && !gljUtil.isConcreteType(prjGljItem.type)) {
+                    //有组成物
+                    for (let comItem of prjGljItem.ratio_data) {
+                        let copyItem = {};
+                        copyItem.ID = comItem._id.toString();
+                        copyItem.projectID = rationGljItem.projectID;
+                        copyItem.rationID = rationGljItem.rationID;
+                        // copyItem.rationItemQuantity = rationGljItem.quantity;
+                        copyItem.quantity = parseFloat(rationGljItem.quantity) * parseFloat(comItem.consumption);
+                        copyItem.name = comItem.name;
+                        copyItem.code = comItem.code;
+                        copyItem.unit = comItem.unit;
+                        copyItem.specs = comItem.specs;
+                        // copyItem.shortName = comItem.shortName;
+                        copyItem.billsItemID = rationGljItem.billsItemID;
+                        copyItem.type = comItem.type;
+                        //其他属性,要根据工料机ID来查找
+                        for (let gljIdx = 0; gljIdx < prjGljData.data.gljList.length; gljIdx++) {
+                            if (prjGljData.data.gljList[gljIdx].code === comItem.code) {
+                                copyItem.projectGLJID = prjGljData.data.gljList[gljIdx].id;
+                                copyItem.original_code = prjGljData.data.gljList[gljIdx].original_code;
+                                copyItem.is_main_material = prjGljData.data.gljList[gljIdx].is_main_material;
+                                copyItem.is_adjust_price = prjGljData.data.gljList[gljIdx].is_adjust_price;
+                                copyItem.unit_price = {};
+                                copyItem.unit_price.base_price = prjGljData.data.gljList[gljIdx].unit_price.base_price;
+                                copyItem.unit_price.market_price = prjGljData.data.gljList[gljIdx].unit_price.market_price;
+                                break;
                             }
-                            newComponentItem.push(copyItem);
                         }
+                        newComponentItem.push(copyItem);
                     }
-                    break;
                 }
+                break;
             }
         }
-        rationGljData.data = rationGljData.data.concat(newComponentItem);
-        // fsUtil.writeObjToFile(rationGljData.data, "D:/GitHome/ConstructionCost/tmp/afterMoveGLJ.jsp");
     }
+    rationGljData.data = rationGljData.data.concat(newComponentItem);
 }
-
 function getDupGrpKeyVals(sourceData, segKeys) {
     let rst = [];
     function pushKeyVal(item) {

+ 2 - 1
public/web/rpt_value_define.js

@@ -67,7 +67,8 @@ const JV = {
     PROP_HANDLE_TYPE_SORT: "排序",
     PROP_HANDLE_TYPE_ADD_DUMMY: "增加Dummy数据",
     PROP_HANDLE_TYPE_ADJUST: "数据调整",
-    PROP_HANDLE_TYPE_BILLS_DATA_MOVE: "量材及组成物数据转移",
+    PROP_HANDLE_TYPE_BILLS_DATA_MOVE: "量材数据转移",
+    PROP_HANDLE_TYPE_COMPONENT_MOVE: "组成物数据转移",
     PROP_HANDLE_TYPE_COMPONENT_REPLACEMENT: "组成物替换",
     PROP_HANDLE_TYPE_PRECISION: "合计精度",
 

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

@@ -70,7 +70,8 @@ let userId_Leng = "5c3ffa9aa0a92732f41216e0"; //小冷User Id (养护的)
 // demoPrjId = 618; //PROD:
 // demoPrjId = 2580; //PROD:
 // demoPrjId = 815; //PROD:
-demoPrjId = 499; //UAT:
+// demoPrjId = 499; //UAT:
+demoPrjId = 738; //UAT:
 //*/
 let userId_Dft = userId_Leng;
 // userId_Dft = '5c641205950967000d20d35b'; //临时用