calculate_demo.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /**
  2. * Created by Tony on 2017/2/20.
  3. */
  4. var mongoose = require('mongoose');
  5. var demodb = require('../db/demodb');
  6. var async = require('async');
  7. //var Schema = demodb.mongoose.Schema;
  8. var Schema = mongoose.Schema;
  9. var calSchema = new Schema({
  10. "ID": Number,
  11. "cal_type": Number,
  12. "value": Number,
  13. "test_result": Number
  14. });
  15. calSchema.statics.findAndModify = function (query, sort, doc, options, callback) {
  16. return this.collection.findAndModify(query, sort, doc, options, callback);
  17. };
  18. //var BillsData = demodb.mongoose.model("bills", BillsSchema);
  19. var calsMdl = demodb.mongoose.model("demo_cals", calSchema);
  20. var CalDataDAO = function(){};
  21. CalDataDAO.prototype.get = function(id, callback){
  22. calsMdl.find({ID: id}, function(err, templates){
  23. if(templates.length){
  24. callback(false, templates[0]);
  25. }
  26. else{
  27. callback('No result found!');
  28. }
  29. })
  30. }
  31. CalDataDAO.prototype.testCalculate = function(userid, callback) {
  32. var startIdx = 1, endIdx = 100000, cnt = 1;
  33. var testRst = 0;
  34. var dt1 = new Date(), dt2 = null;
  35. console.log('start time: ' + dt1);
  36. demodb.mongoose.collections.demo_cals.find({"ID": {$gte: startIdx, $lte: endIdx}}).forEach( function(obj) {
  37. if(obj.cal_type){
  38. //*/
  39. if(obj.cal_type == 1) {
  40. //obj.test_result = obj.value * 1.1;
  41. testRst = obj.value * 1.1;
  42. } else if(obj.cal_type == 2) {
  43. //obj.test_result = obj.value * 1.2;
  44. testRst = obj.value * 1.2;
  45. } else {
  46. //obj.test_result = obj.value + 1;
  47. testRst = obj.value + 1;
  48. }
  49. /*/
  50. testRst = 0;
  51. //obj.test_result = 0;
  52. //*/
  53. }
  54. //demodb.mongoose.collections.demo_cals.save(obj);
  55. demodb.mongoose.collections.demo_cals.update({_id: obj._id}, {$set: {test_result: testRst} } );
  56. cnt++;
  57. if (cnt > endIdx) {
  58. dt2 = new Date();
  59. console.log('finished time: ' + dt2);
  60. }
  61. });
  62. callback(false, "calculate OK!");
  63. }
  64. CalDataDAO.prototype.testCalculate2 = function(userid, callback) {
  65. var startIdx = 1, endIdx = 100000, cnt = 1;
  66. var testRst = 0;
  67. async.waterfall([
  68. function (cb) {
  69. var dt1 = new Date();
  70. console.log('start time: ' + dt1 );
  71. cb(null, dt1);
  72. },
  73. function (dt1, cb) {
  74. calsMdl.find({"ID": {$gte: startIdx, $lte: endIdx}}, function(err, data){
  75. var len = data.length;
  76. var cnt = 0;
  77. if(len){
  78. //callback(false, templates[0]);
  79. for (var i = 0; i < len; i++) {
  80. //*/
  81. if(data[i].cal_type == 1) {
  82. //data[i].test_result = data[i].value * 1.1;
  83. testRst = data[i].value * 1.1;
  84. } else if(data[i].cal_type == 2) {
  85. //data[i].test_result = data[i].value * 1.2;
  86. testRst = data[i].value * 1.2;
  87. } else {
  88. //data[i].test_result = data[i].value + 1;
  89. testRst = data[i].value + 1;
  90. }
  91. /*/
  92. testRst = 0;
  93. //*/
  94. //demodb.mongoose.collections.demo_cals.update({_id: obj._id}, {$set: {test_result: testRst} } );
  95. calsMdl.update({_id: data[i]._id}, {$set: {test_result: testRst}}, {upsert : false}, function(error){
  96. cnt++;
  97. if(error) {
  98. console.log(error);
  99. console.log('failed time: ' + (new Date()));
  100. callback("update failed!");
  101. //break;
  102. }
  103. //if (cnt >= len) {
  104. // console.log('finished time: ' + (new Date()));
  105. // cb(null, 'calculate OK!');
  106. //}
  107. });
  108. }
  109. console.log('finished time: ' + (new Date()));
  110. cb(null, 'calculate OK!');
  111. }
  112. else{
  113. cb('No result found!');
  114. }
  115. });
  116. }
  117. ], function (err, data) {
  118. if (err) {
  119. callback(err, "calculate failed!");
  120. } else {
  121. callback(err, data);
  122. }
  123. });
  124. }
  125. module.exports = new CalDataDAO();