Kaynağa Gözat

feat: 安徽导出接口,清单标题和清单明细编码需求变更

vian 5 yıl önce
ebeveyn
işleme
b3934585a9

+ 31 - 3
web/building_saas/standard_interface/export/anhui_maanshan.js

@@ -314,12 +314,32 @@ INTERFACE_EXPORT = (() => {
       [fixedFlag.PROVISIONAL]: '5',
       [fixedFlag.TOTAL_COST]: '6',
     };
+    // 标题映射
+    /*     写死:
+    “第100章至700章清单”输出=1、
+    “已包含在清单合计中的材料、工程设备、专业工程暂估价合计”输出=9、
+    “清单合计减去材料、工程设备、专业工程暂估价合计”输出=10、
+    “计日工合计”输出=11、
+    “暂列金额(不含计日工总额)”输出=12、
+    “投标报价”输出=13;
+    如果有新增的同级的大项费用,则以14开始编号 */
+    const BillsTitleValue = {
+      [fixedFlag.ONE_SEVEN_BILLS]: '1',
+      [fixedFlag.PROVISIONAL_TOTAL]: '9',
+      [fixedFlag.BILLS_TOTAL_WT_PROV]: '10',
+      [fixedFlag.DAYWORK_LABOR]: '11',
+      [fixedFlag.PROVISIONAL]: '12',
+      [fixedFlag.TOTAL_COST]: '13',
+    };
+    let curTitleValue;
     // 清单标题 造价书的第一层数据。
     function QdBt(node, allNodes) {
       const row = node.row();
       const orgFee = getFee(node.data.fees, 'common.tenderTotalFee');
       const fee = isBidInvitation ? '0' : orgFee;
-      const titleType = BillsTitleType[node.getFlag()];
+      const flag = node.getFlag();
+      const bm = BillsTitleValue[flag] || curTitleValue++;
+      const titleType = BillsTitleType[flag];
       const calcBase = titleType === '5'
         ? orgFee
         : node.data.calcBase
@@ -327,7 +347,7 @@ INTERFACE_EXPORT = (() => {
           : '';
       const attrs = [
         { name: 'Xh', value: row, type: TYPE.INT }, // 序号
-        { name: 'Bm', value: node.data.code }, // 编码
+        { name: 'Bm', value: bm }, // 编码
         { name: 'Name', value: node.data.name }, // 名称
         { name: 'Je', value: fee, type: TYPE.DECIMAL }, // 金额
         { name: 'Code', value: `F${row}` }, // 行引用
@@ -341,6 +361,13 @@ INTERFACE_EXPORT = (() => {
     // 清单明细 (只有100-700章清单标题输出)
     function QdMx(node, allNodes) {
       const row = node.row();
+      // 编码: 清单非章级的,读取清单编码列。章级的清单,写死:“清单第100章总则”输出=100,“清单第200章”输出=200,依次类推。可以判断章级的,取清单名称中的数字。
+      let code = node.data.code || '';
+      const name = node.data.name || '';
+      const codeMatched = name.match(/第\s*(\d+)\s*章/);
+      if (codeMatched && codeMatched[1]) {
+        code = codeMatched[1];
+      }
       const iszg = node.data.specialProvisional === '专业工程';
       const calcBaseBeFee = iszg || node.getFlag() === fixedFlag.PROVISIONAL;
       const orgFee = getFee(node.data.fees, 'common.tenderTotalFee');
@@ -351,7 +378,7 @@ INTERFACE_EXPORT = (() => {
           : '';
       const attrs = [
         { name: 'Xh', value: row, type: TYPE.INT }, // 序号
-        { name: 'Qdbm', value: node.data.code, minLen: 1 }, // 编码
+        { name: 'Qdbm', value: code, minLen: 1 }, // 编码
         { name: 'Name', value: node.data.name }, // 名称
         { name: 'Dw', value: node.data.unit }, // 单位
         { name: 'Sl', value: node.data.quantity, type: TYPE.DECIMAL }, // 工程量
@@ -617,6 +644,7 @@ INTERFACE_EXPORT = (() => {
         projectGLJIDToRcjID[glj.id] = index + 1;
         projectGLJMap[glj.id] = glj;
       });
+      curTitleValue = 14;
       const dwgcxx = new Dwgcxx(tenderData.name, feature);
       dwgcxx.children.push(
         setupFeeRate(curDetail.FeeRate, info),