فهرست منبع

导入接口对固定清单的处理

zhongzewei 6 سال پیش
والد
کامیت
fe56d90da1
1فایلهای تغییر یافته به همراه30 افزوده شده و 2 حذف شده
  1. 30 2
      web/building_saas/main/js/models/importStandardInterface.js

+ 30 - 2
web/building_saas/main/js/models/importStandardInterface.js

@@ -78,6 +78,18 @@ const ImportXML = (() => {
         //组织措施费
         ORGANIZATION:32
     };
+    // 限定取值的取费类别与固定ID对应
+    const FEE_TYPE_FLAG = {
+        '120201': fixedFlag.CONSTRUCTION_ORGANIZATION,
+        '1204': fixedFlag.SAFETY_CONSTRUCTION,
+        '10041': fixedFlag.PROJECT_COMPLETE_ARCH_FEE,
+        '1206': fixedFlag.HOUSE_QUALITY_ACCEPT_FEE,
+        '800': fixedFlag.CHARGE,
+        '900': fixedFlag.TAX,
+        '9001': fixedFlag.ADDED_VALUE_TAX,
+        '9002': fixedFlag.ADDITIONAL_TAX,
+        '9003': fixedFlag.ENVIRONMENTAL_PROTECTION_TAX
+    };
     //导入的文件类型,界面选的文件类型是生成项目的文件类型,这里的文件类型指的是,要导入文件的类型,
     //导入文件类型不同,导入数据不同
     let importFileKind = '';
@@ -198,6 +210,13 @@ const ImportXML = (() => {
     function plainType(v) {
         return Object.prototype.toString.call(v).slice(8, -1);
     }
+    // 根据费用类别给清单数据设置flags字段
+    function initFlags(feeType) {
+        let flag = FEE_TYPE_FLAG[feeType];
+        return flag
+            ? [{fieldName: 'fixed', flag: flag}]
+            : [];
+    }
     return function () {
         let countData = {
             projectCount: 0,    //项目数量
@@ -645,7 +664,8 @@ const ImportXML = (() => {
                             calcBase: getValue(itemSrc, ['_计算基础表达式']),
                             feeRate: getValue(itemSrc, ['_费率']),
                             isEstimate: getValue(itemSrc, ['_暂估价标志']) === 'true' ? true : false,
-                            remark: getValue(itemSrc, ['_备注'])
+                            remark: getValue(itemSrc, ['_备注']),
+                            flags: initFlags(getValue(itemSrc, ['_费用类别']))
                         };
                     }
                     if (importFileKind === FileKind.tender) {
@@ -813,7 +833,8 @@ const ImportXML = (() => {
                     name: getValue(src, ['_名称']),
                     calcBase: getValue(src, ['_计算基础表达式']),
                     feeRate: getValue(src, ['_费率']),
-                    remark: getValue(src, ['_备注'])
+                    remark: getValue(src, ['_备注']),
+                    flags: initFlags(getValue(src, ['费用类别']))
                 };
                 if (importFileKind === FileKind.tender) {
                     obj.fees = [{fieldName: 'common', totalFee: getValue(src, ['_金额']) || '0'}];
@@ -1093,6 +1114,9 @@ const ImportXML = (() => {
                     matchBills.calcBase = curBills.calcBase;
                     matchBills.feeRate = curBills.feeRate;
                     matchBills.fees = curBills.fees || [];
+                    if (curBills.flags && curBills.flags.length) {
+                        matchBills.flags = curBills.flags;
+                    }
                 } else {    //新增
                     if (!charge && !tax) {
                         continue;
@@ -1127,6 +1151,10 @@ const ImportXML = (() => {
             //需要添加的组织措施子项
             function updateZZCSItem(org, tar) {
                 for(let [k, v] of Object.entries(tar)) {
+                    // 如果匹配到的清单自身已有固定ID,不更新固定ID
+                    if (k === 'flags' && Array.isArray(tar.flags) && tar.flags.length) {
+                        continue;
+                    }
                     org[k] = v;
                 }
             }