|  | @@ -67,10 +67,10 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |          // 默认、中间过程
 | 
	
		
			
				|  |  |          PROCESS: 6
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -    // 根据上方精度要求得到的项目属性,小数位数的值
 | 
	
		
			
				|  |  | +    // 根据上方精度要求得到的项目属性,小数位数的值(定额工程量小数位数需求改成六位)
 | 
	
		
			
				|  |  |      const tenderPropertyDecimal = {
 | 
	
		
			
				|  |  |          bills: { unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
 | 
	
		
			
				|  |  | -        ration: { quantity: Decimal.QUANTITY, unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
 | 
	
		
			
				|  |  | +        ration: { quantity: Decimal.PROCESS, unitPrice: Decimal.FEE, totalPrice: Decimal.FEE },
 | 
	
		
			
				|  |  |          glj: { quantity: Decimal.GLJ, unitPriceHasMix: Decimal.FEE, unitPrice: Decimal.FEE },
 | 
	
		
			
				|  |  |          feeRate: Decimal.RATE,
 | 
	
		
			
				|  |  |          quantity_detail: 4,
 | 
	
	
		
			
				|  | @@ -125,6 +125,7 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |          const bidderInfo = getValue(projectSrc, ['ConstructionInfo', 'BidderInfo']); // 投标信息
 | 
	
		
			
				|  |  |          return [
 | 
	
		
			
				|  |  |              { key: 'projNum', value: getValue(projectSrc, ['_Number']) }, // 编码
 | 
	
		
			
				|  |  | +            { key: 'projectType', value: getValue(projectSrc, ['_ProjectType']) }, // 工程类型
 | 
	
		
			
				|  |  |              { key: 'projectCategory', value: getValue(projectSrc, ['_ProjectCategory']) }, // 工程类别
 | 
	
		
			
				|  |  |              { key: 'constructionType', value: getValue(projectSrc, ['_ConstructionType']) }, // 建设性质
 | 
	
		
			
				|  |  |              { key: 'regionalCategories', value: AreaKind[getValue(projectSrc, ['_AreaKind'])] }, // 地区类被
 | 
	
	
		
			
				|  | @@ -744,6 +745,12 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |          '3': commonConstants.supplyType.WQJG
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    // 获取原始编码
 | 
	
		
			
				|  |  | +    function getOriginalCode(code) {
 | 
	
		
			
				|  |  | +        //编码后面有-\d+的形式,去掉-\d+取前面的字符串作为原始代码
 | 
	
		
			
				|  |  | +        return code.replace(/(.*)-\d+$/, '$1');
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      // 提取人材机汇总相关(人材机汇总表、承包材料表)
 | 
	
		
			
				|  |  |      function extractGLJSummary(tenderSrc) {
 | 
	
		
			
				|  |  |          const initData = { gljSummary: [], differentiaSummary: [], exponentialSummary: [] };
 | 
	
	
		
			
				|  | @@ -765,11 +772,6 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |              return acc;
 | 
	
		
			
				|  |  |          }, initData);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 获取原始编码
 | 
	
		
			
				|  |  | -        function getOriginalCode(code) {
 | 
	
		
			
				|  |  | -            //编码后面有-\d+的形式,去掉-\d+取前面的字符串作为原始代码
 | 
	
		
			
				|  |  | -            return code.replace(/(.*)-\d+$/, '$1');
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  |          // TODO (不靠谱) 获取人材机类型数据
 | 
	
		
			
				|  |  |          // 导入的源文件没有细化区分人材机类型,这里只是暂时大概给个值。后续会在后端与标准人材机进行配对。也因此无法准确处理补充人材机
 | 
	
		
			
				|  |  |          function getTypeData(gljSrc) {
 | 
	
	
		
			
				|  | @@ -821,6 +823,9 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |          function extractGLJ(gljSrc) {
 | 
	
		
			
				|  |  |              countData.projectGLJCount++;
 | 
	
		
			
				|  |  |              const code = getValue(gljSrc, ['_Number']);
 | 
	
		
			
				|  |  | +            /* if (code.includes('99450680')) {
 | 
	
		
			
				|  |  | +                debugger;
 | 
	
		
			
				|  |  | +            } */
 | 
	
		
			
				|  |  |              return {
 | 
	
		
			
				|  |  |                  code,
 | 
	
		
			
				|  |  |                  original_code: getOriginalCode(code),
 | 
	
	
		
			
				|  | @@ -1047,6 +1052,19 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |          mergeCSXM(tenderData.csxm);
 | 
	
		
			
				|  |  |          mergeOther(tenderData.other);
 | 
	
		
			
				|  |  |          mergeTax(tenderData.tax);
 | 
	
		
			
				|  |  | +        // 需要清空各种原因导入的父项的工程量
 | 
	
		
			
				|  |  | +        const parentMap = {};
 | 
	
		
			
				|  |  | +        mergedBills.forEach(bills => {
 | 
	
		
			
				|  |  | +            if (bills.ParentID !== -1) {
 | 
	
		
			
				|  |  | +                parentMap[bills.ParentID] = 1;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        mergedBills.forEach(bills => {
 | 
	
		
			
				|  |  | +            if (parentMap[bills.ID] && commonUtil.isDef(bills.quantity)) {
 | 
	
		
			
				|  |  | +                delete bills.quantity;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        })
 | 
	
		
			
				|  |  | +        console.log(mergedBills);
 | 
	
		
			
				|  |  |          return mergedBills;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 合并清单数据
 | 
	
	
		
			
				|  | @@ -1376,6 +1394,10 @@ const importXML = (() => {
 | 
	
		
			
				|  |  |                  projectGLJ.ratios.forEach(ratio => {
 | 
	
		
			
				|  |  |                      const matched = projectGLJMap[ratio.code];
 | 
	
		
			
				|  |  |                      ratio.code = matched.code;
 | 
	
		
			
				|  |  | +                    // 为了后端匹配标准数据,如易达有组成物"99450680-0001"
 | 
	
		
			
				|  |  | +                    // 项目人材机、单价文件根据original_code匹配上了标准人材机,修改了gljType等
 | 
	
		
			
				|  |  | +                    // mixRatio根据code匹配标准数据匹配不上标准数据,因此type与项目人材机的type不同,导致组成物丢失
 | 
	
		
			
				|  |  | +                    ratio.original_code = getOriginalCode(ratio.code);
 | 
	
		
			
				|  |  |                      ratio.projectGLJID = projectGLJ.id;
 | 
	
		
			
				|  |  |                      ratio.id = IDPlaceholder.ratio++;
 | 
	
		
			
				|  |  |                      ratio.unit_price_file_id = tenderData.property.unitPriceFile.id;
 |