project_glj.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * Created by jimiz on 2017/4/1.
  3. * 工料机汇总
  4. */
  5. var mongoose = require("mongoose");
  6. var db = require("../db/project_db");
  7. var Schema = mongoose.Schema;
  8. var deleteSchema = require('../../../public/models/delete_schema');
  9. var consts = require('./project_consts');
  10. var projectConsts = consts.projectConst;
  11. var commonConsts = consts.commonConst;
  12. var unitPriceFile = require('../../glj/models/unit_price_file');
  13. var upGLJList = require('../../glj/models/glj_list');
  14. var projectProperties = require('./prj_properties.js')
  15. var projectGLJSchema = new Schema({
  16. ID: Number,
  17. code: String,
  18. name: String,
  19. projectID: Number,
  20. amount: String, // Decimal
  21. isInterim: Boolean, // 是否暂估
  22. provideType: Number, // 供货方式
  23. partyAAmount: String, // Decimal 甲供数量
  24. deliveryType: String, // 交货方式
  25. deliveryPlace: String, // 送达地点
  26. noTender: Boolean,
  27. deleteInfo: deleteSchema
  28. });
  29. var projectGLJ = db.model("projectGLJ", projectGLJSchema, "projectGLJ");
  30. var projectGLJDAO = function(){};
  31. projectGLJDAO.prototype.getData = function(projectID, callback){
  32. function combineGLJData(fileID, gljList){
  33. var gljIndex = {};
  34. upGLJList.getData(fileID, function (err, message, datas) {
  35. if (!err) {
  36. for (var i = 0; i < datas.length; i++){
  37. var data = datas[i];
  38. gljIndex[data.code + '_' + data.name] = data;
  39. }
  40. for (var j = 0; j < gljList.length; j++){
  41. var pGLJ = gljList[j];
  42. var glj = gljIndex[pGLJ.code + '_' + pGLJ.name];
  43. for (var p in data) {
  44. if (p != 'ID' && p != 'fileID' && p != 'deleteInfo') {
  45. pGLJ[p] = glj[p];
  46. }
  47. }
  48. }
  49. callback(0, projectConsts.PROJECTGLJ, gljList);
  50. }
  51. else {
  52. callback(3, 'can not get unitPriceFile gljList', null);
  53. }
  54. })
  55. }
  56. function getGLJDatas(gljList){
  57. projectProperties.getData(projectID, function (err, message, datas) {
  58. if (!err) {
  59. var fileID = datas[0];
  60. combineGLJData(fileID, gljList);
  61. } else {
  62. callback(2, 'can not get unitPriceFileID', null);
  63. }
  64. })
  65. }
  66. projectGLJ.find({'$or': [{projectID: projectID, deleteInfo: null}, {projectID: projectID, 'deleteInfo.deleted': {$in: [null, false]}}]}, '-_id', function(err, datas){
  67. if (!err) {
  68. getGLJDatas(datas);
  69. } else {
  70. callback(1, 'can not get projectGLJ', null);
  71. }
  72. });
  73. };
  74. // 工料机汇总的工料机不在这里新增,只能由add方法新增,删除需要在前端projectGLJ判断:1、是新工料机;2、没有定额引用,才可以删除
  75. projectGLJDAO.prototype.save = function(projectID, datas, callback){
  76. var functions = [];
  77. var data;
  78. function saveOne(data) {
  79. return function (cb) {
  80. switch (doc.updateType) {
  81. case commonConsts.UT_UPDATE:
  82. projectGLJ.update({ID: doc.ID}, doc, cb);
  83. break;
  84. // commonConsts.UT_DELETE:
  85. // 假删除
  86. // var item = new ration(doc);
  87. // item.remove(cb);
  88. }
  89. }
  90. }
  91. for (var i = 0; i < datas.length; i++){
  92. functions.push(saveOne(data));
  93. }
  94. async.parallel(functions, callback);
  95. };
  96. projectGLJDAO.prototype.add = function(projectID, fileID, count, callback){
  97. function addGLJ(err, datas){
  98. }
  99. unitPriceFile.add(fileID, count, callback);
  100. };
  101. projectGLJDAO.prototype.syncData = function(projectID, datas, callback){
  102. };
  103. module.exports = new projectGLJDAO();