let mongoose = require("mongoose") let logger = require("../../../logs/log_helper").logger; let config = require("../../../config/config.js"); let unitPriceFileModel = mongoose.model('unit_price_file'); let projectModel = mongoose.model('projects'); const ProjectDao = require('../../pm/models/project_model').project; let unitPriceModel = mongoose.model('unit_price'); let mixRatioModel = mongoose.model('mix_ratio'); let glj_type_util = require('../../../public/cache/std_glj_type_util'); let ration_facade = require('../../main/facade/ration_facade'); let unit_price_facade = require('../facade/unit_price_facade'); let _ = require("lodash"); module.exports={ index:async function(req,res){ let unitPriceFileID = req.params.unitPriceFileID; let unitPriceFile = await unitPriceFileModel.findOne({id:unitPriceFileID}).lean(); let project = await projectModel.findOne({ID:unitPriceFile.root_project_id}).lean(); let tenderData = await ProjectDao.getTenderByUnitPriceFileId(unitPriceFileID); let unitpriceList = await unitPriceModel.find({unit_price_file_id:unitPriceFileID},{supplyLocation:0}).lean(); let mixRatioList = await mixRatioModel.find({unit_price_file_id:unitPriceFileID}).lean(); let mixRatioMap = _.groupBy(mixRatioList,"connect_key"); let projectID = null; let gljTypeMap = glj_type_util.getStdGljTypeCacheObj().innerGljTypeObj; let usedTenderList = []; if (tenderData !== null && tenderData.length > 0) { for (let tmp of tenderData) { usedTenderList.push(tmp.name); } projectID = tenderData[0].ID; } let usedTenderString = "人材机单价的变化,将自动影响以下单位工程造价:
"+usedTenderList.join("
"); res.render('building_saas/unit_price_file/index.html', { userAccount: req.session.userAccount, userID: req.session.sessionUser.id, unitPriceFileID:unitPriceFileID, projectID:projectID, versionName: req.session.compilationVersion, unitFileName:unitPriceFile.name, rootProjectName:project.name, taxType:project.property.taxType, region:project.property.region, overWriteUrl:req.session.sessionCompilation.overWriteUrl, usedTenderList:JSON.stringify(usedTenderList), usedTenderString:usedTenderString, unitpriceList:JSON.stringify(unitpriceList), gljTypeMap:JSON.stringify(gljTypeMap), mixRatioMap:JSON.stringify(mixRatioMap), LicenseKey:config.getLicenseKey(process.env.NODE_ENV) }); }, addMixRatio:async function(req,res){ let result={ error:0 }; try { let data = req.body.data; data = JSON.parse(data); let gljList = data.gljList, parentInfo = data.parentInfo,mixRatios = [],gljCodes=[]; if(gljList.length > 0){ for(let newProjectGLJ of gljList){ let mixRatio = { glj_id:newProjectGLJ.glj_id, consumption:0, unit_price_file_id:parentInfo.unit_price_file_id, connect_key:parentInfo.connect_key, type: newProjectGLJ.type, code: newProjectGLJ.code, specs:newProjectGLJ.specs, name:newProjectGLJ.name, unit:newProjectGLJ.unit, model:newProjectGLJ.model }; mixRatios.push(mixRatio); gljCodes.push(newProjectGLJ.code); } let [unitPriceMap,newUnitPriceList] = await unit_price_facade.getUnitPriceData(gljList,gljCodes,parentInfo.unit_price_file_id); await unit_price_facade.setIDfromCounter("mix_ratio",mixRatios); await mixRatioModel.insertMany(mixRatios); result.data = {mixRatios:mixRatios,newUnitPriceList:newUnitPriceList}; } }catch (err){ logger.err(err); result.error=1; result.message = err.message; } res.json(result); } } // engineerID = req.params.engineerID;