project.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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. var fee_rate_data = require('../../fee_rates/facade/fee_rates_facade');
  12. let projCounter = require('./proj_counter_model');
  13. let projSetting = require('./proj_setting_model');
  14. let volumePriceData = require('../../volume_price/models/volume_price_model');
  15. var consts = require('./project_consts');
  16. var projectConsts = consts.projectConst;
  17. var async = require("async");
  18. var moduleMap = {};
  19. moduleMap[projectConsts.BILLS] = billsData;
  20. moduleMap[projectConsts.RATION] = rationData;
  21. //moduleMap[projectConsts.GLJ] = GLJData;
  22. moduleMap[projectConsts.RATION_GLJ] = ration_glj_data;
  23. moduleMap[projectConsts.RATION_COE] = ration_coe_data;
  24. moduleMap[projectConsts.RATION_ASS] = ration_ass_data;
  25. moduleMap[projectConsts.QUANTITY_DETAIL] = quantity_detail_data;
  26. moduleMap[projCounter.collectionName] = projCounter;
  27. moduleMap[projSetting.collectionName] = projSetting;
  28. moduleMap[volumePriceData.collectionName] = volumePriceData;
  29. moduleMap[projectConsts.FEERATE] = fee_rate_data;
  30. var Project = function (){};
  31. Project.prototype.datas = [];
  32. Project.prototype.prepare = function(data, callback){
  33. var me = this;
  34. data.update_data.forEach(function(item){
  35. item.user_id = data.user_id;
  36. me.datas.push(item);
  37. /*
  38. to do
  39. moduleMap[item.moduleName].prepare(item.data, jobCallback);
  40. */
  41. });
  42. };
  43. Project.prototype.save = function(datas, callback){
  44. var job, savePoint;
  45. var functions = [];
  46. var item;
  47. var me = this;
  48. me.prepare(datas, function(job, savePoint){});
  49. function saveModule(data) {
  50. return function (cb) {
  51. if(data.moduleName!=undefined){
  52. moduleMap[data.moduleName].save(data.user_id, data.data, cb);
  53. }
  54. // console.log(moduleMap[data.moduleName])
  55. }
  56. }
  57. for (var i = 0; i < me.datas.length; i++){
  58. item = me.datas[i];
  59. functions.push(saveModule(item));
  60. }
  61. async.parallel(functions, function(err, results) {
  62. if (!err){
  63. callback(null, '', results)
  64. }
  65. else{
  66. callback(1, 'save project failed', null)
  67. }
  68. });
  69. me.datas = [];
  70. };
  71. Project.prototype.getData = function(projectID, callback){
  72. var functions = [];
  73. var itemName;
  74. for (itemName in moduleMap){
  75. functions.push((function(itemName){
  76. return function (cb) {
  77. moduleMap[itemName].getData(projectID, function(err, moduleName, data){
  78. cb(err, {moduleName: moduleName, data: data})
  79. })
  80. }
  81. })(itemName))
  82. }
  83. async.parallel(functions, function(err, results) {
  84. if (!err){
  85. callback(null, '', results)
  86. }
  87. else{
  88. callback(1, 'load project failed', null)
  89. }
  90. });
  91. };
  92. Project.prototype.getFilterData = function (projectID, filter) {
  93. let functions = [];
  94. let getModuleData = function (moduleName) {
  95. return function (cb) {
  96. moduleMap[moduleName].getData(projectID, function (err, name, data) {
  97. cb(err, {'moduleName': name, 'data': data})
  98. });
  99. }
  100. }
  101. for (let itemName of filter) {
  102. functions.push(getModuleData(itemName));
  103. }
  104. async.parallel(functions, function (err, results) {
  105. if (err) {
  106. throw '获取项目数据出错';
  107. } else {
  108. return results;
  109. }
  110. });
  111. }
  112. module.exports = new Project();