ration_ass_facade.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /**
  2. * Created by chen on 2017/7/10.
  3. */
  4. let mongoose = require('mongoose');
  5. let consts = require('../../main/models/project_consts');
  6. let commonConsts = consts.commonConst;
  7. let _=require("lodash");
  8. let async_n = require("async");
  9. let std_ration_lib_ration_items = mongoose.model('std_ration_lib_ration_items');
  10. let rationModel = mongoose.model('ration');
  11. let ration_glj = mongoose.model('ration_glj');
  12. let glj_calculate_facade = require('./glj_calculate_facade');
  13. module.exports={
  14. save:save,
  15. getData:getData
  16. }
  17. let operationMap={
  18. 'ut_create':create_ration_ass,
  19. 'ut_update':update_ration_ass,
  20. 'ut_delete':delete_ration_ass
  21. };
  22. function create_ration_ass(user_id,datas) {
  23. };
  24. function update_ration_ass(user_id,datas) {
  25. return function (callback) {
  26. let editAss = datas.query.editAss;
  27. doRationAssAdjust(datas.query.ration,datas.doc).then(function (result) {
  28. console.log(result);
  29. if(result.err){
  30. callback(result.err,'')
  31. }else {
  32. let newObject = {
  33. moduleName:consts.projectConst.RATION_ASS,
  34. data:{
  35. updateTpye:commonConsts.UT_UPDATE,
  36. doc:datas.doc,
  37. rationID:datas.query.ration.ID,
  38. editIndex:datas.query.editIndex,
  39. actualValue:editAss.actualValue
  40. }
  41. };
  42. let ration_glj_data ={
  43. moduleName:'ration_glj',
  44. data:{
  45. updateTpye:commonConsts.UT_UPDATE,
  46. quantityRefresh:true,
  47. glj_result:result.cal_result.glj_result
  48. }
  49. };
  50. let ration_data ={
  51. moduleName:'ration',
  52. data:{
  53. updateTpye:commonConsts.UT_UPDATE,
  54. stateRefresh:true,
  55. rationID:result.cal_result.rationID,
  56. adjustState:result.cal_result.adjustState,
  57. name:datas.doc.name
  58. }
  59. };
  60. callback(null,[newObject,ration_glj_data,ration_data]);
  61. }
  62. })
  63. }
  64. };
  65. async function doRationAssAdjust(ration,doc) {
  66. let result ={
  67. err:null,
  68. cal_result:[]
  69. }
  70. try{
  71. await rationModel.update({projectID:ration.projectID,ID:ration.ID,deleteInfo: null},doc);
  72. let cal_result = await glj_calculate_facade.calculateQuantity({projectID:ration.projectID,rationID:ration.ID});
  73. result.cal_result=cal_result;
  74. return result;
  75. }catch (err){
  76. result.err = err;
  77. console.log(err);
  78. return result;
  79. }
  80. }
  81. function delete_ration_ass(user_id,datas) {
  82. };
  83. function getData(projectID, callback) {
  84. callback(0, consts.projectConst.RATION_ASS, []);
  85. }
  86. function save (user_id, datas, callback) {
  87. let operations=[];
  88. if(_.isArray(datas)){
  89. for(let i=0;i<datas.length;i++){
  90. operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
  91. }
  92. }else {
  93. operations.push(operationMap[datas.updateType](user_id,datas));
  94. }
  95. async_n.parallel(operations,function (err,results) {
  96. if(err){
  97. callback(err,'');
  98. }else {
  99. if(results.length==1){
  100. callback(null,results[0])
  101. }else {
  102. callback(null,results)
  103. }
  104. }
  105. })
  106. }