project.js 2.1 KB

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