ration_ass_facade.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. updateRationAss
  17. }
  18. let operationMap={
  19. 'ut_create':create_ration_ass,
  20. 'ut_update':update_ration_ass,
  21. 'ut_delete':delete_ration_ass
  22. };
  23. function create_ration_ass(user_id,datas) {
  24. };
  25. async function updateRationAss(data){
  26. let result =await doRationAssAdjust(data.query.ration,data.doc);
  27. let ration_glj ={
  28. quantityRefresh:true,
  29. glj_result:result.cal_result.glj_result
  30. }
  31. let ration = {
  32. ID:result.cal_result.rationID,
  33. adjustState:result.cal_result.adjustState,
  34. name:result.cal_result.rationName,
  35. rationAssList:data.doc.rationAssList
  36. };
  37. return {ration_glj:ration_glj,ration:ration}
  38. }
  39. function update_ration_ass(user_id,datas) {
  40. return function (callback) {
  41. let editAss = datas.query.editAss;
  42. doRationAssAdjust(datas.query.ration,datas.doc).then(function (result) {
  43. if(result.err){
  44. callback(result.err,'')
  45. }else {
  46. let newObject = {
  47. moduleName:consts.projectConst.RATION_ASS,
  48. data:{
  49. updateTpye:commonConsts.UT_UPDATE,
  50. doc:datas.doc,
  51. rationID:datas.query.ration.ID,
  52. editIndex:datas.query.editIndex,
  53. actualValue:editAss.actualValue
  54. }
  55. };
  56. let ration_glj_data ={
  57. moduleName:'ration_glj',
  58. data:{
  59. updateTpye:commonConsts.UT_UPDATE,
  60. quantityRefresh:true,
  61. glj_result:result.cal_result.glj_result
  62. }
  63. };
  64. let ration_data ={
  65. moduleName:'ration',
  66. data:{
  67. updateTpye:commonConsts.UT_UPDATE,
  68. stateRefresh:true,
  69. rationID:result.cal_result.rationID,
  70. adjustState:result.cal_result.adjustState,
  71. name:result.cal_result.rationName
  72. }
  73. };
  74. callback(null,[newObject,ration_glj_data,ration_data]);
  75. }
  76. })
  77. }
  78. };
  79. async function doRationAssAdjust(ration,doc) {
  80. let result ={
  81. err:null,
  82. cal_result:[]
  83. };
  84. try{
  85. await rationModel.update({projectID:ration.projectID,ID:ration.ID,deleteInfo: null},doc);
  86. let cal_result = await glj_calculate_facade.calculateQuantity({projectID:ration.projectID,rationID:ration.ID},null,true);
  87. result.cal_result=cal_result;
  88. return result;
  89. }catch (err){
  90. result.err = err;
  91. console.log(err);
  92. return result;
  93. }
  94. }
  95. function delete_ration_ass(user_id,datas) {
  96. };
  97. function getData(projectID, callback) {
  98. callback(0, consts.projectConst.RATION_ASS, []);
  99. }
  100. function save (user_id, datas, callback) {
  101. let operations=[];
  102. if(_.isArray(datas)){
  103. for(let i=0;i<datas.length;i++){
  104. operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
  105. }
  106. }else {
  107. operations.push(operationMap[datas.updateType](user_id,datas));
  108. }
  109. async_n.parallel(operations,function (err,results) {
  110. if(err){
  111. callback(err,'');
  112. }else {
  113. if(results.length==1){
  114. callback(null,results[0])
  115. }else {
  116. callback(null,results)
  117. }
  118. }
  119. })
  120. }