ration_coe_facade.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /**
  2. * Created by chen on 2017/7/6.
  3. */
  4. let mongoose = require('mongoose');
  5. const uuidV1 = require('uuid/v1')
  6. let consts = require('../../main/models/project_consts');
  7. let commonConsts = consts.commonConst;
  8. let _=require("lodash");
  9. let async_n = require("async");
  10. let coeMolde = mongoose.model('std_ration_lib_coe_list');
  11. let ration_coe = mongoose.model('ration_coe');
  12. module.exports={
  13. save:save,
  14. getData:getData,
  15. delete_ration_coe:delete_ration_coe
  16. }
  17. let operationMap={
  18. 'ut_create':create_ration_coe,
  19. 'ut_update':update_ration_coe,
  20. 'ut_delete':delete_ration_coe
  21. };
  22. function create_ration_coe(user_id,datas) {
  23. return function (callback) {
  24. let ration_coe_list=datas.ration_coe_list;
  25. var tasks=[];
  26. for(let i=0;i<ration_coe_list.length;i++){
  27. ration_coe_list[i].ID = uuidV1();
  28. ration_coe_list[i].seq = i;
  29. tasks.push(get_lib_coe_info(ration_coe_list[i]));
  30. }
  31. async_n.parallel(tasks,(err,results)=>{
  32. if(err){
  33. callback(err,results)
  34. }else {
  35. ration_coe.insertMany(results,(err,doc)=>{
  36. if(err){
  37. callback(err,null);
  38. }else {
  39. let returndata ={
  40. updateTpye:commonConsts.UT_CREATE,
  41. moduleName:'ration_coe',
  42. data:results
  43. }
  44. callback(null,returndata)
  45. }
  46. });
  47. }
  48. })
  49. }
  50. }
  51. function update_ration_coe(user_id,datas) {
  52. return function(callback) {
  53. ration_coe.update(datas.query,datas.doc,(err,result)=>{
  54. if(err){
  55. callback(err,'');
  56. }else {
  57. let returndata ={
  58. moduleName:'ration_coe',
  59. data:{
  60. updateTpye:commonConsts.UT_UPDATE,
  61. query:datas.query,
  62. doc:datas.doc
  63. }
  64. }
  65. callback(null,returndata)
  66. }
  67. })
  68. }
  69. }
  70. function delete_ration_coe(data) {
  71. return function (callback) {
  72. ration_coe.deleteMany({projectID: data.projectID, rationID: data.ID},(err,result)=>{
  73. commonCallback(callback,result,err)
  74. });
  75. }
  76. }
  77. function get_lib_coe_info(ration_coe) {
  78. return function (cb) {
  79. if(ration_coe.coeID == -1){//自定义系数
  80. cb(null,ration_coe);
  81. }else {
  82. let query ={
  83. "libID": ration_coe.libID,
  84. "ID": ration_coe.coeID,
  85. "$or": [{"isDeleted": null}, {"isDeleted": false}]
  86. };
  87. coeMolde.findOne(query,(err,coe)=>{
  88. if(err){
  89. cb(err,'')
  90. }else {
  91. ration_coe.name = coe.name;
  92. ration_coe.content = coe.content;
  93. ration_coe.isAdjust=0;
  94. ration_coe.coes = coe.coes;
  95. cb(null,ration_coe);
  96. }
  97. })
  98. }
  99. }
  100. }
  101. function getData(projectID, callback) {
  102. ration_coe.find({'projectID':projectID}).sort('seq').exec((err,datas)=>{
  103. if(err){
  104. callback(1, '', null);
  105. }else {
  106. callback(0, consts.projectConst.RATION_COE, datas);
  107. }
  108. })
  109. }
  110. function save (user_id, datas, callback) {
  111. let operations=[];
  112. if(_.isArray(datas)){
  113. for(let i=0;i<datas.length;i++){
  114. operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
  115. }
  116. }else {
  117. operations.push(operationMap[datas.updateType](user_id,datas));
  118. }
  119. async_n.parallel(operations,function (err,results) {
  120. if(err){
  121. callback(err,'');
  122. }else {
  123. if(results.length==1){
  124. callback(null,results[0])
  125. }else {
  126. callback(null,results)
  127. }
  128. }
  129. })
  130. }
  131. function commonCallback(callback,result,err) {
  132. if(err){
  133. callback(err,'');
  134. }else {
  135. callback(null,result);
  136. }
  137. }