1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /**
- * Created by Tony on 2017/3/21.
- */
- var mongoose = require('mongoose');
- var counterModel = mongoose.model("counters");
- // All counter Must predefine in DB
- const COUNTER_MODULE_NAME = {
- project: 'projects',
- user: 'users',
- bills: 'bills',
- rations: 'rations',
- GLJ: 'glj',
- rationMap: 'rationMaps',
- rationTree: 'rationChapterTrees',
- report: 'rptTemplates',
- fee: 'fees',
- unitPriceFile: 'unitPriceFile',
- unitPriceGLJ: 'unitPriceGLJ',
- template_bills: 'temp_bills',
- billsLib: 'billsLib',
- coeList: 'coeList',
- complementaryCoeList: 'complementary_coe_list',
- glj_list: 'glj_list',
- mix_ratio: 'mix_ratio',
- unit_price_file: 'unit_price_file',
- unit_price: 'unit_price'
- }
- /*const PROJECT_COUNTER = 'projects', USER_COUNTER = 'users', BILL_COUNTER = 'bills', RATION_COUNTER = 'rations',
- REPORT_COUNTER = 'rptTemplates', FEE_COUNTER = 'fees'*/
- var counterDAO = function(){};
- /*
- * callback = function (err, result) {
- * result.value.sequence_value Ϊ�ĺ��id
- * }
- */
- counterDAO.prototype.getIDAfterCount =async function(moduleName, stepCount, callback) {
- var sc = stepCount;
- if (isNaN(stepCount) || (stepCount < 0)) {
- sc = 1;
- } else if (!(/^-?\d+$/.test(stepCount))) {
- sc = Math.round(stepCount + 0.5);
- }
- if (callback === null) {
- let result = await counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true});
- return await checkIDResult(result,moduleName,null)
- } else {
- counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true}, function (err,result) {
- checkIDResult(result,moduleName,callback,err)
- });
- }
- }
- counterDAO.prototype.getIDAfterCountSync = async function (moduleName, stepCount) {
- let sc = stepCount;
- if (isNaN(stepCount) || (stepCount < 0)) {
- sc = 1;
- } else if (!(/^-?\d+$/.test(stepCount))) {
- sc = Math.round(stepCount + 0.5);
- }
- let result = await counterModel.findOneAndUpdate({_id: moduleName}, { $inc: { sequence_value: sc } }, {'new':true});
- return await checkIDResult(result,moduleName,null)
- };
- async function checkIDResult(result,moduleName,callback,err){
- if(result){
- return callback?callback(err,result):result;
- }else {
- return callback?counterModel.create({_id: moduleName,sequence_value:1},callback): await counterModel.create({_id: moduleName,sequence_value:1});
- }
- }
- counterDAO.prototype.getCurrentID = function(moduleName, callback) {
- if (callback) {
- counterModel.findOne({_id: moduleName}).exec()
- .then(function(result, err) {
- if (callback) {
- callback(result, err);
- }
- }
- );
- return null;
- } else {
- var rst = counterModel.findOne({_id: moduleName}).exec() ;
- return rst;
- }
- }
- module.exports = {
- counterDAO: new counterDAO(),
- moduleName: COUNTER_MODULE_NAME
- };
|