project.js 2.0 KB

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