Explorar el Código

广东接口同时导出控制价和招标文件cos时,控制价文件解压后名称问题

vian hace 5 años
padre
commit
427463903b

+ 0 - 3
web/building_saas/main/js/models/exportStdInterfaceBase.js

@@ -905,9 +905,6 @@ const XML_EXPORT_BASE = (() => {
         for (let ele of eles) {
             rst += _startTag(ele);
             if (ele.children.length > 0) {
-                if (ele.children.some(c => !c)) {
-                    debugger;
-                }
                 rst += _toXMLStr(ele.children);
                 rst += _endTag(ele);
             }

+ 42 - 38
web/over_write/js/guangdong_2018_export.js

@@ -2876,50 +2876,54 @@ const XMLStandard = (function () {
      * 重置工程编号,广东18 3.0的接口,导出时的文件会用到这个编号
      * 因此重置工程编号后,还需要重置文件名数据
      * @param  {Array}codes 工程编号
-     *         {Array}extractData 提取的数据
+     *         {Array}ungroupedExtractData 提取的数据(可能存在不同导出类型,需要分组。比如同时导出招标文件和控制价文件)
      * @return {void}
      * */
-    function resetContentCode(codes, extractData) {
+    function resetContentCode(codes, ungroupedExtractData) {
         // 提取到的数据分两种类型:
         // 1.根元素为建设项目:需要修改建设项目下的单位工程元素的编码和文件名
         // 2.根元素为单位工程:需要修改单位工程的编码和文件名
         // 获取建设项目数据下的单位工程元素
-        const extractProject = extractData.find(data => data.dataType === DATA_TYPE.PROJECT);
-        const extractTenders = extractData.filter(data => data.dataType === DATA_TYPE.TENDER)
-        // 建设项目元素下建筑安装工程费元素
-        const projectInstallations = _util.getElementFromSrc(extractProject.data, 'ProjectInstallationWorkCost');
-        // 建筑安装工程费元素下单项工程元素
-        const sectionalWorks = projectInstallations.reduce((acc, cur) => {
-            const sections = _util.getElementFromSrc(cur, 'SectionalWorks');
-            acc.push(...sections);
-            return acc;
-        }, []);
-        let idx = 0;
-        // 单项工程
-        sectionalWorks.forEach(sectionalWork => {
-            _util.setAttr(sectionalWork, 'Number', codes[idx++]);
-        });
-        // 建筑安装工程费元素下单位工程元素, 顺序与提取的单位工程文件(extractTenders)是一一对应的
-        const unitWorks = sectionalWorks.reduce((acc, cur) => {
-            const tenders = _util.getElementFromSrc(cur, 'UnitWorks');
-            acc.push(...tenders);
-            return acc;
-        }, []);
-        unitWorks.forEach((unitWork, index) => {
-            // 更改编号
-            const code = codes[idx++];
-            _util.setAttr(unitWork, 'Number', code);
-            // 更改文件名:@_单位工程编码_单位工程名称.xml
-            const name = _util.getAttr(unitWork, 'Name');
-            const fileName = `@_${code}_${name}.xml`;
-            _util.setAttr(unitWork, 'FileName', fileName);
-            // 更改提取的单位工程详细文件的导出名称、单位工程节点编号、文件名
-            const extractTender = extractTenders[index];
-            extractTender.fileName = fileName;
-            const extractUnitWork = extractTender.data;
-            _util.setAttr(extractUnitWork, 'Number', code);
-            _util.setAttr(extractUnitWork, 'FileName', fileName);
-        });
+        const groupedData = _.groupBy(ungroupedExtractData, 'exportKind');
+        for (const exportKind in groupedData) {
+            const extractData = groupedData[exportKind];
+            const extractProject = extractData.find(data => data.dataType === DATA_TYPE.PROJECT);
+            const extractTenders = extractData.filter(data => data.dataType === DATA_TYPE.TENDER)
+            // 建设项目元素下建筑安装工程费元素
+            const projectInstallations = _util.getElementFromSrc(extractProject.data, 'ProjectInstallationWorkCost');
+            // 建筑安装工程费元素下单项工程元素
+            const sectionalWorks = projectInstallations.reduce((acc, cur) => {
+                const sections = _util.getElementFromSrc(cur, 'SectionalWorks');
+                acc.push(...sections);
+                return acc;
+            }, []);
+            let idx = 0;
+            // 单项工程
+            sectionalWorks.forEach(sectionalWork => {
+                _util.setAttr(sectionalWork, 'Number', codes[idx++]);
+            });
+            // 建筑安装工程费元素下单位工程元素, 顺序与提取的单位工程文件(extractTenders)是一一对应的
+            const unitWorks = sectionalWorks.reduce((acc, cur) => {
+                const tenders = _util.getElementFromSrc(cur, 'UnitWorks');
+                acc.push(...tenders);
+                return acc;
+            }, []);
+            unitWorks.forEach((unitWork, index) => {
+                // 更改编号
+                const code = codes[idx++];
+                _util.setAttr(unitWork, 'Number', code);
+                // 更改文件名:@_单位工程编码_单位工程名称.xml
+                const name = _util.getAttr(unitWork, 'Name');
+                const fileName = `@_${code}_${name}.xml`;
+                _util.setAttr(unitWork, 'FileName', fileName);
+                // 更改提取的单位工程详细文件的导出名称、单位工程节点编号、文件名
+                const extractTender = extractTenders[index];
+                extractTender.fileName = fileName;
+                const extractUnitWork = extractTender.data;
+                _util.setAttr(extractUnitWork, 'Number', code);
+                _util.setAttr(extractUnitWork, 'FileName', fileName);
+            });
+        }
     }
 
     /*