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

广东接口bug(2020/7/1 #14-17)

vian 5 éve
szülő
commit
cc0c834070

+ 1 - 1
modules/pm/facade/pm_facade.js

@@ -2330,7 +2330,7 @@ async function setupStdData(tenderData) {
     });
     //更新组成物数据
     tenderData.mixRatio.forEach(ratio => {
-        let stdGLJ = stdGLJCodeMap[ratio.code];
+        let stdGLJ = stdGLJCodeMap[ratio.code] || stdGLJCodeMap[ratio.original_code];
         if (stdGLJ) {
             ratio.glj_id = stdGLJ.ID;
             ratio.type = stdGLJ.gljType;

+ 29 - 7
web/over_write/js/guangdong_2018_import.js

@@ -67,10 +67,10 @@ const importXML = (() => {
         // 默认、中间过程
         PROCESS: 6
     };
-    // 根据上方精度要求得到的项目属性,小数位数的值
+    // 根据上方精度要求得到的项目属性,小数位数的值(定额工程量小数位数需求改成六位)
     const tenderPropertyDecimal = {
         bills: { unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
-        ration: { quantity: Decimal.QUANTITY, unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
+        ration: { quantity: Decimal.PROCESS, unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
         glj: { quantity: Decimal.GLJ, unitPriceHasMix: Decimal.FEE, unitPrice: Decimal.FEE },
         feeRate: Decimal.RATE,
         quantity_detail: 4,
@@ -125,6 +125,7 @@ const importXML = (() => {
         const bidderInfo = getValue(projectSrc, ['ConstructionInfo', 'BidderInfo']); // 投标信息
         return [
             { key: 'projNum', value: getValue(projectSrc, ['_Number']) }, // 编码
+            { key: 'projectType', value: getValue(projectSrc, ['_ProjectType']) }, // 工程类型
             { key: 'projectCategory', value: getValue(projectSrc, ['_ProjectCategory']) }, // 工程类别
             { key: 'constructionType', value: getValue(projectSrc, ['_ConstructionType']) }, // 建设性质
             { key: 'regionalCategories', value: AreaKind[getValue(projectSrc, ['_AreaKind'])] }, // 地区类被
@@ -744,6 +745,12 @@ const importXML = (() => {
         '3': commonConstants.supplyType.WQJG
     };
 
+    // 获取原始编码
+    function getOriginalCode(code) {
+        //编码后面有-\d+的形式,去掉-\d+取前面的字符串作为原始代码
+        return code.replace(/(.*)-\d+$/, '$1');
+    }
+
     // 提取人材机汇总相关(人材机汇总表、承包材料表)
     function extractGLJSummary(tenderSrc) {
         const initData = { gljSummary: [], differentiaSummary: [], exponentialSummary: [] };
@@ -765,11 +772,6 @@ const importXML = (() => {
             return acc;
         }, initData);
 
-        // 获取原始编码
-        function getOriginalCode(code) {
-            //编码后面有-\d+的形式,去掉-\d+取前面的字符串作为原始代码
-            return code.replace(/(.*)-\d+$/, '$1');
-        }
         // TODO (不靠谱) 获取人材机类型数据
         // 导入的源文件没有细化区分人材机类型,这里只是暂时大概给个值。后续会在后端与标准人材机进行配对。也因此无法准确处理补充人材机
         function getTypeData(gljSrc) {
@@ -821,6 +823,9 @@ const importXML = (() => {
         function extractGLJ(gljSrc) {
             countData.projectGLJCount++;
             const code = getValue(gljSrc, ['_Number']);
+            /* if (code.includes('99450680')) {
+                debugger;
+            } */
             return {
                 code,
                 original_code: getOriginalCode(code),
@@ -1047,6 +1052,19 @@ const importXML = (() => {
         mergeCSXM(tenderData.csxm);
         mergeOther(tenderData.other);
         mergeTax(tenderData.tax);
+        // 需要清空各种原因导入的父项的工程量
+        const parentMap = {};
+        mergedBills.forEach(bills => {
+            if (bills.ParentID !== -1) {
+                parentMap[bills.ParentID] = 1;
+            }
+        })
+        mergedBills.forEach(bills => {
+            if (parentMap[bills.ID] && commonUtil.isDef(bills.quantity)) {
+                delete bills.quantity;
+            }
+        })
+        console.log(mergedBills);
         return mergedBills;
 
         // 合并清单数据
@@ -1376,6 +1394,10 @@ const importXML = (() => {
                 projectGLJ.ratios.forEach(ratio => {
                     const matched = projectGLJMap[ratio.code];
                     ratio.code = matched.code;
+                    // 为了后端匹配标准数据,如易达有组成物"99450680-0001"
+                    // 项目人材机、单价文件根据original_code匹配上了标准人材机,修改了gljType等
+                    // mixRatio根据code匹配标准数据匹配不上标准数据,因此type与项目人材机的type不同,导致组成物丢失
+                    ratio.original_code = getOriginalCode(ratio.code);
                     ratio.projectGLJID = projectGLJ.id;
                     ratio.id = IDPlaceholder.ratio++;
                     ratio.unit_price_file_id = tenderData.property.unitPriceFile.id;