unit_price_file.js 2.9 KB

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