zhangweicheng 5 лет назад
Родитель
Сommit
9f02667cef

+ 6 - 1
modules/main/facade/ration_facade.js

@@ -181,7 +181,7 @@ async function modifyDivideRation(data,compilation){//目前只有替换分摊
   newRation.quantity = data.oldData.quantity;
   newRation.quantity = data.oldData.quantity;
   newRation.type=1;
   newRation.type=1;
   newRation.itemType = "定额";
   newRation.itemType = "定额";
-  newRation.programID = data.oldData.programID; 
+  if(data.oldData.programID && data.oldData.programID!="")newRation.programID = data.oldData.programID; 
   newRation.seq = data.oldData.seq;
   newRation.seq = data.oldData.seq;
   newRation.ParentID = data.oldData.ParentID;
   newRation.ParentID = data.oldData.ParentID;
   await divideModel.update({ID:data.ID},{$push:{divideList:newRation,ration_gljs:{$each:ration_gljs},ration_coes:{$each:ration_coes}}});
   await divideModel.update({ID:data.ID},{$push:{divideList:newRation,ration_gljs:{$each:ration_gljs},ration_coes:{$each:ration_coes}}});
@@ -224,6 +224,11 @@ async function createNewMaterialRation(std,quantityDecimal,projectID){
     newData.quantity=scMathUtil.roundForObj(1 / FilterNumberFromUnit(std.unit),quantityDecimal);
     newData.quantity=scMathUtil.roundForObj(1 / FilterNumberFromUnit(std.unit),quantityDecimal);
     newData.from = std.type === 'complementary' ? 'cpt' : 'std';
     newData.from = std.type === 'complementary' ? 'cpt' : 'std';
     newData.rationAssList =await  createRationAss(std,true);
     newData.rationAssList =await  createRationAss(std,true);
+    if(std.feeType == undefined || std.feeType == null || std.feeType ==''){//定额取费专业为空的情况下,取项目属性中的定额取费专业ID
+      newData.programID = await getProgramForProject(projectID);
+    }else {
+      newData.programID = std.feeType;
+    }
     return newData;
     return newData;
 }
 }
 
 

+ 43 - 16
modules/pm/facade/pm_facade.js

@@ -89,7 +89,7 @@ let progressiveModel = mongoose.model('std_progressive_lib');
 let importLogsModel = mongoose.model("import_logs");
 let importLogsModel = mongoose.model("import_logs");
 const shareListModel = mongoose.model('share_list');
 const shareListModel = mongoose.model('share_list');
 let welcomeModel = mongoose.model("welcome_setting");
 let welcomeModel = mongoose.model("welcome_setting");
-
+let divideModel = mongoose.model("divide_setting");
 
 
 let featureLibModel =  mongoose.model("std_project_feature_lib");
 let featureLibModel =  mongoose.model("std_project_feature_lib");
 let scMathUtil = require('../../../public/scMathUtil').getUtil();
 let scMathUtil = require('../../../public/scMathUtil').getUtil();
