|
@@ -8,11 +8,13 @@ let feeRateModel = mongoose.model('fee_rates');
|
|
|
let feeRateFileModel = mongoose.model('fee_rate_file');
|
|
|
let std_fee_rate_lib_model = mongoose.model('std_fee_rate_libs');
|
|
|
let project_feerate_temp = mongoose.model('project_feerate_temp');
|
|
|
+let projectsModel = require("../../pm/models/project_schema");
|
|
|
let consts = require('../../main/models/project_consts');
|
|
|
let _=require("lodash");
|
|
|
let template = require('../controllers/feerate_template');
|
|
|
let logger = require("../../../logs/log_helper").logger;
|
|
|
const uuidV1 = require('uuid/v1');
|
|
|
+let EngineeringLibModel = require("../../users/models/engineering_lib_model");
|
|
|
|
|
|
module.exports={
|
|
|
save:save,
|
|
@@ -23,7 +25,8 @@ module.exports={
|
|
|
getChangeInfo:getChangeInfo,
|
|
|
changeFeeRateFileFromCurrent:changeFeeRateFileFromCurrent,
|
|
|
changeFeeRateFileFromOthers:changeFeeRateFileFromOthers,
|
|
|
- newFeeRateFile:newFeeRateFile
|
|
|
+ newFeeRateFile:newFeeRateFile,
|
|
|
+ getFeeRatesByProject:getFeeRatesByProject
|
|
|
};
|
|
|
let operationMap={
|
|
|
'ut_create':create_fee_rate,
|
|
@@ -186,14 +189,18 @@ async function getFeeRateData(projectID) {
|
|
|
}
|
|
|
try {
|
|
|
//
|
|
|
- let tem = await project_feerate_temp.findOne({projectID:projectID});//暂时取tem表的记录
|
|
|
- if (tem){
|
|
|
- let feeRateData = await feeRateFileModel.findOne({'ID':tem.feeRateFileID,deleteInfo:null});
|
|
|
- let feeRate = await feeRateModel.findOne({ID:feeRateData.feeRateID});
|
|
|
- feeRateData._doc.rates = feeRate.rates;
|
|
|
- //
|
|
|
- feeRateData._doc.usageProjects=getUsageProjects(feeRateData.ID);
|
|
|
- result.datas = feeRateData;
|
|
|
+ let project = await projectsModel.findOne({ID:projectID});
|
|
|
+ if (project&&project.property&&project.property.feeFile){
|
|
|
+ let feeRateData = await feeRateFileModel.findOne({'ID':project.property.feeFile,deleteInfo:null});
|
|
|
+ if(feeRateData===null){
|
|
|
+ result.datas=[];
|
|
|
+ }else {
|
|
|
+ let feeRate = await feeRateModel.findOne({ID:feeRateData.feeRateID});
|
|
|
+ feeRateData._doc.rates = feeRate?feeRate.rates:[];
|
|
|
+ //
|
|
|
+ feeRateData._doc.usageProjects=await getUsageProjects(feeRateData.ID);
|
|
|
+ result.datas = feeRateData;
|
|
|
+ }
|
|
|
}else {
|
|
|
result.datas=[];
|
|
|
}
|
|
@@ -206,12 +213,8 @@ async function getFeeRateData(projectID) {
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-function getUsageProjects(feeRateID){
|
|
|
- //从数据库中查,项目结构暂时还没做 todo
|
|
|
- var projects = [];
|
|
|
- projects.push({ID:99,name:'单价调整'});
|
|
|
- projects.push({ID:100,name:'工程02'});
|
|
|
- projects.push({ID:101,name:'建筑工程'});
|
|
|
+async function getUsageProjects(feeRateID){
|
|
|
+ let projects = await projectsModel.find({'property.feeFile':feeRateID,'deleteInfo':null});
|
|
|
return projects;
|
|
|
}
|
|
|
|
|
@@ -224,14 +227,19 @@ function commonCallback(callback,result,err) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function getFeeRateStandardsByProjectID(rootProjectID) {
|
|
|
- //这里应该从项目配置中读取 to do, 暂时使用模板文件里的数据
|
|
|
- let t1 = template.feerate_template1;
|
|
|
- let t2 = template.feerate_template2;
|
|
|
-
|
|
|
+async function getFeeRateStandardsByProjectID(projectID) {
|
|
|
+ logger.info("get feeRate standard, projectID:"+projectID)
|
|
|
let feeRateStandards=[];
|
|
|
- feeRateStandards.push({ID:t1.ID,libName:t1.libName});
|
|
|
- feeRateStandards.push({ID:t2.ID,libName:t2.libName});
|
|
|
+ let project = await projectsModel.findOne({ID:projectID});
|
|
|
+ let engineeringLibModel = new EngineeringLibModel();
|
|
|
+ let engineeringInfo = project !== null && project.property.engineering_id !== undefined ?
|
|
|
+ await engineeringLibModel.getEngineering(project.property.engineering_id) : null;
|
|
|
+ if(engineeringInfo!=null){
|
|
|
+ let fee_lib = engineeringInfo.fee_lib;
|
|
|
+ for(let lib of fee_lib){
|
|
|
+ feeRateStandards.push({ID:lib.id,libName:lib.name});
|
|
|
+ }
|
|
|
+ }
|
|
|
return feeRateStandards;
|
|
|
}
|
|
|
|
|
@@ -254,27 +262,43 @@ async function changeFeeRateStandard(jdata){
|
|
|
return doc;
|
|
|
}
|
|
|
|
|
|
-async function newFeeRateFile(data){
|
|
|
- /* data = {
|
|
|
- libID:2,
|
|
|
- rootProjectID:113,
|
|
|
- name:'费率1'
|
|
|
- }*/
|
|
|
- let template = await std_fee_rate_lib_model.findOne({"ID":data.libID});
|
|
|
- let newFeeRate = {};
|
|
|
- newFeeRate.ID =uuidV1();
|
|
|
- newFeeRate.rates=template.rates;
|
|
|
- await feeRateModel.create(newFeeRate);
|
|
|
- let doc={
|
|
|
- libID:data.libID,
|
|
|
- libName:template.libName,
|
|
|
- feeRateID: newFeeRate.ID,
|
|
|
- rootProjectID:data.rootProjectID,
|
|
|
- name:data.name
|
|
|
- };
|
|
|
- doc.ID = uuidV1();
|
|
|
- await feeRateFileModel.create(doc);
|
|
|
- return doc;
|
|
|
+async function newFeeRateFile(updateData){
|
|
|
+ if(updateData.property !== null){
|
|
|
+ let property = updateData.property;
|
|
|
+ logger.info("Create new feeRate file for project :"+updateData.ID);
|
|
|
+ let feeFile = property.feeFile;
|
|
|
+ let rootProjectID = property.rootProjectID;
|
|
|
+ let name = updateData.name;
|
|
|
+ if(feeFile.indexOf("newFeeRate")!=-1){
|
|
|
+ let temFee = await feeRateFileModel.findOne({rootProjectID:rootProjectID,name:name,deleteInfo:null});
|
|
|
+ if(temFee){
|
|
|
+ return temFee.ID;
|
|
|
+ }
|
|
|
+ let temA = feeFile.split("-");
|
|
|
+ let libID = temA[1];
|
|
|
+ let doc={
|
|
|
+ rootProjectID:rootProjectID,
|
|
|
+ name:name
|
|
|
+ };
|
|
|
+ if(libID!== ''){
|
|
|
+ let template = await std_fee_rate_lib_model.findOne({"ID":libID});
|
|
|
+ let newFeeRate = {};
|
|
|
+ newFeeRate.ID =uuidV1();
|
|
|
+ newFeeRate.rates=template.rates;
|
|
|
+ await feeRateModel.create(newFeeRate);
|
|
|
+ doc.libID = libID;
|
|
|
+ doc.libName = template.libName;
|
|
|
+ doc.feeRateID = newFeeRate.ID;
|
|
|
+ }
|
|
|
+ doc.ID = uuidV1();
|
|
|
+ await feeRateFileModel.create(doc);
|
|
|
+ return doc.ID;
|
|
|
+ }else {
|
|
|
+ return feeFile
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -290,25 +314,28 @@ async function checkFeeRateName(jdata) {
|
|
|
|
|
|
async function getChangeInfo(jdata){
|
|
|
let data = JSON.parse(jdata);
|
|
|
- //{ projectID: 99, user_id: '76075' }
|
|
|
+ //{ rootProjectID: 99, user_id: '76075' }
|
|
|
let result={};
|
|
|
- let currentProject = {projectID:99,name:'建设项目1'};//dummy 数据
|
|
|
- currentProject.currentOptions=await feeRateFileModel.find({rootProjectID:data.projectID,deleteInfo:null},['ID','name']);
|
|
|
+ let currentProject = await projectsModel.findOne({'ID':data.rootProjectID},['ID','name']); //{projectID:99,name:'建设项目1'};//dummy 数据
|
|
|
+ currentProject._doc.currentOptions=await getFeeRatesByProject(data.rootProjectID);
|
|
|
//根据用户ID 找除了当前项目的其它建设项目;
|
|
|
- let others = [
|
|
|
- {projectID:100,name:'建设项目2',optionList:[
|
|
|
- {ID:'590cf860-7d99-11e7-90b0-e3a3dfdb2116',name:'2-test另存'},
|
|
|
- {ID:'c55718d0-7d98-11e7-b3b4-cfc9038d29b0',name:'2-费率B'},
|
|
|
- {ID:'da059df1-7c18-11e7-9e2f-1390b52643b4',name:'2-费率A'}
|
|
|
- ] },
|
|
|
- {projectID:101,name:'建设项目3',optionList:currentProject.currentOptions },
|
|
|
- {projectID:102,name:'建设项目4',optionList:currentProject.currentOptions },
|
|
|
- ]
|
|
|
+ let others =await projectsModel.find({'$and': [
|
|
|
+ {'$or':[{'userID': data.user_id,'projType':'Project', 'deleteInfo': null}, {'userID': data.user_id,'projType':'Project', 'deleteInfo.deleted': {'$in': [null, false]}}]},
|
|
|
+ { 'ID':{'$nin':[data.rootProjectID]}}
|
|
|
+ ]},['ID','name']);
|
|
|
+ for(let o of others){
|
|
|
+ o._doc.optionList = await getFeeRatesByProject(o.ID);
|
|
|
+ }
|
|
|
result.currentProject=currentProject;
|
|
|
result.others = others;
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+async function getFeeRatesByProject(rootProjectID) {
|
|
|
+ let feeRates = await feeRateFileModel.find({rootProjectID:rootProjectID,deleteInfo:null},['ID','name']);
|
|
|
+ return feeRates;
|
|
|
+}
|
|
|
+
|
|
|
async function changeFeeRateFileFromCurrent(jdata){
|
|
|
let data = JSON.parse(jdata);
|
|
|
let result = await project_feerate_temp.findOneAndUpdate({projectID:data.projectID},{feeRateFileID:data.newFeeRateFileID});
|