project.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * Created by jimiz on 2017/4/16.
  3. */
  4. var billsData = require('./bills');
  5. var rationData = require('./ration');
  6. var GLJData = require('./glj');
  7. let projCounter = require('./proj_counter');
  8. var consts = require('./project_consts');
  9. var projectConsts = consts.projectConst;
  10. var async = require("async");
  11. var moduleMap = {};
  12. moduleMap[projectConsts.BILLS] = billsData;
  13. moduleMap[projectConsts.RATION] = rationData;
  14. moduleMap[projectConsts.GLJ] = GLJData;
  15. moduleMap[projCounter.collectionName] = projCounter;
  16. var Project = function (){};
  17. Project.prototype.datas = [];
  18. Project.prototype.prepare = function(data, callback){
  19. var me = this;
  20. data.update_data.forEach(function(item){
  21. item.user_id = data.user_id;
  22. me.datas.push(item);
  23. /*
  24. to do
  25. moduleMap[item.moduleName].prepare(item.data, jobCallback);
  26. */
  27. });
  28. };
  29. Project.prototype.save = function(datas, callback){
  30. var job, savePoint;
  31. var functions = [];
  32. var item;
  33. var me = this;
  34. me.prepare(datas, function(job, savePoint){});
  35. function saveModule(data) {
  36. return function (cb) {
  37. moduleMap[data.moduleName].save(data.user_id, data.data, cb);
  38. }
  39. }
  40. for (var i = 0; i < me.datas.length; i++){
  41. item = me.datas[i];
  42. functions.push(saveModule(item));
  43. }
  44. async.parallel(functions, function(err, results) {
  45. if (!err){
  46. callback(null, '', results)
  47. }
  48. else{
  49. callback(1, 'save project failed', null)
  50. }
  51. });
  52. me.datas = [];
  53. };
  54. Project.prototype.getData = function(projectID, callback){
  55. var functions = [];
  56. var itemName;
  57. for (itemName in moduleMap){
  58. functions.push((function(itemName){
  59. return function (cb) {
  60. moduleMap[itemName].getData(projectID, function(err, moduleName, data){
  61. cb(err, {moduleName: moduleName, data: data})
  62. })
  63. }
  64. })(itemName))
  65. }
  66. async.parallel(functions, function(err, results) {
  67. if (!err){
  68. callback(null, '', results)
  69. }
  70. else{
  71. callback(1, 'load project failed', null)
  72. }
  73. });
  74. };
  75. module.exports = new Project();