glj_list.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. /**
  2. * Created by jimiz on 2017/5/10.
  3. */
  4. var mongoose = require("mongoose");
  5. var db = require("../db/unit_price_file_db");
  6. var Schema = mongoose.Schema;
  7. var deleteSchema = require('../../../public/models/delete_schema');
  8. var counter = require("../../../public/counter/counter.js");
  9. var consts = require('../../main/models/project_consts');
  10. var projectConsts = consts.projectConst;
  11. var commonConsts = consts.commonConst;
  12. var GLJListSchema = new Schema({
  13. ID: Number,
  14. fileID: Number,
  15. code: String,
  16. name: String,
  17. specs: String,
  18. unit: String,
  19. type: Number,
  20. price: String, //Decimal
  21. deleteInfo: deleteSchema
  22. });
  23. var GLJList = db.model("GLJList", rationSchema, "GLJList");
  24. var GLJListDAO = function(){};
  25. GLJListDAO.prototype.getData = function(fileID, callback){
  26. GLJList.find({'$or': [{fileID: fileID, deleteInfo: null}, {fileID: fileID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
  27. if (!err) {
  28. callback(0, projectConsts.GLJLIST, datas);
  29. } else {
  30. callback(1, '', null);
  31. }
  32. });
  33. };
  34. // 单价文件中的工料机不在这里新增,只能由add方法新增,删除需要在前端projectGLJ判断:1、是新工料机;2、没有定额引用,才可以删除
  35. GLJListDAO.prototype.save = function(fileId, datas, callback){
  36. var functions = [];
  37. var data;
  38. // cb中返回doc,以便进行同步
  39. function saveOne(doc) {
  40. return function (cb) {
  41. function updateCallback(err, data){
  42. cb(err, doc);
  43. }
  44. switch (doc.updateType) {
  45. case commonConsts.UT_UPDATE:
  46. ration.update({ID: doc.ID}, doc, updateCallback);
  47. break;
  48. case commonConsts.UT_DELETE:
  49. /* 假删除
  50. var item = new ration(doc);
  51. item.remove(cb);
  52. */
  53. }
  54. }
  55. }
  56. for (var i = 0; i < datas.length; i++){
  57. data = datas[i];
  58. functions.push(saveOne(data));
  59. }
  60. async.parallel(functions, callback);
  61. };
  62. GLJListDAO.prototype.add = function(fileID, count, callback){
  63. function newCallback(err, lowID, highID){
  64. if (!err) {
  65. var datas = [];
  66. for (var i = lowID; i <= highID; i++){
  67. var GLJ = new GLJList;
  68. GLJ.ID = i;
  69. GLJ.fileID = fileID;
  70. datas.push(GLJ);
  71. }
  72. callback(err, datas);
  73. }
  74. else{
  75. callback(err, null);
  76. }
  77. }
  78. counter.counterDAO.getIDAfterCount(COUNTER_MODULE_NAME.unitPriceGLJ, IDStep, function(err, highID){
  79. var lowID = highID - IDStep + 1;
  80. newCallback(err, lowID, highID);
  81. });
  82. };
  83. module.exports = new GLJListDAO();