123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- /**
- * Created by zhang on 2019/1/2.
- */
- module.exports={ //先导出后require可以解决循环引用问题
- changeUnitFile:changeUnitFile,
- updateEvaluateMaterial:updateEvaluateMaterial
- };
- const mongoose = require('mongoose');
- const ProjectModel = require('../../pm/models/project_model').project;
- import UnitPriceFileModel from "../models/unit_price_file_model";
- import UnitPriceModel from "../models/unit_price_model";
- let evaluateListModel = mongoose.model("evaluate_list");
- let bidEvaluationMode = mongoose.model("bid_evaluation_list");
- let contractorListModel = mongoose.model("contractor_list");
- let projectGLJModel = mongoose.model("glj_list");
- let unitFileMode = mongoose.model("unit_price");
- async function changeUnitFile(projectData,unitFile,type,userID) {
- let projectId = projectData.projectID;
- let changeUnitPriceId = unitFile.id;
- let newName = unitFile.name;
- type = parseInt(type);
- let currentUnitPriceId = await ProjectModel.getUnitPriceFileId(projectId);
- let unitPriceFileModel = new UnitPriceFileModel();
- let insertData = null;
- if (type > 0) {
- let currentUnitPrice = await unitPriceFileModel.findDataByCondition({id: changeUnitPriceId});
- if (currentUnitPrice === null) {
- throw '不存在对应单价文件';
- }
- // 获取当前项目的rootProjectId
- let projectData = await ProjectModel.getProject(projectId);
- let rootProjectId = projectData.property.rootProjectID !== undefined ? projectData.property.rootProjectID : 0;
- insertData = JSON.parse(JSON.stringify(currentUnitPrice));
- insertData.root_project_id = rootProjectId;
- newName?insertData.name = newName:'';
- insertData.user_id = userID;
- delete insertData._id;
- delete insertData.ID;
- currentUnitPriceId = changeUnitPriceId;//从其它建设项目复制时,这个ID要变成被选中的来源的单价文件ID
- }
- // 获取即将更改的单价文件信息
- let targetUnitPriceFile = type === 0 ? await unitPriceFileModel.findDataByCondition({id: changeUnitPriceId}) :
- await unitPriceFileModel.add(insertData);
- if (targetUnitPriceFile === null) {
- throw '没有找到对应的单价文件';
- }
- // 查找对应单价文件的项目工料机数据
- let unitPriceModel = new UnitPriceModel();
- if(type ===1){//从其它项目复制,则先复制一份数据。
- let needCopyList = await unitPriceModel.findDataByCondition({unit_price_file_id: changeUnitPriceId}, null, false);
- if(needCopyList){
- // 过滤mongoose格式
- needCopyList = JSON.stringify(needCopyList);
- needCopyList = JSON.parse(needCopyList);
- let copyList = [];
- for(let n of needCopyList){
- delete n._id; // 删除原有id信息
- delete n.id;
- n.unit_price_file_id = targetUnitPriceFile.id;
- copyList.push(n);
- }
- copyList.length>0 ? await unitPriceModel.add(copyList):'';
- }
- }
- let copyResult = await unitPriceModel.copyNotExist(currentUnitPriceId, targetUnitPriceFile.id,projectId);
- // 复制成功后更改project数据
- if (!copyResult) {
- throw '复制数据失败';
- }
- let changeUnitPriceFileInfo = {
- id: targetUnitPriceFile.id,
- name: targetUnitPriceFile.name
- };
- let result = ProjectModel.changeUnitPriceFileInfo(projectId, changeUnitPriceFileInfo);
- if (!result) {
- throw '切换单价文件失败!';
- }
- return changeUnitPriceFileInfo;
- }
- async function updateEvaluateMaterial(data) {
- let modelMap = {
- "glj_list":projectGLJModel,
- "evaluate_list":evaluateListModel,
- "unit_price":unitFileMode,
- "bid_evaluation_list":bidEvaluationMode,
- "contractor_list":contractorListModel
- };
- for(let t of data.tasks){
- let model = modelMap[t.type];
- switch (t.action) {
- case "update":
- let query = {};
- if(t.hasOwnProperty('ID')) query['ID'] = t.ID;
- if(t.hasOwnProperty('id')) query['id'] = t.id;
- await model.update(query,t.doc);
- break;
- case "add":
- await model.create(t.doc);
- break;
- case "delete":
- await model.deleteOne({ID:t.ID});
- break;
- }
- }
- }
|