ration_coe_facade.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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() {
  52. }
  53. function delete_ration_coe(data) {
  54. return function (callback) {
  55. ration_coe.deleteMany({projectID: data.projectID, rationID: data.ID},(err,result)=>{
  56. commonCallback(callback,result,err)
  57. });
  58. }
  59. }
  60. function get_lib_coe_info(ration_coe) {
  61. return function (cb) {
  62. if(ration_coe.coeID == -1){//自定义系数
  63. cb(null,ration_coe);
  64. }else {
  65. let query ={
  66. "libID": ration_coe.libID,
  67. "ID": ration_coe.coeID,
  68. "$or": [{"isDeleted": null}, {"isDeleted": false}]
  69. };
  70. coeMolde.findOne(query,(err,coe)=>{
  71. if(err){
  72. cb(err,'')
  73. }else {
  74. ration_coe.name = coe.name;
  75. ration_coe.content = coe.content;
  76. ration_coe.isAdjust=0;
  77. ration_coe.coes = coe.coes;
  78. cb(null,ration_coe);
  79. }
  80. })
  81. }
  82. }
  83. }
  84. function getData(projectID, callback) {
  85. ration_coe.find({'projectID':projectID}).sort('seq').exec((err,datas)=>{
  86. if(err){
  87. callback(1, '', null);
  88. }else {
  89. callback(0, consts.projectConst.RATION_COE, datas);
  90. }
  91. })
  92. }
  93. function save (user_id, datas, callback) {
  94. let operations=[];
  95. if(_.isArray(datas)){
  96. for(let i=0;i<datas.length;i++){
  97. operations.push(operationMap[datas[i].updateType](user_id,datas[i]));
  98. }
  99. }else {
  100. operations.push(operationMap[datas.updateType](user_id,datas));
  101. }
  102. async_n.parallel(operations,function (err,results) {
  103. if(err){
  104. callback(err,'');
  105. }else {
  106. if(results.length==1){
  107. callback(null,results[0])
  108. }else {
  109. callback(null,results)
  110. }
  111. }
  112. })
  113. }
  114. function commonCallback(callback,result,err) {
  115. if(err){
  116. callback(err,'');
  117. }else {
  118. callback(null,result);
  119. }
  120. }