@@ -585,6 +585,10 @@ async function copyProject(userID, compilationID, data, newProjectID = null, del
     if(originalProperty.labourCoeFile){
     if(originalProperty.labourCoeFile){
         copyTasks.push(commonCopy(newProjectID,originalProperty.labourCoeFile.ID,labourCoeFileID,labourCoesModel));
         copyTasks.push(commonCopy(newProjectID,originalProperty.labourCoeFile.ID,labourCoeFileID,labourCoesModel));
     }
     }
+    //复制分摊信息
+    let divide_setting = await divideModel.findOne({projectID:originalID}, '-_id').lean();
+    if(divide_setting) copyTasks.push(copyDivide(divide_setting,newProjectID,projectGLJMap.IDMap));
+
     // 处理单价、费率文件
     // 处理单价、费率文件
     if (saveAsFile) {
     if (saveAsFile) {
         let feeRateFileName = isSaveAs ? projectName : originalProperty.feeFile.name;
         let feeRateFileName = isSaveAs ? projectName : originalProperty.feeFile.name;
@@ -752,6 +756,15 @@ async  function commonCopy(newProjectID,oldID,newID,model) { //对于只需更
     return result;
     return result;
 }
 }
 
 
+async function copyDivide(divide_setting,newProjectID,projectGLJIDMap){
+  divide_setting.ID = uuidV1();
+  divide_setting.projectID = newProjectID;
+  for(let rg of divide_setting.ration_gljs){
+    rg.projectGLJID = projectGLJIDMap[rg.projectGLJID]
+  }
+  return await divideModel.create(divide_setting);
+}
+
 async function copyFeeRate(rootProjectID,userID,originalFeeRateFileID,feeRateFileID,newName) {//复制费率和费率文件
 async function copyFeeRate(rootProjectID,userID,originalFeeRateFileID,feeRateFileID,newName) {//复制费率和费率文件
     let [feeRateFile,feeRate] =await feeRate_facade.getFeeRateByID(originalFeeRateFileID);
     let [feeRateFile,feeRate] =await feeRate_facade.getFeeRateByID(originalFeeRateFileID);
     let newFeeRateID = uuidV1();
     let newFeeRateID = uuidV1();
@@ -1589,17 +1602,18 @@ async function exportTenderData(data){
     let result = {};
     let result = {};
     let projectSetting =  await projectSettingModel.findOne({"projectID": data.projectID}, '-_id');
     let projectSetting =  await projectSettingModel.findOne({"projectID": data.projectID}, '-_id');
     if(projectSetting) result['projSetting'] = projectSetting;
     if(projectSetting) result['projSetting'] = projectSetting;
-    result.bills = await billsModel.find({"projectID": data.projectID});
-    result.rations = await rationModel.find({'$or': [{projectID: data.projectID, deleteInfo: null}, {projectID: data.projectID, 'deleteInfo.deleted': {$in: [null, false]}}]});
-    result.projectGLJs = await gljListModel.find({'project_id':data.projectID});
-    result.installationFees =  await installationFeeModel.find({projectID:data.projectID});
-    result.rationGLJs = await rationGLJModel.find({projectID:data.projectID});
-    result.rationCoes = await rationCoeModel.find({projectID:data.projectID});
-    result.quantityDetails = await quantityDetailModel.find({projectID:data.projectID});
-    result.rationInstallations = await rationInstallationModel.find({projectID:data.projectID});
-    result.rationTemplates = await rationTemplateModel.find({projectID:data.projectID});
-    result.calcProgramsFile = await calcProgramsModel.findOne({projectID:data.projectID});
-    result.labourCoes = await labourCoesModel.findOne({projectID:data.projectID});
+    result.bills = await billsModel.find({"projectID": data.projectID}).lean();
+    result.rations = await rationModel.find({'$or': [{projectID: data.projectID, deleteInfo: null}, {projectID: data.projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}).lean();
+    result.projectGLJs = await gljListModel.find({'project_id':data.projectID}).lean();
+    result.installationFees =  await installationFeeModel.find({projectID:data.projectID}).lean();
+    result.rationGLJs = await rationGLJModel.find({projectID:data.projectID}).lean();
+    result.rationCoes = await rationCoeModel.find({projectID:data.projectID}).lean();
+    result.quantityDetails = await quantityDetailModel.find({projectID:data.projectID}).lean();
+    result.rationInstallations = await rationInstallationModel.find({projectID:data.projectID}).lean();
+    result.rationTemplates = await rationTemplateModel.find({projectID:data.projectID}).lean();
+    result.calcProgramsFile = await calcProgramsModel.findOne({projectID:data.projectID}).lean();
+    result.labourCoes = await labourCoesModel.findOne({projectID:data.projectID}).lean();
+    result.divide_setting = await divideModel.findOne({projectID:data.projectID}, '-_id').lean();
 
 
     return cipher.aesEncrypt(JSON.stringify(result));
     return cipher.aesEncrypt(JSON.stringify(result));
 }
 }
@@ -1712,9 +1726,9 @@ async function importProject(data,req,updateData) {
             let [constructionProjectID,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap] = await handleMainProjectDatas(mainData,updateData,req.session.sessionUser.id);
             let [constructionProjectID,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap] = await handleMainProjectDatas(mainData,updateData,req.session.sessionUser.id);
             result.constructionProjectID = constructionProjectID;
             result.constructionProjectID = constructionProjectID;
             if(datas.length > 1 ){//生成后统一次插入 2020-05-29
             if(datas.length > 1 ){//生成后统一次插入 2020-05-29
-              let newProjectSettings=[],bills=[],rations=[],projectGLJs=[],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],newCalcProgramsFiles=[],newLabourCoes=[];
+              let newProjectSettings=[],bills=[],rations=[],projectGLJs=[],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[],newCalcProgramsFiles=[],newLabourCoes=[],newDivides=[];
                 for(let i = 1;i<datas.length;i++){
                 for(let i = 1;i<datas.length;i++){
-                  let [newProjectSetting,tbills,trations,tprojectGLJs,trationGLJs,trationCoes,tquantityDetails,trationInstallations,trationTemplates,newCalcProgramsFile,newLabourCoe] =  await handleEachProject(datas[i],projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap)
+                  let [newProjectSetting,tbills,trations,tprojectGLJs,trationGLJs,trationCoes,tquantityDetails,trationInstallations,trationTemplates,newCalcProgramsFile,newLabourCoe,newDivide] =  await handleEachProject(datas[i],projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap)
                   if(newProjectSetting) newProjectSettings.push(newProjectSetting);
                   if(newProjectSetting) newProjectSettings.push(newProjectSetting);
                   if(tbills.length > 0) bills = bills.concat(tbills);
                   if(tbills.length > 0) bills = bills.concat(tbills);
                   if(trations.length > 0) rations = rations.concat(trations);
                   if(trations.length > 0) rations = rations.concat(trations);
@@ -1726,6 +1740,7 @@ async function importProject(data,req,updateData) {
                   if(trationTemplates.length > 0) rationTemplates = rationTemplates.concat(trationTemplates); 
                   if(trationTemplates.length > 0) rationTemplates = rationTemplates.concat(trationTemplates); 
                   if(newCalcProgramsFile) newCalcProgramsFiles.push(newCalcProgramsFile);
                   if(newCalcProgramsFile) newCalcProgramsFiles.push(newCalcProgramsFile);
                   if(newLabourCoe) newLabourCoes.push(newLabourCoe);
                   if(newLabourCoe) newLabourCoes.push(newLabourCoe);
+                  if(newDivide) newDivides.push(newDivide);
                 }
                 }
 
 
                 if(newProjectSettings.length > 0) await insertMany(newProjectSettings,projectSettingModel);
                 if(newProjectSettings.length > 0) await insertMany(newProjectSettings,projectSettingModel);
@@ -1739,6 +1754,7 @@ async function importProject(data,req,updateData) {
                 if(rationTemplates.length > 0) await insertMany(rationTemplates,rationTemplateModel);
                 if(rationTemplates.length > 0) await insertMany(rationTemplates,rationTemplateModel);
                 if(newCalcProgramsFiles.length > 0) await insertMany(newCalcProgramsFiles,calcProgramsModel);
                 if(newCalcProgramsFiles.length > 0) await insertMany(newCalcProgramsFiles,calcProgramsModel);
                 if(newLabourCoes.length>0) await insertMany(newLabourCoes,labourCoesModel);
                 if(newLabourCoes.length>0) await insertMany(newLabourCoes,labourCoesModel);
+                if(newDivides.length>0) await divideModel.insertMany(newDivides);
             }
             }
 
 
          }
          }
@@ -1748,7 +1764,7 @@ async function importProject(data,req,updateData) {
 
 
 async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap){
 async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgramFileIDMap){
     let bills = [],rations = [],projectGLJs = [],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[];
     let bills = [],rations = [],projectGLJs = [],rationGLJs=[],rationCoes=[],quantityDetails=[],rationInstallations=[],rationTemplates=[];
-    let newProjectSetting =null,newCalcProgramsFile = null,newLabourCoe = null;
+    let newProjectSetting =null,newCalcProgramsFile = null,newLabourCoe = null,newDivide=null;
     let billsIDMap = {},projectGLJIDMap={},rationIDMap = {};
     let billsIDMap = {},projectGLJIDMap={},rationIDMap = {};
     let newProjectID = projectIDMap[data.projSetting.projectID];
     let newProjectID = projectIDMap[data.projSetting.projectID];
     //生成新的清单;
     //生成新的清单;
@@ -1817,7 +1833,18 @@ async function handleEachProject(data,projectIDMap,labourCoeFileIDMap,calcProgra
         newLabourCoe = data.labourCoes;
         newLabourCoe = data.labourCoes;
         delete newLabourCoe._id;
         delete newLabourCoe._id;
     }
     }
-    return [newProjectSetting,bills,rations,projectGLJs,rationGLJs,rationCoes,quantityDetails,rationInstallations,rationTemplates,newCalcProgramsFile,newLabourCoe]
+
+    if(data.divide_setting){
+      data.divide_setting.ID = uuidV1();
+      data.divide_setting.projectID = newProjectID;
+      for(let rg of data.divide_setting.ration_gljs){
+        rg.projectGLJID = projectGLJIDMap[rg.projectGLJID]
+      }
+      newDivide = data.divide_setting
+      delete newDivide._id;
+    } 
+
+    return [newProjectSetting,bills,rations,projectGLJs,rationGLJs,rationCoes,quantityDetails,rationInstallations,rationTemplates,newCalcProgramsFile,newLabourCoe,newDivide]
 
 
 }
 }
 
 

+ 3 - 0
modules/ration_glj/facade/glj_calculate_facade.js

@@ -110,6 +110,9 @@ async function calculateQuantityFromDivide(ID,rationID){
       tasks.push({updateOne: {filter: {"ID": ID,"ration_gljs.ID":gljList[i].ID}, update: ndoc}});
       tasks.push({updateOne: {filter: {"ID": ID,"ration_gljs.ID":gljList[i].ID}, update: ndoc}});
     } 
     } 
   }
   }
