123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- /**
- * 单价文件显示业务模型(用于选择单价文件操作)
- *
- * @author CaiAoLin
- * @date 2017/7/5
- * @version
- */
- const mongoose = require("mongoose");
- const BaseModel = require("../../common/base/base_model");
- const CounterModel = require("./counter_model");
- let collectionName = 'unit_price_file';
- let Projects = mongoose.model('projects');
- class UnitPriceFileModel extends BaseModel {
- /**
- * 构造函数
- *
- * @return {void}
- */
- constructor() {
- let parent = super();
- parent.model = mongoose.model(collectionName);
- parent.init();
- }
- /**
- * 设置场景
- *
- * @param {string} scene
- * @return {void}
- */
- setScene(scene = '') {
- switch (scene) {
- // 新增数据的验证规则
- case 'add':
- /* this.model.schema.path('name').required(true);
- this.model.schema.path('project_id').required(true);*/
- break;
- }
- }
- /**
- * 新增单价文件
- *
- * @param {object} data
- * @return {Promise}
- */
- async add(data) {
- let result = false;
- try {
- if (Object.keys(data).length <= 0) {
- throw '数据为空';
- }
- result = await this.db.create(data);
- } catch (error) {
- result = false;
- }
- return result;
- }
- /**
- * 根据项目id获取单价文件数据
- *
- * @param {Number} projectId
- * @return {Promise}
- */
- async getDataByProject(projectId) {
- let result = null;
- projectId = parseInt(projectId);
- try {
- if (isNaN(projectId) || projectId <= 0) {
- throw '标段id有误';
- }
- let unitPriceFileId =await this.getUnitPriceFileId(projectId);
- if (unitPriceFileId <= 0) {
- throw '没有对应的单价文件';
- }
- result = await this.findDataByCondition({id: unitPriceFileId});
- } catch (error) {
- console.log('error:' + error);
- throw '没有对应的单价文件 '
- }
- return result;
- }
- async getUnitPriceFileId(projectId){
- let result = 0;
- let startTime = +new Date();
- let projectData = await Projects.find({ID: projectId},['property.unitPriceFile']);
- if (projectData === null) {
- return result;
- }
- let endTime = +new Date();
- console.log("取单价文件列表id时间-----"+(endTime - startTime));
- projectData = projectData[0];
- result = projectData.property.unitPriceFile !== undefined ? projectData.property.unitPriceFile.id : 0;
- return result;
- }
- /**
- * 新增单条工料机数据
- *
- * @param {object} data
- * @return {Promise}
- */
- async add(data) {
- if (Object.keys(data).length <= 0) {
- throw '新增数据为空';
- }
- let counterModel = new CounterModel();
- data.id = await counterModel.getId(collectionName);
- this.setScene('add');
- let result = await this.db.create(data);
- return result;
- }
- /**
- * 根据单位工程获取对应单价文件
- *
- * @param {Array} idList
- * @return {Promise|Array}
- */
- async getDataByTenderId(idList) {
- let result = [];
- if (idList.length <= 0) {
- return result;
- }
- let condition = {project_id: {$in: idList},deleteInfo:null};
- result = await this.findDataByCondition(condition, null, false);
- return result;
- }
- /**
- * 根据建设项目id获取单价文件数据
- *
- * @param {Number} root_project_id
- * @return {Promise}
- */
- async getDataByRootProject(root_project_id){
- let condition = {root_project_id: root_project_id, deleteInfo: null};
- return await this.findDataByCondition(condition, null, false);
- }
- /**
- * 根据用户获取对应被删除的单价文件
- *
- * @param {String} userID
- * @return {Promise}
- */
- async getGCUnitPriceFiles(userID){
- let condition = {user_id: userID, 'deleteInfo.deleted': true, '$or': [{'deleteInfo.completeDeleted': false}, {'deleteInfo.completeDeleted': null}]};
- let result = await this.findDataByCondition(condition, null, false);
- return result;
- }
- }
- module.exports = UnitPriceFileModel;
|