project.js 2.1 KB

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