guangdong_zhongshan.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /*
  2. * @Descripttion: 安徽马鞍山导入接口
  3. * @Author: vian
  4. * @Date: 2020-09-09 11:51:15
  5. */
  6. // INTERFACE_EXPORT =,必须这么写,这样才能在导入时动态加载脚本后,覆盖前端代码
  7. INTERFACE_IMPORT = (() => {
  8. 'use strict';
  9. /**
  10. *
  11. * @param {String} areaKey - 地区标识,如:'安徽@马鞍山',有些地区的接口只是取值上有不同,共有一个接口脚本, 需要通过地区标识确定一些特殊处理
  12. * @param {Object} xmlObj - xml经过x2js转换后的xml对象
  13. * @return {Object} - 返回的格式需要统一,具体参考函数内返回的内容。返回的内容会经过一系列的统一处理形成可入库的数据。
  14. */
  15. const RoadGradeMap = {
  16. "0": "高速公路",
  17. "1": "一级公路",
  18. "2": "二级公路",
  19. "3": "三级公路",
  20. "4": "四级公路",
  21. "5": "等外公路",
  22. "6": "独立桥梁",
  23. "7":"独立隧道"
  24. }
  25. async function entry(areaKey, xmlObj) {
  26. const {
  27. UTIL: {
  28. getValue,
  29. arrayValue,
  30. getBool,
  31. extractItemsRecur,
  32. }
  33. } = INTERFACE_EXPORT_BASE;
  34. let info = [];
  35. let tenders = [];
  36. let CprjInfo = getValue(xmlObj, ['CprjInfo']);
  37. let EprjInfos = arrayValue(CprjInfo, ["EprjInfo"]);
  38. if (EprjInfos.length > 0) {
  39. let MakeInfo = EprjInfos[0].MakeInfo;
  40. let Params = EprjInfos[0].Params;
  41. let BuildType = getValue(Params, ['_BuildType']);
  42. let natureConstruction = "";
  43. if (BuildType == "0") natureConstruction = "新建";
  44. if (BuildType == "1") natureConstruction = "改扩建";
  45. let terrainCategory = "";
  46. let Terrain = getValue(Params, ['_Terrain']);
  47. if (Terrain == "0") terrainCategory = "平原微丘";
  48. if (Terrain == "1") terrainCategory = "山岭重丘";
  49. let RoadGrade = getValue(Params, ['_RoadGrade']);
  50. let roadGrade = "";
  51. if (RoadGradeMap[RoadGrade]) roadGrade = RoadGradeMap[RoadGrade];
  52. info = [
  53. { key: 'constructingUnit', value: getValue(MakeInfo, ['_Manage']) },
  54. { key: 'designUnit', value: getValue(MakeInfo, ['_Designer']) },
  55. { key: 'compileUnit', value: getValue(MakeInfo, ['_Compile']) },
  56. { key: 'compileApprover', value: getValue(MakeInfo, ['_CompileApprover']) },
  57. { key: 'compileCertNo', value: getValue(MakeInfo, ['_CompileCertNo']) },
  58. { key: 'compileDate', value: getValue(MakeInfo, ['_CompileDate']) },
  59. { key: 'reviewUnit', value: getValue(MakeInfo, ['_Review']) },
  60. { key: 'reviewApprover', value: getValue(MakeInfo, ['_ReviewApprover']) },
  61. { key: 'reviewCertNo', value: getValue(MakeInfo, ['_ReviewCertNo']) },
  62. { key: 'reviewDate', value: getValue(MakeInfo, ['_ReviewDate']) },
  63. { key: 'startChainages', value: getValue(Params, ['_StartPileNo'])},
  64. { key: 'endChainages', value: getValue(Params, ['_EndPileNo']) },
  65. { key: 'location', value: getValue(Params, ['_PrjArea']) },
  66. { key: 'natureConstruction', value: natureConstruction },
  67. { key: 'terrainCategory', value: terrainCategory },
  68. { key: 'roadGrade', value: roadGrade },
  69. ]
  70. for (let t of EprjInfos) {
  71. tenders.push(setupTender(t))
  72. }
  73. }
  74. function setupTender(EprjInfo) {
  75. let tender = {};
  76. let Params = EprjInfo.Params;
  77. let SummaryOfCost = EprjInfo.SummaryOfCost;
  78. tender.name = EprjInfo._Name;
  79. tender.bills = [];
  80. tender.bidEvaluationList = [];
  81. tender.evaluationList = [];
  82. let ProvisionalSums = getValue(SummaryOfCost, ['_ProvisionalSums']);
  83. let Structure = getValue(Params, ['_Structure']);
  84. let pavementStructure = "";
  85. if (Structure == "0") pavementStructure = "沥青路面";
  86. if (Structure == "1") pavementStructure = "水泥混凝土路面";
  87. if (Structure == "2") pavementStructure = "其他类型路面";
  88. tender.feature = [
  89. { key: 'tenderSumLimit', value: getValue(SummaryOfCost, ['_TenderSumLimit'])},//招标控制价
  90. { key: 'designSpeed', value: getValue(Params, ['_DesignSpeed']) },// --todo
  91. { key: 'pavementStructure', value: pavementStructure},// --todo
  92. { key: 'subgradeWidth', value: getValue(Params, ['_SubgradeWidth']) },
  93. { key: 'roadLength', value: getValue(Params, ['_RoadLength']) },// --todo
  94. { key: 'bridgeLength', value: getValue(Params, ['_BridgeLength']) },
  95. { key: 'tunnelLength', value: getValue(Params, ['_TunnelLength']) },// --todo
  96. { key: 'briTunRate', value: getValue(Params, ['_BriTunRate']) },// --todo
  97. { key: 'interchangeNum', value: getValue(Params, ['_InterchangeNum']) },// --todo
  98. { key: 'stubLengths', value: getValue(Params, ['_StubLengths']) },// --todo
  99. { key: 'laneLength', value: getValue(Params, ['_LaneLength']) },// --todo
  100. ]
  101. const items = arrayValue(EprjInfo, ['Items', 'Item']);
  102. for (let i of items) {
  103. let bill = setupBills(i);
  104. if (bill.name == "暂列金额(不含计日工总额)") {
  105. bill.fees = [{ fieldName: "common",tenderTotalFee:ProvisionalSums, tenderUnitFee: "0", totalFee: ProvisionalSums, unitFee: "0" }];
  106. bill.calcBase = ProvisionalSums;
  107. bill.calcFlag = 1;
  108. }
  109. tender.bills.push(bill);
  110. }
  111. const BidEvaluationMainMaterial = arrayValue(EprjInfo, ['BidEvaluationMainMaterial']);
  112. for (let b of BidEvaluationMainMaterial) {
  113. tender.bidEvaluationList.push(setUpBidEvaluation(b))
  114. }
  115. return tender;
  116. }
  117. function setupBills(item) {
  118. let bill = {
  119. code: item._ListCode,
  120. name: item._ListName,
  121. unit: item._Unit,
  122. quantity: item._Num,
  123. remark: item._Remarks,
  124. jobContentText: item._Content,
  125. specialProvisional: '',
  126. children: []
  127. }
  128. if (item._ProvisionalType == '0') bill.specialProvisional = '材料';
  129. if (item._ProvisionalType == '1') bill.specialProvisional = '工程设备';
  130. if (item._ProvisionalType == '2') bill.specialProvisional = '工程设备';
  131. let subItems = arrayValue(item, ['Item']);
  132. if (subItems && subItems.length > 0) {
  133. for (let i of subItems) {
  134. bill.children.push(setupBills(i))
  135. }
  136. }
  137. return bill;
  138. }
  139. function setUpBidEvaluation(b) {
  140. return {
  141. code: b._Code,
  142. name: b._Name,
  143. specs: b.Specification,
  144. unit: b._Unit,
  145. market_price: b._Price,
  146. quantity: b._Quantity,
  147. remark:b._Remark
  148. }
  149. }
  150. return {
  151. name: CprjInfo._CprjName,
  152. info,
  153. tenders,
  154. };
  155. }
  156. return {
  157. entry
  158. };
  159. })();