coe.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /**
  2. * Created by CSL on 2017/5/3.
  3. * 系数表。
  4. */
  5. //modiyied by zhong on 2017/9/21
  6. const mongoose = require('mongoose');
  7. const coeListModel = mongoose.model('std_ration_lib_coe_list');
  8. let counter = require('../../../public/counter/counter');
  9. import async from 'async';
  10. let coeListDAO = function(){};
  11. coeListDAO.prototype.getCoe = function (data, callback) {
  12. coeListModel.findOne({
  13. "libID": data.libID,
  14. "ID": data.ID,
  15. "$or": [{"isDeleted": null}, {"isDeleted": false}]
  16. },
  17. function (err, doc) {
  18. if (err) callback("获取系数明细错误!", null)
  19. else callback(null, doc);
  20. })
  21. };
  22. coeListDAO.prototype.getCoeItemsByIDs = function (data, callback) {
  23. coeListModel.find({
  24. "libID": data.libID,
  25. "ID": {"$in":data.coeIDs}
  26. }, ["libID","ID","serialNo","name","content","-_id"],
  27. function (err, doc) {
  28. if (err) callback("批量获取系数明细错误!", null)
  29. else callback(null, doc);
  30. })
  31. };
  32. coeListDAO.prototype.getCoeItemsByNos = function (data, callback) {
  33. coeListModel.find({
  34. "libID": data.libID,
  35. "serialNo": {"$in":data.coeNos}
  36. }, ["libID","ID","serialNo","name","content","-_id"],
  37. function (err, doc) {
  38. if (err) callback("批量获取系数明细错误!", null)
  39. else callback(null, doc);
  40. })
  41. };
  42. coeListDAO.prototype.getCoesByLibID = function (libID, callback) {
  43. coeListModel.find({ "libID": libID },
  44. function (err, doc) {
  45. if (err) callback("获取定额库系数表错误", null)
  46. else callback(null, doc);
  47. })
  48. };
  49. coeListDAO.prototype.saveToCoeList = function(data, callback) {
  50. let me = this;
  51. /*if (data.addArr.length > 0) {
  52. me.addItems(data.addArr, callback);
  53. }
  54. if (data.deleteArr.length > 0) {
  55. me.deleteItems(data.deleteArr, callback);
  56. }
  57. if (data.updateArr.length > 0) {
  58. me.updateItems(data.updateArr, callback);
  59. }*/
  60. if (data.addArr.length > 0 && data.updateArr.length > 0) {
  61. async.parallel([
  62. function (cb) {
  63. me.addItems(data.addArr, cb);
  64. },
  65. function (cb) {
  66. me.updateItems(data.updateArr, cb);
  67. }
  68. ], function (err, result) {
  69. callback(err, 'mixed', result);
  70. });
  71. }
  72. else if(data.addArr.length > 0){
  73. me.addItems(data.addArr, callback);
  74. }
  75. else if (data.updateArr.length > 0) {
  76. me.updateItems(data.updateArr, callback);
  77. }
  78. else if (data.deleteArr.length > 0) {
  79. me.deleteItems(data.deleteArr, callback);
  80. }
  81. };
  82. coeListDAO.prototype.addItems = function(addArr, callback) {
  83. if (addArr && addArr.length > 0) {
  84. counter.counterDAO.getIDAfterCount(counter.moduleName.coeList, addArr.length, function(err, result){
  85. let maxId = result.value.sequence_value;
  86. let functions = [];
  87. for (let i = 0; i < addArr.length; i++) {
  88. let obj = new coeListModel(addArr[i]);
  89. obj.ID = (maxId - (addArr.length - 1) + i);
  90. functions.push((function (obj) {
  91. return function (cb) {
  92. coeListModel.create(obj, function(err) {
  93. if (err) {
  94. cb(true, null);
  95. } else {
  96. cb(false, obj);
  97. };
  98. });
  99. }
  100. })(obj));
  101. }
  102. async.parallel(functions, function (err, result) {
  103. if(err) callback(true, 'add fail', null);
  104. else callback(false, 'addSc', result);
  105. })
  106. });
  107. } else {
  108. callback(true, "no source", null);
  109. }
  110. };
  111. coeListDAO.prototype.updateItems = function(updateArr, callback) {
  112. if (updateArr && updateArr.length > 0) {
  113. let functions = [];
  114. for (let i = 0; i < updateArr.length; i++) {
  115. let obj = updateArr[i];
  116. let needSet = {};
  117. for(let attr in obj){
  118. if(attr !== 'libID' || attr !== 'ID'){
  119. needSet[attr] = obj[attr];
  120. }
  121. }
  122. functions.push((function (obj) {
  123. return function (cb) {
  124. coeListModel.update({"libID": obj.libID, "ID": obj.ID}, needSet, function(err) {
  125. if (err) {
  126. cb(true);
  127. } else {
  128. cb(false);
  129. }
  130. });
  131. }
  132. })(obj));
  133. }
  134. async.parallel(functions, function (err, result) {
  135. if(err) callback(true, 'update fail', null);
  136. else callback(false, 'updateSc', null);
  137. })
  138. } else {
  139. callback(true, "no source", null);
  140. }
  141. };
  142. coeListDAO.prototype.deleteItems = function(deleteArr, callback) {
  143. if (deleteArr && deleteArr.length > 0) {
  144. let functions = [];
  145. for (let i = 0; i < deleteArr.length; i++) {
  146. let obj = deleteArr[i];
  147. functions.push((function (obj) {
  148. return function (cb) {
  149. coeListModel.remove({"libID": obj.libID, "ID": obj.ID}, function(err) {
  150. if (err) {
  151. cb(true, null);
  152. } else {
  153. cb(false, obj.ID);
  154. }
  155. });
  156. }
  157. })(obj));
  158. }
  159. async.parallel(functions, function (err, result) {
  160. if(err) callback(true, 'delete fail', null);
  161. else callback(false, 'sc', result);
  162. })
  163. } else {
  164. callback(true, "no source", null);
  165. }
  166. };
  167. module.exports = new coeListDAO();