+  let newName = generateRationName(impactRation,gljList);
+  udatas.push({ID:impactRation.ID,type:"update",doc:{name:newName}});
+  tasks.push({updateOne: {filter: {"ID": ID,"divideList.ID":impactRation.ID}, update: {"divideList.$.name":newName}}});
   return [tasks,udatas];
   return [tasks,udatas];
 }
 }
   
   

+ 7 - 1
web/building_saas/main/js/models/ration_coe.js

@@ -140,7 +140,13 @@ var ration_coe = {
                 delete:[],
                 delete:[],
                 replace:[]
                 replace:[]
             };
             };
-            let gljList = project.ration_glj.getGLJListByRationID(record.rationID);
+            let gljList = [];
+            if($('#divide_subSpread').is(':visible')){
+              gljList = divideObj.getGLJListByRationID(record.rationID);
+            }else{
+              gljList = project.ration_glj.getGLJListByRationID(record.rationID);
+            }
+            
             if(gljUtil.isDef(record.option_codes)&&record.option_codes!=""){ //说明编辑的是下拉选择编号的类型
             if(gljUtil.isDef(record.option_codes)&&record.option_codes!=""){ //说明编辑的是下拉选择编号的类型
                 //勾选而不是下拉的情况下,默认选择下拉框中的第一个
                 //勾选而不是下拉的情况下,默认选择下拉框中的第一个
                 if(newval == 1 && (!gljUtil.isDef(doc.select_code)||doc.select_code == '')){
                 if(newval == 1 && (!gljUtil.isDef(doc.select_code)||doc.select_code == '')){

+ 9 - 1
web/building_saas/main/js/views/divide_view.js

@@ -365,6 +365,14 @@ let divideObj = {
       return datas;
       return datas;
     }
     }
   },
   },
+  getGLJListByRationID:function(rationID){
+    let divideSetting =  projectObj.project.divide_setting.datas;
+    let datas = [];
+    for(r of divideSetting.ration_gljs){
+      if(r.rationID==rationID ) datas.push(r);
+    }
+    return datas;
+  },
   getRationGLJDatas : function (ration){//这里是给计算程序统一调用的方法,树结构不用这个方法了
   getRationGLJDatas : function (ration){//这里是给计算程序统一调用的方法,树结构不用这个方法了
     let datas = [];
     let datas = [];
     let selected = ration;
     let selected = ration;
@@ -944,7 +952,7 @@ let divideObj = {
     data.projectID = projectObj.project.ID();
     data.projectID = projectObj.project.ID();
     data.oldData = record;
     data.oldData = record;
     await this.updateDivideRation(data);
     await this.updateDivideRation(data);
-
+    zmhs_obj.showDatas();
   },
   },
 
 
 
 

+ 1 - 1
web/building_saas/main/js/views/zmhs_view.js

@@ -209,7 +209,7 @@ let zmhs_obj = {
               if(this.cusSheetData) cusList = this.cusSheetData.coes;
               if(this.cusSheetData) cusList = this.cusSheetData.coes;
           }
           }
         }
         }
-        
+        this[pre+'cusSheet'].setRowCount(0);
         sheetCommonObj.showData(this[pre+'cusSheet'], this.cusSetting,cusList);
         sheetCommonObj.showData(this[pre+'cusSheet'], this.cusSetting,cusList);
         this[pre+'cusSheet'].getRange(cusList.length,-1,this[pre+'cusSheet'].getRowCount()-cusList.length, -1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
         this[pre+'cusSheet'].getRange(cusList.length,-1,this[pre+'cusSheet'].getRowCount()-cusList.length, -1, GC.Spread.Sheets.SheetArea.viewport).locked(true);
         if(projectReadOnly){
         if(projectReadOnly){