gljMapModel.js 8.1 KB

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