|  | @@ -4,6 +4,7 @@
 | 
	
		
			
				|  |  |  let mongoose = require('mongoose');
 | 
	
		
			
				|  |  |  let _ = require("lodash");
 | 
	
		
			
				|  |  |  let feeRate_facade = require('../../fee_rates/facade/fee_rates_facade');
 | 
	
		
			
				|  |  | +let project_facade = require('../../main/facade/project_facade');
 | 
	
		
			
				|  |  |  let logger = require("../../../logs/log_helper").logger;
 | 
	
		
			
				|  |  |  const uuidV1 = require('uuid/v1');
 | 
	
		
			
				|  |  |  let projectModel = mongoose.model('projects');
 | 
	
	
		
			
				|  | @@ -23,6 +24,7 @@ let rationGLJModel = mongoose.model('ration_glj');
 | 
	
		
			
				|  |  |  let rationCoeModel = mongoose.model('ration_coe');
 | 
	
		
			
				|  |  |  let rationInstallationModel = mongoose.model('ration_installation');
 | 
	
		
			
				|  |  |  let quantityDetailModel = mongoose.model('quantity_detail');
 | 
	
		
			
				|  |  | +let rationTemplateModel = mongoose.model('ration_template');
 | 
	
		
			
				|  |  |  let userModel = mongoose.model('user');
 | 
	
		
			
				|  |  |  let compleGljSectionModel = mongoose.model('complementary_glj_section');
 | 
	
		
			
				|  |  |  let compleGljSectionTModel = mongoose.model('complementary_glj_section_templates');
 | 
	
	
		
			
				|  | @@ -206,7 +208,8 @@ async function copyProject(userID, compilationID,data,newProjectID = null) {
 | 
	
		
			
				|  |  |          copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationGLJModel),
 | 
	
		
			
				|  |  |          copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationCoeModel),
 | 
	
		
			
				|  |  |          copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,quantityDetailModel),
 | 
	
		
			
				|  |  | -        copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationInstallationModel)
 | 
	
		
			
				|  |  | +        copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationInstallationModel),
 | 
	
		
			
				|  |  | +        copyRationSubList(originalID,newProjectID,billMap.uuidMaping,rationMap.uuidMaping,projectGLJMap.IDMap,rationTemplateModel)
 | 
	
		
			
				|  |  |      ];
 | 
	
		
			
				|  |  |      if(originalProperty.calcProgramFile){
 | 
	
		
			
				|  |  |          copyTasks.push(commonCopy(newProjectID,originalProperty.calcProgramFile.ID,calcProgramFileID,calcProgramsModel));
 | 
	
	
		
			
				|  | @@ -294,6 +297,7 @@ async function copyRations(newProjectID,billsIDMap,rationMap,projectGLJIDMap) {
 | 
	
		
			
				|  |  |          if(doc.billsItemID){
 | 
	
		
			
				|  |  |              doc.billsItemID = billsIDMap[doc.billsItemID]?billsIDMap[doc.billsItemID]:-1;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if(doc.referenceRationID) doc.referenceRationID = uuidMaping[doc.referenceRationID]?uuidMaping[doc.referenceRationID]:undefined;
 | 
	
		
			
				|  |  |          //绑定定类型的工料机 项目工料机ID
 | 
	
		
			
				|  |  |          doc.type==3&&doc.projectGLJID&&projectGLJIDMap[doc.projectGLJID]?doc.projectGLJID = projectGLJIDMap[doc.projectGLJID]:'';
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -963,6 +967,19 @@ async function copyCompleGljSection(userId, compilationId) {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -async function changeFile(datas,from,type){//from:feeRate或单价文件,type从单前建设项目还是从其它建设项目中复制
 | 
	
		
			
				|  |  | +async function changeFile(datas,userID,fileID,name,from,type){//from 费率或单价文件,type从单前建设项目还是从其它建设项目中复制
 | 
	
		
			
				|  |  | +    let projectIDs = [],newFile = {id:fileID,name:name};//计录从其它项目中复制的文件,选中多个的时候只需复制一次
 | 
	
		
			
				|  |  | +    let projectUpdateType = from == "feeRateFile"?"feeRate":"unitFile";
 | 
	
		
			
				|  |  | +    if(from == "feeRateFile"){
 | 
	
		
			
				|  |  | +        for(let d of datas){
 | 
	
		
			
				|  |  | +            let tem_file = await feeRate_facade.changeFeeRateFile(d, newFile,type,userID);
 | 
	
		
			
				|  |  | +            if(type == 1 && tem_file){//从建设项目复制时,只有第一次需要复制,剩下的就相当于使用同个建设项目的情况了
 | 
	
		
			
				|  |  | +                newFile = {id:tem_file.ID,name:tem_file.name};
 | 
	
		
			
				|  |  | +                type = 0;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            projectIDs.push({ID:d.projectID})
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    await project_facade.markProjectsToChange(projectIDs,projectUpdateType)//项目标记为待刷新状态
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |