Kaynağa Gözat

导入qtf投标项目时,人材机的原始编号应按规矩处理,不能直接读取编码。应取编码的最后一个“-”前面的文本;如果没有“-”则取编码,及修改取编码逻辑后的相关处理

zhongzewei 6 yıl önce
ebeveyn
işleme
da14b521c9

+ 5 - 0
web/building_saas/main/js/models/exportStandardInterface.js

@@ -1926,9 +1926,14 @@ const XMLStandard = (function () {
                     '6': '400'
                 };
                 for (let glj of allGljs) {
+                    // 企业管理费、利润、一般风险费不导出
                     if (skipGLJTypes.includes(glj.type)) {
                         continue;
                     }
+                    // 总消耗量为0不导出
+                    /*if (!+glj.quantity) {
+                        continue;
+                    }*/
                     let price = gljUtil.getGLJPrice(glj, detail.projectGLJ.datas,
                         detail.projectInfo.property.calcOptions, detail.labourCoe.datas, detail.projectInfo.property.decimal, false, _, scMathUtil);
                     //调整价

+ 18 - 10
web/building_saas/main/js/models/importStandardInterface.js

@@ -892,14 +892,19 @@ const ImportXML = (() => {
             return gljsSrc.map(gljSrc => {
                 countData.projectGLJCount++;
                 //编码都取原始编码,如果原始编码为空,都取编码
-                let orgCode = getValue(gljSrc, ['_原始代码']),
+                let sourceCode = getValue(gljSrc, ['_原始代码']),
                     code = getValue(gljSrc, ['_代码']);
-                if (!orgCode) {
-                    orgCode = code;
+                if (!sourceCode) {
+                    sourceCode = code;
                 }
+                // 人材机的真正原始编号应按规矩处理,不能直接读取编码。
+                // 应取sourceCode,qtf文件中原始代码的最后一个“-”前面的文本;如果没有“-”则直接取原始代码
+                const orgCodeReg = /.*(?=-\d+$)/;
+                const match = sourceCode.match(orgCodeReg);
+                const orgCode = match ? match[0] : sourceCode;
                 let gljData = {
                     customCode: code,   //处理自定义的代码 (有的公司定额人材机代码、人材机代码是用自动生成的代码)
-                    code: orgCode,
+                    code: sourceCode,
                     original_code: orgCode,
                     name: getValue(gljSrc, ['_名称']),
                     specs: getValue(gljSrc, ['_规格']),
@@ -1441,6 +1446,7 @@ const ImportXML = (() => {
                 });
             });
             // 模板映射:{[templateLibID]: data}
+            debugger;
             let templateMapping = await ajaxPost('/template/bills/api/getNeedfulTemplate', {allTemplateLibIDs});
             for (let i = 0; i < xmlObj.engs.length; i++) {
                 let curEng = xmlObj.engs[i],
@@ -1531,8 +1537,8 @@ const ImportXML = (() => {
                 mixRatio: []    //组成物
             };
             //工料机汇总code-数据映射
-            // 项目人材机customCode、original_code-原始数据映射,有的导入数据中,有一部分关联自生成材料号CX,有的关联原始代码...
-            // 因此customCode、original_code都需要跟原始数据映射,通过customCode取不到数据的时候,通过orgCode获取
+            // 项目人材机customCode、code-原始数据映射,有的导入数据中,有一部分关联自生成材料号CX,有的关联代码...
+            // 因此customCode、code都需要跟原始数据映射,通过customCode取不到数据的时候,通过orgCode获取
             let projectGLJMap = {};
             //投标文件才需要导入定额等数据
             if (importFileKind === FileKind.tender) {
@@ -1544,14 +1550,14 @@ const ImportXML = (() => {
                     pGLJ.shortName = pGLJ.shortName || '材';
                     //gljCodeMap[pGLJ.code] = pGLJ;
                     projectGLJMap[pGLJ.customCode] = pGLJ;
-                    projectGLJMap[pGLJ.original_code] = pGLJ;
+                    projectGLJMap[pGLJ.code] = pGLJ;
                 });
                 //处理项目人材机数据
                 tenderData.gljSummary.forEach(pGLJ => {
                     //组成物数据
                     pGLJ.ratios.forEach(ratio => {
                         let matchData = projectGLJMap[ratio.code];
-                        ratio.code = matchData.original_code;
+                        ratio.code = matchData.code;
                         ratio.projectGLJID = pGLJ.id; //后端查找标准数据后,方便更新组成物数据
                         ratio.id = IDPlaceholder.ratio++;
                         ratio.unit_price_file_id = tenderData.property.unitPriceFile.id;
@@ -1559,7 +1565,7 @@ const ImportXML = (() => {
                         ratio.name = matchData ? matchData.name : '';
                         ratio.specs = matchData ? matchData.specs : '';
                         ratio.type = matchData ? matchData.type : 1;
-                        ratio.connect_key = [pGLJ.original_code || 'null', pGLJ.name || 'null', pGLJ.specs || 'null', pGLJ.unit || 'null', pGLJ.type].join('|-|');
+                        ratio.connect_key = [pGLJ.code || 'null', pGLJ.name || 'null', pGLJ.specs || 'null', pGLJ.unit || 'null', pGLJ.type].join('|-|');
                         rst.mixRatio.push(ratio);
                     });
                     delete pGLJ.ratios;
@@ -1663,12 +1669,14 @@ const ImportXML = (() => {
                                 ? scMathUtil.roundForObj(ration.quantity * unitNum[0], qDecimal ? qDecimal[0] - 1 : 0)
                                 : ration.quantity;
                         }*/
+                        // 问题
+                        debugger;
                         //处理定额人材机,添加需要的数据
                         ration.rationGljs.forEach(rGLJ => {
                             let matchGLJ = projectGLJMap[rGLJ.code];
                             if (matchGLJ) {
                                 rGLJ.projectGLJID = matchGLJ.id;
-                                rGLJ.code = matchGLJ.original_code;
+                                rGLJ.code = matchGLJ.code;
                                 rGLJ.type = matchGLJ.type;
                                 rGLJ.shortName = matchGLJ.shortName;
                                 rGLJ.name = matchGLJ.name;