ration_section_tree.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. /**
  2. * Created by Tony on 2017/4/21.
  3. */
  4. const mongoose = require('mongoose');
  5. let async = require('async');
  6. let moment = require('moment');
  7. let counter = require('../../../public/counter/counter');
  8. let rationRepositoryDao = require('./repository_map');
  9. const rationChapterTreeModel = mongoose.model('std_ration_lib_ration_chapter_trees');
  10. var rationChapterTreeDAO = function(){};
  11. rationChapterTreeDAO.prototype.getRationChapterTree = function(rationLibId,callback){
  12. rationChapterTreeModel.find({"rationRepId": rationLibId, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){
  13. if(data.length) callback(0,data);
  14. else if(err) callback("获取定额树错误!",[])
  15. else callback(0,[]);
  16. })
  17. }
  18. rationChapterTreeDAO.prototype.getNewRationTreeID = function (callback) {
  19. counter.counterDAO.getIDAfterCount(counter.moduleName.rationTree, 1, function(err, result){
  20. if(err){
  21. callback(err, null);
  22. }
  23. else{
  24. callback(0, result.value.sequence_value);
  25. }
  26. });
  27. };
  28. rationChapterTreeDAO.prototype.getRationChapterTreeByRepId = function(repId,callback){
  29. rationChapterTreeModel.find({"rationRepId": repId, "$or": [{"isDeleted": null}, {"isDeleted": false} ]},function(err,data){
  30. if(data.length) callback(0,data);
  31. else if(err) callback("获取定额树错误!",[])
  32. else callback(false,[]);
  33. })
  34. }
  35. rationChapterTreeDAO.prototype.createNewNode = function(lastOpr, libId, lastNodeId, nodeData,callback){
  36. counter.counterDAO.getIDAfterCount(counter.moduleName.rationTree, 1, function(err, result){
  37. nodeData.rationRepId = libId;
  38. nodeData.ID = result.value.sequence_value;
  39. var node = new rationChapterTreeModel(nodeData);
  40. async.parallel([
  41. function (cb) {
  42. node.save(function (err, result) {
  43. if (err) {
  44. cb("章节树ID错误!", false);
  45. } else {
  46. if (lastNodeId > 0) {
  47. rationChapterTreeModel.update({ID: lastNodeId}, {"NextSiblingID": nodeData.ID}, function(err, rst){
  48. if (err) {
  49. cb("章节树ID错误!", false);
  50. } else {
  51. cb(false, result);
  52. }
  53. });
  54. } else cb(false, result);
  55. }
  56. });
  57. },
  58. function (cb) {
  59. rationRepositoryDao.updateOprArr({ID: libId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  60. if(err){
  61. cb(err);
  62. }
  63. else{
  64. cb(null);
  65. }
  66. });
  67. }
  68. ], function (err, result) {
  69. if(err){
  70. callback("章节树ID错误!", false);
  71. }
  72. else{
  73. callback(false, result[0]);
  74. }
  75. });
  76. });
  77. },
  78. rationChapterTreeDAO.prototype.removeNodes = function(repId, lastOpr, nodeIds, preNodeId, preNodeNextId, callback){
  79. var functions = [];
  80. if (preNodeId != -1) {
  81. functions.push((function(nodeId, nextId) {
  82. return function(cb) {
  83. rationChapterTreeModel.update({ID: nodeId}, {"NextSiblingID": nextId}, cb);
  84. };
  85. })(preNodeId, preNodeNextId));
  86. }
  87. for (var i=0; i < nodeIds.length; i++) {
  88. functions.push((function(nodeId) {
  89. return function(cb) {
  90. rationChapterTreeModel.update({ID: nodeId}, {"isDeleted": true}, cb);
  91. };
  92. })(nodeIds[i]));
  93. }
  94. functions.push((function () {
  95. return function (cb) {
  96. rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  97. if(err){
  98. cb(err);
  99. }
  100. else{
  101. cb(null);
  102. }
  103. })
  104. }
  105. })());
  106. async.parallel(functions, function(err, results) {
  107. callback(err, results);
  108. });
  109. }
  110. rationChapterTreeDAO.prototype.updateExplanation = function (lastOpr, repId, nodeId, explanation, callback) {
  111. rationChapterTreeModel.update({rationRepId: repId, ID: nodeId}, {$set: {explanation: explanation}}, function (err, result) {
  112. if(err){
  113. callback(err);
  114. }
  115. else{
  116. rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  117. callback(null);
  118. });
  119. }
  120. });
  121. };
  122. rationChapterTreeDAO.prototype.updateRuleText = function (lastOpr, repId, nodeId, ruleText, callback) {
  123. rationChapterTreeModel.update({rationRepId: repId, ID: nodeId}, {$set: {ruleText: ruleText}}, function (err, result) {
  124. if(err){
  125. callback(err);
  126. }
  127. else{
  128. rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  129. callback(null);
  130. });
  131. }
  132. });
  133. };
  134. rationChapterTreeDAO.prototype.updateSituation = function (lastOpr, repId, nodeId, situation, callback) {
  135. rationChapterTreeModel.update({rationRepId: repId, ID: nodeId}, {$set: {jobContentSituation: situation}}, function (err, result) {
  136. if(err){
  137. callback(err);
  138. }
  139. else{
  140. rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  141. callback(null);
  142. });
  143. }
  144. });
  145. };
  146. rationChapterTreeDAO.prototype.updateAnnoSituation = function (lastOpr, repId, nodeId, situation, callback) {
  147. rationChapterTreeModel.update({rationRepId: repId, ID: nodeId}, {$set: {annotationSituation: situation}}, function (err, result) {
  148. if(err){
  149. callback(err);
  150. }
  151. else{
  152. rationRepositoryDao.updateOprArr({ID: repId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  153. callback(null);
  154. });
  155. }
  156. });
  157. };
  158. rationChapterTreeDAO.prototype.updateNodes = function(lastOpr, updateData,callback){
  159. var functions = [];
  160. for (var i=0; i < updateData.length; i++) {
  161. //var md = new rationChapterTreeModel(nodes[i]);
  162. //md.isNew = false;
  163. functions.push((function(doc) {
  164. return function(cb) {
  165. if(doc.updateType === 'update'){
  166. rationChapterTreeModel.update({rationRepId: doc.updateData.rationRepId, ID: doc.updateData.ID}, doc.updateData, function (err) {
  167. if(err){
  168. cb(err);
  169. }
  170. else {
  171. cb(null);
  172. }
  173. });
  174. }
  175. else if(doc.updateType === 'new'){
  176. rationChapterTreeModel.create(doc.updateData, function (err) {
  177. if(err){
  178. cb(err);
  179. }
  180. else {
  181. cb(null);
  182. }
  183. });
  184. }
  185. };
  186. })(updateData[i]));
  187. }
  188. if(updateData.length > 0){
  189. functions.push((function () {
  190. return function (cb) {
  191. rationRepositoryDao.updateOprArr({ID: updateData[0].updateData.rationRepId}, lastOpr, moment(Date.now()).format('YYYY-MM-DD HH:mm:ss'), function (err) {
  192. if(err){
  193. cb(err);
  194. }
  195. else{
  196. cb(null);
  197. }
  198. })
  199. }
  200. })());
  201. }
  202. async.parallel(functions, function(err, results) {
  203. if(!err){
  204. err = 0;
  205. }
  206. callback(err, results);
  207. });
  208. };
  209. module.exports = new rationChapterTreeDAO()