Bladeren bron

费用汇总后端存储

chenshilong 4 jaren geleden
bovenliggende
commit
f7484fbe46

+ 29 - 1
modules/all_models/calc_program_model.js

@@ -44,5 +44,33 @@ let projectCalcPrograms = new Schema({
     templates: [templateSchema]
 },{versionKey:false});
 
+let gatherCalcItemSchema = new Schema({
+  ID: Number,
+  code: String,
+  dispExprUser: String,
+  displayFieldName: String,
+  fieldName: String,
+  name: String,
+  statement: String,
+  totalFee: String,
+  unitFee: String,
+  feeRate: String,
+  memo: String
+},{versionKey:false, _id: false});
+
+let gatherCalcProgramSchema = new Schema({
+  ID: Number,
+  name: String,
+  totalFee: String,
+  calcItems: [gatherCalcItemSchema],
+},{versionKey:false, _id: false});
+
+let gatherCalcPrograms = new Schema({
+  projectID: {type: Number, index: true},
+  totalFee: String,
+  calcPrograms: [gatherCalcProgramSchema]
+},{versionKey:false});
+
 mongoose.model('std_calc_programs', stdCalcPrograms, 'std_calc_programs');
-mongoose.model('calc_programs', projectCalcPrograms, 'calc_programs');
+mongoose.model('calc_programs', projectCalcPrograms, 'calc_programs');
+mongoose.model('gather_calc_programs', gatherCalcPrograms, 'gather_calc_programs');

+ 20 - 2
modules/main/controllers/calc_program_controller.js

@@ -13,7 +13,8 @@ module.exports = {
     updateTemplate: updateTemplate,
     updateTemplateFile: updateTemplateFile,
     addTemplate: addTemplate,
-    deleteTemplate: deleteTemplate
+    deleteTemplate: deleteTemplate,
+    saveGatherCalcPrograms: saveGatherCalcPrograms
 };
 
 async function getProjectCalcProgram(req, res) {
@@ -147,4 +148,21 @@ async function deleteTemplate(req, res) {
         res.json(result);
     });
 
-};
+};
+
+async function saveGatherCalcPrograms(req, res) {
+  let result = {};
+  calcProgramFacade.saveGatherCalcPrograms(req.body.data, function (err, msg) {
+    if (err) {
+      result.error = 1;
+      result.data = 0;
+    }
+    else{
+      result.error = 0;
+      result.data = 1;
+    }
+    result.message = msg;
+    res.json(result);
+  });
+
+};

+ 37 - 1
modules/main/facade/calc_program_facade.js

@@ -7,6 +7,7 @@ let logger = require("../../../logs/log_helper").logger;
 let mongoose = require('mongoose');
 let stdCalcProgramsModel = mongoose.model('std_calc_programs');
 let projectCalcProgramsModel = mongoose.model('calc_programs');
+let gatherCalcProgramsModel = mongoose.model('gather_calc_programs');
 let EngineeringLibModel = require("../../users/models/engineering_lib_model");
 let _=require("lodash");
 let consts = require('../models/project_consts');
@@ -23,7 +24,8 @@ module.exports = {
     updateTemplate: updateTemplate,
     updateTemplateFile: updateTemplateFile,
     addTemplate: addTemplate,
-    deleteTemplate: deleteTemplate
+    deleteTemplate: deleteTemplate,
+    saveGatherCalcPrograms: saveGatherCalcPrograms
 };
 
 async function newProjectCalcProgramFile(data) {
@@ -260,8 +262,42 @@ function deleteTemplate(dataObj, callback) {
     );
 };
 
+function saveGatherCalcPrograms(dataObj, callback) {
+  dataObj = JSON.parse(dataObj);
+  gatherCalcProgramsModel.findOne({projectID: dataObj.projectID}, function (err, data) {
+    if(data == null){ // 第一次保存,找不到
+      let doc={
+        projectID: dataObj.projectID,
+        totalFee: dataObj.totalFee,
+        calcPrograms: dataObj.calcPrograms
+      };
+      gatherCalcProgramsModel.create(doc, function (err) {
+        if (err) {
+          callback(1, '汇总计算程序创建失败' + err, null);
+        } else {
+          callback(0, '成功', doc.projectID);
+        }
+      });
+    }
+    else {
+      data.totalFee = dataObj.totalFee;
+      data.calcPrograms = dataObj.calcPrograms;
+      data.save(function (err) {
+        if (err) {
+          callback(1, '汇总计算程序保存失败' + err, null);
+        } else {
+          callback(0, '成功', data.projectID);
+        }
+      });
+    }
+  })
+};
+
+
 // for test
 // let s = '{"projectID":2164,"ID":23,"name":"建筑工程7","custom":true,"calcItems":[]}';
 // addTemplate(s, function(data){console.log('add successfull!')});
 // let s = '{"projectID":2164,"ID":15}';
 // deleteTemplate(s, function(data){console.log('delete successfull!')});
+// let s = '{"projectID":2164, "totalFee": "23", "calcPrograms":[]}';
+// saveGatherCalcPrograms(s, function(data){console.log(data)});

+ 1 - 0
modules/main/routes/calc_program_route.js

@@ -17,6 +17,7 @@ module.exports = function (app) {
     cpRouter.post('/updateTemplateFile', cpController.updateTemplateFile);
     cpRouter.post('/addTemplate', cpController.addTemplate);
     cpRouter.post('/deleteTemplate', cpController.deleteTemplate);
+    cpRouter.post('/saveGatherCalcPrograms', cpController.saveGatherCalcPrograms);
 
     app.use('/calcProgram',cpRouter);
 }

+ 12 - 2
web/building_saas/main/js/models/calc_program.js

@@ -2897,7 +2897,7 @@ class CalcProgram {
     getGatherFeeData(){
       // $.bootstrapLoading.start();
       // setTimeout(()=>{
-        let rst = {totalFee: 0, calcPrograms: []};
+        let rst = {projectID: projectObj.project.ID(), totalFee: 0, calcPrograms: []};
         let tpls = calcTools.getUsedTemplates();
 
         let temp = 0;
@@ -2907,7 +2907,17 @@ class CalcProgram {
             temp = temp + obj.value;
         }
         rst.totalFee = temp.toDecimal(decimalObj.bills.totalPrice);
-        projectObj.project.mainTree.items[0].data.totalFee = rst.totalFee;
+        let oldValue = projectObj.project.mainTree.items[0].data.totalFee;
+        if (oldValue != rst.totalFee){
+          projectObj.project.mainTree.items[0].data.totalFee = rst.totalFee;
+          $.bootstrapLoading.start();
+          CommonAjax.post("/calcProgram/saveGatherCalcPrograms", rst, function (data) {
+            // if(callback){
+            //   callback(data);
+            $.bootstrapLoading.end();
+            // }
+          });
+        }
         console.log(rst);
         return rst;
       // });