ration_ass_facade.js 3.5 KB

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