浏览代码

池州接口。

chenshilong 5 年之前
父节点
当前提交
4da51b6a7a
共有 1 个文件被更改,包括 159 次插入3 次删除
  1. 159 3
      web/building_saas/standard_interface/export/anhui_chizhou.js

+ 159 - 3
web/building_saas/standard_interface/export/anhui_chizhou.js

@@ -39,7 +39,34 @@ INTERFACE_EXPORT = (() => {
         const isBidSubmission = exportKind === BID_SUBMISSION; // 是否是投标
         const isControl = exportKind === CONTROL; // 是否是控制价
 
-// 节点定义------------------------------------------------------------------------------------------------------------
+        let serialNo;
+        let vTree;
+// ------------------------------------------------------------------------------------------------------------
+        // 提取字符串中的数字
+        function getNum(str) {
+            let num = str.replace(/[^0-9]/ig, "");
+            return num;
+        }
+
+        function CheckNull(Value) {
+            if (!Value)
+                return 0
+            else
+                return Value;
+        }
+
+        function GetRationDataType(ration){
+            let dt;
+            if (calcTools.isRationItem(ration))
+               dt = 3
+            else if (calcTools.isGljRation(ration))
+                dt = 1
+            else if (calcTools.isVolumePrice(ration))
+                dt = 4;
+            return dt;
+        }
+// ------------------------------------------------------------------------------------------------------------
+
         function CreateNode(nodeName, attrArr = []) {
             Element.call(this, nodeName, attrArr);
         }
@@ -137,8 +164,132 @@ INTERFACE_EXPORT = (() => {
             Element.call(this, '投标信息', attrs);
         }
 
+        function addRationGLJs(rData, rationNode){
+            for (let i = 0; i < rData.rationGLJList.length; i++) {
+                let glj = rData.rationGLJList[i];
+                const attrs = [
+                    { name: '人材机标识', value: glj.GLJID},
+                    { name: '人材机含量', value: glj.tenderQuantity}
+                ];
+                let gljNode = new CreateNode('定额人材机含量明细', attrs);
+                rationNode.children.push(gljNode);
+            }
+        }
+
+        function addRations(ABillItem, ABillNode){
+            for (let i = 0; i < ABillItem.children.length; i++) {
+                let r = ABillItem.children[i].data;
+                const attrs = [
+                    { name: '序号', value: i + 1},
+                    { name: '定额编号', value: r.code},
+                    { name: '定额名称', value: r.name},
+                    { name: '单位', value: r.unit},
+                    { name: '数量', value: r.tenderQuantity},
+                    { name: '单价', value: r.feesIndex && r.feesIndex.common ? r.feesIndex.common.tenderUnitFee : 0},
+                    { name: '合价', value: r.feesIndex && r.feesIndex.common ? r.feesIndex.common.tenderTotalFee : 0},
+                    { name: '备注', value: ''},
+                    { name: '数据类型', value: GetRationDataType(ABillItem.children[i])},
+                    { name: '人工费', value: getFee(r.fees, 'marketLabour.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '主材费', value: getFee(r.fees, 'marketMaterial.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '辅材费', value: 0},
+                    { name: '机械使用费', value: getFee(r.fees, 'marketMachine.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '设备费', value: 0},
+                    { name: '措施费1', value: getFee(r.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL},    // FQuery2.FieldByName('OtherDirectFee'},
+                    { name: '措施费2', value: 0}, //getFee(r.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL
+                    { name: '企业管理费', value: getFee(r.fees, 'manage.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '规费', value: getFee(r.fees, 'force.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '利润', value: getFee(r.fees, 'profit.tenderTotalFee'), type: TYPE.DECIMAL},
+                    { name: '税金', value: getFee(r.fees, 'tax.tenderTotalFee'), type: TYPE.DECIMAL},
+                ];
+                let rationNode = new CreateNode('定额信息表', attrs);
+                ABillNode.children.push(rationNode);
+
+                addRationGLJs(r, rationNode);
+            }
+        }
+
+        function recursiveAddBills(AItem, AXMLParent) {
+            if (AItem == undefined || !calcTools.isBill(AItem)) return;
+
+            let vBillNode;
+            function addBillNode () {
+                serialNo++;
+                let zmh = (AItem.parent == vTree.roots[0]) ? getNum(AItem.data.name) : AItem.data.code;
+                const attrs = [
+                    {name: "序号", value: serialNo}, //AItem.data.ID
+                    {name: "清单章节号", value: zmh},
+                    {name: "子目号", value: zmh},
+                    {name: "子目名称", value: AItem.data.name},
+                    {name: "单位", value: AItem.data.unit},
+                    {name: "数量", value: AItem.data.quantity, type: TYPE.DECIMAL}
+                ];
+
+                let dj = 0, hj = 0;
+                if ((isBidSubmission || isControl) || (AItem.data.specialProvisional == '专业工程')){
+                    hj = CheckNull(AItem.data.feesIndex && AItem.data.feesIndex.common ? AItem.data.feesIndex.common.tenderTotalFee : 0);
+                    dj = hj;
+                }
+                attrs.push({name: "单价", value: dj}, {name: "合价", value: hj});
+                attrs.push({name: "备注", value: isBidInvitation ? '' : AItem.data.remark});
+
+                let sjlx;
+                if (AItem.data.specialProvisional == '专业工程')      // 专项暂定
+                   sjlx = 21;
+                else {
+                    if (calcTools.isLeafBill(AItem)) {
+                        if (AItem.data.code == '102-3')                       // 安全生产费
+                            sjlx = '22'
+                        else if ((AItem.data.code == '-a') && (AItem.parent && (AItem.parent.data.code == '101-1')))               // 工程一切险
+                            sjlx = '23'
+                        else if ((AItem.data.code == '-b') && (AItem.parent && (AItem.parent.data.code == '101-1')))                  // 第三者责任险
+                            sjlx = '24'
+                        else
+                            sjlx = '20';
+                    }
+                    else {
+                        sjlx = '1';            // 父清单
+                        attrs.find(function getE(e) {return e.name == '单位'}).value = '项';
+                    }
+                }
+                attrs.push({name: "数据类型", value: sjlx});
+
+                if (isBidSubmission || isControl){
+                    attrs.push(
+                        {name: "人工费", value: getFee(AItem.data.fees, 'marketLabour.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "主材费", value: getFee(AItem.data.fees, 'marketMaterial.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "辅材费", value: 0},
+                        {name: "机械使用费", value: getFee(AItem.data.fees, 'marketMachine.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "设备费", value: 0},
+                        {name: "措施费1", value: getFee(AItem.data.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "措施费2", value: 0}, // getFee(AItem.data.fees, 'measure.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "企业管理费", value: getFee(AItem.data.fees, 'manage.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "规费", value: getFee(AItem.data.fees, 'force.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "利润", value: getFee(AItem.data.fees, 'profit.tenderTotalFee'), type: TYPE.DECIMAL},
+                        {name: "税金", value: getFee(AItem.data.fees, 'tax.tenderTotalFee'), type: TYPE.DECIMAL}
+                    );
+                }
+
+                vBillNode = new CreateNode('工程量清单明细', attrs);
+                AXMLParent.children.push(vBillNode);
+
+                if (calcTools.isLeafBill(AItem))
+                    addRations(AItem, vBillNode)
+            }
+            addBillNode();
+
+            recursiveAddBills(AItem.children[0], vBillNode);
+            recursiveAddBills(AItem.nextSibling, AXMLParent);
+        }
+
+        // 清单表
+        function createGCLQDB(tenderData, gongCLQDB){
+            vTree = tenderDetailMap[tenderData.ID].mainTree;
+            serialNo = 0;
+            recursiveAddBills(vTree.roots[0].children[0], gongCLQDB);
+        };
+
         // 生成标段工程
-        function CreateGLBDGC(tenderData, gongLGCSJ, gongLGCHZ, Num){
+        function createGLBDGC(tenderData, gongLGCSJ, gongLGCHZ, Num){
             let attrs0 = [
                 { name: '序号', value: Num },
                 { name: '标段名称', value: tenderData.name },
@@ -154,6 +305,11 @@ INTERFACE_EXPORT = (() => {
             const RenCJHZ = new CreateNode('人材机汇总');
             gongLBDGC.children = [gongCLQDB, jiRGXXB, ZaoJHZB, RenCJHZ];
 
+            createGCLQDB(tenderData, gongCLQDB);
+            // createJiRGXXB(jiRGXXB);
+
+
+            // 同步生成 公路工程汇总明细 数据
             const attrs2 = [{ name: '备注', value: '' }];
             const gongLGCHZMX = new CreateNode('公路工程汇总明细', attrs0.concat(attrs2));
             gongLGCHZ.children.push(gongLGCHZMX);
@@ -183,7 +339,7 @@ INTERFACE_EXPORT = (() => {
             let n = 0;
             for (const tenderData of projectData.children) {
                 n++;
-                CreateGLBDGC(tenderData, gongLGCSJ, gongLGCHZ, n);
+                createGLBDGC(tenderData, gongLGCSJ, gongLGCHZ, n);
             }
             gongLGCSJ.children.push(gongLGCSJ.children.shift());