gljMapModel.js 8.6 KB

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