ration.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * Created by jimiz on 2017/4/1.
  3. */
  4. var mongoose = require("mongoose");
  5. var db = require("../db/project_db");
  6. var subSchema = require("./bills_sub_schemas");
  7. var Schema = mongoose.Schema;
  8. var deleteSchema = require('../../../public/models/delete_schema');
  9. var async = require("async");
  10. var counter = require("../../../public/counter/counter.js");
  11. var consts = require('./project_consts');
  12. var projectConsts = consts.projectConst;
  13. var commonConsts = consts.commonConst;
  14. var rationSchema = new Schema({
  15. ID: Number,
  16. projectID: Number,
  17. billsItemID: Number,
  18. serialNo: Number,
  19. libID: Number,
  20. code: String,
  21. name: String,
  22. maskName: String,
  23. unit: String,
  24. quantity: String, // Decimal
  25. programID: Number,
  26. adjustState: String,
  27. content: String,
  28. rationProjName: String,
  29. comments: String,
  30. // 费用字段
  31. fees: [subSchema.feesSchema],
  32. // 标记字段
  33. flags: [subSchema.flagsSchema],
  34. deleteInfo: deleteSchema
  35. });
  36. var ration = db.model("ration", rationSchema, "ration");
  37. var rationDAO = function(){};
  38. rationDAO.prototype.getData = function(projectID, callback){
  39. ration.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
  40. if (!err) {
  41. callback(0, projectConsts.RATION, datas);
  42. } else {
  43. callback(1, '', null);
  44. }
  45. });
  46. };
  47. rationDAO.prototype.save = function(projectId, datas, callback){
  48. var functions = [];
  49. var data;
  50. function saveOne(doc) {
  51. return function (cb) {
  52. switch (doc.updateType) {
  53. case commonConsts.UT_UPDATE:
  54. ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
  55. break;
  56. case commonConsts.UT_CREATE:
  57. ration.create(doc.updateData, cb);
  58. break;
  59. case commonConsts.UT_DELETE:
  60. doc.updateData.deleteInfo = {deleted: true, deleteDateTime: new Date(), deleteBy: user_id};
  61. ration.update({projectID: doc.updateData.projectID, ID: doc.updateData.ID}, doc.updateData, cb);
  62. break;
  63. }
  64. }
  65. }
  66. for (var i = 0; i < datas.length; i++){
  67. data = datas[i];
  68. functions.push(saveOne(data));
  69. }
  70. async.parallel(functions, callback);
  71. };
  72. rationDAO.prototype.getItemTemplate = function(callback){
  73. var data = new ration;
  74. /* to do: 需要根据标准配置库填充fees和flags字段,是否需要更多的参数? */
  75. callback(0, '', data);
  76. };
  77. rationDAO.prototype.allocIDs = function(IDStep, callback){
  78. counter.counterDAO.getIDAfterCount(counter.moduleName.ration, IDStep, function(err, highID){
  79. var lowID = highID - IDStep + 1;
  80. callback(0, '', {lowID: lowID, highID: highID});
  81. });
  82. };
  83. module.exports = new rationDAO();