bills_template.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * Created by Mai on 2017/4/14.
  3. * 清单模板,新建项目使用
  4. */
  5. var counter = require("../../../public/counter/counter.js");
  6. var mongoose = require('mongoose');
  7. var dbm = require("../../../config/db/db_manager");
  8. var templatesDB = dbm.getCfgConnection("templates");
  9. var Schema = mongoose.Schema;
  10. var deleteSchema = require('../../../public/models/delete_schema');
  11. var BillsTemplateSchema = new Schema({
  12. ID: Number,
  13. ParentID: Number,
  14. NextSiblingID: Number,
  15. code: String,
  16. name: String,
  17. unit: String,
  18. deleteInfo: deleteSchema,
  19. tempType: Number
  20. });
  21. var BillsTemplates = templatesDB.model('temp_bills', BillsTemplateSchema);
  22. var BillsTemplateDAO = function(){};
  23. BillsTemplateDAO.prototype.getTemplate = function (type, callback) {
  24. if (callback) {
  25. BillsTemplates.find({'$or': [{tempType: type, deleteInfo: null}, {tempType: type, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id').exec()
  26. .then(function (result, err) {
  27. if (err) {
  28. callback(1, '找不到模板', null);
  29. } else {
  30. callback(0, '', result);
  31. }
  32. });
  33. return null;
  34. } else {
  35. return BillsTemplates.find({'$or': [{tempType: type, deleteInfo: null}, {tempType: type, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id').exec();
  36. }
  37. };
  38. BillsTemplateDAO.prototype.updateTemplate = function (userID, tempType, datas, callback) {
  39. var data, project, updateLength = 0, hasError = false, deleteInfo = null;
  40. var updateAll = function (err) {
  41. if (!err){
  42. updateLength += 1;
  43. if (updateLength === datas.length) {
  44. callback(0, '', datas);
  45. }
  46. } else {
  47. hasError = true;
  48. callback(1, '升级数据出错', null);
  49. }
  50. };
  51. if (datas){
  52. for (var i = 0; i < datas.length && !hasError; i++){
  53. data = datas[i];
  54. if (data.type === 'update') {
  55. BillsTemplates.update({tempType: tempType, ID: data.data.ID}, data.data, updateAll)
  56. } else if (data.type === 'new') {
  57. data.data['tempType'] = tempType;
  58. newProject = new BillsTemplates(data.data);
  59. newProject.save(updateAll);
  60. } else if (data.type === 'delete') {
  61. deleteInfo = {};
  62. deleteInfo['deleted'] = true;
  63. deleteInfo['deleteDateTime'] = new Date();
  64. deleteInfo['deleteBy'] = userID;
  65. BillsTemplates.update({ID: data.data.ID}, {deleteInfo: deleteInfo}, updateAll);
  66. } else {
  67. hasError = true;
  68. callback(1, '升级数据出错', null)
  69. }
  70. }
  71. }
  72. };
  73. BillsTemplateDAO.prototype.getNewBillsTemplateID = function (count, callback) {
  74. counter.counterDAO.getIDAfterCount(counter.moduleName.template_bills, count, function (err, result) {
  75. var highID = result.value.sequence_value;
  76. if (!err) {
  77. callback(0, '', {lowID: highID - count + 1, highID: highID});
  78. } else {
  79. callback(1, '获取主键失败', null);
  80. }
  81. });
  82. }
  83. module.exports = new BillsTemplateDAO();