gljMapModel.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. /**
  2. * Created by Zhong on 2017/8/11.
  3. */
  4. const mongoose = require('mongoose');
  5. const gljMapModel = mongoose.model('std_glj_lib_gljList');
  6. const gljModel = mongoose.model('std_glj_lib_gljList');
  7. const gljClassModel = mongoose.model('std_glj_lib_gljClass');
  8. const rationRepository = mongoose.model('std_ration_lib_map');
  9. import moment from "moment";
  10. import counter from "../../../public/counter/counter";
  11. import async from "async";
  12. let rationRepositoryDao = require("../../ration_repository/models/repository_map");
  13. class OprDao {
  14. static updateOprArr(findSet, oprtor, date, cb){
  15. let oprDate = moment(date).format('YYYY-MM-DD HH:mm:ss');
  16. gljMapModel.find(findSet, function (err, result) {
  17. if(err){
  18. cb(err);
  19. }
  20. else{
  21. if(result.length === 1){
  22. let recentOprArr = result[0].recentOpr;
  23. let isExist = false;
  24. for(let i =0 ; i<recentOprArr.length; i++){
  25. if(recentOprArr[i].operator === oprtor){
  26. recentOprArr[i].operateDate = oprDate;
  27. isExist = true;
  28. }
  29. }
  30. if(!isExist){
  31. if(recentOprArr.length < 5){
  32. recentOprArr.push({operator: oprtor, operateDate: oprDate});
  33. }
  34. else if(recentOprArr.length === 5){
  35. recentOprArr.sort(function (a, b) {
  36. if(a.operateDate > b.operateDate){
  37. return -1;
  38. }else {
  39. return 1;
  40. }
  41. return 0;
  42. });
  43. recentOprArr.splice(recentOprArr.length -1, 1);
  44. recentOprArr.splice(0, 1, {operator: oprtor, operateDate: oprDate});
  45. }
  46. }
  47. gljMapModel.update(findSet, {$set: {recentOpr: recentOprArr}}, function (err) {
  48. if(err){
  49. cb(err);
  50. }
  51. else{
  52. cb(null);
  53. }
  54. });
  55. }
  56. else{
  57. cb(err);
  58. }
  59. }
  60. });
  61. };
  62. }
  63. class GljMapDao extends OprDao{
  64. static createNewLibModel(gljLibObj){
  65. var rst = {};
  66. rst.dispName = gljLibObj.dispName;
  67. rst.appType = gljLibObj.appType?gljLibObj.appType:'construct';
  68. rst.compilationId = gljLibObj.compilationId?gljLibObj.compilationId: -1;
  69. rst.compilationName = gljLibObj.compilationName?gljLibObj.compilationName:'';
  70. rst.creator = gljLibObj.creator;
  71. rst.createDate = moment(Date.now()).format('YYYY-MM-DD HH:mm:ss');
  72. rst.recentOpr = [{operator: gljLibObj.creator, operateDate: rst.createDate}];
  73. rst.deleted = false;
  74. return rst;
  75. }
  76. getGljLib(libId, callback){
  77. gljMapModel.find({ID: libId}, function (err, result) {
  78. if(err){
  79. callback(err, '没有数据!', null);
  80. }
  81. else{
  82. callback(null, '成功', result);
  83. }
  84. })
  85. }
  86. async getAllGljLib(callback){
  87. try{
  88. let gljLibs = await gljMapModel.find({deleted: false});
  89. for(let gljLib of gljLibs){
  90. let tempRationLibs = [];
  91. for(let rationLib of gljLib.rationLibs){
  92. let rLib = await rationRepository.findOne({ID: rationLib.ID, deleted: false});
  93. if(rLib !== undefined && rLib !== null){
  94. tempRationLibs.push({ID: rationLib.ID, dispName: rLib.dispName});
  95. }
  96. }
  97. gljLib._doc.rationLibs = tempRationLibs;
  98. }
  99. callback(null, '成功', gljLibs);
  100. }
  101. catch(err){
  102. callback(err, '没有定额库数据!', null);
  103. }
  104. }
  105. createGljLib(gljLibObj, callback){
  106. counter.counterDAO.getIDAfterCount(counter.moduleName.stdGljLib, 1, function (err, result) {
  107. if(err){
  108. callback(err, '获取新ID失败!');
  109. }
  110. else{
  111. let newGljLib = GljMapDao.createNewLibModel(gljLibObj);
  112. newGljLib.ID = result.value.sequence_value;
  113. gljMapModel.create(newGljLib, function (err, result) {
  114. if(err){
  115. callback(err, '创建新工料机库失败!', null);
  116. }
  117. else{
  118. callback(null, '创建成功!', result);
  119. }
  120. });
  121. }
  122. })
  123. }
  124. renameGljLib(oprtor, renameObj, callback){
  125. gljMapModel.update({ID: renameObj.ID, deleted: false}, {$set: {dispName: renameObj.newName}}, function (err) {
  126. if(err){
  127. callback(err, '重命名失败!');
  128. }
  129. else{
  130. GljMapDao.updateOprArr({ID: renameObj.ID, deleted: false}, oprtor, Date.now(), function (err) {
  131. if(err){
  132. callback(err, '更新最近操作者失败!');
  133. }
  134. else{
  135. callback(null, '成功!');
  136. }
  137. });
  138. }
  139. });
  140. }
  141. removeGljLib(oprtor, libId, callback){
  142. GljMapDao.updateOprArr({ID: libId, deleted: false}, oprtor, Date.now(), function (err) {
  143. if(err){
  144. callback(err, '失败!')
  145. }
  146. else{
  147. gljMapModel.find({ID: libId, deleted: false}, function (err, result) {
  148. if(err){
  149. callback(err, '数据不存在!');
  150. }
  151. else{
  152. if(result[0].rationLibs.length > 0){//已被引用
  153. callback(null, '此工料机库已被引用!');
  154. }
  155. else{
  156. async.parallel([
  157. function (cb) {
  158. gljMapModel.update({ID: libId, deleted: false}, {$set: {deleted: true}}, function (err) {
  159. if(err){
  160. cb(err);
  161. }
  162. else{
  163. cb(null);
  164. }
  165. });
  166. },
  167. function (cb) {
  168. gljModel.update({repositoryId: libId}, {$set: {deleted: true}}, {upsert: true, multi: true}, function (err) {
  169. if(err){
  170. cb(err);
  171. }
  172. else{
  173. cb(null);
  174. }
  175. });
  176. },
  177. function (cb) {
  178. gljClassModel.update({repositoryId: libId}, {$set: {deleted: true}}, {upsert: true, multi: true}, function (err) {
  179. if(err){
  180. cb(err);
  181. }
  182. else{
  183. cb(null);
  184. }
  185. })
  186. }
  187. ], function (err) {
  188. if(err){
  189. callback(err, '移除工料机库失败!');
  190. }
  191. else{
  192. callback(null, '删除成功');
  193. }
  194. });
  195. /* gljMapModel.update({ID: libId, deleted: false}, {$set: {deleted: true}}, function (err) {
  196. if(err){
  197. callback(err, '移除工料机库失败!');
  198. }
  199. else{
  200. callback(null, '删除成功');
  201. }
  202. });*/
  203. }
  204. }
  205. });
  206. }
  207. });
  208. }
  209. }
  210. export {OprDao, GljMapDao};