project.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  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 ration_glj_data = require('../../ration_glj/facade/ration_glj_facade');
  8. var ration_coe_data = require('../../ration_glj/facade/ration_coe_facade');
  9. var ration_ass_data = require('../../ration_glj/facade/ration_ass_facade');
  10. var quantity_detail_data = require('../../ration_glj/facade/quantity_detail_facade');
  11. let projCounter = require('./proj_counter');
  12. let volumePriceData = require('../../volume_price/models/volume_price_model');
  13. var consts = require('./project_consts');
  14. var projectConsts = consts.projectConst;
  15. var async = require("async");
  16. var moduleMap = {};
  17. moduleMap[projectConsts.BILLS] = billsData;
  18. moduleMap[projectConsts.RATION] = rationData;
  19. //moduleMap[projectConsts.GLJ] = GLJData;
  20. moduleMap[projectConsts.RATION_GLJ] = ration_glj_data;
  21. moduleMap[projectConsts.RATION_COE] = ration_coe_data;
  22. moduleMap[projectConsts.RATION_ASS] = ration_ass_data;
  23. moduleMap[projectConsts.QUANTITY_DETAIL] = quantity_detail_data;
  24. moduleMap[projCounter.collectionName] = projCounter;
  25. moduleMap[volumePriceData.collectionName] = volumePriceData;
  26. var Project = function (){};
  27. Project.prototype.datas = [];
  28. Project.prototype.prepare = function(data, callback){
  29. var me = this;
  30. data.update_data.forEach(function(item){
  31. item.user_id = data.user_id;
  32. me.datas.push(item);
  33. /*
  34. to do
  35. moduleMap[item.moduleName].prepare(item.data, jobCallback);
  36. */
  37. });
  38. };
  39. Project.prototype.save = function(datas, callback){
  40. var job, savePoint;
  41. var functions = [];
  42. var item;
  43. var me = this;
  44. me.prepare(datas, function(job, savePoint){});
  45. function saveModule(data) {
  46. return function (cb) {
  47. if(data.moduleName!=undefined){
  48. moduleMap[data.moduleName].save(data.user_id, data.data, cb);
  49. }
  50. // console.log(moduleMap[data.moduleName])
  51. }
  52. }
  53. for (var i = 0; i < me.datas.length; i++){
  54. item = me.datas[i];
  55. functions.push(saveModule(item));
  56. }
  57. async.parallel(functions, function(err, results) {
  58. if (!err){
  59. callback(null, '', results)
  60. }
  61. else{
  62. callback(1, 'save project failed', null)
  63. }
  64. });
  65. me.datas = [];
  66. };
  67. Project.prototype.getData = function(projectID, callback){
  68. var functions = [];
  69. var itemName;
  70. for (itemName in moduleMap){
  71. functions.push((function(itemName){
  72. return function (cb) {
  73. moduleMap[itemName].getData(projectID, function(err, moduleName, data){
  74. cb(err, {moduleName: moduleName, data: data})
  75. })
  76. }
  77. })(itemName))
  78. }
  79. async.parallel(functions, function(err, results) {
  80. if (!err){
  81. callback(null, '', results)
  82. }
  83. else{
  84. callback(1, 'load project failed', null)
  85. }
  86. });
  87. };
  88. module.exports = new Project();